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