public CashDispenseResultNewViewModel()
        {
            Task.Run(async() =>
            {
                var cashDispenseResult             = new CashDispenseResult();
                cashDispenseResult.CashDispenseDue = await base.CashDispenseDueCloudDataStore.GetItemAsync();

                cashDispenseResult.CashHandedOver = new Cash();
                cashDispenseResult.CashHandedOver.Denomination = cashDispenseResult.CashDispenseDue.AmountOwed.Denomination;

                this.NewCashDispenseResult = cashDispenseResult;
            });
        }
        private static decimal Calc(decimal number, string denomination, CashDispenseResult cashDispenseResult, decimal runningDifference)
        {
            var randNoteResults = runningDifference / number;

            if (randNoteResults >= 1)
            {
                ChangeResult changeResult = new ChangeResult();

                changeResult.Cash = new Cash();
                changeResult.Cash.Denomination = denomination;
                changeResult.Cash.Number       = number.ToString();
                changeResult.Quantity          = (short)(Math.Abs(randNoteResults));

                cashDispenseResult.ChangeResults.Add(changeResult);

                runningDifference -= (decimal)changeResult.Quantity * number;
            }

            return(runningDifference);
        }
Example #3
0
        public async Task <bool> AddItemAsync(CashDispenseResult item)
        {
            if (item == null || !CrossConnectivity.Current.IsConnected)
            {
                return(false);
            }

            JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings();

            jsonSerializerSettings.ObjectCreationHandling         = ObjectCreationHandling.Replace;
            jsonSerializerSettings.TypeNameHandling               = TypeNameHandling.All;
            jsonSerializerSettings.TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple;
            jsonSerializerSettings.Formatting = Formatting.Indented;

            jsonSerializerSettings.FloatFormatHandling = FloatFormatHandling.String;

            var serializedItem = JsonConvert.SerializeObject(item, item.GetType(), jsonSerializerSettings);

            var response = await client.PostAsync($"api/CashDispenseResult", new StringContent(serializedItem, Encoding.UTF8, "application/json"));

            return(response.IsSuccessStatusCode ? true : false);
        }
        public IActionResult PostCashDispenseResult([FromBody] CashDispenseResult cashDispenseResult)
        {
            if (decimal.Parse(cashDispenseResult.CashHandedOver.Number) < decimal.Parse(cashDispenseResult.CashDispenseDue.AmountOwed.Number))
            {
                return(BadRequest("The amount you are paying is less than the amount owed"));
            }

            //CashDispenseResult cashDispenseResult = new CashDispenseResult();

            var difference = decimal.Parse(cashDispenseResult.CashHandedOver.Number) - decimal.Parse(cashDispenseResult.CashDispenseDue.AmountOwed.Number);

            var runningDifference = difference;

            if (runningDifference > 0)
            {
                runningDifference = Calc(100.00m, "R", cashDispenseResult, runningDifference);
            }

            if (runningDifference > 0)
            {
                runningDifference = Calc(50.00m, "R", cashDispenseResult, runningDifference);
            }

            if (runningDifference > 0)
            {
                runningDifference = Calc(20.00m, "R", cashDispenseResult, runningDifference);
            }

            if (runningDifference > 0)
            {
                runningDifference = Calc(10.00m, "R", cashDispenseResult, runningDifference);
            }

            if (runningDifference > 0)
            {
                runningDifference = Calc(5.00m, "R", cashDispenseResult, runningDifference);
            }

            if (runningDifference > 0)
            {
                runningDifference = Calc(2.00m, "R", cashDispenseResult, runningDifference);
            }

            if (runningDifference > 0)
            {
                runningDifference = Calc(1.00m, "R", cashDispenseResult, runningDifference);
            }

            if (runningDifference > 0)
            {
                runningDifference = Calc(0.50m, "cents", cashDispenseResult, runningDifference);
            }

            if (runningDifference > 0)
            {
                runningDifference = Calc(0.20m, "cents", cashDispenseResult, runningDifference);
            }

            if (runningDifference > 0)
            {
                runningDifference = Calc(0.25m, "cents", cashDispenseResult, runningDifference);
            }

            if (runningDifference > 0)
            {
                runningDifference = Calc(0.10m, "cents", cashDispenseResult, runningDifference);
            }

            if (runningDifference > 0)
            {
                runningDifference = Calc(0.05m, "cents", cashDispenseResult, runningDifference);
            }

            _cashDispenseResultRepository.Add(cashDispenseResult);

            return(Ok(cashDispenseResult));
        }