/// <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); } }