예제 #1
0
        public IActionResult EditPost(DeliveryItemOperVM model, string filterJson)
        {
            if (filterJson == null)
            {
                var deliveryItem = itemService.getDeliveryItem(model.DeliveryItemId);
                ViewBag.notificationId = deliveryItem.CaseNotificationId;
                ViewBag.breadcrumbs    = commonService.Breadcrumbs_ForCaseNotificationDeliveryOperEdit(deliveryItem.CaseNotificationId ?? 0, 0).DeleteOrDisableLast();
            }
            else
            {
                int filterType = getFilterTypeFromJson(filterJson);
                ViewBag.breadcrumbs = commonService.Breadcrumbs_ForDeliveryItemAddOper(filterType, model.DeliveryItemId).DeleteOrDisableLast();
            }
            ViewBag.filterJson = filterJson;
            SetViewbag(model.DeliveryOperId);
            ValidateModel(model);
            if (!ModelState.IsValid)
            {
                return(View(nameof(Edit), model));
            }
            var currentId = model.Id;

            if (itemService.DeliveryItemSaveOper(model))
            {
                this.SaveLogOperation(currentId == 0, model.Id);
                ModelState.Clear();
                SetSuccessMessage(MessageConstant.Values.SaveOK);
                return(View(nameof(Edit), model));
            }
            else
            {
                SetErrorMessage(MessageConstant.Values.SaveFailed);
            }
            return(View(nameof(Edit), model));
        }
        private void ValidateModel(DeliveryItemOperVM model)
        {
            var regDate = service.GetRegDate(model.DeliveryItemId);

            if (model.DateOper < regDate?.Date)
            {
                ModelState.AddModelError(nameof(model.DateOper), $"{MessageConstant.ValidationErrors.DeliveryDateBeforeRegDate} {regDate?.ToString(FormattingConstant.NormalDateFormat)}");
            }
            if (model.DateOper > DateTime.Now.AddMinutes(10))
            {
                ModelState.AddModelError(nameof(model.DateOper), MessageConstant.ValidationErrors.DeliveryDateBeforeRegDate);
            }

            var opers = service.DeliveryItemOperSelect(model.DeliveryItemId, true)
                        .Where(x => x.DeliveryOperId < model.DeliveryOperId)
                        .OrderBy(x => x.DeliveryOperId)
                        .ToList();
            var prevOper = opers.LastOrDefault();

            if (prevOper != null && model.DateOper != null)
            {
                if (model.DateOper?.Date < prevOper.DateOper.Date)
                {
                    ModelState.AddModelError(nameof(model.DateOper), $"Не може да въвеждате посещение преди предното посещение {prevOper.DateOper.ToString(FormattingConstant.NormalDateFormat)}");
                }
            }
        }
        public IActionResult EditPost(DeliveryItemOperVM model, string filterJson)
        {
            var deliveryItem = itemService.getDeliveryItem(model.DeliveryItemId);

            ViewBag.notificationId = deliveryItem.CaseNotificationId;
            if (filterJson == null)
            {
                ViewBag.breadcrumbs = commonService.Breadcrumbs_ForCaseNotificationDeliveryOperEdit(deliveryItem.CaseNotificationId ?? 0, 0).DeleteOrDisableLast();
            }
            else
            {
                int filterType = getFilterTypeFromJson(filterJson);
                ViewBag.breadcrumbs = commonService.Breadcrumbs_ForDeliveryItemAddOper(filterType, model.DeliveryItemId).DeleteOrDisableLast();
            }
            ViewBag.filterJson = filterJson;
            SetViewbag(model.DeliveryOperId);
            ValidateModel(model);
            if (!ModelState.IsValid)
            {
                return(View(nameof(Edit), model));
            }

            bool isInsert = !service.HaveSameOper(model.DeliveryItemId, model.DeliveryOperId);

            if (itemService.DeliveryItemSaveOper(model))
            {
                SaveLogOperation(isInsert, $"{model.DeliveryItemId}|NEW");
                ModelState.Clear();
                SetSuccessMessage(MessageConstant.Values.SaveOK);
                if (filterJson != null)
                {
                    // return LoadIndex(model.DeliveryItemId, filterJson);
                    // TempData["filterJson"] = filterJson;
                    // return RedirectToAction("EditReturn", "DeliveryItem", new { deliveryItemId = model.DeliveryItemId });
                    return(View(nameof(Edit), model));
                }
                else
                {
                    return(RedirectToAction(nameof(Index), new { notificationId = deliveryItem.CaseNotificationId }));
                }
            }
            else
            {
                SetErrorMessage(MessageConstant.Values.SaveFailed);
            }
            return(View(nameof(Edit), model));
        }
