public IActionResult Edit(CaseArchive model, string comeFrom)
        {
            bool isDestroy = IsForDestroy(model.DateDestroy, comeFrom);

            ValidateModel(model, isDestroy);
            SetViewbag(model.CaseId, comeFrom, model.Id);
            if (!ModelState.IsValid)
            {
                return(View(nameof(Edit), model));
            }
            var    currentId    = model.Id;
            string messageError = "";

            if (service.CaseArchive_SaveData(model, ref messageError, isDestroy))
            {
                this.SaveLogOperation(currentId == 0, model.Id);
                SetSuccessMessage(MessageConstant.Values.SaveOK);
                return(RedirectToAction(nameof(Edit), new { id = model.Id, comeFrom = comeFrom }));
            }
            else
            {
                SetErrorMessage(messageError != "" ? messageError : MessageConstant.Values.SaveFailed);
            }
            return(View(nameof(Edit), model));
        }
        /// <summary>
        /// Валидация преди запис на дело в архив
        /// </summary>
        /// <param name="model"></param>
        /// <param name="isDestroy"></param>
        void ValidateModel(CaseArchive model, bool isDestroy)
        {
            if ((model.IsOldNumber ?? false) && model.Id == 0)
            {
                if (string.IsNullOrEmpty(model.RegNumber))
                {
                    ModelState.AddModelError(nameof(Infrastructure.Data.Models.Cases.CaseArchive.RegNumber), "Въведете 'Стар номер'.");
                }
                if (model.RegDate.Date >= DateTime.Now.Date || model.RegDate.Year < 1900)
                {
                    ModelState.AddModelError(nameof(Infrastructure.Data.Models.Cases.CaseArchive.RegDate), "Невалидна стара дата.");
                }
            }
            else
            {
                if (ModelState.ContainsKey("RegDate"))
                {
                    if (model.Id == 0)
                    {
                        model.RegDate = DateTime.Now;
                    }
                    ModelState["RegDate"].Errors.Clear();
                    ModelState["RegDate"].ValidationState = Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState.Valid;
                }
            }

            if (isDestroy == true && string.IsNullOrEmpty(model.ActDestroyLabel))
            {
                ModelState.AddModelError(nameof(Infrastructure.Data.Models.Cases.CaseArchive.ActDestroyLabel), "Въведете протокол за унищожаване");
            }
        }
        /// <summary>
        /// Добавяне на дело в архив
        /// </summary>
        /// <param name="caseId"></param>
        /// <returns></returns>
        public IActionResult Add(int caseId)
        {
            var caseArchive = service.CaseArchiveByCaseId_Select(caseId);

            if (caseArchive == null)
            {
                SetViewbag(caseId, "CaseForArchive", 0);
                var model = new CaseArchive()
                {
                    CaseId      = caseId,
                    CourtId     = userContext.CourtId,
                    IsOldNumber = false
                };
                return(View(nameof(Edit), model));
            }
            else
            {
                return(RedirectToAction(nameof(Edit), new { id = caseArchive.Id, comeFrom = "CaseForArchive" }));
            }
        }
Exemple #4
0
        /// <summary>
        /// Валидация преди запис на дело в архив
        /// </summary>
        /// <param name="model"></param>
        /// <param name="isDestroy"></param>
        void ValidateModel(CaseArchive model, bool isDestroy)
        {
            if ((model.IsOldNumber ?? false) && model.Id == 0)
            {
                if (string.IsNullOrEmpty(model.RegNumber))
                {
                    ModelState.AddModelError(nameof(Infrastructure.Data.Models.Cases.CaseArchive.RegNumber), "Въведете 'Стар номер'.");
                }
                if (model.RegDate.Date >= DateTime.Now.Date || model.RegDate.Year < 1900)
                {
                    ModelState.AddModelError(nameof(Infrastructure.Data.Models.Cases.CaseArchive.RegDate), "Невалидна стара дата.");
                }
            }
            else
            {
                if (ModelState.ContainsKey("RegDate"))
                {
                    if (model.Id == 0)
                    {
                        model.RegDate = DateTime.Now;
                    }
                    ModelState["RegDate"].Errors.Clear();
                    ModelState["RegDate"].ValidationState = Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState.Valid;
                }
            }

            if (isDestroy == true && string.IsNullOrEmpty(model.ActDestroyLabel))
            {
                ModelState.AddModelError(nameof(Infrastructure.Data.Models.Cases.CaseArchive.ActDestroyLabel), "Въведете протокол за унищожаване");
            }

            var act = service.GetById <CaseSessionAct>(model.CaseSessionActId);

            if (act.ActInforcedDate != null)
            {
                if ((model.BookYear ?? 0) != ((DateTime)act.ActInforcedDate).Year)
                {
                    ModelState.AddModelError(nameof(Infrastructure.Data.Models.Cases.CaseArchive.BookYear), "Година на Том не може да е различна от година на влизане в сила на акта");
                }
            }
        }
