示例#1
0
        private async Task SaveBasePrices()
        {
            try
            {
                DisableControls();
                Caption = ApplicationConstants.SettingInProgress;
                ErrorMessageWithCaption response;
                if (IsGrouped)
                {
                    response = await _fuelPumpBusinessLogic.SaveGroupBasePrices(FuelPrices.ToEntity());
                }
                else
                {
                    response = await _fuelPumpBusinessLogic.SaveBasePrices(FuelPrices.ToEntity());
                }
                PrepareCaptions(response);

                await PerformPrint(new List <Report> {
                    response.PriceReport, response.FuelPriceReport
                });
            }
            // Catching here to reset Captions in case when any popus is generated
            catch (Exception)
            {
                Caption = Caption2 = string.Empty;
                EnableControls();
                throw;
            }
        }
示例#2
0
        private async Task SavePrices()
        {
            try
            {
                if (IsGrouped)
                {
                    var success = await _fuelPumpBusinessLogic.VerifyGroupBasePrices(FuelPrices.ToEntity());

                    if (success)
                    {
                        // Don't need to wait on Fuel prices page
                        if (!CacheBusinessLogic.StayOnFuelPricePage)
                        {
                            NavigateService.Instance.NavigateToHome();
                            if (CacheBusinessLogic.IsFuelOnlySystem)
                            {
                                MessengerInstance.Send <FuelOnlySystemMessage>(new FuelOnlySystemMessage());
                            }
                            SaveBasePrices();
                        }
                        else
                        {
                            await SaveBasePrices();
                        }
                    }
                }
                else
                {
                    var success = await _fuelPumpBusinessLogic.VerifyBasePrices(FuelPrices.ToEntity());

                    if (success)
                    {
                        await SaveBasePrices();
                    }
                }
            }
            catch (PumpsOfflineException ex)
            {
                _log.Info(ex.Message, ex);
                ShowConfirmationMessage(ex.Message,
                                        async() => { await SaveBasePrices(); });
            }
            catch (SwitchUserException ex)
            {
                _log.Info(ex.Message, ex);
                ShowNotification(ex.Error.Message,
                                 SwitchUserAndSavePrices,
                                 null,
                                 ApplicationConstants.ButtonWarningColor);
            }
            catch (ApiDataException ex)
            {
                _log.Info(ex.Message, ex);
                ShowNotification(ex.Message, null, null, ApplicationConstants.ButtonWarningColor);
            }
            catch (Exception ex)
            {
                _log.Info(ex.Message, ex);
            }
        }
        public SaveBasePricesSerializeAction(IFuelPumpRestClient fuelPumpRestClient,
                                             ICacheManager cacheManager, FuelPrices prices) : base("SaveBasePrices")
        {
            _fuelPumpRestClient = fuelPumpRestClient;
            _cacheManager       = cacheManager;

            _contract = new FuelPricesContract
            {
                isReadTotalizerChecked   = prices.IsReadTotalizerChecked,
                isPricesToDisplayChecked = prices.IsPricesToDisplayChecked,
                isReadTankDipChecked     = prices.IsReadTankDipChecked,
                tillNumber = _cacheManager.TillNumberForSale,
                fuelPrices = (from f in prices.Prices
                              select new FuelPriceContract
                {
                    cashPrice = f.CashPrice,
                    creditPrice = f.CreditPrice,
                    grade = f.Grade,
                    gradeId = f.GradeId,
                    level = f.Level,
                    levelId = f.LevelId,
                    taxExemptedCashPrice = f.TaxExemptedCashPrice,
                    taxExemptedCreditPrice = f.TaxExemptedCreditPrice,
                    tier = f.Tier,
                    tierId = f.TierId,
                    row = f.Row
                }).ToList()
            };
        }
        public async Task <bool> VerifyGroupBasePrices(FuelPrices fuelPrices)
        {
            var action = new VerifyGroupBasePricesSerializeAction(_fuelPumpRestClient, _cacheManager, fuelPrices);

            await PerformTask(action);

            return((bool)action.ResponseValue);
        }
        public async Task <ErrorMessageWithCaption> SaveGroupBasePrices(FuelPrices fuelPrices)
        {
            var action = new SaveGroupBasePricesSerializeAction(_fuelPumpRestClient, _cacheManager, fuelPrices);

            await PerformTask(action);

            return((ErrorMessageWithCaption)action.ResponseValue);
        }
