void SetViewbag(int id, int caseId, int?caseSessionId, bool IsViewRowSessionBreadcrumbs = true)
        {
            var modelSession = new CaseSessionVM();

            if (id > 0)
            {
                modelSession      = service.CaseSessionVMById(id);
                ViewBag.IsExpired = modelSession.SessionStateId == NomenclatureConstants.SessionState.Nasrocheno;
            }
            else
            {
                ViewBag.IsExpired = false;
            }

            ViewBag.CaseSessionName        = modelSession.SessionTypeLabel + " " + modelSession.DateFrom.ToString("dd.MM.yyyy");
            ViewBag.CourtHallId            = modelSession.CourtHallId ?? 0;
            ViewBag.SessionTypeId_ddl      = nomService.GetDDL_SessionTypesByCase(caseId);
            ViewBag.SessionStateId_ddl     = nomService.GetDDL_SessionStateRoute(modelSession.SessionStateId);
            ViewBag.CourtHallId_ddl        = commonService.GetDropDownList_CourtHall(userContext.CourtId);
            ViewBag.CaseClassification_ddl = classficationService.CaseClassification_Select(caseId, caseSessionId);
            ViewBag.DateTo_Minutes_ddl     = nomService.GetDDL_SessionDuration();

            if (caseSessionId > 0)
            {
                ViewBag.breadcrumbs = commonService.Breadcrumbs_GetForCaseSession(caseSessionId.Value, IsViewRowSessionBreadcrumbs);
            }
            else
            {
                ViewBag.breadcrumbs = commonService.Breadcrumbs_GetForCase(caseId);
            }
            ViewBag.hasSubstitutions = (lawUnitService.LawUnitSubstitution_SelectForSession(caseSessionId ?? 0) != null) ? lawUnitService.LawUnitSubstitution_SelectForSession(caseSessionId ?? 0).Any() : false;
        }
