Skip to content

Commit c2103e2

Browse files
authored
Merge pull request #93 from psteiwer/dev
Dev
2 parents b21173d + be782dd commit c2103e2

File tree

8 files changed

+89
-22
lines changed

8 files changed

+89
-22
lines changed

PivotSubscriptions/EventLog.cls

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Class PivotSubscriptions.EventLog Extends %Persistent
33
{
44

55
/// Event Type covers: create, update, delete, sendSubscription, and tableError
6-
Property EventType As %String(VALUELIST = ",create,update,delete,sendSubscription,tableError,unsubscribe");
6+
Property EventType As %String(VALUELIST = ",create,update,delete,sendSubscription,sendNow,tableError,unsubscribe");
77

88
Property StartTime As %TimeStamp [ InitialExpression = {$zdt($h, 3, 1)} ];
99

@@ -31,8 +31,10 @@ Property Subscription As PivotSubscriptions.Subscription;
3131

3232
Property GUID As %String [ InitialExpression = {$System.Util.CreateGUID()} ];
3333

34+
Property RunOnce As %Boolean;
35+
3436
/// Takes in info about an Alert Task and logs the information to the TaskLog
35-
ClassMethod CreateEvent(pType, pSubscriptionId, pUser, pPivot, pDayOfWeek, pHour, pMinute, pFormat, pEmails, pName, ByRef pEvent) As %Status
37+
ClassMethod CreateEvent(pType, pSubscriptionId, pUser, pPivot, pDayOfWeek, pHour, pMinute, pFormat, pEmails, pName, pRunOnce, ByRef pEvent) As %Status
3638
{
3739
Set tSC=$$$OK
3840

@@ -42,6 +44,7 @@ ClassMethod CreateEvent(pType, pSubscriptionId, pUser, pPivot, pDayOfWeek, pHour
4244
Set tEventLog.UserName=pUser
4345
Set tEventLog.Pivot=pPivot
4446
Set tEventLog.Name=pName
47+
Set tEventLog.RunOnce=pRunOnce
4548

4649
Set tEventLog.DayOfWeek=pDayOfWeek
4750
Set tEventLog.Hour=pHour
@@ -67,7 +70,7 @@ Method UpdateStatus(pStatus) As %Status
6770
Quit tSC
6871
}
6972

70-
Method UpdateEvent(pDayOfWeek, pHour, pMinute, pFormat, pEmails, pName) As %Status
73+
Method UpdateEvent(pDayOfWeek, pHour, pMinute, pFormat, pEmails, pName, pRunOnce) As %Status
7174
{
7275
Set tSC=$$$OK
7376

@@ -77,6 +80,7 @@ Method UpdateEvent(pDayOfWeek, pHour, pMinute, pFormat, pEmails, pName) As %Stat
7780
Set ..Format=pFormat
7881
Set ..Emails=pEmails
7982
Set ..Name=pName
83+
Set ..RunOnce=pRunOnce
8084

8185
Set tSC=..%Save()
8286

@@ -153,6 +157,9 @@ Storage Default
153157
<Value name="16">
154158
<Value>GUID</Value>
155159
</Value>
160+
<Value name="17">
161+
<Value>RunOnce</Value>
162+
</Value>
156163
</Data>
157164
<DataLocation>^PivotSubscriptions.EventLogD</DataLocation>
158165
<DefaultData>EventLogDefaultData</DefaultData>

PivotSubscriptions/Installer.cls

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Class PivotSubscriptions.Installer
22
{
33

4-
ClassMethod RunInstaller(pRootDir)
4+
ClassMethod RunInstaller(pRootDir = "")
55
{
66
Set tSC=$$$OK
77

@@ -16,7 +16,7 @@ ClassMethod RunInstaller(pRootDir)
1616
Set tPage="PivotSubscriptions.UI.SubscriptionManager.zen"
1717
Set tItem.href=$system.CSP.GetPortalApp($namespace,tPage)_tPage
1818
Set tItem.title="Pivot Subscriptions"
19-
Set tItem.bookCover="{background: {style:'background:white;',src:'covers/PivotSubscriptions_Cover.png'},header: {text:'$type',style:'display: none;'},title: {text:'$title',style:'display: none;'},image: {style:'display: none;',src:'deepsee/ds2_globe_44.png',imageStyle:'width:64px;height:64px;'},subtitle: {style:'display: none;'},footer: {text:'$owner',style:'display: none;'}}"
19+
Set tItem.bookCover="{background: {style:'background:white;',src:'covers/PivotSubscriptions_Cover.png'},header: {text:'$type',style:'display: none;'},title: {text:'$title',style:'display: none;'},image: {style:'display: none;',src:'deepsee/ds2_globe_44.png',imageStyle:'width:64px;height:64px;'},subtitle: {text:'"_##class(PivotSubscriptions.Utils).GetVersion()_"',style:'font-size:9px;top:179px;'},footer: {text:'$owner',style:'display: none;'}}"
2020
Set tSC=tItem.%Save()
2121
If $$$ISERR(tSC) Quit tSC
2222

PivotSubscriptions/Subscription.cls

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,20 @@ Property CustomFilters As array Of %String(MAXLEN = "");
2525

2626
Property CustomEmailText As %String(MAXLEN = "");
2727

28+
Property RunOnce As %Boolean [ InitialExpression = 0 ];
29+
2830
Method Unsubscribe(pEmail) As %Status
2931
{
3032
Set tSC=$$$OK
3133

32-
Set tSC=##class(PivotSubscriptions.EventLog).CreateEvent("unsubscribe",..%Id(),$username,..Pivot,..DayOfWeek,..Hour,..Minute,..Format,pEmail,..Name,.tEvent)
34+
Set tSC=##class(PivotSubscriptions.EventLog).CreateEvent("unsubscribe",..%Id(),$username,..Pivot,..DayOfWeek,..Hour,..Minute,..Format,pEmail,..Name,..RunOnce,.tEvent)
3335

3436
Set tEmailList=$LFS(..Emails,",")
3537

3638
If $LL(tEmailList)=1 {
3739
If ..Emails=pEmail {
3840
// This is the only Email for the subscription, delete subscription
39-
Set tSC=##class(PivotSubscriptions.EventLog).CreateEvent("delete",..%Id(),$username,..Pivot,..DayOfWeek,..Hour,..Minute,..Format,..Emails,..Name,.tDeleteEvent)
41+
Set tSC=##class(PivotSubscriptions.EventLog).CreateEvent("delete",..%Id(),$username,..Pivot,..DayOfWeek,..Hour,..Minute,..Format,..Emails,..Name,..RunOnce,.tDeleteEvent)
4042
Set tSC=##class(PivotSubscriptions.Subscription).%DeleteId(..%Id())
4143
Do tDeleteEvent.UpdateStatus(tSC)
4244
Do tEvent.UpdateStatus(tSC)
@@ -106,6 +108,9 @@ Storage Default
106108
<Value name="11">
107109
<Value>CustomEmailText</Value>
108110
</Value>
111+
<Value name="12">
112+
<Value>RunOnce</Value>
113+
</Value>
109114
</Data>
110115
<DataLocation>^PivotSubscriptions.SubD</DataLocation>
111116
<DefaultData>SubscriptionDefaultData</DefaultData>

PivotSubscriptions/Task.cls

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ Method OnTask() As %Status
1616
// Ignore minute for testing purposes
1717
// This will allow the task to be run on demand and send emails immediately
1818
// Leaving DayOfWeek and Hour so the scheduled task does not spam emails
19-
Set tRS=##class(%SQL.Statement).%ExecDirect(,"SELECT ID,Emails,Name,Pivot,Format,DayOfWeek,""Hour"",""Minute"" FROM PivotSubscriptions.Subscription WHERE DayOfWeek[? AND ""Hour""=?",tDayOfWeek,tHour)
19+
Set tRS=##class(%SQL.Statement).%ExecDirect(,"SELECT ID,Emails,Name,Pivot,Format,DayOfWeek,""Hour"",""Minute"",RunOnce FROM PivotSubscriptions.Subscription WHERE DayOfWeek[? AND ""Hour""=?",tDayOfWeek,tHour)
2020
} Else {
21-
Set tRS=##class(%SQL.Statement).%ExecDirect(,"SELECT ID,Emails,Name,Pivot,Format,DayOfWeek,""Hour"",""Minute"" FROM PivotSubscriptions.Subscription WHERE DayOfWeek[? AND ""Hour""=? AND ""Minute""=?",tDayOfWeek,tHour,tMinute)
21+
Set tRS=##class(%SQL.Statement).%ExecDirect(,"SELECT ID,Emails,Name,Pivot,Format,DayOfWeek,""Hour"",""Minute"",RunOnce FROM PivotSubscriptions.Subscription WHERE DayOfWeek[? AND ""Hour""=? AND ""Minute""=?",tDayOfWeek,tHour,tMinute)
2222
}
2323

2424
// Loop through Subscription results and send emails.
@@ -31,14 +31,21 @@ Method OnTask() As %Status
3131
Set tHour=tRS.%Get("Hour")
3232
Set tMinute=tRS.%Get("Minute")
3333
Set tName=tRS.%Get("Name")
34+
Set tRunOnce=tRS.%Get("RunOnce")
3435

35-
Set tSC = ##class(PivotSubscriptions.Task).SendSubscription(tID,tPivot,tEmails,tFormat,tDayOfWeek,tHour,tMinute,tName)
36+
Set tSC = ##class(PivotSubscriptions.Task).SendSubscription(tID,0,tPivot,tEmails,tFormat,tDayOfWeek,tHour,tMinute,tName)
37+
38+
If tRunOnce {
39+
Set tSC=##class(PivotSubscriptions.EventLog).CreateEvent("delete",tID,$username,tPivot,tDayOfWeek,tHour,tMinute,tFormat,tEmails,tName,tRunOnce,.tDeleteEvent)
40+
Set tSC=##class(PivotSubscriptions.Subscription).%DeleteId(tID)
41+
Do tDeleteEvent.UpdateStatus(tSC)
42+
}
3643
}
3744

3845
Quit tSC
3946
}
4047

41-
ClassMethod SendSubscription(pID, pPivot As %String, pEmails As %String, pFormat As %String, pDayOfWeek, pHour, pMinute, pName) As %Status
48+
ClassMethod SendSubscription(pID, pSendNow As %Boolean = 0, pPivot As %String, pEmails As %String, pFormat As %String, pDayOfWeek, pHour, pMinute, pName) As %Status
4249
{
4350
Set tSC=$$$OK
4451

@@ -47,18 +54,20 @@ ClassMethod SendSubscription(pID, pPivot As %String, pEmails As %String, pFormat
4754
}
4855

4956
Try {
50-
Set tSC=##class(PivotSubscriptions.Task).SendEmail(pID,pPivot,pEmails,pFormat,pName)
57+
Set tSC=##class(PivotSubscriptions.Task).SendEmail(pID,pSendNow,pPivot,pEmails,pFormat,pName)
5158
} Catch ex {
5259
Set tSC=ex.AsStatus()
5360
}
5461

5562
Quit tSC
5663
}
5764

58-
ClassMethod SendEmail(pID, pPivot As %String, pEmails As %String, pFormat As %String, pName As %String) As %Status
65+
ClassMethod SendEmail(pID, pSendNow As %Boolean = 0, pPivot As %String, pEmails As %String, pFormat As %String, pName As %String) As %Status
5966
{
6067
Set tSC=$$$OK
6168
Set tFilename=""
69+
70+
Set tEventType=$Select(pSendNow:"sendNow",1:"sendSubscription")
6271

6372
Set mdx=##class(%DeepSee.Utils).%GetMDXFromPivot(pPivot,.tSC,0)
6473
Set tSubscription=##class(PivotSubscriptions.Subscription).%OpenId(pID)
@@ -67,7 +76,7 @@ ClassMethod SendEmail(pID, pPivot As %String, pEmails As %String, pFormat As %St
6776
For tCount=1:1:$l(pEmails,",") {
6877
Set tEmail=$p(pEmails,",",tCount)
6978

70-
Set tSC=##class(PivotSubscriptions.EventLog).CreateEvent("sendSubscription",pID,$username,pPivot,tSubscription.DayOfWeek,tSubscription.Hour,tSubscription.Minute,tSubscription.Format,tEmail,pName,.pEvent)
79+
Set tSC=##class(PivotSubscriptions.EventLog).CreateEvent(tEventType,pID,$username,pPivot,tSubscription.DayOfWeek,tSubscription.Hour,tSubscription.Minute,tSubscription.Format,tEmail,pName,tSubscription.RunOnce,.pEvent)
7180
If $$$ISERR(tSC) Quit tSC
7281

7382
Try {

PivotSubscriptions/UI/Dialog/EditSubscription.cls

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ XData dialogBody [ XMLNamespace = "http://www.intersystems.com/zen" ]
3434
<text id="SubscriptionId" value="0" hidden="true"/>
3535
<label id="Name" label="Subscription name: "/>
3636
<text id="SubscriptionName" size="40"/>
37+
<radioSet id="RunOnce" label="Run Once?" displayList="No,Yes" valueList="0,1" value="0"/>
38+
<select id="Preset" label="Preset Schedules" displayList="Weekdays,Weekends,Twice Weekly,Three Times Weekly" valueList="0,1,2,3" onchange="zenPage.updateSchedule();"/>
3739
<multiSelectSet id="DayOfWeek" label="Day(s) Of Week" layout="horizontal" displayList="Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday" valueList="0,1,2,3,4,5,6"/>
3840
<hgroup>
3941
<select id="Hour" label="Hour" displayList="00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23" valueList="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23"/>
@@ -78,6 +80,7 @@ Method %OnAfterCreatePage() As %Status
7880
Set ..%GetComponentById("Emails").value=tSubscription.Emails
7981
Set ..%GetComponentById("SubscriptionName").value=tSubscription.Name
8082
Set ..%GetComponentById("CustomEmailText").value=tSubscription.CustomEmailText
83+
Set ..%GetComponentById("RunOnce").value=tSubscription.RunOnce
8184

8285
// Populate CustomFilters
8386
Set tKey=""
@@ -109,6 +112,19 @@ Method %OnAfterCreatePage() As %Status
109112
Do ..%AddComponent(tOption)
110113
}
111114

115+
// Populate Preset Selection Dropdown
116+
Set tPreset=..%GetComponentById("Preset")
117+
Set tDayOfWeek=..%GetComponentById("DayOfWeek")
118+
If tDayOfWeek.value="1,2,3,4,5" {
119+
Set tPreset.value=0
120+
} ElseIf tDayOfWeek.value="0,6" {
121+
Set tPreset.value=1
122+
} ElseIf tDayOfWeek.value="2,4" {
123+
Set tPreset.value=2
124+
} ElseIf tDayOfWeek.value="1,3,5" {
125+
Set tPreset.value=3
126+
}
127+
112128
Quit $$$OK
113129
}
114130

@@ -126,8 +142,9 @@ ClientMethod ondialogFinish(action) As %Boolean [ Language = javascript ]
126142
var name=zen('SubscriptionName').getValue();
127143
var pivot=this.pivotName;
128144
var emailtext=zen('CustomEmailText').getValue();
145+
var runonce=zen('RunOnce').getValue();
129146

130-
var status=zenPage.EditSubscription(subscriptionid,pivot,dayofweek,hour,minute,emails,format,name,emailtext);
147+
var status=zenPage.EditSubscription(subscriptionid,pivot,dayofweek,hour,minute,emails,format,name,emailtext,runonce);
131148

132149
if (status!=1) {
133150
alert("Error during save, see Event Log for more details.");
@@ -145,7 +162,7 @@ ClientMethod getDialogValue() [ Language = javascript ]
145162
return '';
146163
}
147164

148-
Method EditSubscription(pSubscriptionId, pPivot, pDayOfWeek, pHour, pMinute, pEmails, pFormat, pName, pEmailText) As %Status [ ZenMethod ]
165+
Method EditSubscription(pSubscriptionId, pPivot, pDayOfWeek, pHour, pMinute, pEmails, pFormat, pName, pEmailText, pRunOnce) As %Status [ ZenMethod ]
149166
{
150167
Set tSC=$$$OK
151168

@@ -160,7 +177,7 @@ Method EditSubscription(pSubscriptionId, pPivot, pDayOfWeek, pHour, pMinute, pEm
160177
Set tEventType="create"
161178
}
162179

163-
Set tSC=##class(PivotSubscriptions.EventLog).CreateEvent(tEventType,pSubscriptionId,$username,tSubscription.Pivot,tSubscription.DayOfWeek,tSubscription.Hour,tSubscription.Minute,tSubscription.Format,tSubscription.Emails,tSubscription.Name,.tEvent)
180+
Set tSC=##class(PivotSubscriptions.EventLog).CreateEvent(tEventType,pSubscriptionId,$username,tSubscription.Pivot,tSubscription.DayOfWeek,tSubscription.Hour,tSubscription.Minute,tSubscription.Format,tSubscription.Emails,tSubscription.Name,tSubscription.RunOnce,.tEvent)
164181

165182
Set tSubscription.DayOfWeek=pDayOfWeek
166183
Set tSubscription.Hour=pHour
@@ -169,6 +186,7 @@ Method EditSubscription(pSubscriptionId, pPivot, pDayOfWeek, pHour, pMinute, pEm
169186
Set tSubscription.Emails=pEmails
170187
Set tSubscription.Name=pName
171188
Set tSubscription.CustomEmailText=pEmailText
189+
Set tSubscription.RunOnce=pRunOnce
172190

173191
// Get Custom Filter info
174192
Set tKey=""
@@ -182,7 +200,7 @@ Method EditSubscription(pSubscriptionId, pPivot, pDayOfWeek, pHour, pMinute, pEm
182200
Set tSC=tSubscription.%Save()
183201
Do tEvent.UpdateStatus(tSC)
184202
If tSC {
185-
Do tEvent.UpdateEvent(pDayOfWeek,pHour,pMinute,pFormat,pEmails,pName)
203+
Do tEvent.UpdateEvent(pDayOfWeek,pHour,pMinute,pFormat,pEmails,pName,pRunOnce)
186204
}
187205

188206
Quit tSC
@@ -289,6 +307,30 @@ Method GetCustomFilter(pEmail) As %String [ ZenMethod ]
289307
Quit tFilter
290308
}
291309

310+
ClientMethod updateSchedule() [ Language = javascript ]
311+
{
312+
var schedule=zen('Preset');
313+
var dayofweek=zen('DayOfWeek');
314+
315+
switch(parseInt(schedule.value)) {
316+
case 0:
317+
dayofweek.setProperty("value","1,2,3,4,5")
318+
break;
319+
case 1:
320+
dayofweek.setProperty("value","0,6")
321+
break;
322+
case 2:
323+
dayofweek.setProperty("value","2,4")
324+
break;
325+
case 3:
326+
dayofweek.setProperty("value","1,3,5")
327+
break;
328+
default:
329+
break;
330+
}
331+
dayofweek.updateValue();
332+
}
333+
292334
ClientMethod customFilter() [ Language = javascript ]
293335
{
294336
var emailList=zen('EmailList');

PivotSubscriptions/UI/Dialog/EventDetails.cls

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ ClassMethod DrawDetails(pEventId) As %Status
9494
<td>Email</td>
9595
<td>#(tEvent.Emails)#</td>
9696
</tr>
97+
<tr>
98+
<td>Run Once</td>
99+
<td>#(tEvent.RunOnce)#</td>
100+
</tr>
97101
<tr>
98102
<td>Status</td>
99103
<td>#($Select(tEvent.Status:"OK",1:$system.Status.GetErrorText(tEvent.Status)))#</td>

PivotSubscriptions/UI/SubscriptionManager.cls

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ Method Delete(pId As %Integer) As %String [ ZenMethod ]
133133
Set tMsg="Subscription Deleted."
134134

135135
Set tSubscription=##class(PivotSubscriptions.Subscription).%OpenId(pId)
136-
Set tSC=##class(PivotSubscriptions.EventLog).CreateEvent("delete",pId,$username,tSubscription.Pivot,tSubscription.DayOfWeek,tSubscription.Hour,tSubscription.Minute,tSubscription.Format,tSubscription.Emails,tSubscription.Name,.tEvent)
136+
Set tSC=##class(PivotSubscriptions.EventLog).CreateEvent("delete",pId,$username,tSubscription.Pivot,tSubscription.DayOfWeek,tSubscription.Hour,tSubscription.Minute,tSubscription.Format,tSubscription.Emails,tSubscription.Name,tSubscription.RunOnce,.tEvent)
137137

138138
If $$$ISERR(tSC) Quit tSC
139139

@@ -153,7 +153,7 @@ Method SendNow(pId, pPivot, pEmail As %String) As %String [ ZenMethod ]
153153

154154
If pId'=0 {
155155
Set tSubscription=##class(PivotSubscriptions.Subscription).%OpenId(pId)
156-
Set tSC=##class(PivotSubscriptions.Task).SendSubscription(pId,pPivot,pEmail,tSubscription.Format,tSubscription.DayOfWeek,tSubscription.Hour,tSubscription.Minute,tSubscription.Name)
156+
Set tSC=##class(PivotSubscriptions.Task).SendSubscription(pId,1,pPivot,pEmail,tSubscription.Format,tSubscription.DayOfWeek,tSubscription.Hour,tSubscription.Minute,tSubscription.Name)
157157

158158
If $$$ISERR(tSC) {
159159
Set tMsg=$System.Status.GetErrorText(tSC)

PivotSubscriptions/Utils.cls

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Class PivotSubscriptions.Utils
33

44
ClassMethod GetVersion() As %String
55
{
6-
Quit "v1.4.1"
6+
Quit "v1.5.0"
77
}
88

99
/// Utility method for saving and updating global variables
@@ -184,7 +184,7 @@ ClassMethod WriteEmail(pSubscription As PivotSubscriptions.Subscription, pMsg As
184184
ClassMethod TableErrorMessage(pSubscription As PivotSubscriptions.Subscription, pEmail As %String, pName As %String, pReason As %String, pMDX As %String) As %Status
185185
{
186186
Set tAdminEmail=##class(PivotSubscriptions.Utils).GetSettings("AdminEmail")
187-
Set tLog=##class(PivotSubscriptions.EventLog).CreateEvent("tableError",pSubscription.%Id(),$username,pSubscription.Pivot,pSubscription.DayOfWeek,pSubscription.Hour,pSubscription.Minute,pSubscription.Format,tAdminEmail,pName,.pEvent)
187+
Set tLog=##class(PivotSubscriptions.EventLog).CreateEvent("tableError",pSubscription.%Id(),$username,pSubscription.Pivot,pSubscription.DayOfWeek,pSubscription.Hour,pSubscription.Minute,pSubscription.Format,tAdminEmail,pName,pSubscription.RunOnce,.pEvent)
188188

189189
If $$$ISERR(tLog) Quit tLog
190190

0 commit comments

Comments
 (0)