DeviationController.cs 27 KB

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