Esempio n. 2
0
        private string IsValidSessionAndAct(CaseSessionVM model)
        {
            if (model.SessionTypeId <= 0)
            {
                return("Няма избран вид заседание");
            }

            if (model.DateFrom == null)
            {
                return("Няма въведена начална дата");
            }
            else
            {
                //if (model.SessionStateId == NomenclatureConstants.SessionState.Provedeno)
                //{

                //    if (model.DateFrom > DateTime.Now)
                //        return "Не може да отразите проведено заседание с бъдеща дата/час.";
                //}

                //if (model.SessionStateId == NomenclatureConstants.SessionState.Nasrocheno)
                //{
                //    if (model.DateFrom <= DateTime.Now)
                //    {
                //        return "Не може да насрочвате заседание с минала дата/час.";
                //    }
                //}

                var caseCase = service.GetById <Case>(model.CaseId);

                if (model.DateFrom < caseCase.RegDate)
                {
                    return("Не можете да насрочвате заседание с дата/час по-малка от дата/час на регистрация на делото");
                }
            }

            //if (model.SessionStateId <= 0)
            //    return "Няма избран статус";

            if (model.ActTypeId <= 0)
            {
                return("Няма избран тип акт");
            }

            if (!lawUnitService.IsExistJudgeReporterByCase(model.CaseId, model.DateFrom))
            {
                return("Няма активен съдия докладчик");
            }

            return(string.Empty);
        }
        public IActionResult AddSessionAndAct(CaseSessionVM model)
        {
            model.DateFrom = model.DateFrom.MakeEndSeconds();
            model.DateTo   = model.DateFrom.AddMinutes(model.DateTo_Minutes).MakeEndSeconds();

            ModelState["SessionStateId"].Errors.Clear();
            ModelState["SessionStateId"].ValidationState = Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState.Valid;

            if (!ModelState.IsValid)
            {
                SetViewbagAddSessionAndAct(model.CaseId);
                return(View(nameof(AddSessionAndAct), model));
            }

            string _isvalid = IsValidSessionAndAct(model);

            if (_isvalid != string.Empty)
            {
                SetViewbagAddSessionAndAct(model.CaseId);
                SetErrorMessage(_isvalid);
                return(View(nameof(AddSessionAndAct), model));
            }

            var currentId  = model.Id;
            var saveResult = service.CaseSession_SaveData(model);

            if (saveResult.Result)
            {
                SetAuditContext(service, SourceTypeSelectVM.CaseSession, model.Id, currentId == 0);
                this.SaveLogOperation(currentId == 0, model.Id, null, nameof(Edit));
                SetSuccessMessage(MessageConstant.Values.SaveOK);
                if (string.IsNullOrEmpty(model.ActSaveType))
                {
                    return(RedirectToAction("Edit", "CaseSessionAct", new { id = model.ActSaveId }));
                }
                else
                {
                    return(RedirectToAction("Blank", "CaseSessionAct", new { id = model.ActSaveId }));
                }
            }
            else
            {
                SetErrorMessage(saveResult.ErrorMessage);
            }

            SetViewbagAddSessionAndAct(model.CaseId);
            return(View(nameof(AddSessionAndAct), model));
        }
        public IActionResult Edit(CaseSessionVM model)
        {
            model.DateFrom = model.DateFrom.MakeEndSeconds();
            model.DateTo   = model.DateFrom.AddMinutes(model.DateTo_Minutes).MakeEndSeconds();
            SetHelpFile(HelpFileValues.SessionMainData);

            if (!ModelState.IsValid)
            {
                SetViewbag(model.Id, model.CaseId, model.Id);
                return(View(nameof(Edit), model));
            }

            string _isvalid = IsValid(model);

            if (_isvalid != string.Empty)
            {
                SetViewbag(model.Id, model.CaseId, model.Id);
                SetErrorMessage(_isvalid);
                return(View(nameof(Edit), model));
            }

            var currentId  = model.Id;
            var saveResult = service.CaseSession_SaveData(model);

            if (saveResult.Result)
            {
                SetAuditContext(service, SourceTypeSelectVM.CaseSession, model.Id, currentId == 0);
                this.SaveLogOperation(currentId == 0, model.Id);

                if ((!service.IsExistCaseSessionResult(model.Id)) && (model.SessionStateId == NomenclatureConstants.SessionState.Provedeno))
                {
                    SetSuccessMessage(MessageConstant.Values.SaveOK + " Моля, добавете резултат от заседание.");
                    return(RedirectToAction("AddResult", new { caseSessionId = model.Id }));
                }
                else
                {
                    SetSuccessMessage(MessageConstant.Values.SaveOK);
                    return(RedirectToAction(nameof(Preview), new { id = model.Id }));
                }
            }
            else
            {
                SetErrorMessage(saveResult.ErrorMessage);
            }

            SetViewbag(model.Id, model.CaseId, model.Id);
            return(View(nameof(Edit), model));
        }
        /// <summary>
        /// Добавяне на заседание към дело
        /// </summary>
        /// <param name="caseId"></param>
        /// <returns></returns>
        public IActionResult Add(int caseId)
        {
            if (!CheckAccess(service, SourceTypeSelectVM.CaseSession, null, AuditConstants.Operations.Append, caseId))
            {
                return(Redirect_Denied());
            }

            var model = new CaseSessionVM()
            {
                CaseId         = caseId,
                CourtId        = userContext.CourtId,
                DateFrom       = DateTime.Now,
                SessionStateId = NomenclatureConstants.SessionState.Nasrocheno,
            };

            //Следващия кръгъл час
            model.DateFrom = model.DateFrom.AddMinutes(-model.DateFrom.Minute).AddHours(1);
            SetViewbag(0, caseId, null);
            SetHelpFile(HelpFileValues.CaseSession);
            return(View(nameof(Edit), model));
        }