示例#6
0
 private void SetPostPay(SetPostPayMessage obj)
 {
     _setPostPayMessage       = obj;
     _bottleReturnSale        = null;
     _isVoidSaleToBeCompleted = false;
     _lineNumberToBeDeleted   = 0;
     _fuelPrices = null;
     _pumpId     = 0;
 }
 public VerifyGroupBasePricesSerializeAction(IFuelPumpRestClient fuelPumpRestClient,
                                             ICacheManager cacheManager,
                                             FuelPrices fuelPrices)
     : base("VerifyGroupBasePrices")
 {
     _fuelPumpRestClient = fuelPumpRestClient;
     _cacheManager       = cacheManager;
     _fuelPrices         = fuelPrices;
 }
示例#8
0
 private void SwitchUserAndSavePrices()
 {
     CacheBusinessLogic.FramePriorSwitchUserNavigation = "SaveFuelPrices";
     NavigateService.Instance.NavigateToLogout();
     MessengerInstance.Send(new SaveFuelPricesMessage
     {
         FuelPrices = FuelPrices.ToEntity()
     });
 }
示例#9
0
 private void SendToVoidSaleOnSwitchUser(Reasons reasons)
 {
     _fuelPrices              = null;
     _bottleReturnSale        = null;
     _isVoidSaleToBeCompleted = true;
     _lineNumberToBeDeleted   = 0;
     _pumpId            = 0;
     _setPostPayMessage = null;
 }
示例#10
0
 private void SendToDeleteSaleLineOnSwitchUser(int saleLine)
 {
     _fuelPrices              = null;
     _bottleReturnSale        = null;
     _isVoidSaleToBeCompleted = false;
     _lineNumberToBeDeleted   = saleLine;
     _pumpId            = 0;
     _setPostPayMessage = null;
 }
示例#11
0
 private void SaveFuelPrices(SaveFuelPricesMessage message)
 {
     _fuelPrices              = message?.FuelPrices;
     _bottleReturnSale        = null;
     _isVoidSaleToBeCompleted = false;
     _lineNumberToBeDeleted   = 0;
     _pumpId            = 0;
     _setPostPayMessage = null;
 }
示例#12
0
 private void AddManualFuel(AddManualFuelMessage obj)
 {
     _bottleReturnSale        = null;
     _isVoidSaleToBeCompleted = false;
     _lineNumberToBeDeleted   = 0;
     _fuelPrices        = null;
     _pumpId            = obj.PumpId;
     _setPostPayMessage = null;
 }
示例#13
0
        private async void CompleteSaveFuelPrices(FuelPrices prices)
        {
            FuelPrices = prices.ToModel();
            await SavePrices();

            CacheBusinessLogic.FramePriorSwitchUserNavigation = string.Empty;
            CacheBusinessLogic.AuthKey = CacheBusinessLogic.PreviousAuthKey;
            MessengerInstance.Send(false, "LoadAllPolicies");
        }
示例#14
0
 private void SendToBottleReturnOnSaleComplete(BottleReturnSaleModel sale)
 {
     // TODO: Ipsit - Not the proper way of injecting the Bottle return dependency
     // in the code for messenging
     _bottleReturnSale        = sale;
     _isVoidSaleToBeCompleted = false;
     _lineNumberToBeDeleted   = 0;
     _fuelPrices        = null;
     _pumpId            = 0;
     _setPostPayMessage = null;
 }
 public async Task <ErrorMessageWithCaption> SaveGroupBasePrices(FuelPrices fuelPrices)
 {
     try
     {
         _cacheBusinessLogic.AreFuelPricesSaved = false;
         return(await _fuelPumpSerializeManager.SaveGroupBasePrices(fuelPrices));
     }
     finally
     {
         _cacheBusinessLogic.AreFuelPricesSaved = true;
     }
 }
