private void ExecuteCreateLoad() { ShowInputError = false; //TODO VALIDATE TICKET LOAD NUMBER EXISTS if (string.IsNullOrEmpty(GinTicketLoadNumber)) { ShowInputError = true; InputErrorMessage = "Please enter a gin ticket load number."; } if (!ShowInputError) { using (var dp = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork()) { var hasLoad = dp.LoadScanRepository.FindMatching(x => x.GinTagLoadNumber == GinTicketLoadNumber).Any(); if (hasLoad) { this.ExecuteLookupLoad(); return; } var bridgeID = dp.SettingsRepository.GetSettingWithDefault(BridgeSettingKeys.BRIDGE_ID, ""); var lastLoadScan = new LoadScanEntity(); lastLoadScan.SubmittedBy = "attendant"; //always use a new load number otherwise a previous load //could get overwritten lastLoadScan.BridgeLoadNumber = dp.LoadScanRepository.LastLoadNumber() + 1; var scanData = new ModuleScanData(); scanData.Scans = new List <LoadModuleScan>(); lastLoadScan.SetSerializedModuleScanData(scanData); lastLoadScan.BridgeID = bridgeID; lastLoadScan.TruckID = ""; lastLoadScan.GinTagLoadNumber = GinTicketLoadNumber; lastLoadScan.GrossWeight = 0.00M; lastLoadScan.NetWeight = 0.00M; lastLoadScan.SplitWeight1 = 0.00M; lastLoadScan.SplitWeight2 = 0.00M; lastLoadScan.Latitude = dp.SettingsRepository.GetSettingDoubleValue(BridgeSettingKeys.LATITUDE); lastLoadScan.Longitude = dp.SettingsRepository.GetSettingDoubleValue(BridgeSettingKeys.LONGITUDE); lastLoadScan.TrailerNumber = ""; lastLoadScan.Variety = ""; lastLoadScan.YardRow = "IN FIELD"; lastLoadScan.PickedBy = ""; lastLoadScan.Client = ""; lastLoadScan.Farm = ""; lastLoadScan.Field = ""; var status = dp.SettingsRepository.GetSettingWithDefault(BridgeSettingKeys.TARGET_STATUS, "AT GIN"); if (status == "AT GIN") { lastLoadScan.TargetStatus = ModuleStatus.AT_GIN; } else { lastLoadScan.TargetStatus = ModuleStatus.ON_FEEDER; } lastLoadScan.SubmittedBy = "attendant"; //lastLoadScan.SetSerializedModuleScanData(scanData); dp.LoadScanRepository.Save(lastLoadScan); dp.SaveChanges(); var vm = new LoadViewModel(NavService); NavService.ShowPage(PageType.LOAD_PAGE, false, (BasePageViewModel)vm); vm.Initialize(GinTicketLoadNumber, false, true); } } }
private void SaveForm(bool isAutoSave) { try { using (var dp = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork()) { LoadScanEntity loadScan = null; var bridgeID = dp.SettingsRepository.GetSettingWithDefault(BridgeSettingKeys.BRIDGE_ID, ""); //try to look load up by gin tag number to update matching load // if (!isAutoSave) // loadScan = dp.LoadScanRepository.FindSingle(l => l.GinTagLoadNumber == GinTicketLoadNumber); if (loadScan == null) { loadScan = dp.LoadScanRepository.GetById(_loadScanId); loadScan.GinTagLoadNumber = GinTicketLoadNumber; } loadScan.BridgeID = bridgeID; if (TruckID == "-- Select One --") { _TruckID = ""; } loadScan.TruckID = TruckID; if (!isAutoSave) { loadScan.GinTagLoadNumber = GinTicketLoadNumber; } var grossWeight = 0.00M; var split1 = 0.00M; var split2 = 0.00M; if (decimal.TryParse(GrossWeight, out grossWeight)) { loadScan.GrossWeight = grossWeight; } if (decimal.TryParse(SplitWeight1, out split1)) { loadScan.SplitWeight1 = split1; } if (decimal.TryParse(SplitWeight2, out split2)) { loadScan.SplitWeight2 = split2; } loadScan.NetWeight = loadScan.GrossWeight - _tareWeight; loadScan.Latitude = dp.SettingsRepository.GetSettingDoubleValue(BridgeSettingKeys.LATITUDE); loadScan.Longitude = dp.SettingsRepository.GetSettingDoubleValue(BridgeSettingKeys.LONGITUDE); loadScan.PickedBy = PickedBy; loadScan.Processed = false; var status = dp.SettingsRepository.GetSettingWithDefault(BridgeSettingKeys.TARGET_STATUS, "AT GIN"); if (status == "AT GIN") { loadScan.TargetStatus = ModuleStatus.AT_GIN; } else { loadScan.TargetStatus = ModuleStatus.ON_FEEDER; } loadScan.TrailerNumber = TrailerNumber; loadScan.Variety = Variety; loadScan.YardRow = YardLocation; if (AttendantChecked) { loadScan.SubmittedBy = "attendant"; } if (DriverChecked) { loadScan.SubmittedBy = "driver"; } loadScan.Client = Client; loadScan.Farm = Farm; loadScan.Field = Field; var moduleScanData = new ModuleScanData(); moduleScanData.Scans = new List <LoadModuleScan>(); moduleScanData.Scans.AddRange(Modules.ToList()); loadScan.SetSerializedModuleScanData(moduleScanData); dp.LoadScanRepository.Save(loadScan); dp.SaveChanges(); Messenger.Default.Send <LoadSavedMessage>(new LoadSavedMessage { Scan = loadScan }); } } catch (Exception exc) { System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { if (!isAutoSave) { System.Windows.MessageBox.Show("An error occured saving load. " + exc.Message); } })); Logging.Logger.Log(exc); } }
private void CreateLoad(ref bool newLoad) { _loadCreated = true; timer.Stop(); autoSaveTimer.Stop(); using (var dp = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork()) { Logging.Logger.Log("INFO", "CREATING LOAD FROM WEIGH IN: LOAD " + GinTicketLoadNumber); //find module ownerships var bridgeID = dp.SettingsRepository.GetSettingWithDefault(BridgeSettingKeys.BRIDGE_ID, ""); var ownerships = dp.ModuleOwnershipRepository.FindMatching(m => m.GinTagLoadNumber == GinTicketLoadNumber).ToList().OrderBy(t => t.LastCreatedOrUpdated); var lastOwnership = ownerships.LastOrDefault(); var lastLoadScan = dp.LoadScanRepository.FindMatching(l => l.GinTagLoadNumber == GinTicketLoadNumber).OrderBy(t => t.Created).LastOrDefault(); var lastLoadScanTime = (lastLoadScan != null) ? lastLoadScan.LastCreatedOrUpdated : DateTime.Now.AddYears(-1); ModuleScanData scanData = new ModuleScanData(); scanData.Scans = new List <LoadModuleScan>(); Logging.Logger.Log("INFO", "GET TAGS SEEN BETWEEN " + _readerWindowStartTime.ToLocalTime().ToString() + " AND " + DateTime.Now.ToString()); var tags = TagDataProvider.GetTagsFirstSeenInTimeRange(_readerWindowStartTime, DateTime.UtcNow); var tagSerials = tags.Select(t => t.SerialNumber).ToArray(); var ginnedTags = dp.ModuleOwnershipRepository.FindMatching(m => tagSerials.Contains(m.Name) && (m.Status == "Ginned" || m.Status == "On feeder")); if (ginnedTags.Count() > 0) { Logging.Logger.Log("WARNING", "ONE OR MORE TAGS READ WITH GINNED STATUS. GINNED COUNT: " + ginnedTags.Count().ToString()); } var trucks = dp.TruckRepository.GetAll(); foreach (var t in tags) { if (!ginnedTags.Any(g => g.Name == t.SerialNumber) && !trucks.Any(x => x.RFIDTagId == t.SerialNumber || x.RFIDTagId == t.Epc)) { Logging.Logger.Log("INFO", "RECORDING MODULE SN " + t.SerialNumber + " FIRST SEEN AT LOCAL TIME" + t.Firstseen.ToLocalTime().ToString()); scanData.Scans.Add(new LoadModuleScan { EPC = t.Epc, SerialNumber = t.SerialNumber, ScanTime = t.Firstseen }); } } var serialNumbers = tags.Select(t => t.SerialNumber).ToArray(); var moduleOwnershipsForTags = dp.ModuleOwnershipRepository.FindMatching(m => serialNumbers.Contains(m.Name)).ToList(); if (moduleOwnershipsForTags.Count() > 0 && lastOwnership == null) { lastOwnership = moduleOwnershipsForTags[0]; Logging.Logger.Log("INFO", "Found ownership from module."); } if (lastOwnership != null) { Logging.Logger.Log("INFO", "Using ownership " + lastOwnership.Client + "/" + lastOwnership.Farm + "/" + lastOwnership.Field); } bool populateFromOwnership = (lastOwnership != null && lastLoadScan == null); //if ((lastOwnership != null && lastLoadScan == null)/* || (lastOwnership != null && lastOwnership.LastCreatedOrUpdated > lastLoadScan.LastCreatedOrUpdated)*/) // populateFromOwnership = true; if (lastLoadScan == null) { Logging.Logger.Log("INFO", "CREATING NEW LOAD SCAN"); newLoad = true; lastLoadScan = new LoadScanEntity(); lastLoadScan.SubmittedBy = "attendant"; //always use a new load number otherwise a previous load //could get overwritten lastLoadScan.BridgeLoadNumber = dp.LoadScanRepository.LastLoadNumber() + 1; /*if (populateFromOwnership) * if (lastOwnership.BridgeLoadNumber > 0) lastLoadScan.BridgeLoadNumber = lastOwnership.BridgeLoadNumber; * else lastLoadScan.BridgeLoadNumber = dp.LoadScanRepository.LastLoadNumber() + 1; * else * lastLoadScan.BridgeLoadNumber = dp.LoadScanRepository.LastLoadNumber() + 1; */ } lastLoadScan.BridgeID = bridgeID; lastLoadScan.TruckID = _activeTruck.Name; lastLoadScan.GinTagLoadNumber = GinTicketLoadNumber; lastLoadScan.GrossWeight = GrossWeight; lastLoadScan.NetWeight = GrossWeight - _activeTruck.TareWeight; lastLoadScan.SplitWeight1 = Weight1; lastLoadScan.SplitWeight2 = Weight2; lastLoadScan.Latitude = dp.SettingsRepository.GetSettingDoubleValue(BridgeSettingKeys.LATITUDE); lastLoadScan.Longitude = dp.SettingsRepository.GetSettingDoubleValue(BridgeSettingKeys.LONGITUDE); if (populateFromOwnership && lastOwnership != null) { lastLoadScan.TrailerNumber = lastOwnership.TrailerNumber; lastLoadScan.Variety = lastOwnership.Variety; lastLoadScan.YardRow = lastOwnership.Location; lastLoadScan.PickedBy = lastOwnership.PickedBy; } if (populateFromOwnership && lastOwnership != null) { lastLoadScan.Client = lastOwnership.Client; lastLoadScan.Farm = lastOwnership.Farm; lastLoadScan.Field = lastOwnership.Field; } var status = dp.SettingsRepository.GetSettingWithDefault(BridgeSettingKeys.TARGET_STATUS, "AT GIN"); if (status == "AT GIN") { lastLoadScan.TargetStatus = ModuleStatus.AT_GIN; } else { lastLoadScan.TargetStatus = ModuleStatus.ON_FEEDER; } lastLoadScan.SubmittedBy = "attendant"; lastLoadScan.SetSerializedModuleScanData(scanData); dp.LoadScanRepository.Save(lastLoadScan); dp.SaveChanges(); Logging.Logger.WriteBuffer(); } }