public void SaveTemplate(string jsonString, MedicalProfileTemplate template) { List<CustomSnippet> snippetChanged = snippetBusiness.ConvertJsonStringToCustomSnippetList(jsonString, template); List<CustomSnippet> snippetDB = _db.CustomSnippets.Where( s => s.MedicalProfileTemplateId == template.MedicalProfileTemplateId) .OrderBy(s=>s.Position) .ToList(); snippetBusiness.SaveSnippetList(snippetDB, snippetChanged, template); }
public ActionResult Edit(MedicalProfileTemplate medicalProfileTemplate) { if (ModelState.IsValid) { _db.Entry(medicalProfileTemplate).State = EntityState.Modified; _db.SaveChanges(); } return RedirectToAction("Index"); }
public ActionResult CreateFromName(string name) { MedicalProfileTemplate template = new MedicalProfileTemplate { MedicalProfileTemplateName = name }; _db.MedicalProfileTemplates.Add(template); _db.SaveChanges(); return RedirectToAction("Editor", new { id = template.MedicalProfileTemplateId }); }
public JObject CheckTemplateChanged(string jsonString, MedicalProfileTemplate template) { List<CustomSnippet> snippetChanged = snippetBusiness.ConvertJsonStringToCustomSnippetList(jsonString, template); List<CustomSnippet> snippetDB = _db.CustomSnippets.Where( s => s.MedicalProfileTemplateId == template.MedicalProfileTemplateId) .OrderBy(s => s.Position) .ToList(); JObject result = snippetBusiness.CompareChanges(snippetDB, snippetChanged, template); return result; }
public JObject CheckTemplateChanged(string jsonString, MedicalProfileTemplate template) { dynamic result = business.CheckTemplateChanged(jsonString, template); return result; }
public JObject SaveTemplate(string jsonString, MedicalProfileTemplate template) { business.SaveTemplate(jsonString, template); dynamic result = new JObject(); result.status = "success"; return result; }
public JObject CompareChanges(List<CustomSnippet> snippetDB, List<CustomSnippet> snippetChanged, MedicalProfileTemplate template) { var numChangeStaticItem = 0; var numChangeDynamicItem = 0; var numDeleteStaticItem = 0; var numDeleteDynamicItem = 0; var numMedicalProfileUsage = _db.MedicalProfiles.Where( x => x.MedicalProfileTemplateId == template.MedicalProfileTemplateId).Count(); dynamic changedList = new JArray(); dynamic removeList = new JArray(); //Loop to find which item have been changed foreach (CustomSnippet snippetChangeItem in snippetChanged) { //Existing item if (snippetChangeItem.CustomSnippetId > 0) { var existItem = snippetDB.Where(x => x.CustomSnippetId == snippetChangeItem.CustomSnippetId).Single(); /* * Mapping one-one data * Change it not affect data */ if (existItem.Title.Equals("Static Text") || existItem.Title.Equals("Form Name")) { for (int i = 0; i < existItem.CustomSnippetFields.Count; i++) { string fieldName = existItem.CustomSnippetFields.ElementAt(i).FieldName; string oldValue = existItem.CustomSnippetFields.ElementAt(i).Value; string newValue = snippetChangeItem.CustomSnippetFields.ElementAt(i).Value; if (!oldValue.Equals(newValue) && !fieldName.Equals("id")) { dynamic changedItem = new JObject(); changedItem.oldValue = oldValue; changedItem.newValue = newValue; changedList.Add(changedItem); numChangeStaticItem++; } } } /* * Custom element * Dangerous when change * Posible to lost data */ else { for (int i = 0; i < existItem.CustomSnippetFields.Count; i++) { string fieldName = existItem.CustomSnippetFields.ElementAt(i).FieldName; string oldValue = existItem.CustomSnippetFields.ElementAt(i).Value; string newValue = snippetChangeItem.CustomSnippetFields.ElementAt(i).Value; if (!oldValue.Equals(newValue) && !fieldName.Equals("id")) { dynamic changedItem = new JObject(); changedItem.oldValue = oldValue; changedItem.newValue = newValue; changedList.Add(changedItem); numChangeDynamicItem++; } } } } } //Loop to file which item have been removed foreach (CustomSnippet snippetExistItem in snippetDB) { var snippetChangedItem = snippetChanged.Where(x => x.CustomSnippetId == snippetExistItem.CustomSnippetId).SingleOrDefault(); /* This element have been removed * in the list * really dangerous */ if (snippetChangedItem == null) { dynamic removedItem = new JObject(); string oldValue = snippetExistItem.CustomSnippetFields.Where( x => (x.FieldName.Equals("label") || x.FieldName.Equals("name"))) .FirstOrDefault().Value; removedItem.oldValue = oldValue; removeList.Add(removedItem); if (snippetExistItem.Title.Equals("Static Text") || snippetExistItem.Title.Equals("Form Name")) numDeleteStaticItem++; else numDeleteDynamicItem++; } } dynamic result = new JObject(); result.numChangeStaticItem = numChangeStaticItem; result.numChangeDynamicItem = numChangeDynamicItem; result.numDeleteStaticItem = numDeleteStaticItem; result.numDeleteDynamicItem = numDeleteDynamicItem; result.changedList = changedList; result.removeList = removeList; result.numMedicalProfileUsage = numMedicalProfileUsage; return result; }
public void SaveSnippetList(List<CustomSnippet> snippetDB, List<CustomSnippet> snippetChanged, MedicalProfileTemplate template) { //Loop to file which item have been changed foreach (CustomSnippet snippetChangeItem in snippetChanged) { //Existing item if (snippetChangeItem.CustomSnippetId > 0) { var existItem = snippetDB.Where(x => x.CustomSnippetId == snippetChangeItem.CustomSnippetId).Single(); for (int i = 0; i < existItem.CustomSnippetFields.Count; i++) { var oldField = existItem.CustomSnippetFields.ElementAt(i); var newField = snippetChangeItem.CustomSnippetFields.ElementAt(i); oldField.Value = newField.Value; existItem.Position = snippetChangeItem.Position; existItem.ParentId = snippetChangeItem.ParentId; existItem.PositionInTable = snippetChangeItem.PositionInTable; } } //New added item else { _db.CustomSnippets.Add(snippetChangeItem); } } //Loop to file which item have been removed foreach (CustomSnippet snippetExistItem in snippetDB) { var snippetChangedItem = snippetChanged.Where(x => x.CustomSnippetId == snippetExistItem.CustomSnippetId).SingleOrDefault(); if (snippetChangedItem == null) { _db.CustomSnippets.Remove(snippetExistItem); } } _db.SaveChanges(); //Store Id to CustomSnippetField List<CustomSnippet> snippetLatest = _db.CustomSnippets.Where( s => s.MedicalProfileTemplateId == template.MedicalProfileTemplateId) .OrderBy(s => s.Position) .ToList(); foreach (CustomSnippet snippetItem in snippetLatest) { for (int i = 0; i < snippetItem.CustomSnippetFields.Count; i++) { var field = snippetItem.CustomSnippetFields.ElementAt(i); if (field.FieldName.Equals("id")) { field.Value = snippetItem.CustomSnippetId.ToString(); } } } _db.SaveChanges(); }
public List<CustomSnippet> ConvertJsonStringToCustomSnippetList(string jsonString, MedicalProfileTemplate template) { List<CustomSnippet> resultCustomSnippetList = new List<CustomSnippet>(); JArray listSnippets = JArray.Parse(jsonString) as JArray; int position = 0; foreach (dynamic snippet in listSnippets) { CustomSnippet customSnippet = new CustomSnippet { Title = snippet.title, Name = snippet.name, MedicalProfileTemplateId = template.MedicalProfileTemplateId }; /* * This is for mapping one-one attribute * we don't need to track it */ if (snippet.title == "Static Text") { var SnippetTypeDic = new Dictionary<string, SnippetType> { { "Custom", SnippetType.Custom }, { "User", SnippetType.User }, { "Patient", SnippetType.Patient }, { "PersonalHealthRecord", SnippetType.PersonalHealthRecord } }; string str = ((object)snippet.snippettype).ToString(); customSnippet.SnippetType = SnippetTypeDic[((object)snippet.snippettype).ToString()]; customSnippet.SnippetFieldName = snippet.fieldname; } position++; if (snippet.parentId != null) { customSnippet.ParentId = snippet.parentId; customSnippet.PositionInTable = snippet.positionInTable; } customSnippet.Position = position; resultCustomSnippetList.Add(customSnippet); customSnippet.CustomSnippetFields = new Collection<CustomSnippetField>(); if (snippet.fields != null) { foreach (dynamic snippetField in snippet.fields) { dynamic metadata = snippetField.Value; if ("id".Equals(snippetField.Name)) { if (metadata.value == null) customSnippet.CustomSnippetId = 0; else customSnippet.CustomSnippetId = metadata.value; } CustomSnippetField customSnippetField = new CustomSnippetField { CustomSnippet = customSnippet, FieldName = snippetField.Name, Label = metadata.label, Type = metadata.type, Value = ((object)metadata.value).ToString(), Name = metadata.name }; customSnippet.CustomSnippetFields.Add(customSnippetField); } } } return resultCustomSnippetList; }