@@ -40,11 +40,9 @@ public static SimpleSchedulePolicy GetPSSimpleSchedulePolicy(
40
40
41
41
SimpleSchedulePolicy psPolicy = new SimpleSchedulePolicy ( ) ;
42
42
43
- psPolicy . ScheduleRunDays =
44
- HelperUtils . EnumListConverter < ServiceClientModel . DayOfWeek ? , DayOfWeek > (
45
- serviceClientPolicy . ScheduleRunDays ) ;
46
- psPolicy . ScheduleRunFrequency = ( ScheduleRunType ) Enum . Parse (
47
- typeof ( ScheduleRunType ) , serviceClientPolicy . ScheduleRunFrequency . ToString ( ) ) ;
43
+ psPolicy . ScheduleRunDays = HelperUtils . EnumListConverter < ServiceClientModel . DayOfWeek ? , DayOfWeek > ( serviceClientPolicy . ScheduleRunDays ) ;
44
+
45
+ psPolicy . ScheduleRunFrequency = ( ScheduleRunType ) Enum . Parse ( typeof ( ScheduleRunType ) , serviceClientPolicy . ScheduleRunFrequency . ToString ( ) ) ;
48
46
psPolicy . ScheduleRunTimes = ParseDateTimesToUTC ( serviceClientPolicy . ScheduleRunTimes , timeZone ) ;
49
47
50
48
if ( psPolicy . ScheduleRunFrequency == ScheduleRunType . Weekly )
@@ -82,23 +80,92 @@ public static SimpleSchedulePolicy GetPSSimpleSchedulePolicy(
82
80
psPolicy . ScheduleWindowStartTime = serviceClientPolicy . HourlySchedule . ScheduleWindowStartTime ;
83
81
psPolicy . ScheduleWindowDuration = serviceClientPolicy . HourlySchedule . ScheduleWindowDuration ;
84
82
psPolicy . ScheduleRunTimeZone = timeZone ;
85
- psPolicy . ScheduleRunDays = null ;
86
- psPolicy . ScheduleRunTimes = null ;
87
83
}
88
84
else
89
85
{
90
- psPolicy . ScheduleInterval = null ;
91
- psPolicy . ScheduleWindowStartTime = null ;
92
- psPolicy . ScheduleWindowDuration = null ;
93
86
psPolicy . ScheduleRunTimeZone = timeZone ;
94
87
}
95
88
96
89
// safe side validation
97
- if ( psPolicy . ScheduleRunFrequency != ScheduleRunType . Hourly )
90
+ psPolicy . Validate ( ) ;
91
+
92
+ return psPolicy ;
93
+ }
94
+
95
+ // <summary>
96
+ /// Helper function to convert ps simple schedule policy from service response.
97
+ /// </summary>
98
+ public static SimpleSchedulePolicyV2 GetPSSimpleSchedulePolicyV2 (
99
+ ServiceClientModel . SimpleSchedulePolicyV2 serviceClientPolicy , string timeZone )
100
+ {
101
+ if ( serviceClientPolicy == null )
98
102
{
99
- psPolicy . Validate ( ) ;
100
- }
103
+ return null ;
104
+ }
101
105
106
+ SimpleSchedulePolicyV2 psPolicy = new SimpleSchedulePolicyV2 ( ) ;
107
+
108
+ psPolicy . ScheduleRunFrequency = ( ScheduleRunType ) Enum . Parse ( typeof ( ScheduleRunType ) , serviceClientPolicy . ScheduleRunFrequency . ToString ( ) ) ;
109
+
110
+ if ( psPolicy . ScheduleRunFrequency == ScheduleRunType . Weekly )
111
+ {
112
+ psPolicy . WeeklySchedule = new WeeklySchedule ( ) ;
113
+
114
+ int offset = 0 ;
115
+ if ( serviceClientPolicy . WeeklySchedule != null )
116
+ {
117
+ psPolicy . WeeklySchedule . ScheduleRunDays = HelperUtils . EnumListConverter < ServiceClientModel . DayOfWeek ? , DayOfWeek > ( serviceClientPolicy . WeeklySchedule . ScheduleRunDays ) ;
118
+ psPolicy . WeeklySchedule . ScheduleRunTimes = ParseDateTimesToUTC ( serviceClientPolicy . WeeklySchedule . ScheduleRunTimes , timeZone ) ;
119
+
120
+ offset = psPolicy . WeeklySchedule . ScheduleRunTimes [ 0 ] . DayOfWeek . GetHashCode ( ) - serviceClientPolicy . WeeklySchedule . ScheduleRunTimes [ 0 ] . Value . DayOfWeek . GetHashCode ( ) ;
121
+ }
122
+
123
+ for ( int index = 0 ; index < psPolicy . WeeklySchedule . ScheduleRunDays . Count ( ) ; index ++ )
124
+ {
125
+ if ( offset == - 1 )
126
+ {
127
+ int value = psPolicy . WeeklySchedule . ScheduleRunDays [ index ] . GetHashCode ( ) - 1 ;
128
+ if ( value == - 1 )
129
+ {
130
+ value = 6 ;
131
+ }
132
+
133
+ psPolicy . WeeklySchedule . ScheduleRunDays [ index ] = ( DayOfWeek ) value ;
134
+ }
135
+ else if ( offset == 1 )
136
+ {
137
+ int value = psPolicy . WeeklySchedule . ScheduleRunDays [ index ] . GetHashCode ( ) + 1 ;
138
+ if ( value == 7 )
139
+ {
140
+ value = 0 ;
141
+ }
142
+ psPolicy . WeeklySchedule . ScheduleRunDays [ index ] = ( DayOfWeek ) value ;
143
+ }
144
+ }
145
+ }
146
+ else if ( psPolicy . ScheduleRunFrequency == ScheduleRunType . Hourly )
147
+ {
148
+ return null ;
149
+
150
+ /* // Uncomment Hourly policy
151
+ psPolicy.HourlySchedule = new HourlySchedule();
152
+
153
+ // multiple backups per day
154
+ psPolicy.HourlySchedule.Interval = serviceClientPolicy.HourlySchedule.Interval;
155
+ psPolicy.HourlySchedule.WindowStartTime = serviceClientPolicy.HourlySchedule.ScheduleWindowStartTime;
156
+ psPolicy.HourlySchedule.WindowDuration = serviceClientPolicy.HourlySchedule.ScheduleWindowDuration; */
157
+ }
158
+ else
159
+ {
160
+ psPolicy . DailySchedule = new DailySchedule ( ) ;
161
+ psPolicy . DailySchedule . ScheduleRunTimes = ( serviceClientPolicy . DailySchedule != null ) ? ParseDateTimesToUTC ( serviceClientPolicy . DailySchedule . ScheduleRunTimes , timeZone ) : null ;
162
+ }
163
+
164
+ psPolicy . ScheduleRunTimeZone = timeZone ;
165
+
166
+ // safe side validation
167
+ psPolicy . Validate ( ) ;
168
+
102
169
return psPolicy ;
103
170
}
104
171
@@ -161,38 +228,72 @@ public static List<DateTime> ParseDateTimesToUTC(IList<DateTime?> localTimes, st
161
228
// <summary>
162
229
/// Helper function to convert service simple schedule policy from ps schedule policy.
163
230
/// </summary>
164
- public static ServiceClientModel . SimpleSchedulePolicy GetServiceClientSimpleSchedulePolicy (
165
- SimpleSchedulePolicy psPolicy )
231
+ public static ServiceClientModel . SchedulePolicy GetServiceClientSimpleSchedulePolicy (
232
+ SchedulePolicyBase psPolicy )
166
233
{
167
234
if ( psPolicy == null )
168
235
{
169
236
return null ;
170
237
}
171
238
172
- ServiceClientModel . SimpleSchedulePolicy serviceClientPolicy = new ServiceClientModel . SimpleSchedulePolicy ( ) ;
173
- serviceClientPolicy . ScheduleRunFrequency =
174
- ServiceClientHelpers . GetServiceClientScheduleRunType (
175
- psPolicy . ScheduleRunFrequency ) ;
176
-
177
- if ( psPolicy . ScheduleRunFrequency == ScheduleRunType . Weekly )
239
+ if ( psPolicy . GetType ( ) == typeof ( SimpleSchedulePolicy ) )
178
240
{
179
- serviceClientPolicy . ScheduleRunDays =
180
- HelperUtils . EnumListConverter < DayOfWeek , ServiceClientModel . DayOfWeek > (
181
- psPolicy . ScheduleRunDays ) . Cast < ServiceClientModel . DayOfWeek ? > ( ) . ToList ( ) ;
182
- }
241
+ SimpleSchedulePolicy schPolicy = ( SimpleSchedulePolicy ) psPolicy ;
242
+ ServiceClientModel . SimpleSchedulePolicy serviceClientPolicy = new ServiceClientModel . SimpleSchedulePolicy ( ) ;
183
243
184
- if ( psPolicy . ScheduleRunFrequency != ScheduleRunType . Hourly )
185
- {
186
- serviceClientPolicy . ScheduleRunTimes = psPolicy . ScheduleRunTimes . ConvertAll ( dateTime => ( DateTime ? ) dateTime ) ;
244
+ serviceClientPolicy . ScheduleRunFrequency = ServiceClientHelpers . GetServiceClientScheduleRunType ( schPolicy . ScheduleRunFrequency ) ;
245
+
246
+ if ( schPolicy . ScheduleRunFrequency == ScheduleRunType . Weekly )
247
+ {
248
+ serviceClientPolicy . ScheduleRunDays = HelperUtils . EnumListConverter < DayOfWeek , ServiceClientModel . DayOfWeek > (
249
+ schPolicy . ScheduleRunDays ) . Cast < ServiceClientModel . DayOfWeek ? > ( ) . ToList ( ) ;
250
+ }
251
+
252
+ if ( schPolicy . ScheduleRunFrequency != ScheduleRunType . Hourly )
253
+ {
254
+ serviceClientPolicy . ScheduleRunTimes = schPolicy . ScheduleRunTimes . ConvertAll ( dateTime => ( DateTime ? ) dateTime ) ;
255
+ }
256
+ else
257
+ {
258
+ serviceClientPolicy . HourlySchedule = new ServiceClientModel . HourlySchedule ( ) ;
259
+ serviceClientPolicy . HourlySchedule . Interval = schPolicy . ScheduleInterval ;
260
+ serviceClientPolicy . HourlySchedule . ScheduleWindowDuration = schPolicy . ScheduleWindowDuration ;
261
+ serviceClientPolicy . HourlySchedule . ScheduleWindowStartTime = schPolicy . ScheduleWindowStartTime ;
262
+ }
263
+ return serviceClientPolicy ;
187
264
}
188
- else
265
+
266
+ else if ( psPolicy . GetType ( ) == typeof ( SimpleSchedulePolicyV2 ) )
189
267
{
190
- serviceClientPolicy . HourlySchedule = new ServiceClientModel . HourlySchedule ( ) ;
191
- serviceClientPolicy . HourlySchedule . Interval = psPolicy . ScheduleInterval ;
192
- serviceClientPolicy . HourlySchedule . ScheduleWindowDuration = psPolicy . ScheduleWindowDuration ;
193
- serviceClientPolicy . HourlySchedule . ScheduleWindowStartTime = psPolicy . ScheduleWindowStartTime ;
268
+ SimpleSchedulePolicyV2 schPolicyV2 = ( SimpleSchedulePolicyV2 ) psPolicy ;
269
+ ServiceClientModel . SimpleSchedulePolicyV2 serviceClientPolicyV2 = new ServiceClientModel . SimpleSchedulePolicyV2 ( ) ;
270
+
271
+ serviceClientPolicyV2 . ScheduleRunFrequency = ServiceClientHelpers . GetServiceClientScheduleRunType ( schPolicyV2 . ScheduleRunFrequency ) ;
272
+
273
+ if ( schPolicyV2 . ScheduleRunFrequency == ScheduleRunType . Weekly )
274
+ {
275
+ serviceClientPolicyV2 . WeeklySchedule = new ServiceClientModel . WeeklySchedule ( ) ;
276
+ serviceClientPolicyV2 . WeeklySchedule . ScheduleRunDays = HelperUtils . EnumListConverter < DayOfWeek , ServiceClientModel . DayOfWeek > (
277
+ schPolicyV2 . WeeklySchedule . ScheduleRunDays ) . Cast < ServiceClientModel . DayOfWeek ? > ( ) . ToList ( ) ;
278
+
279
+ serviceClientPolicyV2 . WeeklySchedule . ScheduleRunTimes = schPolicyV2 . WeeklySchedule . ScheduleRunTimes . ConvertAll ( dateTime => ( DateTime ? ) dateTime ) ;
280
+ }
281
+ else if ( schPolicyV2 . ScheduleRunFrequency == ScheduleRunType . Daily )
282
+ {
283
+ serviceClientPolicyV2 . DailySchedule = new ServiceClientModel . DailySchedule ( ) ;
284
+ serviceClientPolicyV2 . DailySchedule . ScheduleRunTimes = schPolicyV2 . DailySchedule . ScheduleRunTimes . ConvertAll ( dateTime => ( DateTime ? ) dateTime ) ;
285
+ }
286
+ else if ( schPolicyV2 . ScheduleRunFrequency == ScheduleRunType . Hourly )
287
+ {
288
+ serviceClientPolicyV2 . HourlySchedule = new ServiceClientModel . HourlySchedule ( ) ;
289
+ serviceClientPolicyV2 . HourlySchedule . Interval = schPolicyV2 . HourlySchedule . Interval ;
290
+ serviceClientPolicyV2 . HourlySchedule . ScheduleWindowDuration = schPolicyV2 . HourlySchedule . WindowDuration ;
291
+ serviceClientPolicyV2 . HourlySchedule . ScheduleWindowStartTime = schPolicyV2 . HourlySchedule . WindowStartTime ;
292
+ }
293
+ return serviceClientPolicyV2 ;
194
294
}
195
- return serviceClientPolicy ;
295
+
296
+ return null ;
196
297
}
197
298
198
299
public static ServiceClientModel . LogSchedulePolicy GetServiceClientLogSchedulePolicy (
0 commit comments