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);
 }
Exemplo n.º 7
0
 public MergedItem(ActionItem actionItem)
 {
     Item = actionItem;
     Workflow = new ActionItemWorkflow((Guid)actionItem.InstanceId);
 }