Beispiel #1
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);
            }
        }