public ActionResult SendToApplicant(Guid stageId)
        {
            var repo       = new ExpertiseStageRepository();
            var stage      = repo.GetStage(stageId);
            var repository = new DrugDeclarationRepository();
            var declaraion = repository.GetById(stage.DeclarationId.ToString());

            if (declaraion == null)
            {
                return(Json(new
                {
                    isSuccess = false,
                }));
            }
            declaraion.DesignDate = DateTime.Now;
            declaraion.StatusId   = CodeConstManager.STATUS_EXP_SEND_INSTRUCTION_ID;
            new DrugDeclarationRepository().Update(declaraion);
            var history = new EXP_DrugDeclarationHistory()
            {
                DateCreate        = DateTime.Now,
                DrugDeclarationId = declaraion.Id,
                StatusId          = declaraion.StatusId,
                UserId            = UserHelper.GetCurrentEmployee().Id,
                Note = "Инструкция для согласования"
            };

            new DrugDeclarationRepository().SaveHisotry(history, UserHelper.GetCurrentEmployee().Id);
            var status = new ReadOnlyDictionaryRepository().GetDicStatusById(CodeConstManager.STATUS_EXP_SEND_INSTRUCTION_ID);

            return(Json(new
            {
                isSuccess = true,
                statusName = status.NameRu
            }));
        }
        public ActionResult UpdateTmcUseOff([DataSourceRequest] DataSourceRequest request, TmcUseOffView model)
        {
            string           expertiseNumber = null;
            TmcOffRepository repository      = new TmcOffRepository();

            if (model.RefExtertiseStatement != null)
            {
                DrugDeclarationRepository ddRepo = new DrugDeclarationRepository();
                var exp = ddRepo.GetById(model.RefExtertiseStatement.Value);

                if (exp != null)
                {
                    expertiseNumber = exp.Number;
                }
            }

            var tmcOff = repository.GetAsQuarable(toff => toff.Id == model.Id).FirstOrDefault();

            if (tmcOff != null)
            {
                tmcOff.Count = model.Count;
                tmcOff.Note  = model.Note;
                tmcOff.ExpertiseStatementNumber = expertiseNumber;
                tmcOff.ExpertiseStatementId     = model.RefExtertiseStatement;
            }

            repository.Update(tmcOff);
            repository.Save();

            return(Json(new[] { tmcOff }.ToDataSourceResult(request, ModelState)));
        }
        public ActionResult CreateTmcUseOff([DataSourceRequest] DataSourceRequest request, TmcUseOffView model)
        {
            string           expertiseNumber = null;
            TmcOffRepository repository      = new TmcOffRepository();

            if (model.RefExtertiseStatement != null)
            {
                DrugDeclarationRepository ddRepo = new DrugDeclarationRepository();
                var exp = ddRepo.GetById(model.RefExtertiseStatement.Value);

                if (exp != null)
                {
                    expertiseNumber = exp.Number;
                }
            }

            TmcOff tmc = new TmcOff()
            {
                Id                       = Guid.NewGuid(),
                StateType                = model.StateType,
                CreatedDate              = DateTime.Now,
                CreatedEmployeeId        = UserHelper.GetCurrentEmployee().Id,
                Count                    = model.Count,
                Note                     = model.Note,
                TmcOutId                 = model.TmcOutId,
                TmcId                    = model.TmcId,
                ExpertiseStatementId     = model.RefExtertiseStatement,
                ExpertiseStatementNumber = expertiseNumber
            };

            repository.Insert(tmc);
            repository.Save();

            return(Json(new[] { tmc }.ToDataSourceResult(request, ModelState)));
        }
Exemple #4
0
        public virtual ActionResult GetInfoFromContract(long recordId, string type)
        {
            var org = new DrugDeclarationRepository().GetInfoFromContract(recordId, type);

            if (org == null)
            {
                return(Json(new
                {
                    isSuccess = false
                }));
            }

            return(Json(new
            {
                org.AddressFact,
                org.AddressLegal,
                org.OpfTypeDicId,
                org.CountryDicId,
                org.NameRu,
                org.NameKz,
                org.NameEn,
                org.DocNumber,
                DocDateStr = DateHelper.GetDate(org.DocDate),
                DocExpiryDateStr = DateHelper.GetDate(org.DocExpiryDate),
                org.BossPosition,
                org.BossFirstName,
                org.BossLastName,
                org.BossMiddleName,
                org.Phone,
                org.Email,
                org.ContactFio,
                org.ContactPosition,
                isSuccess = true
            }));
        }
Exemple #5
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);
        }
        public ActionResult DublicateDrug(string id)
        {
            var model = new DrugDeclarationRepository().DublicateDrug(id, UserHelper.GetCurrentEmployee().Id);

            model.IsExist = true;
            FillDeclarationControl(model);
            return(View("Create", model));
        }
Exemple #7
0
        public EXP_DrugDeclaration GetDrugDeclarationById(string id)
        {
            var repository = new DrugDeclarationRepository();
            var model      = repository.GetById(id);

            model.IsExist = true;
            FillDeclarationControl(model);
            return(model);
        }
Exemple #8
0
        public ActionResult ListRegister([DataSourceRequest] DataSourceRequest request, string type, int stage, DeclarationRegistryFilter customFilter = null)
        {
            var stageName = ExpStageNameHelper.GetName(stage);

            ActionLogger.WriteInt(stageName + ": Получение списка заявлений");
            var list   = new DrugDeclarationRepository().DrugDeclarationRegisterByStatus(type, stage, UserHelper.GetCurrentEmployee().Id, customFilter);
            var result = list.ToDataSourceResult(request);

            return(Json(result));
        }
        public virtual ActionResult CreateMailRemark(string id)
        {
            var model = new DrugDeclarationRepository().CreateMailRemark(id, UserHelper.GetCurrentEmployee());

            return(Json(new
            {
                isSuccess = model.IsSuccess,
                stageType = model.StageType
            }));
        }
Exemple #10
0
        public ActionResult ShowAttach(long recordId)
        {
            var model = new DrugDeclarationRepository().GetRemarksListFiles(recordId);

            if (Request.IsAjaxRequest())
            {
                return(PartialView(model));
            }

            return(View(model));
        }
