Exemplo n.º 1
0
        public void TicketController_Throws_BadRequestException_When_Payment_Is_Zero()
        {
            // Arrange
            TicketRepository   ticketRepository = new TicketRepository(null);
            PaymentWorker      paymentWorker    = new PaymentWorker(ticketRepository);
            TicketController   controller       = new TicketController(paymentWorker);
            GSPRPaymentRequest paymentRequest   = new
                                                  GSPRPaymentRequest()
            {
                BillNo                = 123,
                BillAmount            = 0,
                PaymentTypeId         = "100",
                TipAmount             = 0,
                TransactionID         = 123,
                LocationIdentifier    = "ABC",
                PaymentTypeName       = "3rd_party",
                GlancePayPOSPaymentID = 123
            };

            MockControllerRequest(controller);

            // Act
            controller.Validate(paymentRequest);
            HttpResponseMessage result = controller.Post(paymentRequest) as HttpResponseMessage;
        }
Exemplo n.º 2
0
        public HttpResponseMessage Post([FromBody] GSPRPaymentRequest paymentRequest)
        {
            if (Logger != null)
            {
                Logger.LogDebug("Start.");
            }
            if (!ModelState.IsValid)
            {
                string errorMessage = ModelState.FirstErrorMessage();
                if (Logger != null)
                {
                    Logger.LogError(string.Format("{0} Transaction ID: {1}", errorMessage, paymentRequest.TransactionID));
                }
                throw new BadRequestException(errorMessage.ToCombinedErrorMessage(paymentRequest.TransactionID));
            }

            ThirdPartyPayment payment = new ThirdPartyPayment(paymentRequest.BillAmount, paymentRequest.TipAmount)
            {
                TicketId           = paymentRequest.BillNo,
                TransactionId      = paymentRequest.TransactionID,
                LocationIdentifier = paymentRequest.LocationIdentifier,
                Amount             = paymentRequest.BillAmount,
                Tip          = paymentRequest.TipAmount,
                TenderTypeId = paymentRequest.PaymentTypeId,
                Type         = paymentRequest.PaymentTypeName
            };

            HostingEnvironment.QueueBackgroundWorkItem(async cancelationToken =>
            {
                if (Logger != null)
                {
                    Logger.LogDebug("Background worker start.");
                }
                try
                {
                    await paymentWorker.Make3PartyPaymentAsync(payment.LocationIdentifier, payment.TransactionId,
                                                               payment.TicketId, payment.Amount, payment.Tip, payment.TenderTypeId, payment.Type);
                }
                catch (Exception ex)
                {
                    //TODO: add logging and exception handling
                    if (Logger != null)
                    {
                        Logger.LogError("Cannot add payment: " + ex.Message, ex);
                    }
                }
                if (Logger != null)
                {
                    Logger.LogDebug("Background worker end.");
                }
            });

            if (Logger != null)
            {
                Logger.LogDebug("End.");
            }
            return(new HttpResponseMessage(HttpStatusCode.OK));
        }