public ActionResult Edit(ConfigurationCreateViewModel model) { try { var reffID = model.ConfigModel.REFF_ID; var config = configService.GetConfigDataByID(reffID); var data = new SYS_REFFERENCES(); data.REFF_ID = reffID; data.REFF_TYPE = config.REFF_TYPE; data.REFF_NAME = config.REFF_NAME; data.REFF_KEYS = config.REFF_KEYS; data.REFF_VALUE = model.ConfigModel.REFF_VALUE; //data.REFF_VALUE = model.ConfigValue; data.CREATED_BY = config.CREATED_BY; data.CREATED_DATE = config.CREATED_DATE; data.LASTMODIFIED_BY = CurrentUser.USER_ID; data.LASTMODIFIED_DATE = DateTime.Now; data.IS_ACTIVE = model.ConfigModel.IS_ACTIVE; configService.UpdateSysReff(data, (int)Enums.MenuList.Configuration, (int)Enums.ActionType.Modified, (int)CurrentUser.UserRole, CurrentUser.USER_ID); AddMessageInfo("Success Update Configuration", Enums.MessageInfoType.Success); } catch (Exception ex) { AddMessageInfo("Save Failed : " + ex.Message, Enums.MessageInfoType.Error); } return(RedirectToAction("Index")); }
/// <summary> Part of Changes Log Step which Mark All Available Changes </summary> /// <param name="old"></param> /// <param name="updated"></param> /// <returns></returns> private Dictionary <string, string[]> GetAllChanges(SYS_REFFERENCES old, SYS_REFFERENCES updated) { try { var changes = new Dictionary <string, string[]>(); var columns = new string[] { "REFF_NAME", "REFF_TYPE", "REFF_VALUE", "IS_ACTIVE" }; var oldProps = new Dictionary <string, object>(); var props = new Dictionary <string, object>(); foreach (var prop in updated.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance)) { props.Add(prop.Name, prop.GetValue(updated, null)); if (old != null) { oldProps.Add(prop.Name, prop.GetValue(old, null)); } else { oldProps.Add(prop.Name, null); } } foreach (var item in props) { var oldValue = (oldProps[item.Key] != null) ? oldProps[item.Key].ToString() : "N/A"; var newValue = (props[item.Key] != null) ? props[item.Key].ToString() : "N/A"; // updated value // var newValue = (item.Value != null) ? item.ToString() : "N/A"; // updated field and value if (!columns.Contains(item.Key)) { continue; } if (oldValue.Trim().ToUpper() != newValue.Trim().ToUpper()) { changes.Add(item.Key, new string[] { oldValue, newValue }); } } return(changes); } catch (Exception ex) { throw this.HandleException("Exception occured on Configuration Service. See Inner Exception property to see details", ex); } }
/// <summary> Part of Changes Log Step which Set All Changed Field into Table Changes Log </summary> /// <param name="context"></param> /// <param name="data"></param> /// <param name="changes"></param> /// <param name="formType"></param> /// <param name="actionType"></param> /// <param name="role"></param> /// <param name="actor"></param> /// <param name="comment"></param> private void LogsActivity(EMSDataModel context, SYS_REFFERENCES data, Dictionary <string, string[]> changes, int formType, int actionType, int role, string actor, string comment = null) { try { foreach (var map in changes) { refService.AddChangeLog(context, formType, data.REFF_ID.ToString(), map.Key, map.Value[0], map.Value[1], actor, DateTime.Now); } context.SaveChanges(); } catch (Exception ex) { throw this.HandleException("Exception occured on Configuration Service. See Inner Exception property to see details", ex); } }
/// <summary> Update Certain Field in Sys References also Create Changes Log </summary> /// <param name="data"></param> /// <param name="formType"></param> /// <param name="actionType"></param> /// <param name="role"></param> /// <param name="user"></param> /// <returns></returns> public SYS_REFFERENCES UpdateSysReff(SYS_REFFERENCES data, int formType, int actionType, int role, string user) { using (var context = new EMSDataModel()) { using (var transaction = context.Database.BeginTransaction()) { try { var old = context.SYS_REFFERENCES.Find(data.REFF_ID); Dictionary <string, string[]> changes = GetAllChanges(old, data); context.Entry(old).CurrentValues.SetValues(data); context.SaveChanges(); LogsActivity(context, data, changes, formType, actionType, role, user); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw this.HandleException("Exception occured on Configuration Service. See Inner Exception property to see details", ex); } } } return(data); }
/// <summary> Create New Entry of Configuration in Sys References also Create Changes Log </summary> /// <param name="data"></param> /// <param name="formType"></param> /// <returns></returns> public SYS_REFFERENCES CreateSysReff(SYS_REFFERENCES data, int formType, int actionType, int role, string user) { using (var context = new EMSDataModel()) { using (var transaction = context.Database.BeginTransaction()) { try { context.SYS_REFFERENCES.Add(data); context.SaveChanges(); var changes = GetAllChanges(null, data); LogsActivity(context, data, changes, formType, actionType, role, user); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw this.HandleException("Exception occured on Configuration Service. See Inner Exception property to see details", ex); } } } return(data); }
public ActionResult Create(ConfigurationCreateViewModel model) { try { if (!ModelState.IsValid) { AddMessageInfo("Data not complete. Please fill required field !", Enums.MessageInfoType.Error); return(RedirectToAction("Create")); } else { var data = new SYS_REFFERENCES(); if (model.ConfigText == "UPLOAD_FILE_LIMIT" || model.ConfigText == "APPROVAL_STATUS" || model.ConfigText == "HINT_COMPONENT" || model.ConfigText == "REGULATION_BRAND_REGISTRATION" || model.ConfigText == "REGULATION_EXCISE_CREDIT") { var config = configService.FindDataByType(model.ConfigText); if (model.ConfigText == "APPROVAL_STATUS" || model.ConfigText == "HINT_COMPONENT") { var tempConfig = configService.FindDataByName(model.ConfigName); data.REFF_ID = tempConfig.REFF_ID; data.REFF_TYPE = tempConfig.REFF_TYPE; data.REFF_NAME = tempConfig.REFF_NAME; data.REFF_KEYS = tempConfig.REFF_KEYS; } if (model.ConfigText == "UPLOAD_FILE_LIMIT" || model.ConfigText == "REGULATION_BRAND_REGISTRATION" || model.ConfigText == "REGULATION_EXCISE_CREDIT") { data.REFF_ID = config.REFF_ID; data.REFF_TYPE = config.REFF_TYPE; data.REFF_NAME = config.REFF_NAME; data.REFF_KEYS = config.REFF_KEYS; } data.REFF_VALUE = model.ConfigValue; data.IS_ACTIVE = model.IsActive; data.CREATED_BY = config.CREATED_BY; data.CREATED_DATE = config.CREATED_DATE; data.LASTMODIFIED_BY = CurrentUser.USER_ID; data.LASTMODIFIED_DATE = DateTime.Now; configService.UpdateSysReff(data, (int)Enums.MenuList.Configuration, (int)Enums.ActionType.Modified, (int)CurrentUser.UserRole, CurrentUser.USER_ID); AddMessageInfo("Save Configuration Succeed", Enums.MessageInfoType.Success); } else { data.REFF_TYPE = model.ConfigText; data.REFF_NAME = model.ConfigText; data.REFF_KEYS = model.ConfigText; data.REFF_VALUE = model.ConfigValue; data.CREATED_BY = CurrentUser.USER_ID; data.CREATED_DATE = DateTime.Now; data.LASTMODIFIED_BY = CurrentUser.USER_ID; data.LASTMODIFIED_DATE = DateTime.Now; data.IS_ACTIVE = model.IsActive; configService.CreateSysReff(data, (int)Enums.MenuList.Configuration, (int)Enums.ActionType.Created, (int)CurrentUser.UserRole, CurrentUser.USER_ID); AddMessageInfo("Save Configuration Succeed", Enums.MessageInfoType.Success); } } } catch (Exception ex) { AddMessageInfo("Save Failed : " + ex.Message, Enums.MessageInfoType.Error); } return(RedirectToAction("Index")); }