public IActionResult Save(Request req) { var editedReq = _db.Get(req.Id); if (editedReq != null) { if (req.Status == DAL.Models.Enums.Statuses.Completed && editedReq.Status == DAL.Models.Enums.Statuses.Assigned) { ModelState.AddModelError("", _sharedLocalizer["errCantCloseAssignet"]); } if (req.Status == DAL.Models.Enums.Statuses.Completed) { if (!_db.CanComplete(editedReq.Id)) { ModelState.AddModelError("", _sharedLocalizer["errCantCloseChild"]); } } } if (req.Deadline < req.StartDate) { ModelState.AddModelError("", _sharedLocalizer["errStartAfterEnd"]); } if (req.ParentId != null) { var parentReq = _db.Get((int)req.ParentId); if (parentReq.StartDate > req.StartDate) { ModelState.AddModelError("", _sharedLocalizer["errStartAfterParent"]); } if (req.Deadline > parentReq.Deadline) { ModelState.AddModelError("", _sharedLocalizer["errEndAfterParent"]); } } if (ModelState.IsValid) { int id = req.Id; if (req.Id == 0) { id = _db.AddRequest(req); } else { _db.EditRequest(req); } TempData["message"] = string.Format("{0} {1} {2}", _sharedLocalizer["Request"], req.Name, _sharedLocalizer["Saved"]); return(RedirectToAction("Index", id)); } else { ViewBag.allRequests = _db.GetAll().Select(o => new RequestNav(o)).ToList(); return(View("Edit", req)); } }