Claims.cshtml 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. @using GreenTree.Nachtragsmanagement.Web.Models.Global
  2. @{
  3. Layout = "~/Views/Shared/_FunctionLayout.cshtml";
  4. }
  5. <script>
  6. var deleteId;
  7. var deleteReplaceId;
  8. var deleteClaimType;
  9. var claimTypeTranslation = {
  10. status: "VA-Status",
  11. disturbance: "Kategorie",
  12. kind: "Art"
  13. };
  14. $(document).ready(setListBoxHeights);
  15. $(window).resize(setListBoxHeights);
  16. function setListBoxHeights() {
  17. var windowHeight = $(window).height();
  18. devListBoxStatuses.SetHeight(windowHeight - 40);
  19. devListBoxDisturbances.SetHeight(windowHeight - 40);
  20. devListBoxKinds.SetHeight(windowHeight - 40);
  21. }
  22. function editClaim(claimType, id) {
  23. if (!id) return;
  24. $.ajax({
  25. url: '@Url.Action("EditClaim", "Deviation")',
  26. data: { claimType: claimType, Id: id },
  27. success: function (response) {
  28. setTimeout(function () {
  29. $(".claimEditContainer").remove();
  30. $("body").append(response);
  31. if (claimType == "status") {
  32. parent.addCustomEventListener('StatusDataCallbackEventReceiver', function () {
  33. devListBoxStatuses.PerformCallback();
  34. });
  35. } else if (claimType == "kind") {
  36. parent.addCustomEventListener('KindDataCallbackEventReceiver', function () {
  37. devListBoxKinds.PerformCallback();
  38. });
  39. } else if (claimType == "disturbance") {
  40. parent.addCustomEventListener('DisturbanceDataCallbackEventReceiver', function () {
  41. devListBoxDisturbances.PerformCallback();
  42. });
  43. }
  44. }, 200);
  45. },
  46. error: function () {
  47. alert("error occured");
  48. }
  49. });
  50. }
  51. function confirmDelete(claimType, id) {
  52. if (!id) return;
  53. deleteId = id;
  54. deleteClaimType = claimType;
  55. $.ajax({
  56. type: "GET",
  57. url: '@Url.Action("GetClaim", "Deviation")',
  58. data: { claimType: deleteClaimType, Id: id },
  59. success: function (response) {
  60. if (response == "notFound") return;
  61. var claim = JSON.parse(response);
  62. $(".deleteValidation").hide();
  63. var popupControl = MVCxClientPopupControl.Cast(devPopupControlDeleteClaim);
  64. popupControl.SetHeaderText(popupControl.GetHeaderText().replace("{claim}", claim.Description));
  65. $(".dialogText").text($(".dialogText").text().replace("{claim}", claim.Description));
  66. $(".dialogText").text($(".dialogText").text().replace("{claim}", claim.Description));
  67. $(".dialogText").text($(".dialogText").text().replace("{claimType}", claimTypeTranslation[claimType]));
  68. devRadioButtonDeleteReplaceClaim
  69. .SetText(devRadioButtonDeleteReplaceClaim.GetText().replace("{claimType}", claimTypeTranslation[claimType]));
  70. var comboBox = null;
  71. devComboBoxClaimDeleteReplaceStatus.SetVisible(false);
  72. devComboBoxClaimDeleteReplaceDisturbance.SetVisible(false);
  73. devComboBoxClaimDeleteReplaceKind.SetVisible(false);
  74. if (deleteClaimType == "status") {
  75. devComboBoxClaimDeleteReplaceStatus.SetVisible(true);
  76. comboBox = MVCxClientComboBox.Cast(devComboBoxClaimDeleteReplaceStatus);
  77. } else if (deleteClaimType == "kind") {
  78. devComboBoxClaimDeleteReplaceKind.SetVisible(true);
  79. comboBox = MVCxClientComboBox.Cast(devComboBoxClaimDeleteReplaceKind);
  80. } else if (deleteClaimType == "disturbance") {
  81. devComboBoxClaimDeleteReplaceDisturbance.SetVisible(true);
  82. comboBox = MVCxClientComboBox.Cast(devComboBoxClaimDeleteReplaceDisturbance);
  83. }
  84. comboBox.PerformCallback();
  85. popupControl.Show();
  86. }
  87. });
  88. }
  89. function deleteClaim() {
  90. if (deleteClaimType == "status") {
  91. deleteReplaceId = devComboBoxClaimDeleteReplaceStatus.GetValue();
  92. } else if (deleteClaimType == "kind") {
  93. deleteReplaceId = devComboBoxClaimDeleteReplaceKind.GetValue();
  94. } else if (deleteClaimType == "disturbance") {
  95. deleteReplaceId = devComboBoxClaimDeleteReplaceDisturbance.GetValue();
  96. }
  97. if (deleteReplaceId == 0) {
  98. $(".deleteValidation").text("Es muss ein Ersatz ausgewählt werden.");
  99. $(".deleteValidation").show();
  100. return;
  101. }
  102. if (deleteId == deleteReplaceId) {
  103. $(".deleteValidation").text("Der Ersatz darf nicht gleich dem zu löschenden Element sein.");
  104. $(".deleteValidation").show();
  105. return;
  106. }
  107. $.ajax({
  108. type: "POST",
  109. url: '@Url.Action("DeleteClaim", "Deviation")',
  110. data: { claimType: deleteClaimType, Id: deleteId, replaceId: deleteReplaceId },
  111. success: function (response) {
  112. var popupControl = MVCxClientPopupControl.Cast(devPopupControlDeleteClaim);
  113. popupControl.Hide();
  114. setTimeout(function () {
  115. if (deleteClaimType == "status") {
  116. devListBoxStatuses.PerformCallback();
  117. } else if (deleteClaimType == "disturbance") {
  118. devListBoxDisturbances.PerformCallback();
  119. } else if (deleteClaimType == "kind") {
  120. devListBoxKinds.PerformCallback();
  121. }
  122. }, 200);
  123. },
  124. error: function () {
  125. alert("error occured");
  126. }
  127. });
  128. }
  129. </script>
  130. <table style="width: 100%">
  131. <tbody>
  132. <tr>
  133. <td style="width: 33%; padding-right: 6px">
  134. <div class="listHeader">
  135. <span>VA-Stati</span>
  136. <img src='@Url.Content("~/Content/Images/add-24-contrast.png")' onclick='editClaim("status", -1)' title="Neuer VA-Status" />
  137. </div>
  138. @Html.Partial("~/Views/Deviations/_StatusListPartial.cshtml", ViewData["AllStatuses"])
  139. </td>
  140. <td style="width: 33%; padding: 0 6px">
  141. <div class="listHeader">
  142. <span>Arten</span>
  143. <img src='@Url.Content("~/Content/Images/add-24-contrast.png")' onclick='editClaim("kind", -1)' title="Neue Art" />
  144. </div>
  145. @Html.Partial("~/Views/Deviations/_KindListPartial.cshtml", ViewData["AllKinds"])
  146. </td>
  147. <td style="width: 33%; padding-left: 6px">
  148. <div class="listHeader">
  149. <span>VA-Kategorien</span>
  150. <img src='@Url.Content("~/Content/Images/add-24-contrast.png")' onclick='editClaim("disturbance", -1)' title="Neue VA-Kategorie" />
  151. </div>
  152. @Html.Partial("~/Views/Deviations/_DisturbanceListPartial.cshtml", ViewData["AllDisturbances"])
  153. </td>
  154. </tr>
  155. </tbody>
  156. </table>
  157. @Html.DevExpress().PopupControl(s =>
  158. {
  159. s.Name = "devPopupControlDeleteClaim";
  160. s.HeaderText = "\"{claim}\" löschen";
  161. s.Modal = false;
  162. s.Width = new Unit(350, UnitType.Pixel);
  163. s.CloseAction = CloseAction.CloseButton;
  164. s.PopupHorizontalAlign = PopupHorizontalAlign.WindowCenter;
  165. s.PopupVerticalAlign = PopupVerticalAlign.WindowCenter;
  166. s.AllowDragging = false;
  167. s.AllowResize = false;
  168. s.ShowFooter = false;
  169. s.SetContent(() =>
  170. {
  171. ViewContext.Writer.Write("<div class='dialogText' style='padding: 12px'>");
  172. ViewContext.Writer.Write("Falls Sie \"{claim}\" löschen möchten, was soll mit den Vertragsabweichungen geschehen, die bereits \"{claim}\" zugeordnet sind?");
  173. ViewContext.Writer.Write("</div>");
  174. ViewContext.Writer.Write("<div style='padding: 0 12px 12px 12px'>");
  175. Html.DevExpress().RadioButton(rb =>
  176. {
  177. rb.Name = "devRadioButtonDeleteReplaceClaim";
  178. rb.Text = "Eine neue(n) {claimType} zuweisen";
  179. rb.GroupName = "claimDelete";
  180. rb.Checked = true;
  181. }).Render();
  182. Session.Add("StatusesDeleteComboBoxSettings", new Action<ComboBoxSettings>(a =>
  183. {
  184. a.Name = "devComboBoxClaimDeleteReplaceStatus";
  185. a.Width = new Unit(100, UnitType.Percentage);
  186. a.Properties.ValueType = typeof(int);
  187. a.Properties.ValueField = "Id";
  188. a.Properties.TextField = "Description";
  189. a.Properties.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['excludedIds'] = [ deleteId ]; }";
  190. a.Properties.ClientSideEvents.EndCallback = "function (s, e) { s.SetSelectedIndex(0); }";
  191. a.SelectedIndex = 0;
  192. a.ClientVisible = false;
  193. a.CallbackRouteValues = new
  194. {
  195. Controller = "DataCallback",
  196. Action = "StatusesComboBoxExcluded",
  197. SettingsKey = "StatusesDeleteComboBoxSettings"
  198. };
  199. }));
  200. ViewData.Add("StatusesComboBoxSettings", "StatusesDeleteComboBoxSettings");
  201. Html.RenderPartial("~/Views/Shared/DataEditorTemplates/_StatusesComboBox.cshtml", null, ViewData);
  202. Session.Add("DisturbancesDeleteComboBoxSettings", new Action<ComboBoxSettings>(a =>
  203. {
  204. a.Name = "devComboBoxClaimDeleteReplaceDisturbance";
  205. a.Width = new Unit(100, UnitType.Percentage);
  206. a.Properties.ValueType = typeof(int);
  207. a.Properties.ValueField = "Id";
  208. a.Properties.TextField = "Description";
  209. a.Properties.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['excludedIds'] = [ deleteId ]; }";
  210. a.Properties.ClientSideEvents.EndCallback = "function (s, e) { s.SetSelectedIndex(0); }";
  211. a.SelectedIndex = 0;
  212. a.ClientVisible = false;
  213. a.CallbackRouteValues = new
  214. {
  215. Controller = "DataCallback",
  216. Action = "DisturbancesComboBoxExcluded",
  217. SettingsKey = "DisturbancesDeleteComboBoxSettings"
  218. };
  219. }));
  220. ViewData.Add("DisturbancesComboBoxSettings", "DisturbancesDeleteComboBoxSettings");
  221. Html.RenderPartial("~/Views/Shared/DataEditorTemplates/_DisturbancesComboBox.cshtml", null, ViewData);
  222. Session.Add("KindsDeleteComboBoxSettings", new Action<ComboBoxSettings>(a =>
  223. {
  224. a.Name = "devComboBoxClaimDeleteReplaceKind";
  225. a.Width = new Unit(100, UnitType.Percentage);
  226. a.Properties.ValueType = typeof(int);
  227. a.Properties.ValueField = "Id";
  228. a.Properties.TextField = "Description";
  229. a.Properties.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['excludedIds'] = [ deleteId ]; }";
  230. a.Properties.ClientSideEvents.EndCallback = "function (s, e) { s.SetSelectedIndex(0); }";
  231. a.SelectedIndex = 0;
  232. a.ClientVisible = false;
  233. a.CallbackRouteValues = new
  234. {
  235. Controller = "DataCallback",
  236. Action = "KindsComboBoxExcluded",
  237. SettingsKey = "KindsDeleteComboBoxSettings"
  238. };
  239. }));
  240. ViewData.Add("KindsComboBoxSettings", "KindsDeleteComboBoxSettings");
  241. Html.RenderPartial("~/Views/Shared/DataEditorTemplates/_KindsComboBox.cshtml", null, ViewData);
  242. ViewContext.Writer.Write("<div class=\"deleteValidation\" style=\"display: none\"></div>");
  243. ViewContext.Writer.Write("</div>");
  244. Html.RenderPartial(
  245. "~/Views/Shared/_PopupButtonPanelYesNo.cshtml",
  246. new YesNoDialogModel
  247. {
  248. PopupName = "devPopupControlDeleteClaim",
  249. YesFunction = "function (s, e) { deleteClaim(); }"
  250. }
  251. );
  252. });
  253. s.Styles.Content.Paddings.Padding = new Unit(0, UnitType.Pixel);
  254. }).GetHtml()