Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        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;
        }
Example #4
0
        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);
        }
Example #5
0
        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;
        }
Example #6
0
        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"
            })));
        }