示例#16
0
        public static FuelPricesModel ToModel(this FuelPrices prices)
        {
            if (prices == null)
            {
                return(null);
            }

            return(new FuelPricesModel
            {
                Prices = new ObservableCollection <FuelPriceModel>
                             (from p in prices.Prices
                             select new FuelPriceModel
                {
                    Row = p.Row,
                    CashPrice = p.CashPrice,
                    CreditPrice = p.CreditPrice,
                    Grade = p.Grade,
                    GradeId = p.GradeId,
                    Level = p.Level,
                    LevelId = p.LevelId,
                    TaxExemptedCashPrice = p.TaxExemptedCashPrice,
                    TaxExemptedCreditPrice = p.TaxExemptedCreditPrice,
                    Tier = p.Tier,
                    TierId = p.TierId
                }),
                IsGrouped = prices.IsGrouped,
                Report = prices.Report.ReportContent,
                CanReadTotalizer = prices.CanReadTotalizer,
                CanSelectPricesToDisplay = prices.CanSelectPricesToDisplay,
                Caption = prices.Caption,
                IsCashPriceEnabled = prices.IsCashPriceEnabled,
                IsCreditPriceEnabled = prices.IsCreditPriceEnabled,
                IsErrorEnabled = prices.IsErrorEnabled,
                IsExitEnabled = prices.IsExitEnabled,
                IsPricesToDisplayChecked = prices.IsPricesToDisplayChecked,
                IsPricesToDisplayEnabled = prices.IsPricesToDisplayEnabled,
                IsReadTankDipChecked = prices.IsReadTankDipChecked,
                IsReadTankDipEnabled = prices.IsReadTankDipEnabled,
                IsReadTotalizerChecked = prices.IsReadTotalizerChecked,
                IsReadTotalizerEnabled = prices.IsReadTotalizerEnabled,
                IsTaxExemptedCashPriceEnabled = prices.IsTaxExemptedCashPriceEnabled,
                IsTaxExemptedCreditPriceEnabled = prices.IsTaxExemptedCreditPriceEnabled,
                IsTaxExemptionVisible = prices.IsTaxExemptionVisible,
            });
        }
示例#17
0
        /// <summary>
        /// Method to switch user
        /// </summary>
        /// <returns></returns>
        private async Task SwitchUser()
        {
            var startTime = DateTime.Now;

            IsSwitchUserStarted = true;
            SwitchUserStartTime = DateTime.Now;
            try
            {
                var flag = IsSwitchUserInitiatedForUnathorizedAccess();

                var response = await _logoutBussinesslogic.SwitchUserAsync(UserName, Password, flag);

                _invalidLoginAttempts = 0;
                // TODO: Move code of saving auth key to BL

                // TODO: If user closes without Switch user then it will create issue
                CacheBusinessLogic.AuthKey = response;

                switch (CacheBusinessLogic.FramePriorSwitchUserNavigation)
                {
                case "Reports":
                case "PaymentByFleet":
                case "PaymentByAccount":
                case "SwitchUserToCashDraw":
                    NavigateService.Instance.RedirectToHome();
                    MessengerInstance.Send(new CloseKeyboardMessage());
                    break;

                case "PerformManualSale":
                    MessengerInstance.Send(false, "LoadAllPolicies");
                    await Task.Delay(1000);

                    NavigateService.Instance.RedirectToHome();
                    NavigateService.Instance.NavigateToManualFuelSale();
                    MessengerInstance.Send(new FuelManualPumpMessage
                    {
                        PumpId = _pumpId
                    });
                    break;

                default:
                {
                    MessengerInstance.Send(false, "LoadAllPolicies");
                    if (_lineNumberToBeDeleted != 0)
                    {
                        MessengerInstance.Send(_lineNumberToBeDeleted, "CompleteDeleteSaleLine");
                        _lineNumberToBeDeleted = 0;
                    }
                    else if (_bottleReturnSale != null)
                    {
                        MessengerInstance.Send(_bottleReturnSale, "CompleteBottleReturn");
                        _bottleReturnSale = null;
                    }
                    else if (_isVoidSaleToBeCompleted)
                    {
                        MessengerInstance.Send(_isVoidSaleToBeCompleted, "CompleteVoidSale");
                        _isVoidSaleToBeCompleted = false;
                    }
                    else if (_fuelPrices != null)
                    {
                        MessengerInstance.Send(_fuelPrices);
                        _fuelPrices = null;
                    }
                    else if (_setPostPayMessage != null)
                    {
                        MessengerInstance.Send(_setPostPayMessage.Value, "SetPostPay");
                        _setPostPayMessage = null;
                    }
                }
                    NavigateService.Instance.RedirectToHome();
                    MessengerInstance.Send(new CloseKeyboardMessage());
                    break;
                }
            }
            catch (ApiDataException ex)
            {
                if (ex.Message.Contains("Invalid  Password") ||
                    ex.Message.Contains("No Such User"))
                {
                    if (++_invalidLoginAttempts == MaxInvalidAttemps)
                    {
                        ShowNotification(ApplicationConstants.MaxLoginAttemptsReached,
                                         ShutDownApplication, ShutDownApplication,
                                         ApplicationConstants.ButtonWarningColor);
                        return;
                    }
                }

                ShowNotification(ex.Message, ReInitialize, ReInitialize,
                                 ApplicationConstants.ButtonWarningColor);
            }
            finally
            {
                var endTime = DateTime.Now;
                if (IsSwitchUserStarted)
                {
                    OperationsCompletedInSwitchUser++;
                }
            }
        }
