public virtual string GetTreeData(Guid id, bool withRemarks = false, bool disabled = false)
        {
            var model       = GetExpertiseStage(id);
            var dicRepo     = new ReadOnlyDictionaryRepository();
            var flatObjects = model.EXP_DrugDeclaration.EXP_DIC_Type.Code == EXP_DIC_Type.ReRegistration
                ? dicRepo.GetExpDicPrimaryOTDs(new[] { EXP_DIC_PrimaryOTD.Module4, EXP_DIC_PrimaryOTD.Module5 }).ToArray()
                : dicRepo.GetExpDicPrimaryOTDs().ToArray();

            if (model.OtdIds == null)
            {
                model.OtdIds = "";
            }
            var odtIds = model.OtdIds.Split(',');
            Dictionary <long, string> otdRemarks = new Dictionary <long, string>();

            if (withRemarks && !string.IsNullOrEmpty(model.OtdRemarks))
            {
                foreach (var rmStr in model.OtdRemarks.Split(new[] { "+++" }, StringSplitOptions.RemoveEmptyEntries))
                {
                    var items = rmStr.Split(new[] { "-->" }, StringSplitOptions.None);
                    otdRemarks.Add(long.Parse(items[0]), items[1]);
                }
            }
            List <RecursiveObject> recursiveObjects = FillRecursive(flatObjects, null, odtIds, withRemarks, otdRemarks, disabled);

            return(new JavaScriptSerializer().Serialize(recursiveObjects));
        }
Esempio n. 2
0
        public bool CreateRemark(string id, Employee employee, int dicStageId)
        {
            var model = GetExpertiseStageById(new Guid(id));

            if (model == null)
            {
                return(true);
            }

            var otdIds      = (model.OtdIds ?? "").Split(',').ToList();
            var otds        = AppContext.EXP_ExpertiseStageRemark.Where(e => e.OtdId > 0 && e.EXP_ExpertiseStage.StageId == dicStageId && e.EXP_ExpertiseStage.Id == model.Id).Select(e => e.OtdId);
            var dicRepo     = new ReadOnlyDictionaryRepository();
            var dicOtdQuery = model.EXP_DrugDeclaration.EXP_DIC_Type.Code == EXP_DIC_Type.ReRegistration
                ? dicRepo.GetExpDicPrimaryOTDs(null, new[] { EXP_DIC_PrimaryOTD.Module4, EXP_DIC_PrimaryOTD.Module5 })
                : dicRepo.GetExpDicPrimaryOTDs();
            var dicotds           = dicOtdQuery.Where(e => !otdIds.Contains(e.Id.ToString()) && !otds.Contains(e.Id) && e.EXP_DIC_PrimaryOTD1.Count == 0);
            var expDicPrimaryOtds = dicotds as EXP_DIC_PrimaryOTD[] ?? dicotds.ToArray();

            var deleteList = AppContext.EXP_ExpertiseStageRemark.Where(e => e.OtdId > 0 && e.EXP_ExpertiseStage.StageId == dicStageId && e.EXP_ExpertiseStage.Id == model.Id && otdIds.Contains(e.OtdId.ToString()));

            foreach (var expDrugPrimaryRemark in deleteList)
            {
                AppContext.EXP_ExpertiseStageRemark.Remove(expDrugPrimaryRemark);
            }
            AppContext.SaveChanges();
            if (!expDicPrimaryOtds.Any())
            {
                return(true);
            }
            var otdRemarks = (model.OtdRemarks ?? "").Split(new[] { "+++" }, StringSplitOptions.RemoveEmptyEntries)
                             .Select(e =>
            {
                var items = e.Split(new[] { "-->" }, StringSplitOptions.RemoveEmptyEntries);
                return(new { id = int.Parse(items[0]), remark = (items.Length > 1 ?items[1] : "") });
            }).ToList();

            foreach (var dicotd in expDicPrimaryOtds)
            {
                if (dicotd.EXP_DIC_PrimaryOTD1.Count != 0)
                {
                    continue;
                }
                var remark = otdRemarks.FirstOrDefault(e => e.id == dicotd.Id);
                var entity = new EXP_ExpertiseStageRemark
                {
                    OtdId      = dicotd.Id,
                    NameRemark = remark != null?string.Format("{0} - {1}", dicotd.FullName, remark.remark) : dicotd.FullName,
                                     ExecuterId = employee.Id,
                                     StageId    = model.Id,
                                     RemarkDate = DateTime.Now
                };
                AppContext.EXP_ExpertiseStageRemark.Add(entity);
            }


            AppContext.SaveChanges();
            return(true);
        }
Esempio n. 3
0
        public override ActionResult AppDosage(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var model = new AppDosageRepository().GetStageByAppDosageId(id.Value);

            if (model == null)
            {
                return(HttpNotFound());
            }
            FillDosageControl(model);

            var repositoryDic = new ReadOnlyDictionaryRepository();
            var repository    = new SafetyreportRepository();

            model.EXP_DrugDosage.EXP_DrugDeclaration.ExpDicPrimaryOtds = repositoryDic.GetExpDicPrimaryOTDs().Where(e => e.ParentId == null).ToList();
            model.ExpertiseSafetyreportFinalDoc = model.EXP_ExpertiseSafetyreportFinalDoc.FirstOrDefault();

            if (model.ExpertiseSafetyreportFinalDoc == null)
            {
                model.ExpertiseSafetyreportFinalDoc = CreateExpertiseSafetyreportFinalDoc(model);
                repository.CreateExpertiseSafetyreportFinalDoc(model.ExpertiseSafetyreportFinalDoc);

                model.ExpertiseSafetyreportFinalDoc.EXP_ExpertiseStageDosage = model;
            }
            else
            {
                var newExpertiseSafetyreport = CreateExpertiseSafetyreportFinalDoc(model);

                if (string.IsNullOrEmpty(model.ExpertiseSafetyreportFinalDoc.Conclusion))
                {
                    model.ExpertiseSafetyreportFinalDoc.Conclusion = newExpertiseSafetyreport.Conclusion;
                }
                if (string.IsNullOrEmpty(model.ExpertiseSafetyreportFinalDoc.ConclusionKz))
                {
                    model.ExpertiseSafetyreportFinalDoc.ConclusionKz = newExpertiseSafetyreport.ConclusionKz;
                }

                repository.UpdateExpertiseSafetyreportFinalDoc(model.ExpertiseSafetyreportFinalDoc);
            }

            ViewData["FinalyDocResultList" + model.EXP_DrugDosage.DrugDeclarationId] = new SelectList(repositoryDic.GetStageResultsByStage(model.EXP_ExpertiseStage.StageId), "Id", "NameRu",
                                                                                                      model.ResultId);

            var stageName = ExpStageNameHelper.GetName(GetStage());

            ActionLogger.WriteInt(stageName + ": Получение заявки №" + model.EXP_DrugDosage.RegNumber);
            return(PartialView("~/Views/DrugDeclaration/AppDosage.cshtml", model));
        }