DeviationController.cs 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714
  1. using DevExpress.Web.Mvc;
  2. using GreenTree.Nachtragsmanagement.Core;
  3. using GreenTree.Nachtragsmanagement.Core.Authentication;
  4. using GreenTree.Nachtragsmanagement.Core.Domain.Appendix;
  5. using GreenTree.Nachtragsmanagement.Core.Domain.Deviation;
  6. using GreenTree.Nachtragsmanagement.Services.Appendix;
  7. using GreenTree.Nachtragsmanagement.Services.Deviation;
  8. using GreenTree.Nachtragsmanagement.Services.Logging;
  9. using GreenTree.Nachtragsmanagement.Services.Site;
  10. using GreenTree.Nachtragsmanagement.Web.Framework.Authorization;
  11. using GreenTree.Nachtragsmanagement.Web.Models.Deviation;
  12. using GreenTree.Nachtragsmanagement.Web.Models.Global;
  13. using Newtonsoft.Json;
  14. using System;
  15. using System.Collections.Generic;
  16. using System.Linq;
  17. using System.Web;
  18. using System.Web.Mvc;
  19. namespace GreenTree.Nachtragsmanagement.Web.Controllers
  20. {
  21. public class DeviationController : Controller
  22. {
  23. private readonly IDeviationService _deviationService;
  24. private readonly IAppendixService _appendixService;
  25. private readonly ISiteService _siteService;
  26. private readonly IUserHelper _userHelper;
  27. private readonly ILogger _logger;
  28. public DeviationController(
  29. IDeviationService deviationService,
  30. IAppendixService appendixService,
  31. ISiteService siteService,
  32. IUserHelper userHelper,
  33. ILogger logger)
  34. {
  35. _deviationService = deviationService;
  36. _appendixService = appendixService;
  37. _siteService = siteService;
  38. _userHelper = userHelper;
  39. _logger = logger;
  40. ViewData["AllDisturbances"] = _deviationService.GetAllDisturbances();
  41. ViewData["AllStatuses"] = _deviationService.GetAllStatuses();
  42. ViewData["AllKinds"] = _deviationService.GetAllKinds();
  43. }
  44. #region Deviations
  45. /// <summary>
  46. /// Basic deviation view function
  47. /// </summary>
  48. [FunctionAuthorize(true, "Deviation-Deviations")]
  49. public ActionResult ViewDeviations()
  50. {
  51. var deviations = _deviationService.GetAllDeviations();
  52. var deviationModels = deviations
  53. .Select(u => DeviationDataModel.FromDeviation(u, false))
  54. .ToList();
  55. return View("~/Views/Deviations/View.cshtml", deviationModels);
  56. }
  57. /// <summary>
  58. /// Get JSON data of specific deviation
  59. /// </summary>
  60. /// <param name="id">Deviation id.</param>
  61. public ActionResult GetDeviation(int id = -1)
  62. {
  63. var deviation = _deviationService.GetDeviationById(id);
  64. if (deviation == null)
  65. return new JsonResult
  66. {
  67. Data = "notFound",
  68. JsonRequestBehavior = JsonRequestBehavior.AllowGet
  69. };
  70. var deviationModel = DeviationDataModel.FromDeviation(deviation, false);
  71. return new JsonResult
  72. {
  73. Data = JsonConvert.SerializeObject(deviationModel),
  74. JsonRequestBehavior = JsonRequestBehavior.AllowGet
  75. };
  76. }
  77. /// <summary>
  78. /// Callback result for deviation grid
  79. /// </summary>
  80. /// <param name="scrollHeight">The height of the grid scrollable component.</param>
  81. public ActionResult PartialDeviations(int scrollHeight = -1)
  82. {
  83. var deviations = _deviationService.GetAllDeviations();
  84. var deviationModels = deviations
  85. .Select(u => DeviationDataModel.FromDeviation(u, false))
  86. .ToList();
  87. ViewData["ScrollHeight"] = scrollHeight;
  88. return PartialView("~/Views/Deviations/_DeviationGridPartial.cshtml", deviationModels);
  89. }
  90. /// <summary>
  91. /// Export result for deviation grid
  92. /// </summary>
  93. [HttpPost]
  94. public ActionResult ExportPartialDeviations(GridViewExportFormat exportformat)
  95. {
  96. if (exportformat == null || String.IsNullOrEmpty(exportformat.Format))
  97. return new EmptyResult();
  98. var deviations = _deviationService.GetAllDeviations();
  99. var deviationModels = deviations
  100. .Select(u => DeviationDataModel.FromDeviation(u, false))
  101. .ToList();
  102. var viewContext = new ViewContext();
  103. var viewPage = new ViewPage();
  104. var htmlHelper = new HtmlHelper(viewContext, viewPage);
  105. var gridViewSettings = Extensions.GridViewSettingsHelper.DeviationGridViewSettings(htmlHelper);
  106. switch (exportformat.Format.ToLower())
  107. {
  108. case "xlsx":
  109. return GridViewExtension.ExportToXlsx(gridViewSettings, deviationModels);
  110. case "xls":
  111. return GridViewExtension.ExportToXls(gridViewSettings, deviationModels);
  112. case "pdf":
  113. return GridViewExtension.ExportToPdf(gridViewSettings, deviationModels);
  114. default:
  115. return new EmptyResult();
  116. }
  117. }
  118. /// <summary>
  119. /// Partial edit for editing of existing or for new deviation
  120. /// </summary>
  121. /// <param name="id">Id for existing deviation, otherweise -1.</param>
  122. public ActionResult EditDeviation(int id = -1)
  123. {
  124. var deviation = _deviationService.GetDeviationById(id);
  125. var deviationModel = DeviationDataModel.FromDeviation(deviation, true);
  126. var defaultKind = _deviationService.GetDefaultKind();
  127. var defaultStatus = _deviationService.GetDefaultStatus();
  128. if (defaultKind != null)
  129. ViewData["DefaultKind"] = defaultKind.Id;
  130. if (defaultStatus != null)
  131. ViewData["DefaultStatus"] = defaultStatus.Id;
  132. return PartialView("~/Views/Deviations/_DeviationEditPartial.cshtml", deviationModel);
  133. }
  134. /// <summary>
  135. /// Partial edit for creating a new deviation for a site
  136. /// </summary>
  137. /// <param name="siteId">Id of the site which the deviation should be appended to.</param>
  138. public ActionResult AppendDeviationToSite(int siteId)
  139. {
  140. var site = _siteService.GetSiteById(siteId);
  141. var allDeviations = new List<Deviation>();
  142. allDeviations.AddRange(
  143. site.Appendices
  144. .SelectMany(a => a.Deviations));
  145. allDeviations.AddRange(
  146. site.Deviations);
  147. var lastCustomNumber = 0;
  148. if (allDeviations.Any())
  149. lastCustomNumber = allDeviations
  150. .Max(d => StaticHelper.TryParseInt(d.CustomNumber));
  151. var deviationModel = new DeviationDataModel
  152. {
  153. Id = -1,
  154. SiteId = siteId,
  155. CustomNumber = (lastCustomNumber + 1).ToString(),
  156. Percentage = 1,
  157. };
  158. var defaultKind = _deviationService.GetDefaultKind();
  159. var defaultStatus = _deviationService.GetDefaultStatus();
  160. if (defaultKind != null)
  161. ViewData["DefaultKind"] = defaultKind.Id;
  162. if (defaultStatus != null)
  163. ViewData["DefaultStatus"] = defaultStatus.Id;
  164. return PartialView("~/Views/Deviations/_DeviationEditPartial.cshtml", deviationModel);
  165. }
  166. /// <summary>
  167. /// Partial edit for creating a new deviation for an appendix
  168. /// </summary>
  169. /// <param name="appendixId">Id of the appendix which the deviation should be appended to.</param>
  170. public ActionResult AppendDeviationToAppendix(int appendixId)
  171. {
  172. var appendix = _appendixService.GetAppendixById(appendixId);
  173. var site = appendix.Site;
  174. var allDeviations = new List<Deviation>();
  175. allDeviations.AddRange(
  176. site.Appendices
  177. .SelectMany(a => a.Deviations));
  178. allDeviations.AddRange(
  179. site.Deviations);
  180. var lastCustomNumber = allDeviations
  181. .Max(d => StaticHelper.TryParseInt(d.CustomNumber));
  182. var deviationModel = new DeviationDataModel
  183. {
  184. Id = -1,
  185. AppendixId = appendixId,
  186. CustomNumber = (lastCustomNumber + 1).ToString(),
  187. Percentage = 1,
  188. };
  189. var defaultKind = _deviationService.GetDefaultKind();
  190. var defaultStatus = _deviationService.GetDefaultStatus();
  191. if (defaultKind != null)
  192. ViewData["DefaultKind"] = defaultKind.Id;
  193. if (defaultStatus != null)
  194. ViewData["DefaultStatus"] = defaultStatus.Id;
  195. return PartialView("~/Views/Deviations/_DeviationEditPartial.cshtml", deviationModel);
  196. }
  197. /// <summary>
  198. /// Partial edit result if ModelState is valid, otherwise simple JSON result for success
  199. /// </summary>
  200. /// <param name="deviationModel">Deviation model to be saved.</param>
  201. [HttpPost, ValidateInput(false)]
  202. public ActionResult EditDeviation(DeviationDataModel deviationModel)
  203. {
  204. try
  205. {
  206. deviationModel.DisturbanceValueEntities =
  207. deviationModel.DisturbanceEntities
  208. .Select(r => JsonConvert.DeserializeObject<DisturbanceValueDataModel>(r))
  209. .ToList();
  210. for (int i = 0; i < deviationModel.DisturbanceValueEntities.Count; i++)
  211. deviationModel.DisturbanceValueEntities.ElementAt(i).Json = deviationModel.DisturbanceEntities.ElementAt(i);
  212. deviationModel.PercentageValue = deviationModel.Value * deviationModel.Percentage;
  213. if (!ModelState.IsValid)
  214. return PartialView("~/Views/Deviations/_DeviationEditPartial.cshtml", deviationModel);
  215. var disturbanceValues = deviationModel.DisturbanceValueEntities
  216. .Select(r => r.ToDisturbanceValue())
  217. .ToList();
  218. if (deviationModel.Id == -1)
  219. {
  220. var deviation = deviationModel.ToDeviation();
  221. deviation.SetDisturbanceValues(disturbanceValues);
  222. _deviationService.InsertDeviation(deviation);
  223. _logger.Entity(deviation, Core.Domain.Logging.LogEntityActivity.Insert, _userHelper.FromCookies());
  224. }
  225. else
  226. {
  227. var deviation = _deviationService.GetDeviationById(deviationModel.Id);
  228. deviation.CustomNumber = deviationModel.CustomNumber;
  229. deviation.Description = deviationModel.Description;
  230. deviation.ReceiptDate = deviationModel.ReceiptDate;
  231. deviation.AppendixDate = deviationModel.AppendixDate;
  232. deviation.Value = deviationModel.Value;
  233. deviation.AppendixId = deviationModel.AppendixId;
  234. deviation.StatusId = deviationModel.StatusId;
  235. deviation.KindId = deviationModel.KindId;
  236. deviation.Comment = deviationModel.Comment;
  237. deviation.SetDisturbanceValues(disturbanceValues);
  238. _deviationService.UpdateDeviation(deviation);
  239. _logger.Entity(deviation, Core.Domain.Logging.LogEntityActivity.Update, _userHelper.FromCookies());
  240. }
  241. return new JsonResult
  242. {
  243. Data = "success"
  244. };
  245. }
  246. catch (Exception ex)
  247. {
  248. _logger.Error("Fehler bei Speicherung einer Vertragsabweichung.", ex, _userHelper.FromCookies());
  249. return PartialView("~/Views/Shared/_PopupError.cshtml", ex);
  250. }
  251. }
  252. /// <summary>
  253. /// Simple JSON result for deleting a specific deviation
  254. /// </summary>
  255. /// <param name="id">Deviation id.</param>
  256. [HttpPost]
  257. public ActionResult DeleteDeviation(int id)
  258. {
  259. try
  260. {
  261. var deviation = _deviationService.GetDeviationById(id);
  262. if (deviation != null)
  263. _deviationService.DeleteDeviation(deviation);
  264. _logger.Entity(deviation, Core.Domain.Logging.LogEntityActivity.Delete, _userHelper.FromCookies());
  265. return new JsonResult
  266. {
  267. Data = "success"
  268. };
  269. }
  270. catch (Exception ex)
  271. {
  272. _logger.Error("Fehler bei Löschung einer Vertragsabweichung.", ex, _userHelper.FromCookies());
  273. return PartialView("~/Views/Shared/_PopupError.cshtml", ex);
  274. }
  275. }
  276. #endregion
  277. #region Claims
  278. /// <summary>
  279. /// Basic claim view function
  280. /// </summary>
  281. [FunctionAuthorize(true, "Deviation-Claims")]
  282. public ActionResult ViewClaims()
  283. {
  284. return View("~/Views/Deviations/Claims.cshtml");
  285. }
  286. /// <summary>
  287. /// Get JSON data of specific claim
  288. /// </summary>
  289. /// <param name="claimType">Claim type.</param>
  290. /// <param name="id">Claim id.</param>
  291. public ActionResult GetClaim(string claimType, int id = -1)
  292. {
  293. switch (claimType.ToLower())
  294. {
  295. case "status":
  296. var status = _deviationService.GetStatusById(id);
  297. if (status == null)
  298. return new JsonResult { Data = "notFound", JsonRequestBehavior = JsonRequestBehavior.AllowGet };
  299. else
  300. return new JsonResult {
  301. Data = JsonConvert.SerializeObject(status),
  302. JsonRequestBehavior = JsonRequestBehavior.AllowGet
  303. };
  304. case "disturbance":
  305. var disturbance = _deviationService.GetDisturbanceById(id);
  306. if (disturbance == null)
  307. return new JsonResult { Data = "notFound", JsonRequestBehavior = JsonRequestBehavior.AllowGet };
  308. else
  309. return new JsonResult
  310. {
  311. Data = JsonConvert.SerializeObject(disturbance),
  312. JsonRequestBehavior = JsonRequestBehavior.AllowGet
  313. };
  314. case "kind":
  315. var kind = _deviationService.GetKindById(id);
  316. if (kind == null)
  317. return new JsonResult { Data = "notFound", JsonRequestBehavior = JsonRequestBehavior.AllowGet };
  318. else
  319. return new JsonResult
  320. {
  321. Data = JsonConvert.SerializeObject(kind),
  322. JsonRequestBehavior = JsonRequestBehavior.AllowGet
  323. };
  324. default:
  325. return new JsonResult { Data = "unknownClaimType", JsonRequestBehavior = JsonRequestBehavior.AllowGet };
  326. }
  327. }
  328. /// <summary>
  329. /// Callback result for claim grid
  330. /// </summary>
  331. /// <param name="claimType">Claim type.</param>
  332. public ActionResult PartialClaims(string claimType)
  333. {
  334. switch (claimType.ToLower())
  335. {
  336. case "status":
  337. return PartialView("~/Views/Deviations/_StatusListPartial.cshtml", ViewData["AllStatuses"]);
  338. case "disturbance":
  339. return PartialView("~/Views/Deviations/_DisturbanceListPartial.cshtml", ViewData["AllDisturbances"]);
  340. case "kind":
  341. return PartialView("~/Views/Deviations/_KindListPartial.cshtml", ViewData["AllKinds"]);
  342. default:
  343. return new EmptyResult();
  344. }
  345. }
  346. /// <summary>
  347. /// Partial edit for editing of existing or for new claim
  348. /// </summary>
  349. /// <param name="claimType">Claim type.</param>
  350. /// <param name="id">Id for existing claim, otherweise -1.</param>
  351. public ActionResult EditClaim(string claimType = "", int id = -1)
  352. {
  353. switch (claimType.ToLower())
  354. {
  355. case "status":
  356. var status = _deviationService.GetStatusById(id);
  357. var statusModel = StatusDataModel.FromStatus(status, true);
  358. return PartialView("~/Views/Deviations/_StatusEditPartial.cshtml", statusModel);
  359. case "disturbance":
  360. var disturbance = _deviationService.GetDisturbanceById(id);
  361. var disturbanceModel = DisturbanceDataModel.FromDisturbance(disturbance, true);
  362. return PartialView("~/Views/Deviations/_DisturbanceEditPartial.cshtml", disturbanceModel);
  363. case "kind":
  364. var kind = _deviationService.GetKindById(id);
  365. var kindModel = KindDataModel.FromKind(kind, true);
  366. return PartialView("~/Views/Deviations/_KindEditPartial.cshtml", kindModel);
  367. default:
  368. return new EmptyResult();
  369. }
  370. }
  371. /// <summary>
  372. /// Partial edit result if ModelState is valid, otherwise simple JSON result for success
  373. /// </summary>
  374. /// <param name="statusModel">Status model to be saved.</param>
  375. [HttpPost, ValidateInput(false)]
  376. public ActionResult EditStatus(StatusDataModel statusModel)
  377. {
  378. try
  379. {
  380. if (!ModelState.IsValid)
  381. return PartialView("~/Views/Deviations/_StatusEditPartial.cshtml", statusModel);
  382. var allStatuses = _deviationService.GetAllStatuses();
  383. if (statusModel.IsDefault)
  384. {
  385. foreach (var status in allStatuses)
  386. {
  387. status.IsDefault = false;
  388. _deviationService.UpdateStatus(status);
  389. }
  390. }
  391. if (statusModel.Id == -1)
  392. {
  393. var claim = statusModel.ToStatus();
  394. _deviationService.InsertStatus(claim);
  395. _logger.Entity(claim, Core.Domain.Logging.LogEntityActivity.Insert, _userHelper.FromCookies());
  396. }
  397. else
  398. {
  399. var claim = _deviationService.GetStatusById(statusModel.Id);
  400. claim.Description = statusModel.Description;
  401. claim.IsDefault = statusModel.IsDefault;
  402. _deviationService.UpdateStatus(claim);
  403. _logger.Entity(claim, Core.Domain.Logging.LogEntityActivity.Update, _userHelper.FromCookies());
  404. }
  405. return new JsonResult
  406. {
  407. Data = "success"
  408. };
  409. }
  410. catch (Exception ex)
  411. {
  412. _logger.Error("Fehler bei Speicherung eines VA-Status.", ex, _userHelper.FromCookies());
  413. return PartialView("~/Views/Shared/_PopupError.cshtml", ex);
  414. }
  415. }
  416. /// <summary>
  417. /// Partial edit result if ModelState is valid, otherwise simple JSON result for success
  418. /// </summary>
  419. /// <param name="disturbanceModel">Disturbance model to be saved.</param>
  420. [HttpPost, ValidateInput(false)]
  421. public ActionResult EditDisturbance(DisturbanceDataModel disturbanceModel)
  422. {
  423. try
  424. {
  425. if (!ModelState.IsValid)
  426. return PartialView("~/Views/Deviations/_DisturbanceEditPartial.cshtml", disturbanceModel);
  427. if (disturbanceModel.Id == -1)
  428. {
  429. var claim = disturbanceModel.ToDisturbance();
  430. _deviationService.InsertDisturbance(claim);
  431. _logger.Entity(claim, Core.Domain.Logging.LogEntityActivity.Insert, _userHelper.FromCookies());
  432. }
  433. else
  434. {
  435. var disturbance = _deviationService.GetDisturbanceById(disturbanceModel.Id);
  436. disturbance.Description = disturbanceModel.Description;
  437. _deviationService.UpdateDisturbance(disturbance);
  438. _logger.Entity(disturbance, Core.Domain.Logging.LogEntityActivity.Update, _userHelper.FromCookies());
  439. }
  440. return new JsonResult
  441. {
  442. Data = "success"
  443. };
  444. }
  445. catch (Exception ex)
  446. {
  447. _logger.Error("Fehler bei Speicherung einer VA-Kategorie.", ex, _userHelper.FromCookies());
  448. return PartialView("~/Views/Shared/_PopupError.cshtml", ex);
  449. }
  450. }
  451. /// <summary>
  452. /// Partial edit result if ModelState is valid, otherwise simple JSON result for success
  453. /// </summary>
  454. /// <param name="kindModel">Kind model to be saved.</param>
  455. [HttpPost, ValidateInput(false)]
  456. public ActionResult EditKind(KindDataModel kindModel)
  457. {
  458. try
  459. {
  460. if (!ModelState.IsValid)
  461. return PartialView("~/Views/Deviations/_KindEditPartial.cshtml", kindModel);
  462. var allKinds = _deviationService.GetAllKinds();
  463. if (kindModel.IsDefault)
  464. {
  465. foreach (var kind in allKinds)
  466. {
  467. kind.IsDefault = false;
  468. _deviationService.UpdateKind(kind);
  469. }
  470. }
  471. if (kindModel.Id == -1)
  472. {
  473. var claim = kindModel.ToKind();
  474. _deviationService.InsertKind(claim);
  475. _logger.Entity(claim, Core.Domain.Logging.LogEntityActivity.Insert, _userHelper.FromCookies());
  476. }
  477. else
  478. {
  479. var kind = _deviationService.GetKindById(kindModel.Id);
  480. kind.Description = kindModel.Description;
  481. kind.IsDefault = kindModel.IsDefault;
  482. _deviationService.UpdateKind(kind);
  483. _logger.Entity(kind, Core.Domain.Logging.LogEntityActivity.Update, _userHelper.FromCookies());
  484. }
  485. return new JsonResult
  486. {
  487. Data = "success"
  488. };
  489. }
  490. catch (Exception ex)
  491. {
  492. _logger.Error("Fehler bei Speicherung einer Art.", ex, _userHelper.FromCookies());
  493. return PartialView("~/Views/Shared/_PopupError.cshtml", ex);
  494. }
  495. }
  496. /// <summary>
  497. /// Simple JSON result for deleting a specific claim
  498. /// </summary>
  499. /// <param name="claimType">Claim type.</param>
  500. /// <param name="id">Claim id.</param>
  501. /// <param name="replaceId">Id of claim which deviations get in place of deleting claim.</param>
  502. [HttpPost]
  503. public ActionResult DeleteClaim(string claimType, int id, int replaceId)
  504. {
  505. switch (claimType.ToLower())
  506. {
  507. case "status":
  508. try
  509. {
  510. var status = _deviationService.GetStatusById(id);
  511. var replaceStatus = _deviationService.GetStatusById(replaceId);
  512. var statusDeviations = _deviationService.GetDeviationsByStatus(id);
  513. foreach (var deviation in statusDeviations)
  514. {
  515. deviation.StatusId = replaceId;
  516. deviation.Status = replaceStatus;
  517. _deviationService.UpdateDeviation(deviation);
  518. }
  519. if (status != null)
  520. _deviationService.DeleteStatus(status);
  521. _logger.Entity(status, Core.Domain.Logging.LogEntityActivity.Delete, _userHelper.FromCookies());
  522. }
  523. catch (Exception ex)
  524. {
  525. _logger.Error("Fehler bei Löschung eines VA-Status.", ex, _userHelper.FromCookies());
  526. return PartialView("~/Views/Shared/_PopupError.cshtml", ex);
  527. }
  528. break;
  529. case "kind":
  530. try
  531. {
  532. var kind = _deviationService.GetKindById(id);
  533. var replaceKind = _deviationService.GetKindById(replaceId);
  534. var kindDeviations = _deviationService.GetDeviationsByKind(id);
  535. foreach (var deviation in kindDeviations)
  536. {
  537. deviation.KindId = replaceId;
  538. deviation.Kind = replaceKind;
  539. _deviationService.UpdateDeviation(deviation);
  540. }
  541. if (kind != null)
  542. _deviationService.DeleteKind(kind);
  543. _logger.Entity(kind, Core.Domain.Logging.LogEntityActivity.Delete, _userHelper.FromCookies());
  544. }
  545. catch (Exception ex)
  546. {
  547. _logger.Error("Fehler bei Löschung einer Art.", ex, _userHelper.FromCookies());
  548. return PartialView("~/Views/Shared/_PopupError.cshtml", ex);
  549. }
  550. break;
  551. case "disturbance":
  552. try
  553. {
  554. var disturbance = _deviationService.GetDisturbanceById(id);
  555. var replaceDisturbance = _deviationService.GetDisturbanceById(replaceId);
  556. var allDeviations = _deviationService.GetAllDeviations();
  557. foreach (var deviation in allDeviations)
  558. {
  559. foreach (var disturbanceValue in deviation.DisturbanceValues)
  560. {
  561. if (disturbanceValue.DisturbanceId == id)
  562. {
  563. disturbanceValue.Disturbance = replaceDisturbance;
  564. disturbanceValue.DisturbanceId = replaceDisturbance.Id;
  565. }
  566. }
  567. _deviationService.UpdateDeviation(deviation);
  568. }
  569. if (disturbance != null)
  570. _deviationService.DeleteDisturbance(disturbance);
  571. _logger.Entity(disturbance, Core.Domain.Logging.LogEntityActivity.Delete, _userHelper.FromCookies());
  572. }
  573. catch (Exception ex)
  574. {
  575. _logger.Error("Fehler bei Löschung einer VA-Kategorie.", ex, _userHelper.FromCookies());
  576. return PartialView("~/Views/Shared/_PopupError.cshtml", ex);
  577. }
  578. break;
  579. default:
  580. return new EmptyResult();
  581. }
  582. return new JsonResult
  583. {
  584. Data = "success"
  585. };
  586. }
  587. #endregion
  588. }
  589. }