Пример #1
0
        /// <summary>
        /// Валидация преди запис на сесии към заседание
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private string IsValid(CaseSessionMeetingEditVM model)
        {
            var caseSession = service.GetById <CaseSession>(model.CaseSessionId);

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

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

            if (service.IsExistMeetengInSession(model.DateFrom, model.DateTo, model.CaseSessionId, model.Id))
            {
                return("Има сесия в това заседание съвпадаща като време");
            }

            if (model.IsAutoCreate ?? false)
            {
                if (model.SessionStateId < 1)
                {
                    return("Изберете статус на заседание.");
                }

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

                    var dateNow = DateTime.Now;
                    if (service.IsExistMeetengInSessionAfterDate(dateNow, caseSession.Id, model.Id) || (model.DateTo >= dateNow))
                    {
                        return("Има сесии в това заседание, които не са проведени.");
                    }
                }

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

            return(string.Empty);
        }
Пример #2
0
        public IActionResult Edit(CaseSessionMeetingEditVM model)
        {
            model.DateFrom = model.DateFrom.MakeEndSeconds();
            model.DateTo   = model.DateTo.MakeEndSeconds();

            SetViewbag(model.CaseSessionId, model.SessionStateId);

            if (model.CaseSessionMeetingUser == null)
            {
                model.CaseSessionMeetingUser = new List <Infrastructure.Models.ViewModels.CheckListVM>();
            }

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

            model.DateTo = new DateTime(model.DateFrom.Year, model.DateFrom.Month, model.DateFrom.Day, model.DateTo.Hour, model.DateTo.Minute, model.DateTo.Second);
            string _isvalid = IsValid(model);

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

            var currentId = model.Id;

            if (service.CaseSessionMeeting_SaveData(model))
            {
                //model.CaseSessionMeetingUser = service.GetCheckListCaseSessionMeetingUser(model.CaseSessionId, model.Id);
                SetAuditContext(service, SourceTypeSelectVM.CaseSessionMeeting, model.Id, currentId == 0);
                this.SaveLogOperation(currentId == 0, model.Id);
                SetSuccessMessage(MessageConstant.Values.SaveOK);
                if ((!sessionService.IsExistCaseSessionResult(model.CaseSessionId)) && (model.SessionStateId == NomenclatureConstants.SessionState.Provedeno))
                {
                    SetSuccessMessage(MessageConstant.Values.SaveOK + " Моля, добавете резултат от заседание.");
                    return(RedirectToAction("AddResult", "CaseSession", new { caseSessionId = model.CaseSessionId }));
                }
                else
                {
                    SetSuccessMessage(MessageConstant.Values.SaveOK);
                    return(RedirectToAction("Preview", "CaseSession", new { id = model.CaseSessionId }));
                }
            }
            else
            {
                SetErrorMessage(MessageConstant.Values.SaveFailed);
            }
            return(View(nameof(Edit), model));
        }
 /// <summary>
 /// Попълване на основен обект за запис на Тайни съвещания/сесии към заседание
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 private CaseSessionMeeting FillCaseSessionMeeting(CaseSessionMeetingEditVM model)
 {
     return(new CaseSessionMeeting()
     {
         Id = model.Id,
         CourtId = model.CourtId,
         CaseId = model.CaseId,
         CaseSessionId = model.CaseSessionId,
         SessionMeetingTypeId = model.SessionMeetingTypeId,
         DateFrom = model.DateFrom,
         DateTo = model.DateTo,
         Description = model.Description,
         IsActive = model.IsActive,
         IsAutoCreate = model.IsAutoCreate,
         CourtHallId = model.CourtHallId
     });
 }
        public void CaseSessionMeeting_SaveDataTest()
        {
            using (serviceProvider.CreateScope())
            {
                var service     = serviceProvider.GetService <ICaseSessionMeetingService>();
                var userContext = serviceProvider.GetService <IUserContext>();
                var repo        = serviceProvider.GetService <IRepository>();

                var saved = new CaseSessionMeetingEditVM()
                {
                    CaseId               = 1,
                    CourtId              = 1,
                    CaseSessionId        = 1,
                    SessionMeetingTypeId = 1,
                    DateFrom             = DateTime.Now,
                    DateTo               = DateTime.Now,
                    Description          = "Test",
                    IsActive             = true,
                    IsAutoCreate         = true,
                    CourtHallId          = 1,
                };
                saved.CaseSessionMeetingUser = new List <Infrastructure.Models.ViewModels.CheckListVM>();
                saved.CaseSessionMeetingUser.Add(new Infrastructure.Models.ViewModels.CheckListVM()
                {
                    Checked = true,
                    Label   = "Test",
                    Value   = "1"
                });

                service.CaseSessionMeeting_SaveData(saved);
                var caseSessionMeeting     = repo.AllReadonly <CaseSessionMeeting>().FirstOrDefault();
                var caseSessionMeetingUser = repo.AllReadonly <CaseSessionMeetingUser>().FirstOrDefault();

                Assert.That(saved.CaseId, Is.EqualTo(caseSessionMeeting.CaseId));
                Assert.That(saved.CourtId, Is.EqualTo(caseSessionMeeting.CourtId));
                Assert.That(saved.SessionMeetingTypeId, Is.EqualTo(caseSessionMeeting.SessionMeetingTypeId));
                Assert.That(saved.DateFrom, Is.EqualTo(caseSessionMeeting.DateFrom));
                Assert.That(saved.DateTo, Is.EqualTo(caseSessionMeeting.DateTo));
                Assert.That(saved.IsActive, Is.EqualTo(caseSessionMeeting.IsActive));
                Assert.That(saved.IsAutoCreate, Is.EqualTo(caseSessionMeeting.IsAutoCreate));
                Assert.That(saved.CourtHallId, Is.EqualTo(caseSessionMeeting.CourtHallId));
                Assert.That(saved.Description, Is.EqualTo(caseSessionMeeting.Description));

                Assert.That(saved.CaseSessionMeetingUser.Select(x => x.Value).FirstOrDefault(), Is.EqualTo(caseSessionMeetingUser.SecretaryUserId));
            }
        }
