/// <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); }); }
/// <summary> /// Executes the save command. /// </summary> /// <returns>The save command.</returns> protected override async Task ExecuteSaveCommand() { try { IsBusy = true; SaveCommand.ChangeCanExecute(); HACCPUtil.ConvertToDouble(SelectedItem.Min); HACCPUtil.ConvertToDouble(SelectedItem.Max); var temp = TemperatureValue; if (TemperatureUnit == TemperatureUnit.Celcius) { temp = HACCPUtil.ConvertCelsiusToFahrenheit(TemperatureValue); } if ( await Page.ShowConfirmAlert(HACCPUtil.GetResourceString("SaveRecord"), string.Format( HACCPUtil.GetResourceString("RecordedTemperature0Correctiveactiontaken1User2"), Temperature + HaccpConstant.NewlineCharacter, SelectedCorrectiveAction != null ? SelectedCorrectiveAction.CorrActionName + HaccpConstant.NewlineCharacter : HACCPUtil.GetResourceString("None") + HaccpConstant.NewlineCharacter, HaccpAppSettings.SharedInstance.UserName))) { //if (itemTemperature == null) { var date = DateTime.Now; long ccpid; long.TryParse(SelectedItem.Ccpid, out ccpid); var location = dataStore.GetLocationById(SelectedItem.LocationId); itemTemperature = new ItemTemperature { IsManualEntry = SelectedItem.IsManualEntry ? (short)1 : (short)0, ItemID = SelectedItem.ItemId, Temperature = temp.ToString("0.0"), ItemName = SelectedItem.Name, Max = SelectedItem.Max, Min = SelectedItem.Min, CorrAction = SelectedCorrectiveAction != null ? SelectedCorrectiveAction.CorrActionName : 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, //BatchId = HACCPAppSettings.SharedInstance.SiteSettings.LastBatchNumber, LocName = location.Name, Note = !string.IsNullOrEmpty(NoteText) && !string.IsNullOrWhiteSpace(NoteText) ? NoteText.Trim() : string.Empty, Blue2ID = SelectedItem.Blue2Id }; dataStore.AddTemperature(itemTemperature); SelectedItem.RecordStatus = 1; dataStore.RecordLocationItem(SelectedItem); MessagingCenter.Send(SelectedItem, HaccpConstant.RecorditemMessage); dataStore.UpdateLocationItemRecordStatus(SelectedItem.LocationId); MessagingCenter.Send(new MenuLocationId { LocationId = SelectedItem.LocationId }, HaccpConstant.MenulocationMessage); if (HaccpAppSettings.SharedInstance.IsWindows) { await Page.PopPages(2); } else { Page.RemoveRecordItemPage(); await Page.PopPage(); } if (HaccpAppSettings.SharedInstance.DeviceSettings.AutoAdvance) { MessagingCenter.Send(new AutoAdvanceLocationMessage { CurrentId = SelectedItem.ItemId }, HaccpConstant.AutoadvancelocationMessage); } } } catch (Exception ex) { Debug.WriteLine("Error occured while saving temperature {0}", ex.Message); } finally { IsBusy = false; SaveCommand.ChangeCanExecute(); } }