Exemple #11
0
        public ActionResult DocumentRead(Guid id)
        {
            var model = new DrugDeclarationRepository().GetByViewId(id.ToString());

            return(Content(JsonConvert.SerializeObject(model, Formatting.Indented, new JsonSerializerSettings()
            {
                DateFormatString = "dd.MM.yyyy HH:mm"
            })));

            return(Json(model, JsonRequestBehavior.AllowGet));
        }
        public ActionResult AnaliticPageView(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var expertiseStage = new ExpertiseStageRepository().GetById(id);

            if (expertiseStage == null)
            {
                return(HttpNotFound());
            }
            var repository = new ReadOnlyDictionaryRepository();
            var employee   = UserHelper.GetCurrentEmployee();
            var model      = new DrugAnaliticEntity
            {
                EXP_DrugDeclaration = expertiseStage.EXP_DrugDeclaration,
                DrugDeclarationId   = expertiseStage.DeclarationId.ToString(),
                Applicant           = new EmployeesRepository().GetById(expertiseStage.EXP_DrugDeclaration.OwnerId),
                Editor = employee,
                ExpExpertiseStageRemarks = new List <EXP_ExpertiseStageRemark>(),
                ExpStageId   = expertiseStage.Id,
                CurrentStage = new StageModel()
                {
                    CurrentStage = GetExpertiseStage(expertiseStage.Id),
                    StageResults = repository.GetStageResultsByStage(expertiseStage.StageId)
                }
            };
            var employeName = "";

            if (UserHelper.GetCurrentEmployee() != null)
            {
                employeName = UserHelper.GetCurrentEmployee().DisplayName;
            }
            ViewBag.CurrentEmployeeName = employeName;
            var markList    = new DrugDeclarationRepository().GetPrimaryMarkList(expertiseStage.DeclarationId, CodeConstManager.STAGE_ANALITIC);
            var remarkTypes = repository.GetRemarkTypes().ToArray();

            ViewData["RemarkTypes" + model.DrugDeclarationId] = new SelectList(remarkTypes, "Id", "NameRu",
                                                                               null);
            foreach (var expDrugPrimaryRemark in markList)
            {
                model.ExpExpertiseStageRemarks.Add(expDrugPrimaryRemark);
            }
            foreach (var expDrugPrimaryRemark in model.ExpExpertiseStageRemarks)
            {
                ViewData["RemarkTypes" + model.DrugDeclarationId + "_" + expDrugPrimaryRemark.Id] = new SelectList(remarkTypes, "Id", "NameRu",
                                                                                                                   expDrugPrimaryRemark.RemarkTypeId);
            }
            model.ExpDrugCorespondences = new DrugDeclarationRepository().GetDrugCorespondences(expertiseStage.DeclarationId);


            return(PartialView(model));
        }
Exemple #13
0
        public override ActionResult SaveComment(string modelId, string idControl, bool isError, string comment, string fieldValue,
                                                 string userId, string fieldDisplay)
        {
            var reposiyory   = new DrugDeclarationRepository();
            var decalaration = reposiyory.GetByViewId(modelId);

            if (decalaration.StatusId == CodeConstManager.STATUS_REJECT_ID)
            {
                return(Json(new { Success = false }));
            }
            new DrugDeclarationRepository().SaveComment(modelId, idControl, isError, comment, fieldValue, userId, fieldDisplay);
            return(Json(new { Success = true }));
        }
        public ActionResult FileUpload(EXP_ExpertiseStageRemark document, IEnumerable <HttpPostedFileBase> files)
        {
            var repository = new DrugDeclarationRepository();
            var remark     = repository.GetRemarksListFiles(document.Id);
            var model      = GetDrugDeclarationById(remark.EXP_ExpertiseStage.DeclarationId.ToString());

            if (files == null)
            {
                files = new List <HttpPostedFileBase>();
            }
            var httpPostedFileBases = files as HttpPostedFileBase[] ?? files.ToArray();

            for (int i = 0; i < httpPostedFileBases.Count(); i++)
            {
                HttpPostedFileBase file = httpPostedFileBases[i];
                Guid   fileId           = Guid.NewGuid();
                var    code             = repository.GetRemarkCode();
                var    path             = model.ObjectId;
                string savedFileName    = file.FileName;

                var ownId          = UserHelper.GetCurrentEmployee().Id;
                int?currentStageId = null;

                string        root     = ConfigurationManager.AppSettings["AttachPath"];
                string        fullName = Path.Combine(root, FileHelper.Root, model.ObjectId ?? "", code ?? "", savedFileName);
                DirectoryInfo info     =
                    new DirectoryInfo(Path.Combine(root, FileHelper.Root, model.ObjectId ?? "", code ?? ""));
                if (!info.Exists)
                {
                    info.Create();
                }
                file.SaveAs(fullName);

                var fileLink = new FileLink()
                {
                    Id          = fileId,
                    CreateDate  = DateTime.Now,
                    CategoryId  = !string.IsNullOrEmpty(code) ? (Guid?)Guid.Parse(code) : null,
                    DocumentId  = !string.IsNullOrEmpty(path) ? (Guid?)Guid.Parse(path) : null,
                    FileName    = savedFileName,
                    OwnerId     = ownId,
                    Version     = 1,
                    Comment     = remark.Id.ToString(),
                    Language    = "",
                    PageNumbers = null,
                    StageId     = null
                };
                repository.SaveRemarkFile(fileLink, remark);
            }
            return(RedirectToAction("Edit", new { Id = model.ObjectId }));
        }
        public ActionResult SignForm(string preambleId, string xmlAuditForm)
        {
            var success    = true;
            var repository = new DrugDeclarationRepository();
            var model      = repository.GetById(preambleId);

            new SignDocumentRepository().SaveSignDocument(UserHelper.GetCurrentEmployee().Id, xmlAuditForm, model);

            if (model.StatusId == CodeConstManager.STATUS_DRAFT_ID)
            {
                model.FirstSendDate = DateTime.Now;
            }

            model.StatusId = CodeConstManager.STATUS_SEND_ID;
            model.SendDate = DateTime.Now;
            model.IsSigned = true;
            var history = new EXP_DrugDeclarationHistory()
            {
                DateCreate        = DateTime.Now,
                DrugDeclarationId = model.Id,
                XmlSign           = xmlAuditForm,
                StatusId          = CodeConstManager.STATUS_SEND_ID,
                UserId            = UserHelper.GetCurrentEmployee().Id,
                Note = "Отчет предоставлен. Дата отправки:" + DateTime.Now
            };

            if (string.IsNullOrEmpty(model.Number))
            {
                //   model.Number = repository.GetAppNumber();
            }
            var indexWrapping = 1;

            foreach (var expDrugDosage in model.EXP_DrugDosage)
            {
                if (string.IsNullOrEmpty(expDrugDosage.RegNumber))
                {
                    expDrugDosage.RegNumber = model.Number + "." + indexWrapping;
                    indexWrapping++;
                }
            }
            repository.SaveOrUpdate(model, UserHelper.GetCurrentEmployee().Id);
            repository.SaveHisotry(history, UserHelper.GetCurrentEmployee().Id);
            // Set Status Sended
            return(Json(new
            {
                success
            }, JsonRequestBehavior.AllowGet));
        }
