/// <summary> /// Loads the corrective actions. /// </summary> public void LoadCorrectiveActions() { var minTemp = HACCPUtil.ConvertToDouble(SelectedItem.Min); var maxTemp = HACCPUtil.ConvertToDouble(SelectedItem.Max); var temp = TemperatureValue; if (TemperatureUnit == TemperatureUnit.Celcius) { minTemp = Math.Round(HACCPUtil.ConvertFahrenheitToCelsius(minTemp)); maxTemp = Math.Round(HACCPUtil.ConvertFahrenheitToCelsius(maxTemp)); //temp = HACCPUtil.ConvertCelsiusToFahrenheit (TemperatureValue); } var actions = dataStore.GetCorrectiveAction().ToList(); // foreach (var action in actions) { // if (action.CorrActionName.ToLower () == "none") // action.IsEnabled = temp >= minTemp && temp <= maxTemp; // else // action.IsEnabled = true; // } CorrectiveActions = new ObservableCollection <CorrectiveAction>(actions); foreach (var action in CorrectiveActions) { switch (action.CorrActionName) { case "Notify Manager": action.CorrActionName = HACCPUtil.GetResourceString("NotifyManager"); break; case "Reheat to 165F": action.CorrActionName = HACCPUtil.GetResourceString("Reheatto165F"); break; case "Rechill": action.CorrActionName = HACCPUtil.GetResourceString("Rechill"); break; case "Discard": action.CorrActionName = HACCPUtil.GetResourceString("Discard"); break; } } if (temp >= minTemp && temp <= maxTemp) { CorrectiveActions.Insert(0, new CorrectiveAction { CorrActionId = -1, CorrActionName = HACCPUtil.GetResourceString("None") }); } IsCorrectiveOptionsVisible = temp <minTemp || temp> maxTemp; }
/// <summary> /// Displaies the temperature reading. /// </summary> /// <param name="temperature">Temperature.</param> /// <param name="autoRecord"></param> private void DisplayTemperatureReading(double temperature, bool autoRecord) { var mintemp = HACCPUtil.ConvertToDouble(SelectedItem.Min); var maxtemp = HACCPUtil.ConvertToDouble(SelectedItem.Max); if (TemperatureUnit == TemperatureUnit.Celcius) { mintemp = HACCPUtil.ConvertFahrenheitToCelsius(mintemp); maxtemp = HACCPUtil.ConvertFahrenheitToCelsius(maxtemp); } if (temperature < mintemp) { OptimumTemperatureIndicator = false; HighTemperatureIndicator = false; LowTemperatureIndicator = true; } else if (temperature > maxtemp) { OptimumTemperatureIndicator = false; HighTemperatureIndicator = true; LowTemperatureIndicator = false; } else { OptimumTemperatureIndicator = true; HighTemperatureIndicator = false; LowTemperatureIndicator = false; } var diff = Math.Round(temperature - prevtemp, 1); if (diff > 2.8) { diff = 2.8; } else if (diff < -2.8) { diff = -2.8; } Rotation = HACCPUtil.GetSlope(diff); Blue2Temperature = temperature; prevtemp = temperature; DisplayBlue2Temperature = string.Format("{0}{1}", Blue2Temperature.ToString("0.0"), UnitString); LineBreakMode = LineBreakMode.NoWrap; if (autoRecord) { Device.BeginInvokeOnMainThread(() => { RecordCommand.Execute(null); }); } }
/// <summary> /// Displaies the temperature reading. /// </summary> /// <param name="temperature">Temperature.</param> private void DisplayTemperatureReading(double temperature) { var diff = Math.Round(temperature - prevtemp, 1); if (diff > 2.8) { diff = 2.8; } else if (diff < -2.8) { diff = -2.8; } Rotation = HACCPUtil.GetSlope(diff); prevtemp = temperature; short tempScale; if (HaccpAppSettings.SharedInstance.IsWindows) { tempScale = WindowsBLEManager.SharedInstance.Settings.Scale; } else { tempScale = BLEManager.SharedInstance.Settings.Scale; } if (TemperatureUnit == TemperatureUnit.Celcius && tempScale != 0) { temperature = HACCPUtil.ConvertFahrenheitToCelsius(temperature); } else if (TemperatureUnit == TemperatureUnit.Fahrenheit && tempScale != 1) { temperature = HACCPUtil.ConvertCelsiusToFahrenheit(temperature); } CurrentTemperature = temperature; Blue2TempFontSize = 32; LineBreakMode = LineBreakMode.NoWrap; }
/// <summary> /// Method for loading ble settings for windows /// </summary> public void LoadWindowsBlue2Settings() { if (WindowsBLEManager.SharedInstance.HasAnyPairedDevice) { ConnectionStatus = HACCPUtil.GetResourceString("ConnectionStatusDisconnect"); Blue2ButtonStyle = Application.Current.Resources["Blue2ButtonActiveStyle"] as Style; if (WindowsBLEManager.SharedInstance.Settings != null) { Blue2Id = WindowsBLEManager.SharedInstance.Settings.SNo; } if (WindowsBLEManager.SharedInstance.Settings != null) { var temp = WindowsBLEManager.SharedInstance.LastReading; var unit = WindowsBLEManager.SharedInstance.Settings.Scale; if (TemperatureUnit == TemperatureUnit.Celcius && unit != 0) { temp = HACCPUtil.ConvertFahrenheitToCelsius(temp); } else if (TemperatureUnit == TemperatureUnit.Fahrenheit && unit != 1) { temp = HACCPUtil.ConvertCelsiusToFahrenheit(temp); } DisplayTemperatureReading(temp, false); } } else { ConnectionStatus = HACCPUtil.TruncateResourceString(HACCPUtil.GetResourceString("ConnectionStatusScanBlue2"), false); Blue2ButtonStyle = Application.Current.Resources["Blue2ButtonNotActiveStyle"] as Style; DisplayBlue2Temperature = HACCPUtil.GetResourceString("ConnectBlue2Label"); LineBreakMode = LineBreakMode.TailTruncation; } }
/// <summary> /// Executes the record command. /// </summary> private async void ExecuteRecordCommand() { if (IsBusy) { return; } try { bool connected; bool gotTemperartureReading; if (HaccpAppSettings.SharedInstance.IsWindows) { gotTemperartureReading = WindowsBLEManager.SharedInstance.GotTemperartureReading; connected = WindowsBLEManager.SharedInstance.HasAnyPairedDevice; } else { connected = BLEManager.SharedInstance.IsConnected; gotTemperartureReading = BLEManager.SharedInstance.GotTemperartureReading; } if (!IsManualEntryOn && !connected) { if (HaccpAppSettings.SharedInstance.IsWindows) { return; } if (!BLEManager.SharedInstance.Adapter.IsBluetoothEnabled) { await Page.ShowAlert(string.Empty, HACCPUtil.GetResourceString("TurnONBluetoothonyourdevice")); return; } await Page.ShowAlert(string.Empty, HACCPUtil.GetResourceString("Blue2TurnOnMessage")); return; } if (!IsManualEntryOn && !gotTemperartureReading) { return; } if (IsManualEntryOn && string.IsNullOrEmpty(ManualTemperature)) { await Page.ShowAlert(string.Empty, HACCPUtil.GetResourceString("SpecifyTemperature")); return; } if (IsManualEntryOn) { try { double.Parse(ManualTemperature); } catch { Page.ShowAlert(string.Empty, HACCPUtil.GetResourceString("Specifyavalidtemperaturevalue")); return; } } else if (DisplayBlue2Temperature == HACCPUtil.GetResourceString("ConnectBlue2Label") || DisplayBlue2Temperature == HACCPUtil.GetResourceString("Blue2SleepString") || DisplayBlue2Temperature == HACCPUtil.GetResourceString("Blue2LowString") || DisplayBlue2Temperature == HACCPUtil.GetResourceString("Blue2HighString") && DisplayBlue2Temperature == HACCPUtil.GetResourceString("Blue2BatteryString")) { await Page.ShowAlert(string.Empty, HACCPUtil.GetResourceString("InvalidTemperatureAlert")); return; } var allowedMax = HaccpAppSettings.SharedInstance.DeviceSettings.TempScale == 0 ? 9999.9 : 5537.7; var allowedMin = HaccpAppSettings.SharedInstance.DeviceSettings.TempScale == 0 ? -9999.9 : -5537.7; if (IsManualEntryOn) { if (ManualEntryTemperature > allowedMax || ManualEntryTemperature < allowedMin) { await Page.ShowAlert(string.Empty, HACCPUtil.GetResourceString("InvalidTemperatureAlert")); return; } } else { var lastReading = HaccpAppSettings.SharedInstance.IsWindows ? WindowsBLEManager.SharedInstance.LastReading : BLEManager.SharedInstance.LastReading; var lastunit = HaccpAppSettings.SharedInstance.IsWindows ? WindowsBLEManager.SharedInstance.LastUnit : BLEManager.SharedInstance.LastUnit; if (TemperatureUnit == TemperatureUnit.Celcius && lastunit != TemperatureUnit.Celcius) { lastReading = HACCPUtil.ConvertFahrenheitToCelsius(lastReading); } else if (TemperatureUnit == TemperatureUnit.Fahrenheit && lastunit != TemperatureUnit.Fahrenheit) { lastReading = HACCPUtil.ConvertCelsiusToFahrenheit(lastReading); } Blue2Temperature = lastReading; } IsBusy = true; RecordCommand.ChangeCanExecute(); var temp = IsManualEntryOn ? ManualEntryTemperature : Blue2Temperature; var minTemp = HACCPUtil.ConvertToDouble(SelectedItem.Min); var maxTemp = HACCPUtil.ConvertToDouble(SelectedItem.Max); var convertedTemp = temp; if (TemperatureUnit == TemperatureUnit.Celcius) { minTemp = Math.Round(HACCPUtil.ConvertFahrenheitToCelsius(minTemp)); maxTemp = Math.Round(HACCPUtil.ConvertFahrenheitToCelsius(maxTemp)); //convertedTemp = HACCPUtil.ConvertFahrenheitToCelsius (temp); } if (convertedTemp >= minTemp && convertedTemp <= maxTemp && HaccpAppSettings.SharedInstance.DeviceSettings.SkipRecordPreview) { var date = DateTime.Now; long ccpid; long.TryParse(SelectedItem.Ccpid, out ccpid); var location = dataStore.GetLocationById(SelectedItem.LocationId); if (TemperatureUnit == TemperatureUnit.Celcius) { convertedTemp = HACCPUtil.ConvertCelsiusToFahrenheit(temp); } var itemTemperature = new ItemTemperature { IsManualEntry = IsManualEntryOn ? (short)1 : (short)0, ItemID = SelectedItem.ItemId, Temperature = convertedTemp.ToString("0.0"), ItemName = SelectedItem.Name, Max = SelectedItem.Max, Min = SelectedItem.Min, CorrAction = HACCPUtil.GetResourceString("None"), LocationID = SelectedItem.LocationId, Ccp = SelectedItem.Ccp, CCPID = ccpid, IsNA = 0, Hour = date.Hour.ToString(), Day = date.Day.ToString(), Minute = date.Minute.ToString(), Month = date.Month.ToString(), Sec = date.Second.ToString(), Year = date.Year.ToString(), SiteID = HaccpAppSettings.SharedInstance.SiteSettings.SiteId, UserName = HaccpAppSettings.SharedInstance.UserName, DeviceId = HaccpAppSettings.SharedInstance.DeviceId, MenuID = HaccpAppSettings.SharedInstance.SiteSettings.MenuId, TZID = HaccpAppSettings.SharedInstance.SiteSettings.TimeZoneId, LocName = location.Name, Note = NoteText, Blue2ID = SelectedItem.Blue2Id }; dataStore.AddTemperature(itemTemperature); SelectedItem.RecordStatus = 1; dataStore.RecordLocationItem(SelectedItem); if (HaccpAppSettings.SharedInstance.IsWindows) { WindowsBLEManager.SharedInstance.ResetBlue2AutoOff(); } else { BLEManager.SharedInstance.ResetBlue2AutoOff(); } MessagingCenter.Send(SelectedItem, HaccpConstant.RecorditemMessage); dataStore.UpdateLocationItemRecordStatus(SelectedItem.LocationId); MessagingCenter.Send(new MenuLocationId { LocationId = SelectedItem.LocationId }, HaccpConstant.MenulocationMessage); MessagingCenter.Send(new RecordSaveCompleteToast(), HaccpConstant.ToastMessage); } else { SelectedItem.IsManualEntry = IsManualEntryOn; SelectedItem.RecordedTemperature = temp.ToString("0.0"); SelectedItem.TemperatureUnit = TemperatureUnit; SelectedItem.Blue2Id = IsManualEntryOn ? string.Empty : Blue2Id; SelectedItem.Note = NoteText; if (HaccpAppSettings.SharedInstance.IsWindows) { WindowsBLEManager.SharedInstance.ResetBlue2AutoOff(); } else { BLEManager.SharedInstance.ResetBlue2AutoOff(); } await Page.NavigateToWithSelectedObject(PageEnum.RecordComplete, true, SelectedItem); IsBusy = false; RecordCommand.ChangeCanExecute(); } } catch (Exception ex) { Debug.WriteLine("Error on recording {0}", ex.Message); } }
/// <summary> /// Initializes a new instance of the <see /> class. /// </summary> /// <param name="page">Page.</param> /// <param name="item"></param> public RecordTempViewModel(IPage page, LocationMenuItem item) : base(page) { dataStore = new SQLiteDataStore(); SelectedItem = item; IsManualEntryOn = Settings.RecordingMode == RecordingMode.Manual; TemperatureUnit = HaccpAppSettings.SharedInstance.DeviceSettings.TempScale == 0 ? TemperatureUnit.Fahrenheit : TemperatureUnit.Celcius; var min = HACCPUtil.ConvertToDouble(SelectedItem.Min); var max = HACCPUtil.ConvertToDouble(SelectedItem.Max); MinimumTemperature = TemperatureUnit == TemperatureUnit.Celcius ? Math.Round(HACCPUtil.ConvertFahrenheitToCelsius(min)).ToString() : SelectedItem.Min; MaximumTemperature = TemperatureUnit == TemperatureUnit.Celcius ? Math.Round(HACCPUtil.ConvertFahrenheitToCelsius(max)).ToString() : SelectedItem.Max; MessagingCenter.Subscribe <WindowsScanningStatusMessage>(this, HaccpConstant.WindowsScanningStatus, sender => { if (sender.IsScanning && ConnectionStatus != HACCPUtil.GetResourceString("ConnectionStatusDisconnect")) { ConnectionStatus = HACCPUtil.TruncateResourceString(HACCPUtil.GetResourceString("Connecting"), false); } else { ConnectionStatus = HACCPUtil.TruncateResourceString(HACCPUtil.GetResourceString("ConnectionStatusScanBlue2"), false); } }); MessagingCenter.Subscribe <BleTemperatureReadingMessage>(this, HaccpConstant.BletemperatureReading, sender => { bool connected; connected = HaccpAppSettings.SharedInstance.IsWindows ? WindowsBLEManager.SharedInstance.HasAnyPairedDevice : BLEManager.SharedInstance.IsConnected; if (connected) { var msg = sender; if (msg != null) { OnPropertyChanged("IsWakeButtonVisible"); if (msg.IsSleeping) { DisplayBlue2Temperature = HACCPUtil.GetResourceString("Blue2SleepString"); LineBreakMode = LineBreakMode.TailTruncation; } else if (msg.IsHigh) { DisplayBlue2Temperature = HACCPUtil.GetResourceString("Blue2HighString"); LineBreakMode = LineBreakMode.TailTruncation; } else if (msg.IsLow) { DisplayBlue2Temperature = HACCPUtil.GetResourceString("Blue2LowString"); LineBreakMode = LineBreakMode.TailTruncation; } else if (msg.IsBatteryLow) { DisplayBlue2Temperature = HACCPUtil.GetResourceString("Blue2BatteryString"); LineBreakMode = LineBreakMode.TailTruncation; } else { var temp = msg.TempValue; var unit = msg.TempUnit; if (TemperatureUnit == TemperatureUnit.Celcius && unit != 0) { temp = HACCPUtil.ConvertFahrenheitToCelsius(temp); } else if (TemperatureUnit == TemperatureUnit.Fahrenheit && unit != 1) { temp = HACCPUtil.ConvertCelsiusToFahrenheit(temp); } DisplayTemperatureReading(temp, msg.ShouldRecord); } } } }); MessagingCenter.Subscribe <WindowsBleConnectionStatusMessage>(this, HaccpConstant.BleconnectionStatus, sender => { OnPropertyChanged("IsWakeButtonVisible"); if (!WindowsBLEManager.SharedInstance.HasAnyPairedDevice) { ConnectionStatus = HACCPUtil.TruncateResourceString(HACCPUtil.GetResourceString("ConnectionStatusScanBlue2"), false); Blue2ButtonStyle = Application.Current.Resources["Blue2ButtonNotActiveStyle"] as Style; Blue2Id = string.Empty; DisplayBlue2Temperature = HACCPUtil.GetResourceString("ConnectBlue2Label"); LineBreakMode = LineBreakMode.TailTruncation; } //else //{ // ConnectionStatus = HACCPUtil.GetResourceString("ConnectionStatusDisconnect"); // Blue2ButtonStyle = Application.Current.Resources["Blue2ButtonActiveStyle"] as Style; // DisplayBlue2Temperature = string.Empty; // LineBreakMode = LineBreakMode.NoWrap; //} }); MessagingCenter.Subscribe <BleConnectionStatusMessage>(this, HaccpConstant.BleconnectionStatus, async sender => { OnPropertyChanged("IsWakeButtonVisible"); if (BLEManager.SharedInstance.IsConnected) { ConnectionStatus = HACCPUtil.GetResourceString("ConnectionStatusDisconnect"); Blue2ButtonStyle = Application.Current.Resources["Blue2ButtonActiveStyle"] as Style; DisplayBlue2Temperature = string.Empty; LineBreakMode = LineBreakMode.NoWrap; } else { ConnectionStatus = HACCPUtil.TruncateResourceString(HACCPUtil.GetResourceString("ConnectionStatusScanBlue2"), false); Blue2ButtonStyle = Application.Current.Resources["Blue2ButtonNotActiveStyle"] as Style; Blue2Id = string.Empty; DisplayBlue2Temperature = HACCPUtil.GetResourceString("ConnectBlue2Label"); LineBreakMode = LineBreakMode.TailTruncation; if (!BLEManager.SharedInstance.Adapter.IsBluetoothEnabled && !IsManualEntryOn) { // bluetooth in phone is disabled if (!isAlertActive) { isAlertActive = true; await page.ShowAlert(string.Empty, HACCPUtil.GetResourceString("TurnONBluetoothonyourdevice")); isAlertActive = false; } } } }); MessagingCenter.Subscribe <BLEBlue2SettingsUpdatedMessage>(this, HaccpConstant.Bleblue2SettingsUpdate, sender => { if (HaccpAppSettings.SharedInstance.IsWindows && WindowsBLEManager.SharedInstance.Settings != null) { LoadWindowsBlue2Settings(); } else if (BLEManager.SharedInstance.Settings != null) { Blue2Id = BLEManager.SharedInstance.Settings.SNo; } }); MessagingCenter.Subscribe <BleConnectionTimeOutMessage>(this, HaccpConstant.BleconnectionTimeout, async sender => { await page.ShowAlert(string.Empty, HACCPUtil.GetResourceString("Blue2TurnOnMessage")); }); MessagingCenter.Subscribe <BleScanCompleteMessage>(this, HaccpConstant.Blue2ScanComplete, sender => { ConnectionStatus = HACCPUtil.TruncateResourceString(HACCPUtil.GetResourceString("ConnectionStatusScanBlue2"), false); }); }