Пример #1
0
        /// <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;
        }
Пример #2
0
        /// <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();
            }
        }
Пример #3
0
        /// <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); });
            }
        }
Пример #4
0
        /// <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();
            }
        }
Пример #5
0
        /// <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();
                }
            }
        }
Пример #6
0
 /// <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();
 }
Пример #7
0
        /// <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);
            });
        }
Пример #8
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);
            }
        }
Пример #9
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);
            });
        }
Пример #10
0
        /// <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);
            }
        }
Пример #11
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();
            }
        }
Пример #12
0
        /// <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();
            }
        }