DeviationController.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using GreenTree.Nachtragsmanagement.Core.Domain.Appendix;
  2. using GreenTree.Nachtragsmanagement.Core.Domain.Deviation;
  3. using GreenTree.Nachtragsmanagement.Services.Appendix;
  4. using GreenTree.Nachtragsmanagement.Services.Deviation;
  5. using GreenTree.Nachtragsmanagement.Web.Framework.Authorization;
  6. using GreenTree.Nachtragsmanagement.Web.Models.Deviation;
  7. using Newtonsoft.Json;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Web;
  12. using System.Web.Mvc;
  13. namespace GreenTree.Nachtragsmanagement.Web.Controllers
  14. {
  15. public class DeviationController : Controller
  16. {
  17. private readonly IDeviationService _deviationService;
  18. private readonly IAppendixService _appendixService;
  19. public DeviationController(
  20. IDeviationService deviationService,
  21. IAppendixService appendixService)
  22. {
  23. _deviationService = deviationService;
  24. ViewData["AllAppendices"] = _appendixService.GetAllAppendices();
  25. ViewData["AllStatuses"] = _deviationService.GetAllStatuses();
  26. ViewData["AllDisturbances"] = _deviationService.GetAllDisturbances();
  27. ViewData["AllKinds"] = _deviationService.GetAllKinds();
  28. }
  29. /// <summary>
  30. /// Basic deviation view function
  31. /// </summary>
  32. [FunctionAuthorize(true, "Deviation-Deviations")]
  33. public ActionResult ViewDeviations()
  34. {
  35. var deviations = _deviationService.GetAllDeviations();
  36. var deviationModels = deviations
  37. .Select(u => DeviationDataModel.FromDeviation(u, false))
  38. .ToList();
  39. return View("~/Views/Admin/Deviations/View.cshtml", deviationModels);
  40. }
  41. /// <summary>
  42. /// Get JSON data of specific deviation
  43. /// </summary>
  44. /// <param name="id">Deviation id.</param>
  45. public ActionResult GetDeviation(int id = -1)
  46. {
  47. var deviation = _deviationService.GetDeviationById(id);
  48. if (deviation == null)
  49. return new JsonResult
  50. {
  51. Data = "notFound",
  52. JsonRequestBehavior = JsonRequestBehavior.AllowGet
  53. };
  54. var deviationModel = DeviationDataModel.FromDeviation(deviation, false);
  55. return new JsonResult
  56. {
  57. Data = JsonConvert.SerializeObject(deviationModel),
  58. JsonRequestBehavior = JsonRequestBehavior.AllowGet
  59. };
  60. }
  61. /// <summary>
  62. /// Callback result for deviation grid
  63. /// </summary>
  64. public ActionResult PartialDeviations()
  65. {
  66. var deviations = _deviationService.GetAllDeviations();
  67. var deviationModels = deviations
  68. .Select(u => DeviationDataModel.FromDeviation(u, false))
  69. .ToList();
  70. return PartialView("~/Views/Admin/Deviations/_DeviationGridPartial.cshtml", deviationModels);
  71. }
  72. /// <summary>
  73. /// Partial edit for editing of existing or for new deviation
  74. /// </summary>
  75. /// <param name="id">Id for existing deviation, otherweise -1.</param>
  76. public ActionResult EditDeviation(int id = -1)
  77. {
  78. var deviation = _deviationService.GetDeviationById(id);
  79. var deviationModel = DeviationDataModel.FromDeviation(deviation, true);
  80. return PartialView("~/Views/Admin/Deviations/_DeviationEditPartial.cshtml", deviationModel);
  81. }
  82. /// <summary>
  83. /// Partial edit result if ModelState is valid, otherwise simple JSON result for success
  84. /// </summary>
  85. /// <param name="deviationModel">Deviation model to be saved.</param>
  86. [HttpPost, ValidateInput(false)]
  87. public ActionResult EditDeviation(DeviationDataModel deviationModel)
  88. {
  89. if (!ModelState.IsValid)
  90. {
  91. //deviationModel.AppendixDescription = ((IList<Appendix>)ViewData["AllAppendices"])
  92. // .First(d => d.Id == deviationModel.AppendixId).CustomNumber;
  93. //deviationModel.StatusDescription = ((IList<Status>)ViewData["AllStatuses"])
  94. // .First(d => d.Id == deviationModel.StatusId).Description;
  95. //deviationModel.DisturbanceDescription = ((IList<Disturbance>)ViewData["AllDisturbances"])
  96. // .First(d => d.Id == deviationModel.DisturbanceId).Description;
  97. //deviationModel.KindDescription = ((IList<Kind>)ViewData["AllKinds"])
  98. // .First(d => d.Id == deviationModel.KindId).Description;
  99. return PartialView("~/Views/Admin/Deviations/_DeviationEditPartial.cshtml", deviationModel);
  100. }
  101. if (deviationModel.Id == -1)
  102. {
  103. var deviation = deviationModel.ToDeviation();
  104. _deviationService.InsertDeviation(deviation);
  105. }
  106. else
  107. {
  108. var deviation = _deviationService.GetDeviationById(deviationModel.Id);
  109. deviation.CustomNumber = deviationModel.CustomNumber;
  110. deviation.ReceiptDate = deviationModel.ReceiptDate;
  111. deviation.Value = deviationModel.Value;
  112. deviation.AppendixId = deviationModel.AppendixId;
  113. deviation.StatusId = deviationModel.StatusId;
  114. deviation.DisturbanceId = deviationModel.DisturbanceId;
  115. deviation.KindId = deviationModel.KindId;
  116. deviation.Comment = deviationModel.Comment;
  117. _deviationService.UpdateDeviation(deviation);
  118. }
  119. return new JsonResult
  120. {
  121. Data = "success"
  122. };
  123. }
  124. /// <summary>
  125. /// Simple JSON result for deleting a specific deviation
  126. /// </summary>
  127. /// <param name="id">Deviation id.</param>
  128. [HttpPost]
  129. public ActionResult DeleteDeviation(int id)
  130. {
  131. var deviation = _deviationService.GetDeviationById(id);
  132. if (deviation != null)
  133. _deviationService.DeleteDeviation(deviation);
  134. return new JsonResult
  135. {
  136. Data = "success"
  137. };
  138. }
  139. }
  140. }