_MailNotificationCronPartial.cshtml 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. 
  2. <script>
  3. if (!String.prototype.format) {
  4. String.prototype.format = function () {
  5. var args = arguments;
  6. return this.replace(/{(\d+)}/g, function (match, number) {
  7. return typeof args[number] != 'undefined'
  8. ? args[number]
  9. : match;
  10. });
  11. };
  12. }
  13. function translateWeekDayCodeToWeekDays(weekDayCode) {
  14. switch (weekDayCode) {
  15. case 1: return "SUN";
  16. case 2: return "MON";
  17. case 4: return "TUE";
  18. case 8: return "WED";
  19. case 16: return "THU";
  20. case 32: return "FRI";
  21. case 64: return "SAT";
  22. case 62: return "MON,TUE,WED,THU,FRI";
  23. case 65: return "SAT,SUN";
  24. case 127: return "MON,TUE,WED,THU,FRI,SAT,SUN";
  25. default: return "*;"
  26. }
  27. }
  28. function generateCronExpression(baseName) {
  29. var controls = ASPxClientControl.GetControlCollection();
  30. var radioButtonList = ASPxClientRadioButtonList.Cast(controls.GetByName(baseName + "_AptRecCtl_TypeEdt"));
  31. var checkRecurrenceType = radioButtonList.GetValue();
  32. var timeEditDate = ASPxClientTimeEdit.Cast(devTimeEditCron).GetDate();
  33. var time = timeEditDate.getSeconds() + " " + timeEditDate.getMinutes() + " " + timeEditDate.getHours();
  34. var result = "* * * * * *";
  35. switch (checkRecurrenceType) {
  36. case 0:
  37. var repeatNDaysCheckBox = ASPxClientCheckBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Daily_RbDay"));
  38. var repeatNDaysSpinEdit = ASPxClientSpinEdit.Cast(controls.GetByName(baseName + "_AptRecCtl_Daily_SpnDayCnt"));
  39. var repeatEveryDayCheckBox = ASPxClientCheckBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Daily_RbEvrDay"));
  40. if (repeatEveryDayCheckBox.GetChecked()) {
  41. result = "{0} ? * MON-FRI *".format(time);
  42. } else {
  43. result = "{0} 1/{1} * ? *".format(time, repeatNDaysSpinEdit.GetValue());
  44. }
  45. break;
  46. case 1:
  47. var repeatNWeeksSpinEdit = ASPxClientSpinEdit.Cast(controls.GetByName(baseName + "_AptRecCtl_Weekly_SpnWeekCnt"));
  48. var repeatWeekDaysMondayCheckBox = ASPxClientCheckBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Weekly_WeekDaysEdt_Monday0"));
  49. var repeatWeekDaysTuesdayCheckBox = ASPxClientCheckBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Weekly_WeekDaysEdt_Tuesday1"));
  50. var repeatWeekDaysWednesdayCheckBox = ASPxClientCheckBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Weekly_WeekDaysEdt_Wednesday2"));
  51. var repeatWeekDaysThursdayCheckBox = ASPxClientCheckBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Weekly_WeekDaysEdt_Thursday3"));
  52. var repeatWeekDaysFridayCheckBox = ASPxClientCheckBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Weekly_WeekDaysEdt_Friday4"));
  53. var repeatWeekDaysSaturdayCheckBox = ASPxClientCheckBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Weekly_WeekDaysEdt_Saturday5"));
  54. var repeatWeekDaysSundayCheckBox = ASPxClientCheckBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Weekly_WeekDaysEdt_Sunday6"));
  55. var weekValue = repeatNWeeksSpinEdit.GetValue();
  56. if (weekValue == 1) {
  57. var weekDays = [];
  58. if (repeatWeekDaysMondayCheckBox.GetChecked()) { weekDays.push("MON"); }
  59. if (repeatWeekDaysTuesdayCheckBox.GetChecked()) { weekDays.push("TUE"); }
  60. if (repeatWeekDaysWednesdayCheckBox.GetChecked()) { weekDays.push("WED"); }
  61. if (repeatWeekDaysThursdayCheckBox.GetChecked()) { weekDays.push("THU"); }
  62. if (repeatWeekDaysFridayCheckBox.GetChecked()) { weekDays.push("FRI"); }
  63. if (repeatWeekDaysSaturdayCheckBox.GetChecked()) { weekDays.push("SAT"); }
  64. if (repeatWeekDaysSundayCheckBox.GetChecked()) { weekDays.push("SUN"); }
  65. result = "{0} ? * {1} *".format(time, weekDays.join(","));
  66. } else {
  67. result = "{0} 1/{1} * ? *".format(time, weekValue * 7);
  68. }
  69. break;
  70. case 2:
  71. var repeatNDayOfMonthRadioButton = ASPxClientRadioButton.Cast(controls.GetByName(baseName + "_AptRecCtl_Monthly_RbDay"));
  72. var repeatNDayOfMonthSpinEdit = ASPxClientSpinEdit.Cast(controls.GetByName(baseName + "_AptRecCtl_Monthly_SpnMnthDay"));
  73. var repeatNMonthsForDaySpinEdit = ASPxClientSpinEdit.Cast(controls.GetByName(baseName + "_AptRecCtl_Monthly_SpnDayMnthCnt"));
  74. var repeatNWeeksOfMonthRadioButton = ASPxClientRadioButton.Cast(controls.GetByName(baseName + "_AptRecCtl_Monthly_RbWeekDays"));
  75. var repeatNWeekDayNumberOfMonthComboBox = ASPxClientComboBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Monthly_WmeWeekOfMnth"));
  76. var repeatNWeekDayOfMonthComboBox = ASPxClientComboBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Monthly_WdeWeekDays"));
  77. var repeatNMonthsForWeekSpinEdit = ASPxClientSpinEdit.Cast(controls.GetByName(baseName + "_AptRecCtl_Monthly_SpinWeekDaysMnthCnt"));
  78. var repeatNWeekDayNumberOfMonth = repeatNWeekDayNumberOfMonthComboBox.GetValue();
  79. var repeatNWeekDayOfMonth = repeatNWeekDayOfMonthComboBox.GetValue();
  80. var repeatNMonthsForWeek = repeatNMonthsForWeekSpinEdit.GetValue();
  81. if (repeatNDayOfMonthRadioButton.GetChecked()) {
  82. result = "{0} {1} 1/{2} ? *".format(time, repeatNDayOfMonthSpinEdit.GetValue(), repeatNMonthsForDaySpinEdit.GetValue());
  83. } else {
  84. result = "{0} ? 1/{1} {2}#{3} *".format(time, repeatNMonthsForWeek,
  85. translateWeekDayCodeToWeekDays(repeatNWeekDayOfMonth),
  86. (repeatNWeekDayNumberOfMonth == 5 ? 4 : repeatNWeekDayNumberOfMonth));
  87. }
  88. break;
  89. case 3:
  90. var repeatNDayOfMonthByYearRadioButton = ASPxClientRadioButton.Cast(controls.GetByName(baseName + "_AptRecCtl_Yearly_RbDay"));
  91. var repeatNMonthByYearComboBox = ASPxClientComboBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Yearly_MeDayMnth"));
  92. var repeatNDayOfMonthByYearSpinEdit = ASPxClientSpinEdit.Cast(controls.GetByName(baseName + "_AptRecCtl_Yearly_SpnDayNo"));
  93. var repeatNWeekDayOfMonthByYearRadioButton = ASPxClientRadioButton.Cast(controls.GetByName(baseName + "_AptRecCtl_Yearly_RbWeekOfMnth"));
  94. var repeatNWeekDayNumberOfMonthByYearComboBox = ASPxClientComboBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Yearly_WmeWeekOfMnth"));
  95. var repeatNWeekDayOfMonthByYearComboBox = ASPxClientComboBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Yearly_WdeWeekDays"));
  96. var repeatNMonthOfYearComboBox = ASPxClientComboBox.Cast(controls.GetByName(baseName + "_AptRecCtl_Yearly_MeWeekDaysMnth"));
  97. var repeatNWeekDayNumberOfMonthByYear = repeatNWeekDayNumberOfMonthByYearComboBox.GetValue();
  98. var repeatNWeekDayOfMonthByYear = repeatNWeekDayOfMonthByYearComboBox.GetValue();
  99. if (repeatNDayOfMonthByYearRadioButton.GetChecked()) {
  100. result = "{0} {1} {2} ? *".format(time, repeatNDayOfMonthByYearSpinEdit.GetValue(), repeatNMonthByYearComboBox.GetValue());
  101. } else {
  102. result = "{0} ? {1} {2}#{3} *".format(time, repeatNMonthOfYearComboBox.GetValue(),
  103. translateWeekDayCodeToWeekDays(repeatNWeekDayOfMonthByYear),
  104. (repeatNWeekDayNumberOfMonthByYear == 5 ? 4 : repeatNWeekDayNumberOfMonthByYear))
  105. }
  106. break;
  107. }
  108. return result;
  109. }
  110. </script>
  111. <style>
  112. .recurrenceRange {
  113. display: none !important;
  114. }
  115. </style>
  116. @Html.DevExpress().TimeEdit(t =>
  117. {
  118. t.Name = "devTimeEditCron";
  119. t.DateTime = new DateTime(2000, 1, 1, 6, 0, 0);
  120. t.Properties.DisplayFormatString = "HH:mm \"Uhr\"";
  121. }).GetHtml()
  122. @Html.DevExpress().AppointmentRecurrenceForm(r =>
  123. {
  124. r.Name = "devRecurrenceFormCron";
  125. r.IsRecurring = true;
  126. r.PreRender = (sender, e) =>
  127. {
  128. var control = sender as DevExpress.Web.ASPxScheduler.Controls.AppointmentRecurrenceForm;
  129. var controls = GreenTree.Nachtragsmanagement.Web.Extensions.ControlHelper.GetAllSubControlsOfTypes(
  130. control,
  131. typeof(ASPxCheckBox),
  132. typeof(DevExpress.Web.ASPxScheduler.Controls.RecurrenceRangeControl));
  133. foreach (var subControl in controls)
  134. {
  135. if (subControl.ID == "ChkRecurrence")
  136. ((ASPxEdit)subControl).ClientVisible = false;
  137. if (subControl.ID == "RangeCtl")
  138. ((DevExpress.Web.ASPxScheduler.Controls.RecurrenceRangeControl)subControl).MainDiv.CssClass = "recurrenceRange";
  139. }
  140. };
  141. }).GetHtml()