/// <summary> /// Method to get cash draw buttons /// </summary> /// <returns>Cash draw buttons</returns> public CashBonusDrawButton GetCashBonusDrawButtons(string userCode, out ErrorMessage error) { var dateStart = DateTime.Now; _performancelog.Debug($"Start,CashManager,GetCashBonusDrawButtons,{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,GetCashBonusDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); return(null); } var cashBonusDrawButton = new CashBonusDrawButton { Coins = _cashBonusService.GetCashBonusCoins() }; _performancelog.Debug($"End,CashManager,GetCashBonusDrawButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); return(cashBonusDrawButton); }
///// <summary> ///// Method to get cash draw types ///// </summary> ///// <returns>Csh draw button</returns> //[Route("UpdateTill")] //[HttpGet] //[SwaggerResponse(HttpStatusCode.Unauthorized, Type = typeof(ErrorResponse))] //[SwaggerResponse(HttpStatusCode.BadRequest, Type = typeof(ErrorResponse))] //[SwaggerResponse(HttpStatusCode.Forbidden, Type = typeof(ErrorResponse))] //[SwaggerResponse(HttpStatusCode.NotFound, Type = typeof(ErrorResponse))] //[SwaggerResponse(HttpStatusCode.OK, Type = typeof(CashDrawButtonsResponseModel))] //public HttpResponseMessage UpdateTill() //{ //} /* * /// <summary> * /// Method to complete cash draw * /// </summary> * /// <param name="cashDraw">Cash draw</param> * /// <returns>Receipt</returns> * [Route("completeDraw")] * [HttpPost] * [SwaggerResponse(HttpStatusCode.Unauthorized, Type = typeof(ErrorResponse))] * [SwaggerResponse(HttpStatusCode.BadRequest, Type = typeof(ErrorResponse))] * [SwaggerResponse(HttpStatusCode.Forbidden, Type = typeof(ErrorResponse))] * [SwaggerResponse(HttpStatusCode.NotFound, Type = typeof(ErrorResponse))] * [SwaggerResponse(HttpStatusCode.OK, Type = typeof(ReportModel))] * 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 } * }); * } * } * * /// <summary> * /// Method to get cash buttons * /// </summary> * /// <returns>Cash buttons</returns> * [Route("getCashButtons")] * [HttpGet] * [SwaggerResponse(HttpStatusCode.OK, Type = typeof(List<CashButton>))] * public HttpResponseMessage GetCashButtons() * { * var dateStart = DateTime.Now; * _performancelog.Debug($"Start,CashController,GetCashButtons,{string.Empty},{dateStart:hh.mm.ss.ffffff}"); * * var cashDrawButtons = _cashManager.GetCashButtons(); * * _performancelog.Debug( * $"End,CashController,GetCashButtons,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); * return Request.CreateResponse(HttpStatusCode.OK, cashDrawButtons); * } * * /// <summary> * /// Method to update cash drop tenders * /// </summary> * /// <param name="cashTender">Cash tenders</param> * /// <returns>Tenders</returns> * [Route("updateTenders")] * [HttpPost] * [SwaggerResponse(HttpStatusCode.BadRequest, Type = typeof(ErrorResponse))] * [SwaggerResponse(HttpStatusCode.OK, Type = typeof(UpdateCashDropResponseModel))] * public HttpResponseMessage UpdateCashDropTenders([FromBody] CashTenderModel cashTender) * { * var dateStart = DateTime.Now; * _performancelog.Debug( * $"Start,CashController,UpdateCashDropTenders,{string.Empty},{dateStart:hh.mm.ss.ffffff}"); * * if (cashTender == null) * { * return Request.CreateResponse( * HttpStatusCode.BadRequest, * new ErrorResponse * { * Error = new MessageStyle { Message = Resource.InvalidRequest, MessageType = 0 } * }); * } * * ErrorMessage error; * var tenders = cashTender.Tenders.Select(tender => new Tender * { * Tender_Code = tender.TenderCode, * Amount_Entered = tender.AmountEntered ?? 0 * }).ToList(); * * string userCode; * HttpResponseMessage httpResponseMessage; * if (GetUserCode(out userCode, out httpResponseMessage)) return httpResponseMessage; * * var updatedTenders = _cashManager.UpdateCashDropTendered(tenders, cashTender.DropReason, * cashTender.SaleNumber, cashTender.TillNumber, userCode, out error); * if (!string.IsNullOrEmpty(error.MessageStyle.Message)) * { * _performancelog.Debug( * $"End,CashController,UpdateCashDropTenders,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); * * return Request.CreateResponse(HttpStatusCode.BadRequest, * new ErrorResponse * { * Error = error.MessageStyle, * }); * } * UpdateCashDropResponseModel response = GetUpdatedTenders(updatedTenders); * * _performancelog.Debug( * $"End,CashController,UpdateCashDropTenders,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); * return Request.CreateResponse(HttpStatusCode.OK, response); * } * * /// <summary> * /// Method to complete cash drop * /// </summary> * /// <param name="cashDrop">Cash drop</param> * /// <returns>Receipt</returns> * [Route("completeDrop")] * [HttpPost] * [SwaggerResponse(HttpStatusCode.Unauthorized, Type = typeof(ErrorResponse))] * [SwaggerResponse(HttpStatusCode.BadRequest, Type = typeof(ErrorResponse))] * [SwaggerResponse(HttpStatusCode.Forbidden, Type = typeof(ErrorResponse))] * [SwaggerResponse(HttpStatusCode.NotFound, Type = typeof(ErrorResponse))] * [SwaggerResponse(HttpStatusCode.OK, Type = typeof(ReportModel))] * public HttpResponseMessage CompleteCashDrop([FromBody] CashDropModel cashDrop) * { * var dateStart = DateTime.Now; * _performancelog.Debug($"Start,CashController,CompleteCashDrop,{string.Empty},{dateStart:hh.mm.ss.ffffff}"); * string userCode; * HttpResponseMessage httpResponseMessage; * if (GetUserCode(out userCode, out httpResponseMessage)) return httpResponseMessage; * if (cashDrop == null) * { * return Request.CreateResponse( * HttpStatusCode.BadRequest, * new ErrorResponse * { * Error = new MessageStyle { Message = "Request is Invalid", MessageType = 0 } * }); * } * ErrorMessage error; * var tenders = cashDrop.Tenders.Select(tender => new Tender * { * Tender_Code = tender.TenderCode, * Amount_Entered = tender.AmountEntered * }).ToList(); * int copies; * var fs = _cashManager.CompleteCashDrop(tenders, cashDrop.TillNumber, userCode, * cashDrop.RegisterNumber, cashDrop.DropReason, cashDrop.EnvelopeNumber, out copies, out error); * if (!string.IsNullOrEmpty(error.MessageStyle.Message)) * { * _performancelog.Debug( * $"End,CashController,CompleteCashDrop,{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.CashDropFile, * ReportContent = content, * Copies = copies * }; * * _performancelog.Debug( * $"End,CashController,CompleteCashDrop,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); * return Request.CreateResponse(HttpStatusCode.OK, cashDrawReceipt); * } * catch * { * _performancelog.Debug( * $"End,CashController,CompleteCashDrop,{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 } * }); * } * } * * /// <summary> * /// Method to save cash draw open reason * /// </summary> * /// <param name="cashDrop">Cash drop</param> * /// <returns>Success Response</returns> * [Route("openCashDrawer")] * [HttpPost] * [SwaggerResponse(HttpStatusCode.BadRequest, Type = typeof(ErrorResponse))] * [SwaggerResponse(HttpStatusCode.OK, Type = typeof(SuccessReponse))] * public HttpResponseMessage OpenCashDrawer([FromBody] CashDropModel cashDrop) * { * var dateStart = DateTime.Now; * _performancelog.Debug($"Start,CashController,OpenCashDrawer,{string.Empty},{dateStart:hh.mm.ss.ffffff}"); * string userCode; * HttpResponseMessage httpResponseMessage; * if (GetUserCode(out userCode, out httpResponseMessage)) return httpResponseMessage; * if (cashDrop == null) * { * return Request.CreateResponse( * HttpStatusCode.BadRequest, * new ErrorResponse * { * Error = new MessageStyle { Message = Constants.InvalidRequest, MessageType = 0 } * }); * } * ErrorMessage error; * _cashManager.OpenCashDrawer(userCode, cashDrop.DropReason, cashDrop.TillNumber, out error); * if (!string.IsNullOrEmpty(error.MessageStyle.Message)) * { * return Request.CreateResponse(error.StatusCode, * new ErrorResponse * { * Error = error.MessageStyle, * }); * } * var success = new SuccessReponse * { * Success = true * }; * _performancelog.Debug( * $"End,CashController,OpenCashDrawer,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); * return Request.CreateResponse(HttpStatusCode.OK, success); * } * #region Private methods */ /// <summary> /// Method to create cash draw model /// </summary> /// <param name="cashBonusDrawButtons">Cash draw buttons</param> /// <returns>Cash draw button response</returns> private CashBonusDrawButtonsResponseModel GetCashBonusDrawModel(CashBonusDrawButton cashBonusDrawButtons) { var response = new CashBonusDrawButtonsResponseModel(); foreach (var coin in cashBonusDrawButtons.Coins) { response.Coins.Add(new CashBonusModel { CurrencyName = coin.CurrencyName, Value = coin.Value, ButtonNumber = coin.ButtonNumber }); } return(response); }
/// <summary> /// method to validate coins /// </summary> /// <param name="cashDraw"></param> /// <param name="isInvalidCash"></param> /// <param name="isInvalidQuantity"></param> /// <param name="cashDrawButtons"></param> private void ValidateCoins(CashBonusDrawButton cashDraw, ref bool isInvalidCash, ref bool isInvalidQuantity, CashBonusDrawButton 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}"); }
/// <summary> /// Method to complete the cash bonus draw /// </summary> /// <param name="cashDraw"></param> /// <param name="userCode"></param> /// <param name="copies"></param> /// <param name="errorMessage"></param> /// <returns></returns> public FileStream CompleteCashBonusDraw(CashBonusDrawButton cashBonusDraw, 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(cashBonusDraw.TillNumber); if (till == null) { message = "Till does not exists"; } if (cashBonusDraw.Amount <= 0) { message = "Invalid Cash Bonus Draw 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 cashBonusDrawButtons = GetCashBonusDrawButtons(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(cashBonusDraw, ref isInvalidCash, ref isInvalidQuantity, cashBonusDrawButtons); //ValidateBills(cashDraw, ref isInvalidCash, ref isInvalidQuantity, cashDrawButtons); if (isInvalidCash) { message = "Invalid CashBonus"; } if (isInvalidQuantity) { message = "Invalid CashBonus 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(cashBonusDraw.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 CashBonusDraw { TillNumber = cashBonusDraw.TillNumber, DrawDate = DateTime.Now, //TotalValue = (float)cashDraw.Amount, User = userCode.ToUpper(), Reason = cashBonusDraw.DrawReason, CashBonus = cashBonusDraw.Amount }; // add values to cash bonus draw _cashBonusService.AddCashBonusDraw(draw); //update till if (till != null) { till.CashBonus = till.CashBonus + cashBonusDraw.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, cashBonusDraw.RegisterNumber, userCode, cashBonusDraw.Coins, reason, cashBonusDraw.Amount); } return(null); }