Esempio n. 6
0
        /// <summary>
        /// Добавяне на заседание към дело и акт към заседанието
        /// </summary>
        /// <param name="caseId"></param>
        /// <returns></returns>
        public IActionResult AddSessionAndAct(int caseId)
        {
            if (!CheckAccess(service, SourceTypeSelectVM.CaseSession, null, AuditConstants.Operations.Append, caseId))
            {
                return(Redirect_Denied());
            }

            var model = new CaseSessionVM()
            {
                CaseId         = caseId,
                CourtId        = userContext.CourtId,
                DateFrom       = DateTime.Now.AddMinutes(-1),
                SessionTypeId  = NomenclatureConstants.SessionType.ClosedSession,
                SessionStateId = NomenclatureConstants.SessionState.Provedeno,
            };

            //Следващия кръгъл час
            //model.DateFrom = model.DateFrom.AddMinutes(-model.DateFrom.Minute).AddHours(1);
            SetViewbagAddSessionAndAct(caseId);
            return(View(nameof(AddSessionAndAct), model));
        }
        public IActionResult CopySession(CaseSessionVM model)
        {
            SetViewbag(model.Id, model.CaseId, model.Id);
            SetHelpFile(HelpFileValues.SessionMainData);
            if (!ModelState.IsValid)
            {
                return(View(nameof(CopySession), model));
            }

            model.DateFrom = model.DateFrom.MakeEndSeconds();
            var caseSessions = service.CaseSession_OldSelect(model.CaseId, null, null).ToList();

            if (caseSessions.Count > 0)
            {
                if (caseSessions.Any(x => x.DateFrom == model.DateFrom))
                {
                    SetErrorMessage("Вече има заседание в това дело с тази начална дата и час");
                    return(View(nameof(CopySession), model));
                }
            }

            var currentId = model.Id;

            if (service.CaseSession_CopyData(model))
            {
                SetAuditContext(service, SourceTypeSelectVM.CaseSession, model.Id, currentId == 0);
                this.SaveLogOperation(currentId == 0, model.Id);
                SetSuccessMessage(MessageConstant.Values.SaveOK);
                return(RedirectToAction(nameof(Preview), new { id = model.Id }));
            }
            else
            {
                SetErrorMessage(MessageConstant.Values.SaveFailed);
            }

            return(View(nameof(CopySession), model));
        }
        /// <summary>
        /// Валидация преди запис на заседание
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private string IsValid(CaseSessionVM model)
        {
            if (model.Id < 1)
            {
                //if (!lawUnitService.IsExistLawUnitByCase(model.CaseId, model.DateFrom))
                //{
                //    return "Няма активен състав";
                //}

                if (!lawUnitService.IsExistJudgeReporterByCase(model.CaseId, model.DateFrom))
                {
                    return("Няма активен съдия докладчик");
                }
            }

            if (model.SessionTypeId < 0)
            {
                return("Няма избран вид");
            }

            if (model.DateFrom == null)
            {
                return("Няма въведена начална дата");
            }

            var caseCase = service.GetById <Case>(model.CaseId);

            if (model.DateFrom < caseCase.RegDate)
            {
                return("Не можете да насрочвате заседание с дата/час по-малка от дата/час на регистрация на делото");
            }

            if (model.CourtHallId > 0)
            {
                if (model.DateTo_Minutes < 1)
                {
                    return("Изберете прогнозна продължителност");
                }
            }

            if (model.DateTo != null)
            {
                if (model.DateFrom > model.DateTo)
                {
                    return("Началната дата/час е по-голяма от крайната дата/час");
                }
            }

            if (model.SessionStateId == NomenclatureConstants.SessionState.Provedeno)
            {
                if (model.DateFrom > DateTime.Now)
                {
                    return("Не може да отразите проведено заседание с бъдеща дата/час.");
                }

                if (caseSessionMeetingService.IsExistMeetengInSessionAfterDate(DateTime.Now, model.Id, null))
                {
                    return("Има сесии в това заседание, които не са проведени.");
                }

                if (!lawUnitService.IsExistJudgeReporterByCase(model.CaseId, model.DateFrom))
                {
                    return("Няма активен съдия докладчик");
                }
            }

            if (model.SessionStateId == NomenclatureConstants.SessionState.Nasrocheno)
            {
                if (model.DateFrom <= DateTime.Now)
                {
                    return("Не може да насрочвате/коригирате заседание с минала дата/час.");
                }
            }

            var caseSessions = service.CaseSession_OldSelect(model.CaseId, null, null).ToList();

            if (caseSessions.Count > 0)
            {
                if (caseSessions.Any(x => (x.DateFrom == model.DateFrom) && ((model.Id > 0) ? x.Id != model.Id : true)))
                {
                    return("Вече има заседание в това дело с тази начална дата/час");
                }
            }

            if (model.Id > 0)
            {
                var caseSessionMeeting = caseSessionMeetingService.CaseSessionMeetingAutoCreateGetBySessionId(model.Id);
                if (caseSessionMeeting != null)
                {
                    if (caseSessionMeetingService.IsExistMeetengInSession(model.DateFrom, (model.DateTo ?? model.DateFrom), model.Id, caseSessionMeeting.Id))
                    {
                        return("Има сесия в това заседание съвпадаща като време с автоматичната сесия");
                    }
                }

                var caseSessionOld = service.GetById <CaseSession>(model.Id);
                if (model.DateFrom != caseSessionOld.DateFrom)
                {
                    if (caseNotificationService.IsExistNotificationForSession(model.Id))
                    {
                        return("Има издадени призовки за това заседание и не може да смените началната дата или залата.");
                    }
                }

                if (model.SessionStateId != NomenclatureConstants.SessionState.Nasrocheno)
                {
                    if (model.SessionTypeId != caseSessionOld.SessionTypeId)
                    {
                        return("Не може да промените вида на заседанието при статус различен от насрочено.");
                    }
                }
            }

            return(string.Empty);
        }