Exemple #16
0
        public virtual ActionResult GenerateNd(string modelId, int?typeId)
        {
            var numder = new DrugDeclarationRepository().GenerateNd(modelId, UserHelper.GetCurrentEmployee().Id.ToString(), typeId);

            if (numder == null)
            {
                return(Json(new
                {
                    isSuccess = false
                }));
            }
            return(Json(new
            {
                numder,
                isSuccess = true
            }));
        }
        public virtual ActionResult GetMathValue(long id)
        {
            var substance = new DrugDeclarationRepository().GetMathValue(id);

            if (substance == null)
            {
                return(Json(new
                {
                    isSuccess = false
                }));
            }
            return(Json(new
            {
                mathValue = substance,
                isSuccess = true
            }));
        }
Exemple #18
0
        public ActionResult ShowComment(string modelId, string idControl)
        {
            var repository = new DrugDeclarationRepository();
            var model      = repository.GetComments(modelId, idControl);

            if (model == null)
            {
                model = new EXP_DrugDeclarationCom();
            }
            model.ExpDrugDeclarationFieldHistories = repository.GetFieldHistories(modelId, idControl);
            if (Request.IsAjaxRequest())
            {
                return(PartialView(model));
            }

            return(View(model));
        }
        public virtual ActionResult SendNotSign(string modelId)
        {
            var repository = new DrugDeclarationRepository();
            var model      = repository.GetById(modelId);

            if (model.StatusId == CodeConstManager.STATUS_DRAFT_ID)
            {
                model.FirstSendDate = DateTime.Now;
            }

            model.StatusId = CodeConstManager.STATUS_SEND_ID;
            model.SendDate = DateTime.Now;
            model.IsSigned = false;
            var history = new EXP_DrugDeclarationHistory()
            {
                DateCreate        = DateTime.Now,
                DrugDeclarationId = model.Id,
                StatusId          = CodeConstManager.STATUS_SEND_ID,
                UserId            = UserHelper.GetCurrentEmployee().Id,
                Note = "Отчет предоставлен без подписи. Дата отправки:" + DateTime.Now
            };

            if (string.IsNullOrEmpty(model.Number))
            {
                //  model.Number = repository.GetAppNumber();
            }
            var indexWrapping = 1;

            foreach (var expDrugDosage in model.EXP_DrugDosage)
            {
                if (string.IsNullOrEmpty(expDrugDosage.RegNumber))
                {
                    expDrugDosage.RegNumber = model.Number + "." + indexWrapping;
                    indexWrapping++;
                }
            }
            repository.SaveOrUpdate(model, UserHelper.GetCurrentEmployee().Id);
            repository.SaveHisotry(history, UserHelper.GetCurrentEmployee().Id);
            return(Json(new
            {
                isSuccess = true
            }));
        }
Exemple #20
0
        public ActionResult DocumentReviewConfirm(Guid?id)
        {
            var repository = new DrugDeclarationRepository();

            if (id == null)
            {
                return(Json("Ok!", JsonRequestBehavior.AllowGet));
            }
            var expertise = GetExpertiseStage(id);
            var model     = expertise.EXP_DrugDeclaration;

            if (model == null)
            {
                return(Json("Ok!", JsonRequestBehavior.AllowGet));
            }
            model.StatusId = CodeConstManager.STATUS_EXP_SEND_ID;
            if (string.IsNullOrEmpty(model.Number))
            {
                model.Number = repository.GetAppNumber();
            }
            repository.Update(model);
            var history = new EXP_DrugDeclarationHistory()
            {
                DateCreate        = DateTime.Now,
                DrugDeclarationId = model.Id,
                StatusId          = model.StatusId,
                UserId            = UserHelper.GetCurrentEmployee().Id,
            };

            new DrugDeclarationRepository().SaveHisotry(history, UserHelper.GetCurrentEmployee().Id);
            var    stageRepository = new ExpertiseStageRepository();
            string resultDescription;

            if (!stageRepository.HasStage(model.Id, CodeConstManager.STAGE_PRIMARY))
            {
                stageRepository.ToNextStage(model.Id, null, new[] { CodeConstManager.STAGE_PRIMARY }, out resultDescription);
            }

            return(Json("Ok!", JsonRequestBehavior.AllowGet));
        }
Exemple #21
0
        public virtual ActionResult SetPrice(long dosageId, string userId, string kinds1, string kinds2, string kinds3, double?calc)
        {
            var model = new DrugDeclarationRepository().SetPrice(dosageId, userId, kinds1, kinds2, kinds3, calc);

            if (model == null)
            {
                return(Json(new
                {
                    isSuccess = false
                }));
            }

            return(Json(new
            {
                recordId = model.Id,
                model.IntermediateText,
                model.PrimaryText,
                model.SecondaryText,
                model.CountUnit,
                isSuccess = true
            }));
        }
        public ActionResult SignOperation(string id)
        {
            var    repository  = new DrugDeclarationRepository();
            var    model       = repository.GetPreamble(new Guid(id));
            bool   IsSuccess   = true;
            string preambleXml = string.Empty;

            try
            {
                preambleXml = SerializeHelper.SerializeDataContract(model);
                preambleXml = preambleXml.Replace("utf-16", "utf-8");
            }
            catch (Exception e)
            {
                IsSuccess = false;
            }

            return(Json(new
            {
                IsSuccess,
                preambleXml
            }, JsonRequestBehavior.AllowGet));
        }
Exemple #23
0
        public virtual ActionResult UpdateSubModel(string code, string modelId, long?subModelId, string userId, long?recordId, string fieldName, string fieldValue, string fieldDisplay)
        {
            var filter = new DrugDeclarationRepository().UpdateSubModel(code, modelId, subModelId, userId, recordId, fieldName, fieldValue, fieldDisplay);

            return(Json(new { Success = true, modelId = filter.ModelId, submodelId = filter.SubModelId, recordId = filter.RecordId, controlId = filter.ControlId }));
        }
