예제 #1
0
        /// <summary>
        /// Method to create cash draw model
        /// </summary>
        /// <param name="cashDrawButtons">Cash draw buttons</param>
        /// <returns>Cash draw button response</returns>
        private CashDrawButtonsResponseModel GetCashDrawModel(CashDrawButton cashDrawButtons)
        {
            var response = new CashDrawButtonsResponseModel();

            foreach (var coin in cashDrawButtons.Coins)
            {
                response.Coins.Add(new CashModel
                {
                    CurrencyName = coin.CurrencyName,
                    Value        = coin.Value,
                    Image        = coin.Image
                });
            }

            foreach (var bill in cashDrawButtons.Bills)
            {
                response.Bills.Add(new CashModel
                {
                    CurrencyName = bill.CurrencyName,
                    Value        = bill.Value,
                    Image        = bill.Image
                });
            }

            return(response);
        }
예제 #2
0
        /// <summary>
        /// Method to get cash draw buttons
        /// </summary>
        /// <returns>Cash draw buttons</returns>
        public CashDrawButton GetCashDrawButtons(string userCode, out ErrorMessage error)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,CashManager,GetCashDrawButtons,{string.Empty},{dateStart:hh.mm.ss.ffffff}");
            var offSet = _policyManager.LoadStoreInfo().OffSet;

            error = new ErrorMessage();
            var user = _loginManager.GetExistingUser(userCode);

            if (!Convert.ToBoolean(_policyManager.GetPol("U_TILLDRAW", user)))
            {
                MessageType temp_VbStyle3 = (int)MessageType.Exclamation + MessageType.OkOnly;
                error.MessageStyle = _resourceManager.CreateMessage(offSet, 38, 56, null, temp_VbStyle3);
                error.StatusCode   = System.Net.HttpStatusCode.Forbidden;
                _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
                return(null);
            }

            var cashDrawButton = new CashDrawButton
            {
                Coins = _cashService.GetCoins(),
                Bills = _cashService.GetBills()
            };

            _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

            return(cashDrawButton);
        }
예제 #3
0
        /// <summary>
        /// Method to validate coins
        /// </summary>
        /// <param name="cashDraw">Cash draw</param>
        /// <param name="isInvalidCash">Is valid cash or not</param>
        /// <param name="isInvalidQuantity">Is valid quantity</param>
        /// <param name="cashDrawButtons">cash drae buttons</param>
        private void ValidateCoins(CashDrawButton cashDraw, ref bool isInvalidCash, ref bool
                                   isInvalidQuantity, CashDrawButton cashDrawButtons)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,CashManager,GetCashDrawButtons,{string.Empty},{dateStart:hh.mm.ss.ffffff}");

            foreach (var coin in cashDraw.Coins)
            {
                if (!cashDrawButtons.Coins.Any(c => c.CurrencyName == coin.CurrencyName &&
                                               c.Value == coin.Value))
                {
                    isInvalidCash = true;
                    break;
                }
                if (coin.Quantity < 1 && coin.Quantity > 99)
                {
                    isInvalidQuantity = true;
                    break;
                }
            }
            _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
        }
예제 #4
0
        public HttpResponseMessage CompleteCashDraw([FromBody] CashDrawButton cashDraw)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,CashController,CompleteCashDraw,{string.Empty},{dateStart:hh.mm.ss.ffffff}");
            string userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            if (cashDraw == null)
            {
                return(Request.CreateResponse(
                           HttpStatusCode.BadRequest,
                           new ErrorResponse
                {
                    Error = new MessageStyle {
                        Message = Constants.InvalidRequest, MessageType = 0
                    }
                }));
            }
            ErrorMessage error;
            int          copies;
            var          fs = _cashManager.CompleteCashDraw(cashDraw, userCode, out copies, out error);

            if (!string.IsNullOrEmpty(error.MessageStyle.Message))
            {
                _performancelog.Debug(
                    $"End,CashController,CompleteCashDraw,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(Request.CreateResponse(HttpStatusCode.BadRequest,
                                              new ErrorResponse
                {
                    Error = error.MessageStyle,
                }));
            }
            try
            {
                var content         = Helper.CreateBytes(fs);
                var cashDrawReceipt = new ReportModel
                {
                    ReportName    = Constants.CashDrawFile,
                    ReportContent = content,
                    Copies        = copies
                };
                _performancelog.Debug(
                    $"End,CashController,CompleteCashDraw,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(Request.CreateResponse(HttpStatusCode.OK, cashDrawReceipt));
            }
            catch
            {
                _performancelog.Debug(
                    $"End,CashController,CompleteCashDraw,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(Request.CreateResponse(HttpStatusCode.NotFound, new ErrorResponse
                {
                    Error = new MessageStyle {
                        Message = Resource.Error, MessageType = 0
                    }
                }));
            }
        }
