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 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); } } }
public void Initialize(string ginTicketLoadNumber, bool newLoad, bool isManualEdit = false, bool popPageOnSave = false, string loadGuid = null) { _isManualEdit = isManualEdit; _initialized = false; _popPageOnSave = popPageOnSave; using (var dp = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork()) { GinTicketLoadNumber = ginTicketLoadNumber; var loads = dp.LoadScanRepository.FindMatching(t => t.GinTagLoadNumber == ginTicketLoadNumber); if (!string.IsNullOrEmpty(loadGuid)) { loads = dp.LoadScanRepository.FindMatching(t => t.Id == loadGuid); } var trucks = dp.TruckRepository.GetAll(); allTrucks = trucks.ToList(); var ownerships = dp.ModuleOwnershipRepository.FindMatching(m => m.GinTagLoadNumber == GinTicketLoadNumber).ToList().OrderBy(t => t.LastCreatedOrUpdated); //var lastOwnership = ownerships.LastOrDefault(); _scan = null; AvailableTrucks.Clear(); AvailableTrucks.Add("-- Select One --"); foreach (var t in trucks) { AvailableTrucks.Add(t.Name); } if (loads.Count() > 0) { _scan = loads.Last(); _loadScanId = _scan.Id; TruckID = _scan.TruckID; var truck = dp.TruckRepository.FindSingle(t => t.Name == TruckID); if (truck != null) { _tareWeight = truck.TareWeight; } else { _tareWeight = 0.00M; TruckID = "-- Select One --"; } BridgeLoadNumber = _scan.BridgeLoadNumber; GrossWeight = _scan.GrossWeight.ToString(); NetWeight = _scan.NetWeight; PickedBy = _scan.PickedBy; Variety = _scan.Variety; YardLocation = _scan.YardRow; TrailerNumber = _scan.TrailerNumber; Client = _scan.Client; Farm = _scan.Farm; Field = _scan.Field; SplitWeight1 = _scan.SplitWeight1.ToString(); SplitWeight2 = _scan.SplitWeight2.ToString(); /*if (isManualEdit && lastOwnership != null && lastOwnership.LastCreatedOrUpdated > _scan.LastCreatedOrUpdated.AddMinutes(10)) * * { * TrailerNumber = lastOwnership.TrailerNumber; * Variety = lastOwnership.Variety; * YardLocation = lastOwnership.Location; * Client = lastOwnership.Client; * Farm = lastOwnership.Farm; * Field = lastOwnership.Field; * GrossWeight = lastOwnership.LoadGrossWeight.ToString(); * NetWeight = lastOwnership.LoadNetWeight; * TruckID = lastOwnership.TruckID; * PickedBy = lastOwnership.PickedBy; * SplitWeight1 = lastOwnership.LoadSplitWeight1.ToString(); * SplitWeight2 = lastOwnership.LoadSplitWeight2.ToString(); * }*/ if (!newLoad) { AttendantChecked = (_scan.SubmittedBy == "attendant"); DriverChecked = (_scan.SubmittedBy == "driver"); } else { DriverChecked = false; AttendantChecked = true; } System.Windows.Application.Current.Dispatcher.Invoke((Action)(() => { Modules = new ObservableCollection <LoadModuleScan>(); foreach (var m in _scan.ScanData.Scans) { //filter out truck tags if (!trucks.Any(t => t.RFIDTagId == m.SerialNumber || t.RFIDTagId == m.EPC)) { Modules.Add(m); } } })); ModuleHeader = Modules.Count().ToString() + " MODULES IN LOAD"; } else { System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { System.Windows.MessageBox.Show("Load not found or not saved."); })); throw new Exception("No load found for ticket number."); } } _initialized = true; }
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(); } }