Exemple #24
0
        protected void FillViewBag(EXP_DrugDeclaration model)
        {
            var drugPrimaryRepo = new DrugPrimaryRepository();

            ViewData["ContractList"] =
                new SelectList(new ContractRepository(false).GetActiveContractListWithInfo(model.OwnerId), "Id",
                               "ContractInfo", model.ContractId);
            var repository = new ReadOnlyDictionaryRepository();

            ViewData["AccelerationTypeList"] = new SelectList(repository.GetAccelerationTypes(), "Id",
                                                              "NameRu", model.AccelerationTypeId);

            ViewData["TypeList"] = new SelectList(repository.GetDicTypes(), "Id",
                                                  "NameRu", model.TypeId);

            if (model.RegisterId > 0 && model.sr_register != null)
            {
                model.ReestrNumber  = model.sr_register.reg_number + "/" + model.sr_register.reg_number_kz;
                model.ReestrRegDate = model.sr_register.reg_date.ToShortDateString();
                if (model.sr_register.expiration_date != null)
                {
                    model.ReestrExpirationDate = model.sr_register.expiration_date.Value.ToShortDateString();
                }
                var reestrDrug = new ExternalRepository().GEtRegisterDrugById(model.RegisterId);
                if (reestrDrug != null)
                {
                    model.NumberNd = reestrDrug.nd_number;
                }
            }

            if (model.ExpDrugChangeTypes.Count == 0)
            {
                model.ExpDrugChangeTypes.Add(new EXP_DrugChangeType());
            }
            if (model.ExpDrugProtectionDocs.Count == 0)
            {
                model.ExpDrugProtectionDocs.Add(new EXP_DrugProtectionDoc());
            }
            if (model.ExpDrugOtherCountries.Count == 0)
            {
                model.ExpDrugOtherCountries.Add(new EXP_DrugOtherCountry());
            }
            if (model.ExpDrugExportTrades.Count == 0)
            {
                model.ExpDrugExportTrades.Add(new EXP_DrugExportTrade());
            }
            if (model.ExpDrugPatents.Count == 0)
            {
                model.ExpDrugPatents.Add(new EXP_DrugPatent());
            }
            if (model.ExpDrugTypes.Count == 0)
            {
                model.ExpDrugTypes.Add(new EXP_DrugType());
            }

            /*  if (model.ExpDrugWrappings.Count == 0)
             * {
             *    model.ExpDrugWrappings.Add(new EXP_DrugWrapping());
             * }*/

            if (model.ExpDrugOrganizationses.Count == 0)
            {
                model.ExpDrugOrganizationses.Add(new EXP_DrugOrganizations());
            }
            if (model.ExpDrugDosages.Count == 0)
            {
                model.ExpDrugDosages.Add(new EXP_DrugDosage());
            }

            /*if (model.ExpDrugPrices.Count == 0)
             * {
             *  model.ExpDrugPrices.Add(new EXP_DrugPrice());
             * }*/
            var externalRepository = new ExternalRepository();
            var countries          = externalRepository.GetCounties().ToArray();

            ViewData["Counties"] = new SelectList(countries, "Id", "name", 0);
            for (var i = 0; i < model.ExpDrugExportTrades.Count; i++)
            {
                ViewData["Counties" + i] = new SelectList(countries, "Id", "name",
                                                          model.ExpDrugExportTrades[i].CountryId);
            }

            var types     = repository.GetDrugType().ToArray();
            var typeKinds = repository.GetDrugTypeKinds().ToArray();

            ViewData["DrugTypes"]     = new SelectList(types, "Id", "NameRu", 0);
            ViewData["DrugTypeKinds"] = new SelectList(typeKinds, "Id", "NameRu", 0);
            for (var i = 0; i < model.ExpDrugTypes.Count; i++)
            {
                ViewData["DrugTypes" + i]     = new SelectList(types, "Id", "NameRu", model.ExpDrugTypes[i].DrugTypeId);
                ViewData["DrugTypeKinds" + i] = new SelectList(typeKinds, "Id", "NameRu",
                                                               model.ExpDrugTypes[i].DrugTypeKind);
            }

            model.AtcCodeses = externalRepository.GetAtcList();

            var methods = externalRepository.GetUseMethods();

            model.MethodUseList = new MultiSelectList(methods, "id", "name", model.MethodUseIds);

            /*  ViewData["SaleTypeList"] = new SelectList(repository.GetSaleType(), "Id",
             *    "NameRu", model.SaleTypeId);*/

            var measures = externalRepository.GetMeasures();

            ViewData["MeasureList"] = new SelectList(measures, "Id",
                                                     "name", null);
            var wrappingTypes = repository.GetWrappingTypes().ToArray();
            var boxes         = externalRepository.GetBoxes().ToArray();

            ViewData["WrappingTypes"]     = new SelectList(wrappingTypes, "Id", "NameRu", 0);
            ViewData["Boxes"]             = new SelectList(boxes, "id", "name", 0);
            ViewData["MeasureShortList"]  = new SelectList(measures, "id", "short_name", 0);
            ViewData["SizeMeasureList"]   = new SelectList(measures, "id", "short_name", 0);
            ViewData["VolumeMeasureList"] = new SelectList(measures, "id", "short_name", 0);

            var booleans = repository.GetBooleanList();

            ViewData["Booleans"] = new SelectList(booleans, "IsSign", "NameRu", false);

            var origins        = repository.GetOrigins().ToArray();
            var plantKinds     = repository.GetPlantKinds().ToArray();
            var normDocs       = repository.GetExpDicNormDocFarms().ToArray();
            var substanceTypes = externalRepository.GetSubstanceTypes().ToArray();

            ViewData["SubstanceTypes"]       = new SelectList(substanceTypes, "Id", "name", null);
            ViewData["Origins"]              = new SelectList(origins, "Id", "NameRu", null);
            ViewData["NormDocs"]             = new SelectList(normDocs, "Id", "NameRu", null);
            ViewData["PlantKinds"]           = new SelectList(plantKinds, "Id", "NameRu", null);
            ViewData["IsControlList"]        = new SelectList(booleans, "IsSign", "NameRu", null);
            ViewData["IsPoisonList"]         = new SelectList(booleans, "IsSign", "NameRu", null);
            ViewData["SubstanceCounties"]    = new SelectList(countries, "Id", "name", 0);
            ViewData["SubstanceMeasureList"] = new SelectList(measures, "id", "short_name", 0);
            var sales = repository.GetSaleType().ToList();

            ViewData["SaleTypeList"] = new SelectList(sales, "Id", "NameRu", null);
            ViewData["BestBeforeMeasureTypeList"] = new SelectList(measures, "id", "short_name",
                                                                   null);
            ViewData["AppPeriodMixMeasureList"] = new SelectList(measures, "id", "short_name",
                                                                 null);
            ViewData["AppPeriodOpenMeasureList"] = new SelectList(measures, "id", "short_name",
                                                                  null);



            var drugDeclarationRepository = new DrugDeclarationRepository();

            for (var i = 0; i < model.ExpDrugDosages.Count; i++)
            {
                var dosage = model.ExpDrugDosages[i];
                if (dosage.ExpDrugWrappings == null || dosage.ExpDrugWrappings.Count == 0)
                {
                    dosage.ExpDrugWrappings = new List <EXP_DrugWrapping> {
                        new EXP_DrugWrapping()
                    };
                }
                if (dosage.ExpDrugSubstances == null || dosage.ExpDrugSubstances.Count == 0)
                {
                    dosage.ExpDrugSubstances = new List <EXP_DrugSubstance> {
                        new EXP_DrugSubstance()
                        {
                            ExpDrugSubstanceManufactures = new List <EXP_DrugSubstanceManufacture>()
                            {
                                new EXP_DrugSubstanceManufacture()
                            }
                        }
                    };
                }
                if (dosage.ExpDrugPrices == null)
                {
                    dosage.ExpDrugPrices = new List <EXP_DrugPrice>();
                }

                ViewData["MeasureList" + dosage.Id] = new SelectList(measures, "Id", "name",
                                                                     model.ExpDrugDosages[i].DosageMeasureTypeId);
                ViewData["SaleTypeList" + dosage.Id] = new SelectList(sales, "Id", "NameRu", model.ExpDrugDosages[i].SaleTypeId);
                ViewData["BestBeforeMeasureTypeList" + dosage.Id] = new SelectList(measures, "id", "short_name",
                                                                                   model.ExpDrugDosages[i].BestBeforeMeasureTypeDicId);
                ViewData["AppPeriodMixMeasureList" + dosage.Id] = new SelectList(measures, "id", "short_name",
                                                                                 model.ExpDrugDosages[i].AppPeriodMixMeasureDicId);
                ViewData["AppPeriodOpenMeasureList" + dosage.Id] = new SelectList(measures, "id", "short_name",
                                                                                  model.ExpDrugDosages[i].AppPeriodOpenMeasureDicId);
                for (var j = 0; j < dosage.ExpDrugWrappings.Count; j++)
                {
                    var wrap = dosage.ExpDrugWrappings[j];
                    ViewData["WrappingTypes" + wrap.Id] = new SelectList(wrappingTypes, "Id", "NameRu",
                                                                         wrap.WrappingTypeId);
                    ViewData["Boxes" + wrap.Id]           = new SelectList(boxes, "Id", "name", wrap.WrappingKindId);
                    ViewData["SizeMeasureList" + wrap.Id] = new SelectList(measures, "Id", "short_name",
                                                                           wrap.SizeMeasureId);
                    ViewData["VolumeMeasureList" + wrap.Id] = new SelectList(measures, "Id", "short_name",
                                                                             wrap.VolumeMeasureId);
                }

                for (var j = 0; j < dosage.ExpDrugPrices.Count; j++)
                {
                    var price = dosage.ExpDrugPrices[j];
                    model.ExpDrugDosages[i].ExpDrugPrices[j].PrimaryText      = drugDeclarationRepository.GetNameByWrappingNames(price.PrimaryValue);
                    model.ExpDrugDosages[i].ExpDrugPrices[j].SecondaryText    = drugDeclarationRepository.GetNameByWrappingNames(price.SecondaryValue);
                    model.ExpDrugDosages[i].ExpDrugPrices[j].IntermediateText = drugDeclarationRepository.GetNameByWrappingNames(price.IntermediateValue);
                }

                for (var j = 0; j < dosage.ExpDrugSubstances.Count; j++)
                {
                    var id = dosage.ExpDrugSubstances[j].Id.ToString();
                    dosage.ExpDrugSubstances[j].CategoryName = GetCategoryName(dosage.ExpDrugSubstances[j].sr_substances);
                    dosage.ExpDrugSubstances[j].CategoryPos  = dosage.ExpDrugSubstances[j].sr_substances?.category_pos;
                    ViewData["SubstanceTypes" + id]          = new SelectList(substanceTypes, "Id", "name",
                                                                              dosage.ExpDrugSubstances[j].SubstanceTypeId);
                    ViewData["Origins" + id]    = new SelectList(origins, "Id", "NameRu", dosage.ExpDrugSubstances[j].OriginId);
                    ViewData["NormDocs" + id]   = new SelectList(normDocs, "Id", "NameRu", dosage.ExpDrugSubstances[j].NormDocFarmId);
                    ViewData["PlantKinds" + id] = new SelectList(plantKinds, "Id", "NameRu",
                                                                 dosage.ExpDrugSubstances[j].PlantKindId);
                    ViewData["SubstanceMeasureList" + id] = new SelectList(measures, "Id", "short_name",
                                                                           dosage.ExpDrugSubstances[j].MeasureId);

                    /*          ViewData["SubstanceCounties" + id] = new SelectList(countries, "Id", "name",
                     *            dosage.ExpDrugSubstances[j].CountryId);*/
                    ViewData["IsControlList" + id] = new SelectList(booleans, "IsSign", "NameRu",
                                                                    dosage.ExpDrugSubstances[j].IsControl);
                    ViewData["IsPoisonList" + id] = new SelectList(booleans, "IsSign", "NameRu",
                                                                   dosage.ExpDrugSubstances[j].IsPoison);

                    /*  ViewData["SubstanceCounties" + i] = new SelectList(countries, "Id", "name",
                     *    dosage.ExpDrugSubstances[j].CountryId);*/
                    if (dosage.ExpDrugSubstances[j].ExpDrugSubstanceManufactures != null)
                    {
                        for (var k = 0; k < dosage.ExpDrugSubstances[j].ExpDrugSubstanceManufactures.Count; k++)
                        {
                            ViewData[
                                "SubstanceCounties" + dosage.ExpDrugSubstances[j].ExpDrugSubstanceManufactures[k].Id
                            ] =
                                new SelectList(countries, "Id", "name",
                                               dosage.ExpDrugSubstances[j].ExpDrugSubstanceManufactures[k].CountryId);
                        }
                    }
                    else
                    {
                        dosage.ExpDrugSubstances[j].ExpDrugSubstanceManufactures =
                            new List <EXP_DrugSubstanceManufacture> {
                            new EXP_DrugSubstanceManufacture()
                        };
                    }
                }
            }



            ViewData["IsGrlsList"] = new SelectList(booleans, "IsSign", "NameRu", model.IsGrls);
            ViewData["IsGmpList"]  = new SelectList(booleans, "IsSign", "NameRu", model.IsGmp);

            var manufactures = repository.GetManufactureTypeList();

            ViewData["ManufactureTypeList"] = new SelectList(manufactures, "Id", "NameRu", model.ManufactureTypeId);

            /*    ViewData["BestBeforeMeasureTypeList"] = new SelectList(measures, "id", "short_name",
             *      model.BestBeforeMeasureTypeDicId);
             *  ViewData["AppPeriodMixMeasureList"] = new SelectList(measures, "id", "short_name",
             *      model.AppPeriodMixMeasureDicId);
             *  ViewData["AppPeriodOpenMeasureList"] = new SelectList(measures, "id", "short_name",
             *      model.AppPeriodOpenMeasureDicId);
             */
            for (var i = 0; i < model.ExpDrugOtherCountries.Count; i++)
            {
                ViewData["OtherCounties" + i] = new SelectList(countries, "Id", "name",
                                                               model.ExpDrugOtherCountries[i].CountryId);
            }

            var orgManufactureTypes = repository.GetDictionaries(CodeConstManager.DIC_ORG_MANUFACTURE_TYPE);
            var countyDics          = repository.GetDictionaries(CodeConstManager.DIC_COUNTRY_TYPE);
            var opfTypeDics         = repository.GetDictionaries(CodeConstManager.DIC_OPF_TYPE);

            ViewData["OrgManufactureTypes"] = new SelectList(orgManufactureTypes, "Id", "Name", null);
            ViewData["CountryDics"]         = new SelectList(countyDics, "Id", "Name", null);
            ViewData["OpfTypeDics"]         = new SelectList(opfTypeDics, "Id", "Name", null);

            for (var i = 0; i < model.ExpDrugOrganizationses.Count; i++)
            {
                var id = model.ExpDrugOrganizationses[i].Id.ToString();
                ViewData["OrgManufactureTypes" + id] = new SelectList(orgManufactureTypes, "Id", "name",
                                                                      model.ExpDrugOrganizationses[i].OrgManufactureTypeDicId);
                ViewData["CountryDics" + id] = new SelectList(countyDics, "Id", "name",
                                                              model.ExpDrugOrganizationses[i].CountryDicId);
                ViewData["OpfTypeDics" + id] = new SelectList(opfTypeDics, "Id", "name",
                                                              model.ExpDrugOrganizationses[i].OpfTypeDicId);
                var manufacture = repository.GetDictionaryById(CodeConstManager.DIC_ORG_MANUFACTURE_TYPE,
                                                               model.ExpDrugOrganizationses[i].OrgManufactureTypeDicId);
                if (manufacture != null)
                {
                    model.ExpDrugOrganizationses[i].ManufactureName = manufacture.Name;
                }
            }
            var changeTypes = repository.GetDicChangeTypes().ToArray();

            ViewData["ChangeTypes"] = new SelectList(changeTypes, "Id", "Code", 0);
            for (var i = 0; i < model.ExpDrugChangeTypes.Count; i++)
            {
                ViewData["ChangeTypes" + i] = new SelectList(changeTypes, "Id", "Code",
                                                             model.ExpDrugChangeTypes[i].ChangeTypeId);
            }

            var markList = drugPrimaryRepo.GetPrimaryMarkList(model.Id, null);

            var remarkTypes = repository.GetRemarkTypes().ToArray();

            ViewData["RemarkTypes" + model.Id] = new SelectList(remarkTypes, "Id", "NameRu",
                                                                null);
            model.ExpExpertiseStageRemarks = new List <EXP_ExpertiseStageRemark>();
            foreach (var expDrugPrimaryRemark in markList)
            {
                model.ExpExpertiseStageRemarks.Add(expDrugPrimaryRemark);
            }

            if (model.ExpExpertiseStageRemarks.Count == 0)
            {
                model.ExpExpertiseStageRemarks.Add(new EXP_ExpertiseStageRemark());
            }
            else
            {
                model.IsShowRemark = true;
            }

            foreach (var expDrugPrimaryRemark in model.ExpExpertiseStageRemarks)
            {
                ViewData["RemarkTypes" + model.Id + "_" + expDrugPrimaryRemark.Id] = new SelectList(remarkTypes,
                                                                                                    "Id", "NameRu",
                                                                                                    expDrugPrimaryRemark.RemarkTypeId);
            }
            ViewBag.PaymentOverdue = model.EXP_DirectionToPays.Any(e => e.Type == 1 &&
                                                                   e.Status.Code == Dictionary.ExpDirectionToPayStatus.PaymentExpired);
            model.Letters = new List <EXP_DrugCorespondence>(drugPrimaryRepo.GetDrugCorespondences(model.Id, true));
        }
        protected virtual void FillDosageControl(EXP_ExpertiseStageDosage model)
        {
            var externalRepository = new ExternalRepository();
            var repository         = new ReadOnlyDictionaryRepository();
            var measures           = externalRepository.GetMeasures();

            var wrappingTypes = repository.GetWrappingTypes().ToArray();
            var boxes         = externalRepository.GetBoxes().ToArray();
            //            var remarkTypes = repository.GetRemarkTypes().ToArray();
            var sales = repository.GetSaleType().ToList();
            var drugDeclarationRepository = new DrugDeclarationRepository();

            model.EXP_DrugDosage.ExpDrugWrappings  = new List <EXP_DrugWrapping>();
            model.EXP_DrugDosage.ExpDrugPrices     = new List <EXP_DrugPrice>();
            model.EXP_DrugDosage.ExpDrugSubstances = new List <EXP_DrugSubstance>();
            //            model.EXP_DrugDosage.ExpDrugAppDosageRemarks = new List<EXP_DrugAppDosageRemark>();
            //            model.EXP_DrugDosage.ExpDrugAppDosageResults = new List<EXP_DrugAppDosageResult>();

            /*  foreach (var expDrugAppDosageRemark in model.EXP_DrugDosage.EXP_DrugAppDosageRemark)
             * {
             *  model.EXP_DrugDosage.ExpDrugAppDosageRemarks.Add(expDrugAppDosageRemark);
             * }
             * if (model.EXP_DrugDosage.ExpDrugAppDosageRemarks.Count == 0)
             * {
             *  model.EXP_DrugDosage.ExpDrugAppDosageRemarks.Add(new EXP_DrugAppDosageRemark());
             * }
             *
             * foreach (var expDrugAppDosageRemark in model.EXP_DrugDosage.EXP_DrugAppDosageResult)
             * {
             *  model.EXP_DrugDosage.ExpDrugAppDosageResults.Add(expDrugAppDosageRemark);
             * }
             * if (model.EXP_DrugDosage.ExpDrugAppDosageResults.Count == 0)
             * {
             *  model.EXP_DrugDosage.ExpDrugAppDosageResults.Add(new EXP_DrugAppDosageResult());
             * }
             */
            /*  ViewData["RemarkTypes" + model.EXP_DrugDosage.DrugDeclarationId] = new SelectList(remarkTypes, "Id", "NameRu",
             *   null);
             * foreach (var wrap in model.EXP_DrugDosage.ExpDrugAppDosageResults)
             * {
             *  ViewData["ResultTypes" + model.EXP_DrugDosage.DrugDeclarationId + "_" + wrap.Id] = new SelectList(remarkTypes, "Id", "NameRu",
             *      wrap.RemarkTypeId);
             * }
             * foreach (var wrap in model.EXP_DrugDosage.ExpDrugAppDosageRemarks)
             * {
             *  ViewData["RemarkTypes" + model.EXP_DrugDosage.DrugDeclarationId + "_" + wrap.Id] = new SelectList(remarkTypes, "Id", "NameRu",
             *      wrap.RemarkTypeId);
             * }*/

            foreach (var expDrugWrapping in model.EXP_DrugDosage.EXP_DrugWrapping)
            {
                model.EXP_DrugDosage.ExpDrugWrappings.Add(expDrugWrapping);
            }

            foreach (var expDrugWrapping in model.EXP_DrugDosage.EXP_DrugPrice)
            {
                model.EXP_DrugDosage.ExpDrugPrices.Add(expDrugWrapping);
            }
            for (var d = 0; d < model.EXP_DrugDosage.EXP_DrugSubstance.Count; d++)
            {
                model.EXP_DrugDosage.ExpDrugSubstances.Add(model.EXP_DrugDosage.EXP_DrugSubstance.ToList()[d]);
                if (model.EXP_DrugDosage.EXP_DrugSubstance.ToList()[d].ExpDrugSubstanceManufactures == null)
                {
                    model.EXP_DrugDosage.EXP_DrugSubstance.ToList()[d].ExpDrugSubstanceManufactures = new List <EXP_DrugSubstanceManufacture>();
                }

                foreach (var expDrugSubstanceManufacture in model.EXP_DrugDosage.EXP_DrugSubstance.ToList()[d].EXP_DrugSubstanceManufacture)
                {
                    model.EXP_DrugDosage.EXP_DrugSubstance.ToList()[d].ExpDrugSubstanceManufactures.Add(expDrugSubstanceManufacture);
                }
            }

            /* foreach (var expDrugWrapping in model.EXP_DrugDosage.EXP_DrugSubstance)
             * {
             *   model.EXP_DrugDosage.ExpDrugSubstances.Add(expDrugWrapping);
             *   foreach (var expDrugSubstanceManufacture in expDrugWrapping.EXP_DrugSubstanceManufacture)
             *   {
             *       model.EXP_DrugDosage.ExpDrugSubstances.Add(expDrugWrapping);
             *   }
             * }*/
            if (model.EXP_DrugDosage.ExpDrugWrappings == null || model.EXP_DrugDosage.ExpDrugWrappings.Count == 0)
            {
                model.EXP_DrugDosage.ExpDrugWrappings = new List <EXP_DrugWrapping>();
            }
            if (model.EXP_DrugDosage.ExpDrugSubstances == null || model.EXP_DrugDosage.ExpDrugSubstances.Count == 0)
            {
                model.EXP_DrugDosage.ExpDrugSubstances = new List <EXP_DrugSubstance> ();
            }
            if (model.EXP_DrugDosage.ExpDrugPrices == null)
            {
                model.EXP_DrugDosage.ExpDrugPrices = new List <EXP_DrugPrice>();
            }
            ViewData["MeasureList" + model.EXP_DrugDosage.Id] = new SelectList(measures, "Id", "name",
                                                                               model.EXP_DrugDosage.DosageMeasureTypeId);
            ViewData["SaleTypeList" + model.EXP_DrugDosage.Id] = new SelectList(sales, "Id", "NameRu", model.EXP_DrugDosage.SaleTypeId);
            ViewData["BestBeforeMeasureTypeList" + model.EXP_DrugDosage.Id] = new SelectList(measures, "id", "short_name",
                                                                                             model.EXP_DrugDosage.BestBeforeMeasureTypeDicId);
            ViewData["AppPeriodMixMeasureList" + model.EXP_DrugDosage.Id] = new SelectList(measures, "id", "short_name",
                                                                                           model.EXP_DrugDosage.AppPeriodMixMeasureDicId);
            ViewData["AppPeriodOpenMeasureList" + model.EXP_DrugDosage.Id] = new SelectList(measures, "id", "short_name",
                                                                                            model.EXP_DrugDosage.AppPeriodOpenMeasureDicId);
            for (var j = 0; j < model.EXP_DrugDosage.ExpDrugWrappings.Count; j++)
            {
                var wrap = model.EXP_DrugDosage.ExpDrugWrappings[j];
                ViewData["WrappingTypes" + wrap.Id] = new SelectList(wrappingTypes, "Id", "NameRu",
                                                                     wrap.WrappingTypeId);
                ViewData["Boxes" + wrap.Id]           = new SelectList(boxes, "Id", "name", wrap.WrappingKindId);
                ViewData["SizeMeasureList" + wrap.Id] = new SelectList(measures, "Id", "short_name",
                                                                       wrap.SizeMeasureId);
                ViewData["VolumeMeasureList" + wrap.Id] = new SelectList(measures, "Id", "short_name",
                                                                         wrap.VolumeMeasureId);
            }
            var origins        = repository.GetOrigins().ToArray();
            var plantKinds     = repository.GetPlantKinds().ToArray();
            var substanceTypes = externalRepository.GetSubstanceTypes().ToArray();
            var countries      = externalRepository.GetCounties().ToArray();
            var booleans       = repository.GetBooleanList();

            for (var j = 0; j < model.EXP_DrugDosage.ExpDrugSubstances.Count; j++)
            {
                var ids = model.EXP_DrugDosage.ExpDrugSubstances[j].Id.ToString();
                model.EXP_DrugDosage.ExpDrugSubstances[j].CategoryName =
                    GetCategoryName(model.EXP_DrugDosage.ExpDrugSubstances[j].sr_substances);
                model.EXP_DrugDosage.ExpDrugSubstances[j].CategoryPos =
                    model.EXP_DrugDosage.ExpDrugSubstances[j].sr_substances?.category_pos;
                ViewData["SubstanceTypes" + ids] = new SelectList(substanceTypes, "Id", "name",
                                                                  model.EXP_DrugDosage.ExpDrugSubstances[j].SubstanceTypeId);
                ViewData["Origins" + ids] = new SelectList(origins, "Id", "NameRu",
                                                           model.EXP_DrugDosage.ExpDrugSubstances[j].OriginId);
                ViewData["PlantKinds" + ids] = new SelectList(plantKinds, "Id", "NameRu",
                                                              model.EXP_DrugDosage.ExpDrugSubstances[j].PlantKindId);
                ViewData["SubstanceMeasureList" + ids] = new SelectList(measures, "Id", "short_name",
                                                                        model.EXP_DrugDosage.ExpDrugSubstances[j].MeasureId);
                ViewData["SubstanceCounties" + ids] = new SelectList(countries, "Id", "name",
                                                                     model.EXP_DrugDosage.ExpDrugSubstances[j].CountryId);
                ViewData["IsControlList" + ids] = new SelectList(booleans, "IsSign", "NameRu",
                                                                 model.EXP_DrugDosage.ExpDrugSubstances[j].IsControl);
                ViewData["NormDocs" + ids] = new SelectList(repository.GetExpDicNormDocFarms().ToArray(), "Id", "NameRu",
                                                            model.EXP_DrugDosage.ExpDrugSubstances[j].NormDocFarmId);
                ViewData["IsPoisonList" + ids] = new SelectList(booleans, "IsSign", "NameRu",
                                                                model.EXP_DrugDosage.ExpDrugSubstances[j].IsPoison);

                /*      ViewData["SubstanceCounties" + ids] = new SelectList(countries, "Id", "name",
                 *        model.EXP_DrugDosage.ExpDrugSubstances[j].CountryId);*/
                if (model.EXP_DrugDosage.ExpDrugSubstances[j].ExpDrugSubstanceManufactures != null)
                {
                    for (var k = 0;
                         k < model.EXP_DrugDosage.ExpDrugSubstances[j].ExpDrugSubstanceManufactures.Count;
                         k++)
                    {
                        ViewData["SubstanceCounties" + model.EXP_DrugDosage.ExpDrugSubstances[j].ExpDrugSubstanceManufactures[k].Id.ToString()] = new SelectList(countries, "Id", "name",
                                                                                                                                                                 model.EXP_DrugDosage.ExpDrugSubstances[j].ExpDrugSubstanceManufactures[k].CountryId);
                    }
                }
            }

            for (var j = 0; j < model.EXP_DrugDosage.ExpDrugPrices.Count; j++)
            {
                var price = model.EXP_DrugDosage.ExpDrugPrices[j];
                model.EXP_DrugDosage.ExpDrugPrices[j].PrimaryText =
                    drugDeclarationRepository.GetNameByWrappingNames(price.PrimaryValue);
                model.EXP_DrugDosage.ExpDrugPrices[j].SecondaryText =
                    drugDeclarationRepository.GetNameByWrappingNames(price.SecondaryValue);
                model.EXP_DrugDosage.ExpDrugPrices[j].IntermediateText =
                    drugDeclarationRepository.GetNameByWrappingNames(price.IntermediateValue);
            }
        }
        public ActionResult ExportFilePdf(Guid id)
        {
            var       db     = new ncelsEntities();
            string    name   = "Заявление на проведение экспертизы лс.pdf";
            StiReport report = new StiReport();

            try
            {
                report.Load(Server.MapPath("~/Reports/Mrts/DrugDeclaration.mrt"));
                foreach (var data in report.Dictionary.Databases.Items.OfType <StiSqlDatabase>())
                {
                    data.ConnectionString = UserHelper.GetCnString();
                }
                var repository = new DrugDeclarationRepository();
                var model      = repository.GetById(id);
                model.IsExist = true;
                FillDeclarationControl(model);
                var registerNumber       = "";
                var reestrRegDate        = "";
                var reestrExpirationDate = "";
                var numberNd             = "";
                foreach (var modelExpDrugDosage in model.ExpDrugDosages)
                {
                    if (!string.IsNullOrEmpty(modelExpDrugDosage.ReestrNumber))
                    {
                        registerNumber += modelExpDrugDosage.ReestrNumber + "; ";
                    }
                    if (!string.IsNullOrEmpty(modelExpDrugDosage.ReestrRegDate))
                    {
                        reestrRegDate += modelExpDrugDosage.ReestrRegDate + ";";
                    }
                    if (!string.IsNullOrEmpty(modelExpDrugDosage.ReestrExpirationDate))
                    {
                        reestrExpirationDate += modelExpDrugDosage.ReestrExpirationDate + ";";
                    }
                    if (!string.IsNullOrEmpty(modelExpDrugDosage.NumberNd))
                    {
                        numberNd += modelExpDrugDosage.NumberNd + ";";
                    }
                }
                if (model.TypeId == 1)
                {
                    reestrRegDate = model.CreatedDate.ToShortDateString();
                }
                report.Dictionary.Variables["NumberNd"].ValueObject             = numberNd;
                report.Dictionary.Variables["ReestrExpirationDate"].ValueObject = reestrExpirationDate;
                report.Dictionary.Variables["RegisterNumber"].ValueObject       = registerNumber;
                report.Dictionary.Variables["ReestrRegDate"].ValueObject        = reestrRegDate;
                report.Dictionary.Variables["DrugDeclarationId"].ValueObject    = id;

                report.Render(false);
            }
            catch (Exception ex)
            {
                LogHelper.Log.Error("ex: " + ex.Message + " \r\nstack: " + ex.StackTrace);
            }
            var stream = new MemoryStream();

            report.ExportDocument(StiExportFormat.Pdf, stream);
            stream.Position = 0;
            var drugDeclaration        = db.EXP_DrugDeclaration.FirstOrDefault(dd => dd.Id == id);
            var drugDeclarationHistory = drugDeclaration.EXP_DrugDeclarationHistory.Where(dh => dh.XmlSign != null)
                                         .OrderByDescending(dh => dh.DateCreate).FirstOrDefault();

            if (drugDeclarationHistory != null)
            {
                Aspose.Words.Document doc = new Aspose.Words.Document(stream);
                doc.InserQrCodesToEnd("ExecutorSign", drugDeclarationHistory.XmlSign);
                var pdfFile = new MemoryStream();
                pdfFile.Position = 0;
                stream.Close();
                return(new FileStreamResult(pdfFile, "application/pdf"));
            }
            return(new FileStreamResult(stream, "application/pdf"));
        }