public List <ModuleEntity> GetMenuList(string roleId) { var data = new List <ModuleEntity>(); if (OperatorProvider.Provider.GetCurrent().IsSystem) { data = moduleApp.GetList(); } else { var moduledata = moduleApp.GetList(); var authorizedata = service.GetList(t => t.F_ObjectId == roleId && t.F_ItemType == 1).ToList(); foreach (var item in authorizedata) { ModuleEntity moduleEntity = moduledata.Find(t => t.F_Id == item.F_ItemId); if (moduleEntity != null) { data.Add(moduleEntity); } } } return(data.OrderBy(t => t.F_SortCode).ToList()); }
/// <summary> /// 删除模块信息 /// </summary> /// <param name="nodeIds">模块ID</param> /// <returns></returns> public bool Delete(string nodeIds) { try { ModuleEntity root = GetModuleByPKID(Convert.ToInt32(nodeIds.Split(',')[0].Replace("'", ""))); List <string> list = new List <string>(); list.Add($@"Delete from Module where PKID in({nodeIds})"); int result = SqlHelper.ExecuteNonQuery(SqlHelper.connStr, list); if (result > 0) { DecOrder(root.ParentID, root.Sort); return(true); } else { return(false); } } catch (Exception ex) { throw ex; } }
/// <summary> /// 批量删除 /// </summary> /// <param name="keyValues">菜单主键</param> /// <returns></returns> public bool DeleteBatch(List <string> keyValues, string UserId, string UserName) { if (keyValues.Count() > 0) { using (var db = _dbContext.GetIntance()) { var moduleEntity = new ModuleEntity(); moduleEntity.DeleteMark = 0; moduleEntity.ModifyDate = System.DateTime.Now; moduleEntity.ModifyUserId = UserId; moduleEntity.ModifyUserName = UserName; //逻辑删除 var counts = db.Updateable(moduleEntity).UpdateColumns(it => new { it.DeleteMark, it.ModifyUserName, it.ModifyUserId, it.ModifyDate }) .Where(it => keyValues.Contains(it.ModuleId)).ExecuteCommand(); result = counts > 0 ? true : false; } } else { result = false; } return(result); }
public bool ActionValidate(string roleId, string moduleId, string action) { var authorizeurldata = new List <AuthorizeActionModel>(); var cachedata = CacheFactory.Cache().GetCache <List <AuthorizeActionModel> >("authorizeurldata_" + roleId); if (cachedata == null) { var moduledata = _moduleApp.GetList(); var buttondata = _moduleButtonApp.GetList(); var authorizedata = _service.IQueryable(t => t.F_ObjectId == roleId).ToList(); foreach (var item in authorizedata) { if (item.F_ItemType == 1) { ModuleEntity moduleEntity = moduledata.Find(t => t.F_Id == item.F_ItemId); authorizeurldata.Add(new AuthorizeActionModel { F_Id = moduleEntity.F_Id, F_UrlAddress = moduleEntity.F_UrlAddress }); } else if (item.F_ItemType == 2) { ModuleButtonEntity moduleButtonEntity = buttondata.Find(t => t.F_Id == item.F_ItemId); authorizeurldata.Add(new AuthorizeActionModel { F_Id = moduleButtonEntity.F_ModuleId, F_UrlAddress = moduleButtonEntity.F_UrlAddress }); } } CacheFactory.Cache().WriteCache(authorizeurldata, "authorizeurldata_" + roleId, DateTime.Now.AddMinutes(5)); } else { authorizeurldata = cachedata; } authorizeurldata = authorizeurldata.FindAll(t => t.F_Id.Equals(moduleId)); return((from item in authorizeurldata where !string.IsNullOrEmpty(item.F_UrlAddress) let url = item.F_UrlAddress.Split('?') where item.F_Id == moduleId && url[0] == action select item).Any()); }
public ActionResult GetAuthorizeButtonColumnList(string url) { Dictionary <string, string> dicButton = new Dictionary <string, string>(); Dictionary <string, string> dicColumn = new Dictionary <string, string>(); ModuleEntity moduleEntity = moduleIBLL.GetModuleByUrl(url); if (moduleEntity != null) { List <ModuleButtonEntity> buttonList = moduleIBLL.GetButtonList(moduleEntity.F_ModuleId); foreach (var item in buttonList) { if (!dicButton.ContainsKey(item.F_EnCode)) { dicButton.Add(item.F_EnCode, item.F_FullName); } } List <ModuleColumnEntity> columnList = moduleIBLL.GetColumnList(moduleEntity.F_ModuleId); foreach (var item in columnList) { if (!dicColumn.ContainsKey(item.F_EnCode)) { dicColumn.Add(item.F_EnCode.ToLower(), item.F_FullName); } } } var jsonData = new { module = moduleEntity, btns = dicButton, cols = dicColumn }; return(this.Success(jsonData)); }
public Task <int> SubmitForm <TDto>(ModuleEntity moduleEntity, TDto dto) where TDto : class { var claimsIdentity = _httpContext.HttpContext.User.Identity as ClaimsIdentity; var claim = claimsIdentity?.FindFirst(t => t.Type.Equals(ClaimTypes.NameIdentifier)); if (!string.IsNullOrEmpty(moduleEntity.F_Id)) { moduleEntity.Modify(moduleEntity.F_Id); if (claim != null) { moduleEntity.F_LastModifyUserId = claim.Value; } return(_service.UpdateAsync(moduleEntity, dto)); } else { moduleEntity.Create(); if (claim != null) { moduleEntity.F_CreatorUserId = claim.Value; } return(_service.InsertAsync(moduleEntity)); } }
public async Task <ActionResult> SubmitForm(ModuleEntity entity, string keyValue) { try { await moduleApp.SubmitFormAsync(entity, keyValue); if (string.IsNullOrEmpty(keyValue)) { WirteOperationRecord("Module", "INSERT", "增加", "Info:" + entity.ToJson()); } else { WirteOperationRecord("Module", "UPDATE", "修改", "Info:" + entity.ToJson()); } } catch (Exception ex) { log.logType = "ERROR"; log.logLevel = "ERROR"; WirteOperationRecord("Module", "", "", "Info:" + ex.Message.ToString()); return(Error(ex.Message.ToString())); } return(Success("操作成功.")); }
/// <summary> /// 获取当前用户的菜单权限 /// </summary> /// <param name="roleId"></param> /// <returns></returns> public List <ModuleEntity> GetMenuList(string roleGuid) { var data = new List <ModuleEntity>(); var role = roleRepository.FindEntity(roleGuid); if (OperatorProvider.Provider.GetCurrent().IsSystem) { data = moduleApp.FindList(m => m.isEnabled == true).ToList(); } else { var moduleData = moduleApp.FindList(m => m.isEnabled == true).ToList(); var authData = this.FindList(r => r.authRoleGuid == role.roleGuid && r.authModuleType == 1).ToList(); foreach (var item in authData) { ModuleEntity moduleEntity = moduleData.Find(m => m.moduleGuid == item.authModuleGuid); if (moduleEntity != null) { data.Add(moduleEntity); } } } return(data.OrderBy(m => m.sortCode).ToList());; }
public ActionResult SubmitForm(ModuleEntity moduleEntity, string keyValue) { moduleApp.SubmitForm(moduleEntity, keyValue); return(Success("操作成功。")); }
/// <summary> /// 保存表单与模块关联的实体数据 /// </summary> /// <param name="keyValue"></param> /// <param name="entity"></param> /// <param name="moduleEntity"></param> public void SaveRelationEntity(string keyValue, FormModuleRelationEntity entity, ModuleEntity moduleEntity = null) { try { FormModuleEntity formModuleEntity = server.GetEntity(entity.F_FrmId); Form_ModuleContentEntity formModuleContentEntity = new Form_ModuleContentEntity() { F_FrmContent = formModuleEntity.F_FrmContent, F_FrmId = formModuleEntity.F_FrmId, F_FrmVersion = formModuleEntity.F_Version }; if (entity.F_FrmKind == 0)//自定义表单 { serverRelation.SaveEntity(keyValue, entity, moduleEntity, formModuleContentEntity); } else { serverRelation.SaveEntity(keyValue, entity, formModuleContentEntity); } } catch (Exception) { throw; } }
/// <summary> /// 修改一条记录 /// </summary> /// <param name="model">实体对象</param> /// <returns></returns> public bool Update(ModuleEntity model) { //获取排序,前台不保留排序 model.Sort = GetModuleOrder(model.PKID); return(new DAL.Module().Update(model)); }
public async Task <bool> InitData() { var db = this._dbContextProvider.GetDbContext(); //用户 UserEntity userEntity = new UserEntity { Id = Guid.NewGuid().ToString(), LoginName = "superAdmin", LoginPwd = MD5Helper.MD5Encrypt32("123qwe"), RealName = "超级管理员", Status = 0 }; await db.UserEntitys.AddAsync(userEntity); //角色 RoleEntity roleEntity = new RoleEntity { Id = Guid.NewGuid().ToString(), Name = "SuperAdmin", Description = "超级管理员", IsEnabled = true }; await db.RoleEntitys.AddAsync(roleEntity); //用户角色关系 User2RoleEntity user2RoleEntity = new User2RoleEntity { Id = Guid.NewGuid().ToString(), UserId = userEntity.Id, RoleId = roleEntity.Id }; await db.User2RoleEntitys.AddAsync(user2RoleEntity); //接口----API的地址接口 ModuleEntity moduleEntity = new ModuleEntity { Id = Guid.NewGuid().ToString(), Name = "测试授权接口", LinkUrl = "api/sys/user/GetAuthorize", IsEnabled = true, IsMenu = false, OrderSort = 0 }; await db.ModuleEntitys.AddAsync(moduleEntity); //模块---菜单,按钮 //角色--接口--模块 Role2Module2PermissionEntity role2Module2PermissionEntity = new Role2Module2PermissionEntity { Id = Guid.NewGuid().ToString(), RoleId = roleEntity.Id, ModuleId = moduleEntity.Id }; await db.Role2Module2PermissionEntitys.AddAsync(role2Module2PermissionEntity); await db.SaveChangesAsync(); return(await Task.FromResult(true)); }
/// <summary> /// Abstract method to add Module /// /summary> /// <param name="Module"></param> /// <returns></returns> public abstract int AddModule(ModuleEntity entity_Module);
/// <summary> /// Default ctor /// </summary> internal JunctionRefSet(ModuleEntity owner) : base(owner) { }
public ActionResult GZTZ() { var module = new ModuleEntity(); //int month = 1; //if (DateTime.Now.Month < 4) month = 1; //else if (DateTime.Now.Month < 7) month = 4; //else if (DateTime.Now.Month < 10) month = 7; //else if (DateTime.Now.Month <= 12) month = 10; //DateTime sdt = new DateTime(DateTime.Now.Year, month, 1); //var user = OperatorProvider.Provider.Current(); //if (user.DeptId == "0") user.DeptCode = "0"; //var total = 0; //var list = workmeetingbll.GetData(10000, 1, out total, new Dictionary<string, string>() { { "departmentid", user.DeptId }, { "meetingstarttime", sdt.ToString("yyyy-MM-dd") } }); //ViewData["Count1"] = total; ////var list1 = workmeetingbll.GetBaseDataNew("", 10000, 1, out total).Where(x => x.CreateDate > sdt); //ViewData["Count2"] = service.GetAllDanger(user.DeptCode, sdt.ToString("yyyy-MM-dd")); //ViewData["Count3"] = service.GetAllActivity(user.DeptCode, sdt.ToString("yyyy-MM-dd")); //ViewData["Count4"] = service.GetAllEducation(user.DeptCode, sdt.ToString("yyyy-MM-dd")); //ViewData["Count5"] = service.GetAllLllegal(user.DeptId, sdt.ToString("yyyy-MM-dd")); //ViewData["Count6"] = service.GetAllEmergencyWork(user.DeptName, sdt.ToString("yyyy-MM-dd")); //ViewData["Count7"] = service.GetAllToolborrow(user.DeptCode, sdt.ToString("yyyy-MM-dd")); //ViewData["Count8"] = service.GetAllGlassStock(user.DeptCode, sdt.ToString("yyyy-MM-dd")); var user = OperatorProvider.Provider.Current(); ViewBag.deptId = user.DeptId; ViewBag.deptName = user.DeptName; ModuleBLL moduleBLL = new ModuleBLL(); var list = moduleBLL.GetList().Where(x => x.UrlAddress != "" && x.UrlAddress != null); module = list.Where(x => x.UrlAddress.Contains("/Works/WorkMeeting/Index2")).FirstOrDefault();//班会 ViewBag.meetid = module.ModuleId; ViewBag.meeturl = module.UrlAddress; ViewBag.meettext = module.FullName; module = list.Where(x => x.UrlAddress.Contains("/Works/Danger/Index2")).FirstOrDefault();//KYT ViewBag.kytid = module.ModuleId; ViewBag.kyturl = module.UrlAddress; ViewBag.kyttext = module.FullName; module = list.Where(x => x.UrlAddress.Contains("/Works/Activity/Index3")).FirstOrDefault();//KYT ViewBag.actid = module.ModuleId; ViewBag.acturl = module.UrlAddress; ViewBag.acttext = module.FullName; module = list.Where(x => x.UrlAddress.Contains("/Works/Education/Index2")).FirstOrDefault();//教育培训 ViewBag.eduid = module.ModuleId; ViewBag.eduurl = module.UrlAddress; ViewBag.edutext = module.FullName; module = list.Where(x => x.UrlAddress.Contains("/Works/Lllegal/Index2")).FirstOrDefault();//教育培训 ViewBag.legalid = module.ModuleId; ViewBag.legalurl = module.UrlAddress; ViewBag.legaltext = module.FullName; module = list.Where(x => x.UrlAddress.Contains("/Works/emergency/Index1")).FirstOrDefault();//教育培训 ViewBag.emid = module.ModuleId; ViewBag.emurl = module.UrlAddress; ViewBag.emtext = module.FullName; module = list.Where(x => x.UrlAddress.Contains("/Works/Drug/Index")).FirstOrDefault();//教育培训 ViewBag.glassid = module.ModuleId; ViewBag.glassurl = module.UrlAddress; ViewBag.glasstext = module.FullName; ViewBag.cpname = Config.GetValue("CustomerModel"); return(View()); }
public async Task LoadForm() { //initialize client drop down try { using (var uow = UnitOfWorkFactory.CreateUnitOfWork()) { ModuleStatus?status = null; if (dataObj != null) { dataObj = uow.ModuleRepository.GetById(dataObj.Id, "Field.Farm.Client"); status = dataObj.ModuleStatus; } clientSelector1.Initialize(errorProvider, true, false, (dataObj != null) ? dataObj.Field.Farm.ClientId : ""); farmSelector1.FormErrorProvider = errorProvider; fieldSelector1.FormErrorProvider = errorProvider; BindingHelper.BindModuleStatusCombo(tbStatus, "-- Select One --", status); BindingHelper.BindDriverComboByName(cboDriver, "-- Select One --", (dataObj != null) ? dataObj.Driver : string.Empty); BindingHelper.BindTruckComboByName(cboTruck, "-- Select One --", (dataObj != null) ? dataObj.TruckID : string.Empty); if (dataObj != null) { tbSerialNumber.Text = dataObj.Name; if (!string.IsNullOrEmpty(dataObj.LoadNumber)) { lblLoad.Text = dataObj.LoadNumber; } else { lblLoad.Text = "Not assigned"; } tbGinTicketLoadNumber.Text = dataObj.GinTagLoadNumber; tbLatitude.Text = dataObj.Latitude.ToString(); tbLongitude.Text = dataObj.Longitude.ToString(); lblImportedLoad.Text = dataObj.ImportedLoadNumber; lblDiameter.Text = dataObj.HIDDiameterInches.NullableToStringHighPrecision(); lblFieldArea.Text = dataObj.HIDFieldAreaAcres.NullableToStringHighPrecision(); lblIncrementalArea.Text = dataObj.HIDIncrementalAreaAcres.NullableToStringHighPrecision(); lblModuleWeight.Text = dataObj.HIDModuleWeightLBS.NullableToStringHighPrecision(); lblMoisturePercent.Text = dataObj.HIDMoisture.NullableToString(); lblOperator.Text = dataObj.HIDOperator; lblProducerID.Text = dataObj.HIDProducerID; lblSeasonTotal.Text = dataObj.HIDSeasonTotal.NullableToString(); lblVariety.Text = dataObj.HIDVariety; lblHIDFieldTotal.Text = dataObj.HIDFieldTotal.NullableToString(); lblGinID.Text = dataObj.HIDGinID; lblMachinePIN.Text = dataObj.HIDMachinePIN; lblHIDDropLat.Text = dataObj.HIDDropLat.ToString(); lblHIDDropLong.Text = dataObj.HIDDropLong.ToString(); lblHIDLat.Text = dataObj.HIDLat.ToString(); lblHIDLong.Text = dataObj.HIDLong.ToString(); //lblHIDWrapLat.Text = dataObj.HIDWrapLat.ToString(); //lblHIDWrapLong.Text = dataObj.HIDWrapLong.ToString(); lblHIDTimestamp.Text = dataObj.HIDTimestamp.HasValue ? dataObj.HIDTimestamp.Value.ToLocalTime().ToString("MM/dd/yyyy hh:mm:ss tt") : ""; tbNotes.Text = (dataObj.Notes ?? ""); tbModuleID.Text = (dataObj.ModuleId ?? ""); //tbStatus } else { tbSerialNumber.Text = string.Empty; lblLoad.Text = "Not assigned"; tbLatitude.Text = string.Empty; tbLongitude.Text = string.Empty; lblImportedLoad.Text = string.Empty; lblDiameter.Text = string.Empty; lblFieldArea.Text = string.Empty; lblIncrementalArea.Text = string.Empty; lblModuleWeight.Text = string.Empty; lblMoisturePercent.Text = string.Empty; lblOperator.Text = string.Empty; lblProducerID.Text = string.Empty; lblSeasonTotal.Text = string.Empty; lblVariety.Text = string.Empty; tbModuleID.Text = "--"; tbNotes.Text = ""; } clearErrors(); } } catch (Exception exc) { Logging.Logger.Log(exc); throw new Exception("Error occurred loading module form.", exc); } }
public void Delete(ModuleEntity entity) { service.Delete(entity); }
/// <summary> /// Abstract method to update Module /// </summary> public abstract int EditModule(ModuleEntity entity_Module);
public bool ActionValidate(string roleId, string moduleId, string action) { var authorizeurldata = new List <AuthorizeActionModel>(); //var cachedata = CacheFactory.cacheFactory.Cache().GetCache<List<AuthorizeActionModel>>("authorizeurldata_" + roleId); var cachedata = new CacheHelp().GetAuthorizeurlDatas(roleId); if (cachedata == null || cachedata.Count <= 0) { var moduledata = moduleApp.GetList(); var buttondata = moduleButtonApp.GetList(); var authorizedata = service.IQueryable(t => t.ObjectId == roleId).ToList(); foreach (var item in authorizedata) { if (item.ItemType == 1) { ModuleEntity moduleEntity = moduledata.Find(t => t.Id == item.ItemId); if (moduleEntity != null) { authorizeurldata.Add(new AuthorizeActionModel { Id = moduleEntity.Id, UrlAddress = moduleEntity.UrlAddress }); } } else if (item.ItemType == 2) { ModuleButtonEntity moduleButtonEntity = buttondata.Find(t => t.Id == item.ItemId); if (moduleButtonEntity != null) { authorizeurldata.Add(new AuthorizeActionModel { Id = moduleButtonEntity.ModuleId, UrlAddress = moduleButtonEntity.UrlAddress }); } } } //CacheFactory.cacheFactory.Cache().WriteCache(authorizeurldata, "authorizeurldata_" + roleId, DateTime.Now.AddMinutes(5)); new CacheHelp().WriteAuthorizeurlDatas(authorizeurldata, roleId); } else { authorizeurldata = cachedata; } authorizeurldata = authorizeurldata.FindAll(t => t.Id.Equals(moduleId)); foreach (var item in authorizeurldata) { if (!string.IsNullOrEmpty(item.UrlAddress)) { string[] url = item.UrlAddress.Split('?'); if (item.Id == moduleId && url[0] == action) { return(true); } else { string[] urls = item.UrlAddress.Split('|'); if (item.Id == moduleId && urls.Contains(action)) { return(true); } } } } return(false); }
public void SubmitForm(ModuleEntity entity, string keyValue) { throw new NotImplementedException(); }
public ActionResult getOneModule(int IdModule) { ModuleEntity modulo = proxyModule.GetModule(IdModule); return(Json(modulo, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 保存实体数据(关联功能模块菜单) /// </summary> /// <param name="keyValue">主键Id</param> /// <param name="entity">表单关联实体</param> /// <param name="moduleEntity">系统功能模板实体</param> /// <param name="formModuleContentEntity">表单内容数据</param> /// <returns></returns> public void SaveEntity(string keyValue, FormModuleRelationEntity entity, ModuleEntity moduleEntity, Form_ModuleContentEntity formModuleContentEntity) { IRepository db = this.BaseRepository().BeginTrans(); try { var expression = LinqExtensions.True <Form_ModuleContentEntity>(); expression = expression.And(t => t.F_FrmId == entity.F_FrmId && t.F_FrmVersion == entity.F_FrmVersion); Form_ModuleContentEntity form_ModuleContentEntity = db.FindEntity <Form_ModuleContentEntity>(expression); if (form_ModuleContentEntity == null) { formModuleContentEntity.Create(); db.Insert(formModuleContentEntity); entity.F_ModuleContentId = formModuleContentEntity.F_Id; } else { entity.F_ModuleContentId = form_ModuleContentEntity.F_Id; } if (string.IsNullOrEmpty(keyValue)) { entity.Create(); moduleEntity.Create(); db.Insert(moduleEntity); entity.F_ObjectId = moduleEntity.F_ModuleId; entity.F_ObjectName = moduleEntity.F_FullName; moduleEntity.F_UrlAddress = moduleEntity.F_UrlAddress + "?Id=" + entity.F_Id; db.Insert(entity); } else { entity.Modify(keyValue); moduleEntity.Modify(entity.F_ObjectId); db.Update(moduleEntity); entity.F_ObjectName = moduleEntity.F_FullName; moduleEntity.F_UrlAddress = moduleEntity.F_UrlAddress + "?Id=" + entity.F_Id; db.Update(entity); } db.Delete <ModuleButtonEntity>(t => t.F_ModuleId.Equals(moduleEntity.F_ModuleId)); ModuleButtonEntity moduleButtonrReplace = new ModuleButtonEntity(); moduleButtonrReplace.F_ModuleId = moduleEntity.F_ModuleId; moduleButtonrReplace.F_EnCode = "lr-replace"; moduleButtonrReplace.F_FullName = "刷新"; moduleButtonrReplace.F_SortCode = 0; moduleButtonrReplace.F_ParentId = "0"; moduleButtonrReplace.Create(); db.Insert(moduleButtonrReplace); ModuleButtonEntity moduleButtonrAdd = new ModuleButtonEntity(); moduleButtonrAdd.F_ModuleId = moduleEntity.F_ModuleId; moduleButtonrAdd.F_EnCode = "lr-add"; moduleButtonrAdd.F_FullName = "新增"; moduleButtonrAdd.F_SortCode = 1; moduleButtonrAdd.F_ActionAddress = "/FormManage/FormModule/CustmerFormForm"; moduleButtonrAdd.F_ParentId = "0"; moduleButtonrAdd.Create(); db.Insert(moduleButtonrAdd); ModuleButtonEntity moduleButtonrEdit = new ModuleButtonEntity(); moduleButtonrEdit.F_ModuleId = moduleEntity.F_ModuleId; moduleButtonrEdit.F_EnCode = "lr-edit"; moduleButtonrEdit.F_FullName = "编辑"; moduleButtonrEdit.F_SortCode = 2; moduleButtonrEdit.F_ActionAddress = "/FormManage/FormModule/CustmerFormForm"; moduleButtonrEdit.F_ParentId = "0"; moduleButtonrEdit.Create(); db.Insert(moduleButtonrEdit); ModuleButtonEntity moduleButtonrDelete = new ModuleButtonEntity(); moduleButtonrDelete.F_ModuleId = moduleEntity.F_ModuleId; moduleButtonrDelete.F_EnCode = "lr-delete"; moduleButtonrDelete.F_FullName = "删除"; moduleButtonrDelete.F_SortCode = 3; moduleButtonrDelete.F_ActionAddress = "/FormManage/FormModule/CustmerFormRemove"; moduleButtonrDelete.F_ParentId = "0"; moduleButtonrDelete.Create(); db.Insert(moduleButtonrDelete); db.Commit(); } catch { db.Rollback(); throw; } }
public ActionResult SaveForm(string keyValue, ModuleEntity moduleEntity, string moduleButtonListJson, string moduleColumnListJson) { moduleBLL.SaveForm(keyValue, moduleEntity, moduleButtonListJson, moduleColumnListJson); return(Success("保存成功。")); }
private static void createPBIData() { FieldEntity field = null; ModuleEntity module = null; using (var uow = UnitOfWorkFactory.CreateUnitOfWork()) { #region Create Modules and Gin Loads var client = new ClientEntity(); client.Name = "PBI TEST CLIENT"; client.Farms = new List <FarmEntity>(); var farm = new FarmEntity(); farm.Id = Guid.NewGuid().ToString(); farm.Name = "PBI TEST FARM"; farm.Fields = new List <FieldEntity>(); field = new FieldEntity(); field.Id = Guid.NewGuid().ToString(); field.Name = "PBI TEST FIELD"; field.Modules = new List <ModuleEntity>(); field.Latitude = 0.00; field.Longitude = 0.00; field.Created = DateTime.UtcNow; farm.Fields.Add(field); client.Farms.Add(farm); uow.ClientRepository.Save(client); uow.SaveChanges(); } //add modules from CSV file string fileName = "C:\\Users\\mbohn\\Documents\\PBI_TestData.csv"; string[] moduleContents = System.IO.File.ReadAllLines(fileName); List <GinLoadEntity> ginLoadEntities = new List <GinLoadEntity>(); int bridgeLoadNumber = 0; for (int moduleCount = 1; moduleCount < moduleContents.Length; moduleCount++) { var fields = moduleContents[moduleCount].Split(','); using (var uow = UnitOfWorkFactory.CreateUnitOfWork()) { module = new ModuleEntity(); module.Id = Guid.NewGuid().ToString(); module.Name = fields[0]; module.FieldId = field.Id; module.TruckID = ""; module.Driver = ""; module.LoadNumber = fields[3]; module.HIDDiameter = Decimal.Parse(fields[1]) * 2.54M; module.HIDModuleWeight = Decimal.Parse(fields[2]) * 0.453592M; module.Latitude = 0.00; module.Longitude = 0.00; module.ModuleStatus = ModuleStatus.IN_FIELD; module.Created = DateTime.UtcNow; module.ModuleHistory = new List <ModuleHistoryEntity>(); var historyItem = new ModuleHistoryEntity { Id = Guid.NewGuid().ToString(), Created = DateTime.UtcNow, Driver = module.Driver, TruckID = module.TruckID, Latitude = module.Latitude, Longitude = module.Longitude, ModuleEventType = ModuleEventType.IMPORTED_FROM_FILE }; module.FieldId = field.Id; module.ModuleHistory.Add(historyItem); uow.ModuleRepository.Add(module); uow.SaveChanges(); if (!ginLoadEntities.Any(g => g.GinTagLoadNumber == module.LoadNumber)) { //create gin load var affectedGinLoad = new GinLoadEntity(); ginLoadEntities.Add(affectedGinLoad); affectedGinLoad.Created = DateTime.UtcNow; affectedGinLoad.SyncedToCloud = false; affectedGinLoad.Name = module.LoadNumber; affectedGinLoad.GinTagLoadNumber = module.LoadNumber; affectedGinLoad.ScaleBridgeLoadNumber = bridgeLoadNumber++; affectedGinLoad.NetWeight = Convert.ToDecimal(fields[4]); affectedGinLoad.GrossWeight = affectedGinLoad.NetWeight + 8200; affectedGinLoad.SplitWeight1 = affectedGinLoad.NetWeight; affectedGinLoad.SplitWeight2 = 0.00M; affectedGinLoad.ScaleBridgeId = "BRIDGE1"; affectedGinLoad.ScaleBridgeLoadNumber = ginLoadEntities.Count(); affectedGinLoad.Source = InputSource.GIN; affectedGinLoad.SyncedToCloud = false; affectedGinLoad.TruckID = "TRUCK1"; affectedGinLoad.YardLocation = "SOMEWHERE"; affectedGinLoad.SubmittedBy = "TEST HARNESS"; //add client/farm/field information affectedGinLoad.FieldId = field.Id; uow.GinLoadRepository.Save(affectedGinLoad); uow.SaveChanges(); module.GinTagLoadNumber = affectedGinLoad.GinTagLoadNumber; module.GinLoadId = affectedGinLoad.Id; } else { var load = ginLoadEntities.Single(g => g.GinTagLoadNumber == module.LoadNumber); module.GinTagLoadNumber = load.GinTagLoadNumber; module.GinLoadId = load.Id; } //create feeder scan of module module.ModuleStatus = ModuleStatus.ON_FEEDER; module.LastBridgeId = "BRIDGE2"; // uow.ModuleRepository.Save(module); //uow.SaveChanges(); Console.WriteLine("CREATING FEEDER SCAN FOR MODULE : " + module.Name); ModuleHistoryEntity feederHistoryItem = new ModuleHistoryEntity(); feederHistoryItem.Id = Guid.NewGuid().ToString(); feederHistoryItem.Created = DateTime.Parse(fields[5] + " " + fields[6]).ToUniversalTime(); feederHistoryItem.Created = feederHistoryItem.Created.AddSeconds(int.Parse(fields[7])); feederHistoryItem.Driver = ""; feederHistoryItem.TruckID = ""; feederHistoryItem.BridgeId = "BRIDGE2"; feederHistoryItem.ModuleId = module.Id; feederHistoryItem.Latitude = module.Latitude; feederHistoryItem.Longitude = module.Longitude; feederHistoryItem.GinTagLoadNumber = module.GinTagLoadNumber; if (!string.IsNullOrEmpty(module.BridgeLoadNumber)) { feederHistoryItem.BridgeLoadNumber = bridgeLoadNumber; } else { feederHistoryItem.BridgeLoadNumber = null; } module.ModuleHistory.Add(feederHistoryItem); feederHistoryItem.ModuleStatus = ModuleStatus.ON_FEEDER; feederHistoryItem.ModuleStatus = module.ModuleStatus; feederHistoryItem.ModuleEventType = ModuleEventType.BRIDGE_SCAN; module.SyncedToCloud = false; uow.ModuleRepository.Save(module); uow.SaveChanges(); } } #endregion #region Create PBIs using (var uow = UnitOfWorkFactory.CreateUnitOfWork()) { string pbiFileName = "C:\\Users\\mbohn\\Documents\\PBI_Test_Bales.csv"; string[] pbiLines = System.IO.File.ReadAllLines(pbiFileName); for (int lineCount = 1; lineCount < pbiLines.Length; lineCount++) { string line = pbiLines[lineCount]; var pbiFields = line.Split(','); var affectedBale = new BaleEntity(); affectedBale.Id = Guid.NewGuid().ToString(); affectedBale.Name = pbiFields[0]; affectedBale.PbiNumber = pbiFields[0]; affectedBale.Created = DateTime.Parse(pbiFields[1] + " " + pbiFields[2]).ToUniversalTime(); affectedBale.Created = affectedBale.Created.AddMilliseconds(lineCount); affectedBale.SyncedToCloud = false; affectedBale.NetWeight = decimal.Parse(pbiFields[3]); affectedBale.WeightFromScale = affectedBale.NetWeight + 3.0M; affectedBale.TareWeight = 3.0M; affectedBale.ScanNumber = lineCount; affectedBale.SyncedToCloud = false; affectedBale.NetWeight = decimal.Parse(pbiFields[3]); Console.WriteLine("CREATING PBI: " + affectedBale.PbiNumber + " " + affectedBale.Created.ToString("MM/dd/yyyy HH:mm:ss")); uow.BalesRepository.Add(affectedBale); } uow.SaveChanges(); } #endregion }
private void btnRun_Click(object sender, EventArgs e) { decimal turnOutRatio = 0.00M; decimal overragePercent = 0.00M; if (string.IsNullOrWhiteSpace(txtTurnOutMultiplier.Text) || !decimal.TryParse(txtTurnOutMultiplier.Text, out turnOutRatio) || turnOutRatio < 0.00M || turnOutRatio > 1.00M) { MessageBox.Show("Please enter a valid turn out as a decimal between 0 and 1."); return; } if (string.IsNullOrWhiteSpace(txtOverrageThreshold.Text) || !decimal.TryParse(txtOverrageThreshold.Text, out overragePercent) || overragePercent < 0.00M || overragePercent > 100.00M) { MessageBox.Show("Please enter a valid overrage percentage as a decimal between 0 and 100."); return; } List <ModuleEntity> modules = new List <ModuleEntity>(); List <BaleEntity> bales = new List <BaleEntity>(); int startModuleIndex = int.MaxValue; int endModuleIndex = -1; int startBaleIndex = int.MaxValue; //find index of first and last selected module rows foreach (DataGridViewRow row in gridViewModules.SelectedRows) { if (row.Index < startModuleIndex) { startModuleIndex = row.Index; } if (row.Index > endModuleIndex) { endModuleIndex = row.Index; } } //get list of modules we are going to accumulate bale weights for for (int i = startModuleIndex; i <= endModuleIndex; i++) { ModuleEntity m = (ModuleEntity)gridViewModules.Rows[i].DataBoundItem; m.Bales.Clear(); // need to clear bales because we will be re-assigning modules.Add(m); } //get index of first bale to use as starting point for accumulation foreach (DataGridViewRow row in gridViewPBIScans.SelectedRows) { if (row.Index < startBaleIndex) { startBaleIndex = row.Index; } } var firstModule = modules.First(); var lastModule = modules.Last(); //get list of bales we are working with for (var i = startBaleIndex; i < gridViewPBIScans.Rows.Count; i++) { BaleEntity b = (BaleEntity)gridViewPBIScans.Rows[i].DataBoundItem; bales.Add(b); } var firstBale = bales.First(); if (MessageBox.Show("Accumulation will start with module " + firstModule.Name + " and end with module " + lastModule.Name + ". Lint weight accumulation will begin with bale " + firstBale.PbiNumber + " using a turnout ratio of " + turnOutRatio.ToString() + ". Would you like to continue? Any previous mappings for this data set will be overwritten.", "Continue?", MessageBoxButtons.YesNo) == DialogResult.Yes) { BusyMessage.Show("Step 1 - Calculating estimated load and module lint turn out.", this.FindForm()); Task.Run(() => { try { using (IUnitOfWork uow = UnitOfWorkFactory.CreateUnitOfWork()) { uow.ModuleRepository.DisableChangeTracking(); int moduleCount = 1; foreach (var m in modules) { m.GinLoad.LintWeight = m.GinLoad.NetWeight * turnOutRatio; if (m.HIDModuleWeightLBS.HasValue) { m.NetSeedCottonWeight = m.HIDModuleWeightLBS.Value; } else if (m.DiameterApproximatedWeight.HasValue) { m.NetSeedCottonWeight = m.DiameterApproximatedWeight.Value; } else { m.NetSeedCottonWeight = m.LoadAvgModuleWeight.Value; } m.LintWeight = m.NetSeedCottonWeight * turnOutRatio; uow.GinLoadRepository.QuickUpdate(m.GinLoad, false); uow.ModuleRepository.QuickUpdate(m, false); if (moduleCount % 25 == 0) { BusyMessage.UpdateMessage("Step 1 - Calculating lint turn out for module " + moduleCount.ToString() + " of " + modules.Count().ToString()); } moduleCount++; } BusyMessage.UpdateMessage("Step 1 - Saving lint weight estimates."); uow.SaveChanges(); } BusyMessage.UpdateMessage("Step 2 - Accumulating bale lint weights"); using (IUnitOfWork uow = UnitOfWorkFactory.CreateUnitOfWork()) { uow.ModuleRepository.DisableChangeTracking(); uow.BalesRepository.DisableChangeTracking(); decimal overrage = 0.00M; decimal carryOver = 0.00M; int currentBaleIndex = 0; decimal accumulatedLintWeight = 0.00M; bool startNewAccumulation = true; for (int i = 0; i < modules.Count(); i++) { if (i % 25 == 0) { BusyMessage.UpdateMessage("Step 2 - Accumulating for module " + (i + 1).ToString() + " of " + modules.Count().ToString()); } var m = modules[i]; startNewAccumulation = false; while (!startNewAccumulation && currentBaleIndex < bales.Count()) { var b = bales[currentBaleIndex]; Logging.Logger.Log("INFO", "Accumulating weight for bale: " + b.PbiNumber); b.OverrageThreshold = overragePercent; b.LintTurnout = turnOutRatio; if (accumulatedLintWeight + bales[currentBaleIndex].NetWeight + carryOver <= m.LintWeight) { Logging.Logger.Log("INFO", "Bale weight under module weight"); //map bale to current module/gin load accumulatedLintWeight += b.NetWeight + carryOver; b.ModuleId = m.Id; b.Module = null; b.ModuleSerialNumber = m.Name; b.GinLoadId = m.GinLoadId; b.GinTicketLoadNumber = m.GinLoad.GinTagLoadNumber; b.AccumWeight = accumulatedLintWeight; b.OverrageAdjustment = carryOver; b.LintTurnout = turnOutRatio; carryOver = 0.00M; uow.BalesRepository.QuickUpdate(b, true); } else { startNewAccumulation = true; overrage = accumulatedLintWeight + b.NetWeight - m.LintWeight.Value; accumulatedLintWeight += b.NetWeight + carryOver; //if > overrage % of weight belongs to next module map to next and subtract off portion belonging to current if ((overrage / b.NetWeight) > (1.00M - (overragePercent / 100.00M))) { Logging.Logger.Log("INFO", "Bale will be assigned to next module"); int nextModuleIndex = i + 1; if (nextModuleIndex < modules.Count()) { Logging.Logger.Log("INFO", "Bale ModuleID: " + b.ModuleId); b.ModuleId = modules[nextModuleIndex].Id; b.Module = null; b.ModuleSerialNumber = modules[nextModuleIndex].Name; b.GinLoadId = modules[nextModuleIndex].GinLoadId; b.GinTicketLoadNumber = modules[nextModuleIndex].GinLoad.GinTagLoadNumber; //adjust accumulation for next module by subtracting off weight from bale //applied to current module carryOver = 0.00M - (b.NetWeight - overrage); accumulatedLintWeight = b.NetWeight + carryOver; b.AccumWeight = accumulatedLintWeight; b.OverrageAdjustment = carryOver; uow.BalesRepository.QuickUpdate(b, true); carryOver = 0; } } else //bale belongs to current module { Logging.Logger.Log("INFO", "Bale assigned to current module"); b.ModuleId = m.Id; b.Module = null; b.ModuleSerialNumber = m.Name; b.GinLoadId = m.GinLoadId; b.GinTicketLoadNumber = m.GinLoad.GinTagLoadNumber; b.AccumWeight = accumulatedLintWeight; b.OverrageAdjustment = carryOver; uow.BalesRepository.QuickUpdate(b, true); carryOver = overrage; accumulatedLintWeight = 0.00M; } } if (b.Module != null && b.ModuleId != b.Module.Id) { Logging.Logger.Log("INFO", "MISMATCH IDS"); } currentBaleIndex++; } if (i % 25 == 0) //save every 25 modules { uow.SaveChanges(); } } uow.SaveChanges(); } BusyMessage.Close(); } catch (Exception exc) { BusyMessage.Close(); this.Invoke((MethodInvoker) delegate { MessageBox.Show("An exception occurred: " + exc.Message); }); Logging.Logger.Log(exc); } }); } }
static void MainTask(string[] args) { string dir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); dir = dir.TrimEnd('\\') + "\\" + FolderConstants.ROOT_APP_DATA_FOLDER; if (!System.IO.Directory.Exists(dir)) { System.IO.Directory.CreateDirectory(dir); } CottonDBMS.Logging.Logger.SetLogPath(Environment.CurrentDirectory); AppDomain.CurrentDomain.SetData("DataDirectory", dir.TrimEnd('\\')); InitializeDataSources(); Console.WriteLine("Would you like to generate sample data for PBI algorithm? (Y/N)"); string response = Console.ReadLine(); if (response.ToUpper() == "Y") { createPBIData(); Console.WriteLine("PBI Data generated. Press enter to exit."); Console.ReadLine(); return; } string clientStartNumber = ""; Console.WriteLine("Enter client start number: "); clientStartNumber = Console.ReadLine(); int clientStartNum = 0; int.TryParse(clientStartNumber, out clientStartNum); Console.WriteLine("Enter number of clients to generate: "); string numClientsStr = Console.ReadLine(); Console.WriteLine("Enter number of farms per client: "); string numFarmsPerClientStr = Console.ReadLine(); Console.WriteLine("Enter number of fields per client: "); string numFieldsPerFarmStr = Console.ReadLine(); Console.WriteLine("Enter number of modules per field: "); string numModulesPerFieldStr = Console.ReadLine(); //Console.WriteLine("Enter number of modules per load: "); //string numModulesPerLoad = Console.ReadLine(); int numClients = 1; int numFarmsPerClient = 1; int numFieldsPerFarm = 1; int numModulesPerField = 1; //int numModulesPerLoad = 4; double clientFieldLat = fieldStartLat + (rand.NextDouble() * 1); double clientFieldLong = fieldStartLong + (rand.NextDouble() * 1); List <ClientEntity> clientsToAdd = new List <ClientEntity>(); List <ModuleEntity> modulesToAdd = new List <ModuleEntity>(); int.TryParse(numClientsStr, out numClients); int.TryParse(numFarmsPerClientStr, out numFarmsPerClient); int.TryParse(numFieldsPerFarmStr, out numFieldsPerFarm); int.TryParse(numModulesPerFieldStr, out numModulesPerField); string[] drivers = { "John Doe", "Jerry Jones", "E. Smith" }; string[] trucks = { "Truck 1", "Truck 2", "Truck 3", "Truck 4" }; int totalModules = 1; int loadNumber = 1; for (int clientIndex = 0; clientIndex < numClients; clientIndex++) { var client = new ClientEntity(); client.Name = string.Format("Client {0}", (clientIndex + clientStartNum)); client.Farms = new List <FarmEntity>(); clientsToAdd.Add(client); for (int farmCount = 1; farmCount <= numFarmsPerClient; farmCount++) { var farm = new FarmEntity(); farm.Id = Guid.NewGuid().ToString(); farm.Name = string.Format("{0} - Farm {1}", client.Name, farmCount); farm.Fields = new List <FieldEntity>(); for (int fieldCount = 1; fieldCount <= numFieldsPerFarm; fieldCount++) { DateTime addDate = DateTime.UtcNow.AddDays(rand.Next(30) * -1); var field = new FieldEntity(); field.Id = Guid.NewGuid().ToString(); field.Name = string.Format("{0} - Field {1}", farm.Name, fieldCount); field.Modules = new List <ModuleEntity>(); field.Latitude = clientFieldLat; field.Longitude = clientFieldLong; field.Created = addDate; farm.Fields.Add(field); totalFields++; int fieldCol = 1; int fieldRow = 1; clientFieldLat = fieldStartLat + (rand.NextDouble()); clientFieldLong = fieldStartLong + (rand.NextDouble()); for (int moduleCount = 1; moduleCount <= numModulesPerField; moduleCount++) { ModuleEntity module = new ModuleEntity(); module.Id = Guid.NewGuid().ToString(); module.Name = totalModules.ToString().PadLeft(7, '0'); module.FieldId = field.Id; module.TruckID = trucks[rand.Next(trucks.Length - 1)]; module.Driver = drivers[rand.Next(drivers.Length - 1)]; module.LoadNumber = "2019M" + loadNumber.ToString().PadLeft(7, '0'); int weightSelector = rand.Next(1, 4); if (weightSelector == 1) //use module weight { module.HIDDiameter = rand.Next(225, 240); module.HIDModuleWeight = rand.Next(2200, 2650); } else if (weightSelector == 2) //use diameter { module.HIDDiameter = rand.Next(225, 240); module.HIDModuleWeight = null; } else { module.HIDDiameter = null; module.HIDModuleWeight = null; } totalModules++; if (totalModules % 4 == 0) { loadNumber++; } module.Latitude = clientFieldLat + (fieldRow * fieldLatIncrement); module.Longitude = clientFieldLong + (fieldCol * fieldLongIncrement); module.ModuleStatus = ModuleStatus.IN_FIELD; module.Created = addDate; module.ModuleHistory = new List <ModuleHistoryEntity>(); var historyItem = new ModuleHistoryEntity { Id = Guid.NewGuid().ToString(), Created = addDate, Driver = module.Driver, TruckID = module.TruckID, Latitude = module.Latitude, Longitude = module.Longitude, ModuleEventType = ModuleEventType.IMPORTED_FROM_FILE }; field.Modules.Add(module); module.ModuleHistory.Add(historyItem); modulesToAdd.Add(module); fieldCol++; if (fieldCol >= 25) { fieldCol = 1; fieldRow++; } } } client.Farms.Add(farm); } processClients(client, modulesToAdd); clientsToAdd.Clear(); modulesToAdd.Clear(); } createGinLoads(); createFeederScans(); Console.WriteLine("Test data generation complete."); Console.ReadLine(); }
public async Task <bool> RoleValidate(string userId, string roleId) { var authorizeurldata = new List <AuthorizeActionModel>(); var rolelist = roleId.Split(','); var user = await userApp.GetForm(userId); if (user == null || user.F_EnabledMark == false) { return(false); } var cachedata = await CacheHelper.Get <Dictionary <string, List <AuthorizeActionModel> > >(cacheKey + "authorize_list"); if (cachedata == null) { cachedata = new Dictionary <string, List <AuthorizeActionModel> >(); } foreach (var roles in rolelist) { if (!cachedata.ContainsKey(roles)) { var moduledata = await moduleApp.GetList(); moduledata = moduledata.Where(a => a.F_EnabledMark == true).ToList(); var buttondata = await moduleButtonApp.GetList(); buttondata = buttondata.Where(a => a.F_EnabledMark == true).ToList(); var role = await uniwork.FindEntity <RoleEntity>(roles); if (role != null && role.F_EnabledMark != false) { var authdata = new List <AuthorizeActionModel>(); var authorizedata = await GetList(roles); foreach (var item in authorizedata) { try { if (item.F_ItemType == 1) { ModuleEntity moduleEntity = moduledata.Find(t => t.F_Id == item.F_ItemId && t.F_IsPublic == false); if (moduleEntity != null) { authdata.Add(new AuthorizeActionModel { F_Id = moduleEntity.F_Id, F_UrlAddress = moduleEntity.F_UrlAddress, F_Authorize = moduleEntity.F_Authorize }); } } else if (item.F_ItemType == 2) { ModuleButtonEntity moduleButtonEntity = buttondata.Find(t => t.F_Id == item.F_ItemId && t.F_IsPublic == false); if (moduleButtonEntity != null) { authdata.Add(new AuthorizeActionModel { F_Id = moduleButtonEntity.F_ModuleId, F_UrlAddress = moduleButtonEntity.F_UrlAddress, F_Authorize = moduleButtonEntity.F_Authorize }); } } } catch (Exception ex) { string e = ex.Message; continue; } } authdata.AddRange(moduledata.Where(a => a.F_IsPublic == true).Select(a => new AuthorizeActionModel { F_Id = a.F_Id, F_UrlAddress = a.F_UrlAddress, F_Authorize = a.F_Authorize }).ToList()); authdata.AddRange(buttondata.Where(a => a.F_IsPublic == true).Select(a => new AuthorizeActionModel { F_Id = a.F_ModuleId, F_UrlAddress = a.F_UrlAddress, F_Authorize = a.F_Authorize }).ToList()); cachedata.Add(roles, authdata); authorizeurldata.AddRange(authdata); await CacheHelper.Remove(cacheKey + "authorize_list"); await CacheHelper.Set(cacheKey + "authorize_list", cachedata); } } else { authorizeurldata.AddRange(cachedata[roles]); } } if (authorizeurldata.Count > 0) { return(true); } return(false); }
public ModuleEntity SaveFrom(ModuleEntity saveModel) { return(Save(saveModel, "module_")); }
private void AddInternalModule(ModuleEntity moduleEntity) { NameResolutionService.GetNamespace(moduleEntity.Namespace).AddModule(moduleEntity); }
private void btnSave_Click(object sender, EventArgs e) { try { ValidateForm(); if (!hasError) { if (dataObj != null && !string.IsNullOrWhiteSpace(dataObj.GinTagLoadNumber) && string.IsNullOrWhiteSpace(tbGinTicketLoadNumber.Text)) { if (MessageBox.Show("You have removed the gin ticket load number from this module. Are you sure you want to save? This will remove the module from gin ticket load " + dataObj.GinTagLoadNumber + ".", "Confirm", MessageBoxButtons.YesNo) != DialogResult.Yes) { return; } } using (var uow = UnitOfWorkFactory.CreateUnitOfWork()) { var ginLoadId = uow.GinLoadRepository.GetLoadIdForGinTicketNumber(tbGinTicketLoadNumber.Text.Trim()); if (string.IsNullOrEmpty(ginLoadId) && !string.IsNullOrWhiteSpace(tbGinTicketLoadNumber.Text)) { if (MessageBox.Show("You have entered a gin ticket load number that does not yet have a matching load record from the scale bridge. Are you sure you want to save? ", "Confirm", MessageBoxButtons.YesNo) != DialogResult.Yes) { return; } } BusyMessage.Show("Saving...", this.FindForm()); BaseEntity selectedStatus = (BaseEntity)tbStatus.SelectedItem; ModuleStatus selectedModuleStatus = (ModuleStatus)int.Parse(selectedStatus.Id); ModuleEntity existingModule = null; if (dataObj == null) { existingModule = new ModuleEntity(); } else { existingModule = uow.ModuleRepository.GetById(dataObj.Id, "Field.Farm.Client"); } //ensure client, farm, and field are created var client = clientSelector1.GetOrCreateClientEntity(); var farm = farmSelector1.GetOrCreateFarmEntity(client); var field = fieldSelector1.GetOrCreateFieldEntity(farm); string truck = (cboTruck.SelectedIndex > 0) ? ((BaseEntity)cboTruck.SelectedItem).Name : ""; string driver = (cboDriver.SelectedIndex > 0) ? ((BaseEntity)cboDriver.SelectedItem).Name : ""; existingModule.Name = tbSerialNumber.Text.Trim(); existingModule.ModuleId = tbModuleID.Text.Trim(); existingModule.FieldId = field.Id; existingModule.Name = tbSerialNumber.Text.Trim(); existingModule.Driver = driver; existingModule.TruckID = truck; existingModule.Latitude = double.Parse(tbLatitude.Text); existingModule.Longitude = double.Parse(tbLongitude.Text); existingModule.ModuleStatus = selectedModuleStatus; existingModule.Notes = tbNotes.Text.Trim(); existingModule.GinLoadId = ginLoadId; existingModule.GinTagLoadNumber = tbGinTicketLoadNumber.Text.Trim(); ModuleHistoryEntity historyItem = new ModuleHistoryEntity { Id = Guid.NewGuid().ToString(), Created = DateTime.UtcNow, Driver = existingModule.Driver, TruckID = existingModule.TruckID, Latitude = existingModule.Latitude, Longitude = existingModule.Longitude, ModuleEventType = ModuleEventType.MANUAL_EDIT }; historyItem.ModuleStatus = existingModule.ModuleStatus; existingModule.ModuleHistory.Add(historyItem); existingModule.SyncedToCloud = false; uow.ModuleRepository.Save(existingModule); uow.SaveChanges(); this.DialogResult = DialogResult.OK; this.Close(); } } else { this.Activate(); } } catch (Exception exc) { Logging.Logger.Log(exc); MessageBox.Show("An error occurred trying to save module."); } finally { BusyMessage.Close(); } }