예제 #5
0
        // code moved to cash bonus controller
        ///// <summary>
        ///// Method to get cash draw buttons
        ///// </summary>
        ///// <returns>Cash draw buttons</returns>
        //public CashDrawButton GetCashBonusDrawButtons(string userCode, out ErrorMessage error)
        //{
        //    var dateStart = DateTime.Now;
        //    _performancelog.Debug($"Start,CashManager,GetCashDrawButtons,{string.Empty},{dateStart:hh.mm.ss.ffffff}");
        //    var offSet = _policyManager.LoadStoreInfo().OffSet;
        //    error = new ErrorMessage();
        //    var user = _loginManager.GetExistingUser(userCode);
        //    if (!Convert.ToBoolean(_policyManager.GetPol("U_TILLDRAW", user)))
        //    {
        //        MessageType temp_VbStyle3 = (int)MessageType.Exclamation + MessageType.OkOnly;
        //        error.MessageStyle = _resourceManager.CreateMessage(offSet, 38, 56, null, temp_VbStyle3);
        //        error.StatusCode = System.Net.HttpStatusCode.Forbidden;
        //        _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
        //        return null;
        //    }

        //    var cashDrawButton = new CashDrawButton
        //    {
        //        Coins = _cashService.GetCoins(),
        //        Bills = _cashService.GetBills()
        //    };
        //    _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

        //    return cashDrawButton;
        //}


        /// <summary>
        /// Print cash draw
        /// </summary>
        /// <param name="cashDraw">Cash draw</param>
        /// <param name="userCode"></param>
        /// <param name="copies">Copies</param>
        /// <param name="errorMessage"></param>
        /// <returns></returns>
        public FileStream CompleteCashDraw(CashDrawButton cashDraw, string userCode, out int copies,
                                           out ErrorMessage errorMessage)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,CashManager,GetCashDrawButtons,{string.Empty},{dateStart:hh.mm.ss.ffffff}");
            copies       = _policyManager.CashDrawReceiptCopies;
            errorMessage = new ErrorMessage();
            var message = string.Empty;
            var till    = _tillService.GetTill(cashDraw.TillNumber);

            if (till == null)
            {
                message = "Till does not exists";
            }

            if (cashDraw.Amount <= 0)
            {
                message = "Invalid Cash Drop Amount";
            }

            if (!string.IsNullOrEmpty(message))
            {
                errorMessage.MessageStyle = new MessageStyle
                {
                    Message = message
                };
                errorMessage.StatusCode = System.Net.HttpStatusCode.BadRequest;
                _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(null);
            }
            var isInvalidCash     = false;
            var isInvalidQuantity = false;

            var cashDrawButtons = GetCashDrawButtons(userCode, out errorMessage);

            if (!string.IsNullOrEmpty(errorMessage.MessageStyle.Message))
            {
                _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
                return(null);
            }

            ValidateCoins(cashDraw, ref isInvalidCash, ref isInvalidQuantity, cashDrawButtons);
            ValidateBills(cashDraw, ref isInvalidCash, ref isInvalidQuantity, cashDrawButtons);

            if (isInvalidCash)
            {
                message = "Invalid Cash or Bill";
            }

            if (isInvalidQuantity)
            {
                message = "Invalid Cash or Bill Quantity";
            }

            if (!string.IsNullOrEmpty(message))
            {
                errorMessage.MessageStyle = new MessageStyle
                {
                    Message = message
                };
                errorMessage.StatusCode = System.Net.HttpStatusCode.BadRequest;
                _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
                return(null);
            }

            //print receipt
            var reasonType = ReasonType.CashDraw;
            var reason     = _reasonService.GetReturnReason(cashDraw.DrawReason, (char)reasonType);

            if (_policyManager.DRAW_REASON && reason == null)
            {
                errorMessage.MessageStyle = new MessageStyle
                {
                    Message = "Invalid Reason"
                };
                errorMessage.StatusCode = System.Net.HttpStatusCode.BadRequest;
                _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
                return(null);
            }

            var draw = new CashDraw
            {
                TillNumber = cashDraw.TillNumber,
                DrawDate   = DateTime.Now,
                TotalValue = (float)cashDraw.Amount,
                User       = userCode.ToUpper(),
                Reason     = cashDraw.DrawReason
            };

            // add values to cash draw
            _cashService.AddCashDraw(draw);

            //update till
            if (till != null)
            {
                till.Cash = till.Cash + cashDraw.Amount;
                _tillService.UpdateTill(till);
                _performancelog.Debug($"End,CashManager,GetCashDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
                return(_receiptManager.Print_Draw(till, cashDraw.RegisterNumber, userCode, cashDraw.Coins,
                                                  cashDraw.Bills, reason, cashDraw.Amount));
            }
            return(null);
        }