/// <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> /// Executes the corrective action command. /// </summary> /// <returns>The corrective action command.</returns> protected override void ExecuteCorrectiveActionCommand() { if (IsBusy) { return; } try { IsBusy = true; CorrectiveActionCommand.ChangeCanExecute(); if (string.IsNullOrEmpty(Answer) && !IsYesNo) { Answer = string.Empty; Page.DisplayAlertMessage(HACCPUtil.GetResourceString("RecordAnswer"), HACCPUtil.GetResourceString("Specifyanumericvalue")); } else { CorrectiveActions = new ObservableCollection <CorrectiveAction>( dataStore.GetCorrectiveActionForQuestion(RecordResponse.QuestionId)); if ( !((IsYesNo && Answer == HACCPUtil.GetResourceString("No")) || (!IsYesNo && (HACCPUtil.ConvertToDouble(Answer) < HACCPUtil.ConvertToDouble(RecordResponse.Min) || HACCPUtil.ConvertToDouble(Answer) > HACCPUtil.ConvertToDouble(RecordResponse.Max))))) { CorrectiveActions.Insert(0, new CorrectiveAction { CorrActionId = -1, CorrActionName = "None" }); } if (CorrectiveActions.Count < 1) { Page.ShowAlert(string.Empty, HACCPUtil.GetResourceString("Nocorrectiveactionsfound")); } else { IsCorrctiveOptionsVisible = true; } } IsBusy = false; CorrectiveActionCommand.ChangeCanExecute(); } catch (Exception ex) { Debug.WriteLine("Ooops! Something went wrong. Exception: {0}", ex); } finally { IsBusy = false; CorrectiveActionCommand.ChangeCanExecute(); } }
/// <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> /// Executes the items filter command. /// </summary> /// <returns>The items filter command.</returns> private void ExecuteItemsFilterCommand() { if (IsBusy) { return; } IsBusy = true; ItemsFilterCommand.ChangeCanExecute(); try { ListCompletedItems = !ListCompletedItems; //The default value of ListCompletedItems is false Title = ListCompletedItems ? HACCPUtil.GetResourceString("ReviewItem") : HACCPUtil.GetResourceString("SelectItem"); NoItemFoundText = ListCompletedItems ? HACCPUtil.GetResourceString("Noitemsfoundtoreview") : HACCPUtil.GetResourceString("Noitemsfound"); var items = _dataStore.GetItems(LocationId, ListCompletedItems); var filteredItems = new List <LocationMenuItem>(); if (ListCompletedItems && items != null) { foreach (var item in items) { var record = _dataStore.GetTemperatureRecordById(item.ItemId, item.LocationId); var temp = HACCPUtil.ConvertToDouble(record.Temperature); if (item.RecordStatus == 1 && record.IsNA == 0 && temp < HACCPUtil.ConvertToDouble(item.Min) || temp > HACCPUtil.ConvertToDouble(item.Max)) { filteredItems.Add(item); } } items = filteredItems; } Items = new ObservableCollection <LocationMenuItem>(items); HasItems = Items.Any(); OnPropertyChanged("Items"); } catch { // ignored } finally { IsBusy = false; ItemsFilterCommand.ChangeCanExecute(); } }
/// <summary> /// Loads the questions. /// </summary> public async Task LoadQuestions(bool isFilterStatus) { isFilter = isFilterStatus; Title = HACCPUtil.GetResourceString("SelectQuestion"); if (isFilter) { Title = HACCPUtil.GetResourceString("ReviewChecklist"); } var questionLIst = dataStore.GetQuestions(SelectedCategoryId, isFilter); var filteredList = new List <Question>(); if (isFilter) { foreach (var question in questionLIst) { var response = dataStore.GetChecklistResponseById(question.QuestionId); if ((question.QuestionType == (short)QuestionType.YesOrNo && response.Answer == HACCPUtil.GetResourceString("No")) || (question.QuestionType != (short)QuestionType.YesOrNo && (HACCPUtil.ConvertToDouble(response.Answer) < HACCPUtil.ConvertToDouble(question.Min) || HACCPUtil.ConvertToDouble(response.Answer) > HACCPUtil.ConvertToDouble(question.Max)))) { filteredList.Add(question); } } questionLIst = filteredList; } isFilter = !isFilter; Questions = new ObservableCollection <Question>(questionLIst); if (Questions.Count == 0) { if (isFilterStatus) { //this.page.ShowAlert ("", AppResources.Noquestionsfound); IsQuestionExists = true; //LoadQuestions (!isFilterStatus); } else { IsQuestionExists = false; await Page.ShowAlert(string.Empty, HACCPUtil.GetResourceString("Noquestionsfound")); await Page.PopPage(); } } }
/// <summary> /// Initializes a new instance of the <see cref="HACCP.Core.RecordItemCompleteViewModel" /> class. /// </summary> /// <param name="page">Page.</param> /// <param name="item">Item.</param> public RecordItemCompleteViewModel(IPage page, object item) : base(page) { dataStore = new SQLiteDataStore(); SelectedItem = item as LocationMenuItem; if (SelectedItem != null) { NoteText = SelectedItem.Note; TemperatureUnit = SelectedItem.TemperatureUnit; TemperatureValue = HACCPUtil.ConvertToDouble(SelectedItem.RecordedTemperature); Temperature = TemperatureValue.ToString("0.0"); itemTemperature = dataStore.GetItemTemperature(SelectedItem); } LoadCorrectiveActions(); }
/// <summary> /// Reads the temperature value. /// </summary> /// <param name="characteristic">Characteristic.</param> /// <param name="measurementTiming">Measurement timing.</param> public void ReadTemperatureValue(ICharacteristic characteristic, int measurementTiming) { // read the ascii value at measurement timing interval Device.StartTimer(new TimeSpan(0, 0, 0, 0, measurementTiming), () => { if (StopTemperatureReading) { return(false); } Task.Factory.StartNew(async() => { try { var val = await characteristic.ReadAsync(); var temperatureString = val.StringValue.Replace(" ", string.Empty); //eg value: 28.4�C IsHigh = IsLow = IsSleeping = IsBatteryLow = false; Debug.WriteLine("Temperature String:{0}", temperatureString); if (!string.IsNullOrEmpty(temperatureString)) { if (temperatureString.ToLower() == HaccpConstant.Blue2SleepStateValue) { IsSleeping = true; MessagingCenter.Send(new BleTemperatureReadingMessage { IsSleeping = true }, HaccpConstant.BletemperatureReading); Debug.WriteLine("Blue2 device in light sleep mode..."); } else if (temperatureString.ToLower().Contains(HaccpConstant.Blue2HighStateValue)) { IsHigh = true; MessagingCenter.Send(new BleTemperatureReadingMessage { IsHigh = true }, HaccpConstant.BletemperatureReading); Debug.WriteLine("Blue2 temperarture reading is high..."); } else if (temperatureString.ToLower().Contains(HaccpConstant.Blue2LowStateValue)) { IsLow = true; MessagingCenter.Send(new BleTemperatureReadingMessage { IsLow = true }, HaccpConstant.BletemperatureReading); Debug.WriteLine("Blue2 temperarture reading is low..."); } else if (temperatureString.ToLower().Contains(HaccpConstant.Blue2BatteryLowState)) { IsBatteryLow = true; MessagingCenter.Send(new BleTemperatureReadingMessage { IsBatteryLow = true }, HaccpConstant.BletemperatureReading); Debug.WriteLine("Blue2 device battery is low..."); } else if (temperatureString.Length > 2) { IsHigh = IsLow = IsSleeping = IsBatteryLow = false; var lastchar = temperatureString [temperatureString.Length - 1]; //last character will be 'S' if blue2 button press string temperature; short unit; bool shouldRecord; if (lastchar == 'S') { // if last char is 'S' the temperature should be automatically record temperature = temperatureString.Substring(0, temperatureString.Length - 3); // remove the last 2 character to obtain the actual value unit = temperatureString [temperatureString.Length - 2].ToString().ToUpper() == "C" ? (short)0 : (short)1; shouldRecord = true; } else { temperature = temperatureString.Substring(0, temperatureString.Length - 2); // remove the last 2 character to obtain the actual value unit = temperatureString [temperatureString.Length - 1].ToString().ToUpper() == "C" ? (short)0 : (short)1; shouldRecord = false; } var doublevalue = HACCPUtil.ConvertToDouble(temperature); LastReading = doublevalue; LastUnit = unit == (short)0 ? TemperatureUnit.Celcius : TemperatureUnit.Fahrenheit; MessagingCenter.Send(new BleTemperatureReadingMessage { TempUnit = unit, TempValue = doublevalue, ShouldRecord = shouldRecord }, HaccpConstant.BletemperatureReading); GotTemperartureReading = true; } } } catch (Exception ex) { Debug.WriteLine("Error occured while reading temperature characteristics {0}", ex.Message); } }); return(IsConnected); }); }
/// <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> /// GlobalSettings_GotTemperatureReading /// </summary> /// <param name="sender"></param> /// <param name="val"></param> private void GlobalSettings_GotTemperatureReading(object sender, string val) { try { if (!HasAnyPairedDevice) { return; } var temperatureString = val.Replace(" ", string.Empty); //eg value: 28.4�C IsHigh = IsLow = IsSleeping = IsBatteryLow = false; Debug.WriteLine("Temperature String:{0}", temperatureString); if (!string.IsNullOrEmpty(temperatureString)) { if (temperatureString.ToLower() == HaccpConstant.Blue2SleepStateValue) { IsSleeping = true; MessagingCenter.Send(new BleTemperatureReadingMessage { IsSleeping = true }, HaccpConstant.BletemperatureReading); Debug.WriteLine("Blue2 device in light sleep mode..."); } else if (temperatureString.ToLower().Contains(HaccpConstant.Blue2HighStateValue)) { IsHigh = true; MessagingCenter.Send(new BleTemperatureReadingMessage { IsHigh = true }, HaccpConstant.BletemperatureReading); Debug.WriteLine("Blue2 temperarture reading is high..."); } else if (temperatureString.ToLower().Contains(HaccpConstant.Blue2LowStateValue)) { IsLow = true; MessagingCenter.Send(new BleTemperatureReadingMessage { IsLow = true }, HaccpConstant.BletemperatureReading); Debug.WriteLine("Blue2 temperarture reading is low..."); } else if (temperatureString.ToLower().Contains(HaccpConstant.Blue2BatteryLowState)) { IsBatteryLow = true; MessagingCenter.Send(new BleTemperatureReadingMessage { IsBatteryLow = true }, HaccpConstant.BletemperatureReading); Debug.WriteLine("Blue2 device battery is low..."); } else if (temperatureString.Length > 2) { IsHigh = IsLow = IsSleeping = IsBatteryLow = false; var lastchar = temperatureString[temperatureString.Length - 1]; //last character will be 'S' if blue2 button press string temperature; short unit; bool shouldRecord; if (lastchar == 'S') { // if last char is 'S' the temperature must be automatically record temperature = temperatureString.Substring(0, temperatureString.Length - 3); // remove the last 2 character to obtain the actual value unit = temperatureString[temperatureString.Length - 2].ToString().ToUpper() == "C" ? (short)0 : (short)1; shouldRecord = true; } else { temperature = temperatureString.Substring(0, temperatureString.Length - 2); // remove the last 2 character to obtain the actual value unit = temperatureString[temperatureString.Length - 1].ToString().ToUpper() == "C" ? (short)0 : (short)1; shouldRecord = false; } var doublevalue = HACCPUtil.ConvertToDouble(temperature); LastReading = doublevalue; LastUnit = unit == (short)0 ? TemperatureUnit.Celcius : TemperatureUnit.Fahrenheit; MessagingCenter.Send(new BleTemperatureReadingMessage { TempUnit = unit, TempValue = doublevalue, ShouldRecord = shouldRecord }, HaccpConstant.BletemperatureReading); GotTemperartureReading = true; } } } catch (Exception ex) { Debug.WriteLine("Error occured while reading temperature characteristics {0}", ex.Message); } }
/// <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(); } }
/// <summary> /// Executes the save command. /// </summary> /// <returns>The save command.</returns> protected override async Task ExecuteSaveCommand() { if (IsBusy) { return; } try { IsBusy = true; SaveCommand.ChangeCanExecute(); if (string.IsNullOrEmpty(Answer) && !IsYesNo) { Answer = string.Empty; Page.DisplayAlertMessage(HACCPUtil.GetResourceString("RecordAnswer"), HACCPUtil.GetResourceString("Specifyanumericvalue")); } else if (SelectedCorrectiveAction == HACCPUtil.GetResourceString("None")) { if ((IsYesNo && Answer != HACCPUtil.GetResourceString("Yes")) || (!IsYesNo && (HACCPUtil.ConvertToDouble(Answer) < HACCPUtil.ConvertToDouble(RecordResponse.Min) || HACCPUtil.ConvertToDouble(Answer) > HACCPUtil.ConvertToDouble(RecordResponse.Max)))) { CorrectiveActions = new ObservableCollection <CorrectiveAction>( dataStore.GetCorrectiveActionForQuestion(RecordResponse.QuestionId)); if (CorrectiveActions != null && CorrectiveActions.Count > 0) { IsCorrctiveOptionsVisible = true; } else if ( await Page.ShowConfirmAlert(HACCPUtil.GetResourceString("RecordAnswer"), string.Format( HACCPUtil.GetResourceString("RecordedAnswer01CorrectiveActiontaken2"), Answer, Environment.NewLine, SelectedCorrectiveAction == string.Empty ? HACCPUtil.GetResourceString("None") : SelectedCorrectiveAction))) { SaveAnswer(); } } else { if (RecordResponse.QuestionType == (short)QuestionType.NumericAnswer) { try { var answerVal = HACCPUtil.ConvertToDouble(Answer); Answer = answerVal.ToString(); } catch { Page.ShowAlert(string.Empty, HACCPUtil.GetResourceString("Specifyavalidanswer")); return; } } if ( await Page.ShowConfirmAlert(HACCPUtil.GetResourceString("RecordAnswer"), string.Format( HACCPUtil.GetResourceString("RecordedAnswer01CorrectiveActiontaken2"), Answer, Environment.NewLine, SelectedCorrectiveAction == string.Empty ? HACCPUtil.GetResourceString("None") : SelectedCorrectiveAction))) { SaveAnswer(); } } } else { if (RecordResponse.QuestionType == (short)QuestionType.NumericAnswer) { try { var answerVal = HACCPUtil.ConvertToDouble(Answer); Answer = answerVal.ToString(); } catch { Page.ShowAlert(string.Empty, HACCPUtil.GetResourceString("Specifyavalidanswer")); return; } } if ( await Page.ShowConfirmAlert(HACCPUtil.GetResourceString("RecordAnswer"), string.Format(HACCPUtil.GetResourceString("RecordedAnswer01CorrectiveActiontaken2"), Answer, Environment.NewLine, SelectedCorrectiveAction == string.Empty ? HACCPUtil.GetResourceString("None") : SelectedCorrectiveAction))) { SaveAnswer(); } } } catch (Exception ex) { Debug.WriteLine("Ooops! Something went wrong. Exception: {0}", ex); } finally { IsBusy = false; SaveCommand.ChangeCanExecute(); } }