Exemple #5
0
        public bool Counter_GetCaseArchiveCounter(CaseArchive model)
        {
            Case caseModel = null;

            try
            {
                caseModel = model.Case ?? repo.GetById <Case>(model.CaseId);
                var courtCode     = repo.AllReadonly <Court>().FirstOrDefault(x => x.Id == caseModel.CourtId)?.Code;
                var characterCode = repo.AllReadonly <CaseCharacter>()
                                    .Where(x => x.Id == caseModel.CaseCharacterId)
                                    .Select(x => x.Code)
                                    .FirstOrDefault();

                var counterId = repo.AllReadonly <CounterCase>()
                                .Include(x => x.Counter)
                                .Where(x => x.CaseGroupId == caseModel.CaseGroupId)
                                .Where(x => x.Counter.CourtId == caseModel.CourtId && x.Counter.CounterTypeId == NomenclatureConstants.CounterTypes.CaseArchive)
                                .Select(x => x.CounterId)
                                .FirstOrDefault();
                if (counterId > 0)
                {
                    var shortNumber = Counter_GetValue(counterId);
                    model.RegNumber = $"A{DateTime.Now.Year}{courtCode}{characterCode}{shortNumber}";
                    model.RegDate   = DateTime.Now;
                    return(true);
                }
                else
                {
                    throw new Exception($"Няма настроен брояч за архивиране. CaseGroupId={ caseModel.CaseGroupId },Court={ caseModel.CourtId}");
                }
            }
            catch (Exception ex)
            {
                logger.LogError(ex, $"Грешка при запис на Counter. CaseGroupId={ caseModel.CaseGroupId },Court={ caseModel.CourtId}");
            }
            return(false);
        }
 public bool Counter_GetCaseArchiveCounter(CaseArchive model)
 {
     throw new NotImplementedException();
 }
Exemple #7
0
        /// <summary>
        /// Запис на дело в архив
        /// </summary>
        /// <param name="model"></param>
        /// <param name="errorMessage"></param>
        /// <param name="forDestroy"></param>
        /// <returns></returns>
        public bool CaseArchive_SaveData(CaseArchive model, ref string errorMessage, bool forDestroy)
        {
            try
            {
                //Годината не трябва да е различна от текущата година или от годината на влизане в сила на акта
                if (model.BookYear != null)
                {
                    var act             = repo.AllReadonly <CaseSessionAct>().Where(x => x.Id == model.CaseSessionActId).FirstOrDefault();
                    int actInforcedYear = act.ActInforcedDate != null ? ((DateTime)act.ActInforcedDate).Year : DateTime.Now.Year;
                    if (model.BookYear != DateTime.Now.Year && model.BookYear != actInforcedYear)
                    {
                        errorMessage = "Година на Том трябва да е годината на влизане в сила на акта или текущата година";
                        return(false);
                    }
                }

                if (forDestroy == false)
                {
                    model.ActDestroyLabel        = null;
                    model.Description            = null;
                    model.DescriptionInfoDestroy = null;
                }

                if (model.Id == 0)
                {
                    var existsArchive = repo.AllReadonly <CaseArchive>().Where(x => x.CaseId == model.CaseId).Any();
                    if (existsArchive == true)
                    {
                        errorMessage = "Делото вече е вкарано в архив";
                        return(false);
                    }
                }

                if (model.Id > 0)
                {
                    //Update
                    var saved = repo.GetById <CaseArchive>(model.Id);

                    if (forDestroy == false)
                    {
                        saved.CaseSessionActId = model.CaseSessionActId;
                        saved.ArchiveIndexId   = model.ArchiveIndexId;
                        saved.ArchiveLink      = model.ArchiveLink;
                        saved.DescriptionInfo  = model.DescriptionInfo;
                        saved.StorageYears     = model.StorageYears;
                    }
                    else
                    {
                        if (saved.DateDestroy == null)
                        {
                            saved.DateDestroy = DateTime.Now;
                        }
                        saved.ActDestroyLabel        = model.ActDestroyLabel;
                        saved.Description            = model.Description;
                        saved.DescriptionInfoDestroy = model.DescriptionInfoDestroy;
                    }

                    //тези се редактират винаги
                    saved.BookNumber = model.BookNumber;
                    saved.BookYear   = model.BookYear;

                    saved.UserId  = userContext.UserId;
                    saved.DateWrt = DateTime.Now;
                    repo.Update(saved);

                    model.DateDestroy = saved.DateDestroy;
                }
                else
                {
                    //Insert
                    if (model.IsOldNumber == true)
                    {
                    }
                    else
                    {
                        if (counterService.Counter_GetCaseArchiveCounter(model) == false)
                        {
                            errorMessage = "Проблем при вземане на номер за архив";
                            return(false);
                        }
                    }
                    model.DateDestroy = null;
                    model.UserId      = userContext.UserId;
                    model.DateWrt     = DateTime.Now;
                    repo.Add <CaseArchive>(model);
                }

                //когато се записва архива да смени статуса на делото на Архивирано/Унищожено
                var caseModel = GetById <Case>(model.CaseId);
                if (model.DateDestroy == null)
                {
                    caseModel.CaseStateId = NomenclatureConstants.CaseState.Archive;
                }
                else
                {
                    caseModel.CaseStateId = NomenclatureConstants.CaseState.Destroy;
                }
                repo.Update(caseModel);

                repo.SaveChanges();
                return(true);
            }
            catch (Exception ex)
            {
                logger.LogError(ex, $"Грешка при запис на CaseArchive Id={ model.Id }");
                return(false);
            }
        }