示例#1
0
        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));
            }
        }