/// <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;
        }
Example #2
0
        /// <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;
            }
        }
Example #3
0
        /// <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);
            }
        }
Example #4
0
        /// <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);
            });
        }
Example #5
0
        /// <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();
            }
        }