示例#18
0
        public void CompressedNaturalGas()
        {
            var result = FuelPrices.CompressedNaturalGas();

            Assert.IsNotNull(result);
        }
 public async Task <bool> VerifyGroupBasePrices(FuelPrices fuelPrices)
 {
     return(await _fuelPumpSerializeManager.VerifyGroupBasePrices(fuelPrices));
 }
示例#20
0
        private void SetPrice(FuelPriceModel fuelPrice)
        {
            if (fuelPrice == null)
            {
                return;
            }

            try
            {
                Convert.ToDecimal(fuelPrice.CashPrice, CultureInfo.InvariantCulture);
                Convert.ToDecimal(fuelPrice.CreditPrice, CultureInfo.InvariantCulture);
                if (FuelPrices.IsTaxExemptionVisible)
                {
                    if (fuelPrice.TaxExemptedCashPrice != "N/A")
                    {
                        Convert.ToDecimal(fuelPrice.TaxExemptedCashPrice, CultureInfo.InvariantCulture);
                    }
                    if (fuelPrice.TaxExemptedCreditPrice != "N/A")
                    {
                        Convert.ToDecimal(fuelPrice.TaxExemptedCreditPrice, CultureInfo.InvariantCulture);
                    }
                }
            }
            catch (Exception ex)
            {
                // Eating exception when prices are not in correct format
                return;
            }

            PerformAction(async() =>
            {
                if (IsGrouped)
                {
                    var reponse       = await _fuelPumpBusinessLogic.SetGroupBasePrice(FuelPrices.ToEntity().Prices, fuelPrice.Row);
                    FuelPrices.Prices = reponse.ToModel().Prices;
                    FuelPrices.Report = reponse?.Report.ReportContent;
                }
                else
                {
                    var reponse = await _fuelPumpBusinessLogic.SetBasePrice(fuelPrice.ToEntity());
                    var model   = reponse?.ToModel();
                    var price   = FuelPrices.Prices.FirstOrDefault(x => x.GradeId == model?.GradeId &&
                                                                   x.TierId == model?.TierId && x.LevelId == model?.LevelId);
                    var index = FuelPrices.Prices.IndexOf(price);
                    if (index != -1)
                    {
                        FuelPrices.Prices[index] = model;
                    }
                }
            });
        }
示例#21
0
        public void Diesel()
        {
            var result = FuelPrices.Diesel();

            Assert.IsNotNull(result);
        }
示例#22
0
        public void E85()
        {
            var result = FuelPrices.E85();

            Assert.IsNotNull(result);
        }
示例#23
0
        public void Regular()
        {
            var result = FuelPrices.Regular();

            Assert.IsNotNull(result);
        }
示例#24
0
        public void Premium()
        {
            var result = FuelPrices.Premium();

            Assert.IsNotNull(result);
        }
示例#25
0
        public void Midgrade()
        {
            var result = FuelPrices.Midgrade();

            Assert.IsNotNull(result);
        }
示例#26
0
        public void LPG()
        {
            var result = FuelPrices.LPG();

            Assert.IsNotNull(result);
        }
示例#27
0
        public void Electric()
        {
            var result = FuelPrices.Electric();

            Assert.IsNotNull(result);
        }