예제 #4
0
        private void ValidateModel(DeliveryItemOperVM model)
        {
            var regDate = service.GetRegDate(model.DeliveryItemId);

            if (model.DateOper < regDate)
            {
                ModelState.AddModelError(nameof(model.DateOper), $"Посещение преди дата на изготвяне {regDate?.ToString(FormattingConstant.NormalDateFormat)}");
            }
            if (model.DateOper > DateTime.Now)
            {
                ModelState.AddModelError(nameof(model.DateOper), $"Не може да въвеждате посещение с бъдеща дата");
            }

            var opers = service.DeliveryItemOperSelect(model.DeliveryItemId, true)
                        .Where(x => x.DeliveryOperId < model.DeliveryOperId)
                        .OrderBy(x => x.DeliveryOperId)
                        .ToList();
            var prevOper = opers.LastOrDefault();

            if (prevOper != null)
            {
                var dR = model.DateOper - prevOper.DateOper;
                if (dR.Value.TotalDays < 7)
                {
                    ModelState.AddModelError(nameof(model.DateOper), $"Няма 7 дни от преднато посещение {prevOper.DateOper.ToString(FormattingConstant.NormalDateFormat)}");
                }
            }
            if (opers.Count >= 2)
            {
                bool haveHoliday = !workingDaysService.IsWorkingDay(userContext.CourtId, model.DateOper?.Date ?? DateTime.Now);
                haveHoliday = haveHoliday || opers.Max(x => !workingDaysService.IsWorkingDay(userContext.CourtId, (DateTime)(x.DateOper).Date));
                if (!haveHoliday)
                {
                    ModelState.AddModelError(nameof(model.DateOper), $"Няма посещение в почивен ден");
                }
            }
        }
        public JsonResult CheckDeliveryDate(DeliveryItemOperVM model)
        {
            ValidateModel(model);
            var result = "OK";

            if (ModelState.IsValid)
            {
                var opers = service.DeliveryItemOperSelect(model.DeliveryItemId, true)
                            .Where(x => x.DeliveryOperId < model.DeliveryOperId)
                            .OrderBy(x => x.DeliveryOperId)
                            .ToList();
                var prevOper = opers.LastOrDefault();
                if (prevOper != null)
                {
                    var dR = model.DateOper - prevOper.DateOper;
                    if (dR.Value.TotalDays < 7)
                    {
                        result = $"Няма 7 дни от предното посещение {prevOper.DateOper.ToString(FormattingConstant.NormalDateFormat)}. ";
                    }
                }
                if (opers.Count >= 2 && model.DeliveryOperId != NomenclatureConstants.NotificationState.Delivered)
                {
                    bool haveHoliday = !workingDaysService.IsWorkingDay(userContext.CourtId, model.DateOper?.Date ?? DateTime.Now);
                    haveHoliday = haveHoliday || opers.Max(x => !workingDaysService.IsWorkingDay(userContext.CourtId, (DateTime)(x.DateOper).Date));
                    if (!haveHoliday)
                    {
                        result += $"Няма посещение в почивен ден";
                    }
                }
            }
            else
            {
                result = "NOT_VALID";
            }
            return(Json(result));
        }