public ActionResult Delete(ActionItem model) { if (ModelState.IsValid) { CacheManager.SetCacheItem<ActionItem>(getCacheKey(), model); return RedirectToAction("ElSignature", new { signatureType = ElSignatureType.Record_Remove }); } return View(model); }
public ActionResult Create(ActionItem model) { if(ModelState.IsValid) { CacheManager.SetCacheItem<ActionItem>(getCacheKey(), model); return RedirectToAction("ElSignature",new{signatureType = ElSignatureType.Record_Create}); } ModelState.AddModelError("", "Please check your form entries again, or contact an administrator if this error persists."); return View(model); }
public static bool Save(string userName, ElSignatureType sigType, ActionItem cachedItem) { try { //get audit trail items List<AuditTrail> atItems = new List<AuditTrail>(); if(cachedItem.ActionItemId>0) atItems = getAuditTrailItems(cachedItem); //If Create/Edit/Remove int recordId = 0; if (sigType == ElSignatureType.Record_Create || sigType == ElSignatureType.Record_Edit || sigType == ElSignatureType.Record_Remove) { //SaveRecordData recordId = saveRecordData(cachedItem, sigType); } //trap null value error; if (recordId == 0) throw new NullReferenceException(); if (sigType == ElSignatureType.Record_Create || sigType == ElSignatureType.Workflow_Create || sigType == ElSignatureType.Workflow_Transition) { //SaveWorkflowData using (ActionTrackerEntities db = new ActionTrackerEntities()) { ActionItem loadedItem = db.ActionItems.Find(recordId); ActionItemWorkflow aiwf = new ActionItemWorkflow(); Guid instanceId = aiwf.CreateInstance(loadedItem.ActionItemId, AccountRepos.GetAccountId(userName)); //update record with instanceId loadedItem.InstanceId = instanceId; db.Entry(loadedItem).State = EntityState.Modified; db.SaveChanges(); } } //SaveESig(); ESig es = new ESig() { RecordId = recordId, SignedBy = AccountRepos.GetAccountId(userName), SignedDate = DateTime.Now, TableName = typeof(ActionItem).Name, IsComplete = true, SignatureRole = enumToString(sigType) }; using (ActionTrackerEntities db = new ActionTrackerEntities()) { db.Entry(es).State = EntityState.Added; db.SaveChanges(); //update and save audit trail items with ESig and RecordIds, and changetype foreach (AuditTrail item in atItems) { item.ESigId = es.ESigId; item.RecordId = recordId; item.ChangeType = es.SignatureRole; db.Entry(item).State = EntityState.Added; db.SaveChanges(); } } } catch (Exception Ex) { throw Ex; //TODO: //return false; } return true; }
private static int saveRecordData(ActionItem cachedItem, ElSignatureType sigType) { using (ActionTrackerEntities db = new ActionTrackerEntities()) { switch (sigType) { case ElSignatureType.Record_Create: db.Entry(cachedItem).State = EntityState.Added; break; case ElSignatureType.Record_Edit: db.Entry(cachedItem).State = EntityState.Modified; break; case ElSignatureType.Record_Remove: db.Entry(cachedItem).State = EntityState.Deleted; break; } try { db.SaveChanges(); } catch (Exception ex) { throw ex; //TODO: remove the below //return false; } return cachedItem.ActionItemId; } }
private static List<AuditTrail> getAuditTrailItems(ActionItem cachedItem) { ActionItem oItem = new ActionItem(); List<AuditTrail> atItems = new List<AuditTrail>(); using(ActionTrackerEntities db = new ActionTrackerEntities()) { oItem = db.ActionItems.Find(cachedItem.ActionItemId); foreach (PropertyInfo opi in oItem.GetType().GetProperties()) { if (opi.PropertyType.IsPrimitive || opi.PropertyType.Equals(typeof(string))) { var oVal = opi.GetValue(oItem,null).ToString(); var cVal = typeof(ActionItem).GetProperty(opi.Name).GetValue(cachedItem,null).ToString(); if (oVal != cVal) { atItems.Add(new AuditTrail() { FieldName = opi.Name, FieldValueNew = cVal, FieldValueOld = oVal, TableName = typeof(AuditTrail).Name }); } } } return atItems; } }
public ActionResult Edit(ActionItem model) { if (ModelState.IsValid) { CacheManager.SetCacheItem<ActionItem>(getCacheKey(), model); return RedirectToAction("ElSignature", new { signatureType = ElSignatureType.Record_Edit }); } ModelState.AddModelError("", "An error has occurred."); return View(model); }
public MergedItem(ActionItem actionItem) { Item = actionItem; Workflow = new ActionItemWorkflow((Guid)actionItem.InstanceId); }