Пример #5
0
        /// <summary>
        /// Добавяне на сесии към заседание
        /// </summary>
        /// <param name="caseSessionId"></param>
        /// <returns></returns>
        public IActionResult Add(int caseSessionId)
        {
            if (!CheckAccess(service, SourceTypeSelectVM.CaseSessionMeeting, null, AuditConstants.Operations.Append, caseSessionId))
            {
                return(Redirect_Denied());
            }
            var modelSession = service.GetById <CaseSession>(caseSessionId);
            var model        = new CaseSessionMeetingEditVM()
            {
                CourtId                = modelSession.CourtId,
                CaseId                 = modelSession.CaseId,
                CaseSessionId          = caseSessionId,
                DateFrom               = modelSession.DateFrom,
                DateTo                 = (modelSession.DateTo ?? modelSession.DateFrom),
                CourtHallId            = modelSession.CourtHallId,
                IsAutoCreate           = false,
                CaseSessionMeetingUser = service.GetCheckListCaseSessionMeetingUser(caseSessionId)
            };

            SetViewbag(caseSessionId);
            return(View(nameof(Edit), model));
        }
Пример #6
0
        /// <summary>
        /// Валидация преди запис на сесии към заседание
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private string IsValid(CaseSessionMeetingEditVM model)
        {
            var caseSession = service.GetById <CaseSession>(model.CaseSessionId);

            if (model.DateFrom == null)
            {
                return("Няма въведена начална дата");
            }
            //else
            //{
            //    if (model.DateFrom < caseSession.DateFrom)
            //        return "Началната дата е преди началната дата на заседанието";
            //}

            //if (model.DateFrom >= DateTime.Now)
            //    return "Сесията трябва да е с минала начална дата";

            if (model.DateTo != null)
            {
                //if (model.DateTo >= DateTime.Now)
                //    return "Сесията трябва да е с минала крайна дата";

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

                //if (model.DateTo > caseSession.DateTo)
                //    return "Крайната дата е след датата на заседанието";
            }

            if (service.IsExistMeetengInSession(model.DateFrom, model.DateTo, model.CaseSessionId, model.Id))
            {
                return("Има сесия в това заседание съвпадаща като време");
            }

            return(string.Empty);
        }
        /// <summary>
        /// Запис на Тайни съвещания/сесии към заседание
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool CaseSessionMeeting_SaveData(CaseSessionMeetingEditVM model)
        {
            try
            {
                model.CourtHallId = model.CourtHallId.EmptyToNull();
                var modelSave = FillCaseSessionMeeting(model);
                using (TransactionScope ts = new TransactionScope())
                {
                    if (model.Id > 0)
                    {
                        //Update
                        var saved = repo.GetById <CaseSessionMeeting>(modelSave.Id);
                        saved.SessionMeetingTypeId = modelSave.SessionMeetingTypeId;
                        saved.CourtHallId          = model.CourtHallId;
                        saved.DateFrom             = modelSave.DateFrom;
                        saved.DateTo      = modelSave.DateTo;
                        saved.Description = modelSave.Description;
                        saved.DateWrt     = DateTime.Now;
                        saved.UserId      = userContext.UserId;
                        repo.Update(saved);

                        var caseSessionMeetingUsers = repo.AllReadonly <CaseSessionMeetingUser>()
                                                      .Where(x => x.CaseSessionMeetingId == modelSave.Id)
                                                      .ToList();
                        repo.DeleteRange <CaseSessionMeetingUser>(caseSessionMeetingUsers);
                    }
                    else
                    {
                        //Insert
                        modelSave.DateWrt = DateTime.Now;
                        modelSave.UserId  = userContext.UserId;
                        repo.Add <CaseSessionMeeting>(modelSave);
                    }

                    if (model.CaseSessionMeetingUser != null)
                    {
                        foreach (var checkedItem in model.CaseSessionMeetingUser.Where(x => x.Checked))
                        {
                            var userSave = new CaseSessionMeetingUser()
                            {
                                CourtId = modelSave.CourtId,
                                CaseId  = modelSave.CaseId,
                                CaseSessionMeetingId = modelSave.Id,
                                SecretaryUserId      = checkedItem.Value,
                                DateWrt = DateTime.Now,
                                UserId  = userContext.UserId
                            };

                            repo.Add(userSave);
                        }
                    }

                    if (model.IsAutoCreate ?? false)
                    {
                        if (model.SessionStateId != null)
                        {
                            var caseSessionUpdate = repo.GetById <CaseSession>(model.CaseSessionId);
                            caseSessionUpdate.SessionStateId = model.SessionStateId ?? 0;
                            caseSessionUpdate.DateWrt        = DateTime.Now;
                            caseSessionUpdate.UserId         = userContext.UserId;
                            repo.Update(caseSessionUpdate);
                        }
                    }

                    repo.SaveChanges();

                    //Запис на пари за заседатели
                    var caseSession = repo.AllReadonly <CaseSession>()
                                      .Where(x => x.Id == model.CaseSessionId)
                                      .FirstOrDefault();
                    (bool result, string errorMessage) = moneyService.CalcEarningsJury(caseSession, userContext.CourtId);
                    if (result == false)
                    {
                        return(false);
                    }

                    if (model.Id < 1)
                    {
                        model.Id = modelSave.Id;
                    }

                    ts.Complete();
                }

                return(true);
            }
            catch (Exception ex)
            {
                logger.LogError(ex, $"Грешка при запис на тайно съвещание Id={ model.Id }");
                return(false);
            }
        }