public ActionResult SendExpertiseDocumentToAgreement(Guid docId, string documentType, Guid?executorId = null, string taskType = null) { taskType = string.IsNullOrEmpty(taskType) ? null : taskType; var db = new ncelsEntities(); var repository = new DrugDeclarationRepository(); var stageRepo = new ExpertiseStageRepository(); var activityManager = new ActivityManager(); switch (documentType) { case Dictionary.ExpAgreedDocType.EXP_DrugFinalDocument: var declarationInfo = db.EXP_ExpertiseStageDosage.FirstOrDefault(e => e.Id == docId); var finalDocExecutorsIds = stageRepo.GetExecutorsByDicStageId(declarationInfo.EXP_ExpertiseStage.StageId, declarationInfo.EXP_ExpertiseStage.EXP_DrugDeclaration.TypeId) .Select(e => e.Id).ToArray(); activityManager.SendToExecution(Dictionary.ExpActivityType.FinalDocAgreement, docId, Dictionary.ExpAgreedDocType.EXP_DrugFinalDocument, taskType ?? Dictionary.ExpTaskType.Agreement, declarationInfo.EXP_DrugDosage.RegNumber, declarationInfo.EXP_DrugDosage.EXP_DrugDeclaration.CreatedDate, finalDocExecutorsIds); var primaryDocStatus = repository.GetPrimaryFinalDocumentStatus(docId); return(Json(primaryDocStatus.Name, JsonRequestBehavior.AllowGet)); case Dictionary.ExpAgreedDocType.Letter: var primaryRepo = new DrugPrimaryRepository(); bool isSigning = taskType == Dictionary.ExpTaskType.Signing; var letter = primaryRepo.GetCorespondence(docId.ToString()); if (isSigning) { var stageSupervisor = stageRepo.GetStageSupervisor(letter.StageId, letter.EXP_DrugDeclaration.TypeId); activityManager.SendToExecution(Dictionary.ExpActivityType.ExpertiseLetterSigning, docId, Dictionary.ExpAgreedDocType.Letter, Dictionary.ExpTaskType.Signing, letter.NumberLetter, letter.DateCreate, stageSupervisor.Id); return(Json( DictionaryHelper.GetDicItemByCode(CodeConstManager.STATUS_ONSIGNING, CodeConstManager.STATUS_ONSIGNING).Name, JsonRequestBehavior.AllowGet)); } else { var letterExecutorsIds = stageRepo.GetExecutorsByDicStageId(letter.StageId, letter.EXP_DrugDeclaration.TypeId).Select(e => e.Id).ToArray(); activityManager.SendToExecution(Dictionary.ExpActivityType.ExpertiseLetterAgreement, docId, Dictionary.ExpAgreedDocType.Letter, Dictionary.ExpTaskType.Agreement, letter.NumberLetter, letter.DateCreate, letterExecutorsIds); return(Json( DictionaryHelper.GetDicItemByCode(CodeConstManager.STATUS_ONAGREEMENT, CodeConstManager.STATUS_ONAGREEMENT).Name, JsonRequestBehavior.AllowGet)); } case Dictionary.ExpAgreedDocType.CertificateOfCompletion: var coc = db.EXP_CertificateOfCompletion.FirstOrDefault(e => e.Id == docId); if (coc != null) { var certExecutorsIds = stageRepo.GetExecutorsByDicStageId(coc.DicStageId.Value, coc.EXP_DrugDeclaration.TypeId).Select(e => e.Id).ToArray(); activityManager.SendToExecution(Dictionary.ExpActivityType.CertificateOfComplitionAgreement, docId, Dictionary.ExpAgreedDocType.CertificateOfCompletion, taskType ?? Dictionary.ExpTaskType.Agreement, string.Empty, coc.CreateDate, certExecutorsIds); } return(Json(DictionaryHelper.GetDicItemByCode(CodeConstManager.STATUS_ONAGREEMENT, CodeConstManager.STATUS_ONAGREEMENT).Name, JsonRequestBehavior.AllowGet)); } return(null); }
/// <summary> /// Отправка договора в ЦОЗ /// </summary> /// <param name="contract"></param> /// <returns>Статус договора</returns> public Dictionary SendContractToProcessing(Guid contractId) { Document baseDocument = AppContext.Documents.FirstOrDefault(m => m.Id == contractId); var baseContract = AppContext.Contracts.First(o => o.Id == contractId); Dictionary contractStatus; if (baseDocument == null) { contractStatus = DictionaryHelper.GetDicItemByCode(Dictionary.ContractStatus.DicCode, Database.DataModel.Contract.StatusInQueue); var user = UserHelper.GetCurrentEmployee(); baseContract.Status = 1; Document document = new Document() { Id = contractId, DocumentType = 4, ExecutionDate = DateTime.Now.AddDays(30), DocumentDate = DateTime.Now, AttachPath = FileHelper.GetObjectPathRoot(), CorrespondentsInfo = user.DisplayName, CorrespondentsId = user.Id.ToString(), CorrespondentsValue = user.DisplayName, TemplateId = new Guid("C3292589-A25B-4CEF-8CB5-C7E64946C1D3"), IsTradeSecret = false, StateType = 1, ProjectType = baseContract.Type.Value, RegistratorId = user.Id.ToString(), RegistratorValue = user.DisplayName, ModifiedDate = DateTime.Now, FirstExecutionDate = DateTime.Now.AddDays(30) }; Registrator.SetNumber(document); AppContext.Documents.Add(document); } else { contractStatus = DictionaryHelper.GetDicItemByCode(Dictionary.ContractStatus.DicCode, Database.DataModel.Contract.StatusCorrected); } baseContract.StatusId = contractStatus.Id; AppContext.SaveChanges(); return(contractStatus); }
public void SaveContractAddition(DataModel.Contract contractAddition) { var project = AppContext.Contracts.Any(o => o.Id == contractAddition.Id); Dictionary contractStatus; if (project) { contractStatus = contractAddition.ContractStatus; AppContext.Entry(contractAddition).State = EntityState.Modified; } else { contractAddition.CreatedDate = DateTime.Now; contractStatus = DictionaryHelper.GetDicItemByCode(Dictionary.ContractStatus.DicCode, Database.DataModel.Contract.StatusNew); contractAddition.StatusId = contractStatus.Id; AppContext.Contracts.Add(contractAddition); } AppContext.SaveChanges(); contractAddition.ContractStatus = contractStatus; }
private ActionResult SendDocumentToAgreement(Guid docId, Guid[] executorIds, string documentType, string taskType = null) { taskType = string.IsNullOrEmpty(taskType) ? null : taskType; var db = new ncelsEntities(); var activityManager = new ActivityManager(); switch (documentType) { case Dictionary.ExpAgreedDocType.DirectionToPay: var coc = db.EXP_DirectionToPays.FirstOrDefault(e => e.Id == docId); if (coc != null) { activityManager.SendToExecution(Dictionary.ExpActivityType.DirectionToPayAgrement, docId, Dictionary.ExpAgreedDocType.DirectionToPay, taskType ?? Dictionary.ExpTaskType.Agreement, string.Empty, coc.CreateDate, executorIds); //var primaryDocStatus = repository.GetPrimaryFinalDocumentStatus(docId); } return(Json(DictionaryHelper.GetDicItemByCode(CodeConstManager.STATUS_ONAGREEMENT, CodeConstManager.STATUS_ONAGREEMENT).Name, JsonRequestBehavior.AllowGet)); } return(null); }
public void SaveContract(RequestModel model) { var project = AppContext.Contracts.Any(o => o.Id == model.Contract.Id); Dictionary contractStatus; if (project) { contractStatus = model.Contract.ContractStatus; model.Contract.ManufacturerOrganizationId = model.Manufacture.Id; model.Contract.ManufacturerOrganization = model.Manufacture; AppContext.Entry(model.Manufacture).State = EntityState.Modified; var applicant = model.Applicant; if (model.Applicant.Id != (applicant = model.Manufacture).Id) { applicant = model.Applicant; AppContext.Entry(applicant).State = EntityState.Modified; } model.Contract.ApplicantOrganizationId = applicant.Id; model.Contract.ApplicantOrganization = applicant; var holder = model.Holder; if (model.Holder.Id != (holder = model.Manufacture).Id && model.Holder.Id != (holder = model.Applicant).Id) { holder = model.Holder; AppContext.Entry(holder).State = EntityState.Modified; } model.Contract.HolderOrganizationId = holder.Id; model.Contract.HolderOrganization = holder; var payer = model.Payer; if (model.Payer.Id != (payer = model.Manufacture).Id && model.Payer.Id != (payer = model.Applicant).Id && model.Payer.Id != (payer = model.Holder).Id) { model.Contract.PayerOrganizationId = model.Payer.Id; model.Contract.PayerOrganization = model.Payer; AppContext.Entry(model.Payer).State = EntityState.Modified; } else { model.Contract.PayerOrganizationId = payer.Id; model.Contract.PayerOrganization = payer; } if (model.PayerTranslation.Id != (payer = model.Manufacture).Id && model.PayerTranslation.Id != (payer = model.Applicant).Id && model.PayerTranslation.Id != (payer = model.Holder).Id) { model.Contract.PayerTranslationOrganizationId = model.PayerTranslation.Id; model.Contract.PayerTranslationOrganization = model.PayerTranslation; AppContext.Entry(model.PayerTranslation).State = EntityState.Modified; } else { model.Contract.PayerTranslationOrganizationId = payer.Id; model.Contract.PayerTranslationOrganization = payer; } AppContext.Entry(model.Contract).State = EntityState.Modified; } else { model.Contract.CreatedDate = DateTime.Now; model.Contract.ManufacturerOrganizationId = model.Manufacture.Id; model.Contract.ManufacturerOrganization = model.Manufacture; if (AppContext.Organizations.Any(o => o.Id == model.Manufacture.Id)) { AppContext.Entry(model.Manufacture).State = EntityState.Modified; } else { AppContext.Organizations.Add(model.Manufacture); } var applicant = model.Applicant; if (model.Applicant.Id != (applicant = model.Manufacture).Id) { applicant = model.Applicant; if (AppContext.Organizations.Any(o => o.Id == applicant.Id)) { AppContext.Entry(applicant).State = EntityState.Modified; } else { AppContext.Organizations.Add(applicant); } } model.Contract.ApplicantOrganizationId = applicant.Id; model.Contract.ApplicantOrganization = applicant; var holder = model.Holder; if (model.Holder.Id != (holder = model.Manufacture).Id && model.Holder.Id != (holder = model.Applicant).Id) { holder = model.Holder; if (AppContext.Organizations.Any(o => o.Id == holder.Id)) { AppContext.Entry(holder).State = EntityState.Modified; } else { AppContext.Organizations.Add(holder); } } model.Contract.HolderOrganizationId = holder.Id; model.Contract.HolderOrganization = holder; var payer = model.Payer; if (model.Payer.Id != (payer = model.Manufacture).Id && model.Payer.Id != (payer = model.Applicant).Id && model.Payer.Id != (payer = model.Holder).Id) { model.Contract.PayerOrganizationId = model.Payer.Id; model.Contract.PayerOrganization = model.Payer; if (AppContext.Organizations.Any(o => o.Id == model.Payer.Id)) { AppContext.Entry(model.Payer).State = EntityState.Modified; } else { AppContext.Organizations.Add(model.Payer); } } else { model.Contract.PayerOrganizationId = payer.Id; model.Contract.PayerOrganization = payer; } if (model.PayerTranslation.Id != (payer = model.Manufacture).Id && model.PayerTranslation.Id != (payer = model.Applicant).Id && model.PayerTranslation.Id != (payer = model.Holder).Id) { model.Contract.PayerTranslationOrganizationId = model.PayerTranslation.Id; model.Contract.PayerTranslationOrganization = model.PayerTranslation; if (AppContext.Organizations.Any(o => o.Id == model.PayerTranslation.Id)) { AppContext.Entry(model.PayerTranslation).State = EntityState.Modified; } else { AppContext.Organizations.Add(model.PayerTranslation); } } else { model.Contract.PayerTranslationOrganizationId = payer.Id; model.Contract.PayerTranslationOrganization = payer; } contractStatus = DictionaryHelper.GetDicItemByCode(Dictionary.ContractStatus.DicCode, Database.DataModel.Contract.StatusNew); model.Contract.StatusId = contractStatus.Id; AppContext.Contracts.Add(model.Contract); } if (model.Contract.DoverennostTypeDicId != null && model.Contract.DoverennostTypeDicId.Value != Guid.Empty) { var doverenostCode = AppContext.Dictionaries.FirstOrDefault(e => e.Id == model.Contract.DoverennostTypeDicId).Code; model.Contract.StartDate = model.Contract.DoverennostCreatedDate; if (doverenostCode == Dictionary.DicDoverenostType.StatuteCode) { model.Contract.EndDate = model.Contract.DoverennostCreatedDate != null ? (DateTime?)model.Contract.DoverennostCreatedDate.Value.AddYears(3) : null; } else { if (model.Contract.StartDate != null && model.Contract.DoverennostExpiryDate != null) { int monthsApart = 12 * (model.Contract.StartDate.Value.Year - model.Contract.DoverennostExpiryDate.Value.Year) + model.Contract.StartDate.Value.Month - model.Contract.DoverennostExpiryDate.Value.Month; if (Math.Abs(monthsApart) > 36) { model.Contract.EndDate = model.Contract.DoverennostCreatedDate != null ? (DateTime?)model.Contract.DoverennostCreatedDate.Value.AddYears(3) : null; } else { model.Contract.EndDate = model.Contract.DoverennostExpiryDate; } } } } AppContext.SaveChanges(); model.Contract.ContractStatus = contractStatus; }
public ActionResult LoadContract(Guid id) { db.Configuration.ProxyCreationEnabled = false; db.Configuration.LazyLoadingEnabled = false; var project = db.Contracts.Include(e => e.ContractStatus).Include(e => e.HolderType).FirstOrDefault(o => o.Id == id); Organization manufacture; Organization applicant; Organization holder; Organization payer; Organization payerTranslation; Contract holderContract = new Contract(); if (project == null) { var holderType = DictionaryHelper.GetDicItemByCode(Dictionary.ContractHolderType.DicCode, Dictionary.ContractHolderType.Producer); project = new Contract() { Id = id, ManufacturerOrganizationId = Guid.NewGuid(), ApplicantOrganizationId = Guid.NewGuid(), HolderOrganizationId = Guid.NewGuid(), PayerOrganizationId = Guid.NewGuid(), PayerTranslationOrganizationId = Guid.NewGuid(), Type = 1, CreatedDate = DateTime.Now, DoverennostCreatedDate = DateTime.Now, DoverennostExpiryDate = DateTime.Now, StartDate = DateTime.Now, EndDate = DateTime.Now, HolderTypeId = holderType.Id, HolderTypeCode = holderType.Code, OwnerId = UserHelper.GetCurrentEmployee().Id, StatusId = DictionaryHelper.GetDicIdByCode(Dictionary.ContractStatus.DicCode, Database.DataModel.Contract.StatusNew) }; manufacture = new Organization() { Id = project.ManufacturerOrganizationId.Value, Type = 21, DocDate = DateTime.Now, DocExpiryDate = DateTime.Now }; applicant = new Organization() { Id = project.ApplicantOrganizationId.Value, Type = 22, DocDate = DateTime.Now, DocExpiryDate = DateTime.Now }; holder = new Organization() { Id = project.HolderOrganizationId.Value, Type = 23, DocDate = DateTime.Now, DocExpiryDate = DateTime.Now }; payer = new Organization() { Id = project.PayerOrganizationId.Value, Type = 24, DocDate = DateTime.Now, DocExpiryDate = DateTime.Now }; payerTranslation = new Organization() { Id = project.PayerTranslationOrganizationId.Value, Type = 24, DocDate = DateTime.Now, DocExpiryDate = DateTime.Now }; } else { manufacture = db.Organizations.FirstOrDefault(o => o.Id == project.ManufacturerOrganizationId); applicant = db.Organizations.FirstOrDefault(o => o.Id == project.ApplicantOrganizationId); holder = db.Organizations.FirstOrDefault(o => o.Id == project.HolderOrganizationId); payer = db.Organizations.FirstOrDefault(o => o.Id == project.PayerOrganizationId); payerTranslation = db.Organizations.FirstOrDefault(o => o.Id == project.PayerTranslationOrganizationId); if (project.ContractId != null) { holderContract = db.Contracts.FirstOrDefault(m => m.Id == project.ContractId); } project.HolderTypeCode = project.HolderType.Code; } return(Content(JsonConvert.SerializeObject(new RequestModel { Contract = project, Manufacture = manufacture, Applicant = applicant, Holder = holder, Payer = payer, PayerTranslation = payerTranslation, HolderContract = holderContract, }, Formatting.Indented, new JsonSerializerSettings() { DateFormatString = "yyyy-MM-ddTHH:mm:ss.fffZ" }))); }