예제 #1
0
        public async Task <IActionResult> AddPayment([FromForm] AddPaymentModel data)
        {
            try
            {
                bool   returnStat  = false;
                string returnMsg   = String.Empty;
                var    checkFormat = await _paymentManager.CheckPaymentFormat(data);

                if (checkFormat.Success)
                {
                    var result = await _paymentManager.AddPayment(data);

                    if (result.Success == true)
                    {
                        var resMap = (dynamic)result.Result;
                        Response.Redirect(_appConfiguration["App:ClientRootAddress"] + "account/payment?trx=" + resMap.ID);
                        returnStat = true;
                    }
                }
                else
                {
                    returnMsg = checkFormat.Error.Message;
                }

                return(Json(new AjaxResponse(new { success = returnStat, message = returnMsg })));
            }
            catch (UserFriendlyException ex)
            {
                Log.Error(nameof(PaymentController), ex);
                return(Json(new AjaxResponse(new ErrorInfo(ex.Message))));
            }
        }
예제 #2
0
        public async Task <bool> AddPaymentAsync(AddPaymentModel addPayment)
        {
            try
            {
                decimal total = addPayment.PaymentType == 4? addPayment.Total:(addPayment.Rate * addPayment.Hours);
                using (SqlConnection conn = GetConnection())
                {
                    DynamicParameters param = new DynamicParameters();
                    param.Add("@Hours", addPayment.Hours);
                    param.Add("@PaymentMethod", addPayment.PaymentMethod);
                    param.Add("@PaymentType", addPayment.PaymentType);
                    param.Add("@PayTo", addPayment.PayTo);
                    param.Add("@CreatedBy", addPayment.CreatedBy);
                    param.Add("@Total", addPayment.Total);

                    var reader = await conn.ExecuteScalarAsync <long>("sp_AddPayment", param, commandType : CommandType.StoredProcedure);

                    return(true);
                }
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
        public async Task <RoutePayment> AddAsync(AddPaymentModel model)
        {
            var payment = model.Adapt <RoutePayment>();

            context.RoutePayments.Add(payment);
            await context.SaveChangesAsync();

            return(payment);
        }
예제 #4
0
        public async Task <IActionResult> AddPayment()
        {
            AddPaymentModel addPaymentModel = new AddPaymentModel();

            // 3 is used for worker
            ViewBag.User = await this._repository.GetUsersAsync(3);

            return(View(addPaymentModel));
        }
예제 #5
0
 public static AddPaymentCommand ToPaymentCommand(this AddPaymentModel model, CreditCardId cardId,
                                                  ISystemClock clock, CurrencyCode currencyCode)
 {
     return(new AddPaymentCommand
     {
         Occured = clock.Now,
         AggregateId = cardId,
         Payment = new Payment(PaymentId.NewId(), Money.Create(model.Amount, currencyCode), model.Date)
     });
 }
예제 #6
0
 public async Task <IActionResult> AddPayment(AddPaymentModel addPaymentModel)
 {
     if (ModelState.IsValid)
     {
         if (await this._repository.AddPaymentAsync(addPaymentModel))
         {
             ModelState.Clear();
             addPaymentModel = new AddPaymentModel();
             ViewBag.Success = "Payment success!";
         }
         else
         {
             ViewBag.Error = "Some error occured while saving.";
         }
         ViewBag.User = await this._repository.GetUsersAsync(3);
     }
     else
     {
         ViewBag.User = await this._repository.GetUsersAsync(3);
     }
     return(View(addPaymentModel));
 }
예제 #7
0
        public async Task <AjaxResponse> CheckPaymentFormat(AddPaymentModel input)
        {
            try
            {
                bool   checkRes = true;
                string checkMsg = String.Empty;

                if (String.IsNullOrEmpty(input.MerchantCode))
                {
                    checkMsg = "Incorrect MerchantCode Format or Empty";
                    return(new AjaxResponse(new ErrorInfo(checkMsg)));
                }

                if (String.IsNullOrEmpty(input.MerchantTransNo))
                {
                    checkMsg = "Incorrect MerchantTransNo Format or Empty";
                    return(new AjaxResponse(new ErrorInfo(checkMsg)));
                }

                if (String.IsNullOrEmpty(input.TransCurrency))
                {
                    checkMsg = "Incorrect TransCurrency Format or Empty";
                    return(new AjaxResponse(new ErrorInfo(checkMsg)));
                }

                if (String.IsNullOrEmpty(input.TransAmt))
                {
                    checkMsg = "Incorrect TransAmt Format or Empty";
                    return(new AjaxResponse(new ErrorInfo(checkMsg)));
                }

                if (String.IsNullOrEmpty(input.ProductDesc))
                {
                    checkMsg = "Incorrect ProductDesc Format or Empty";
                    return(new AjaxResponse(new ErrorInfo(checkMsg)));
                }

                if (String.IsNullOrEmpty(input.UserName))
                {
                    checkMsg = "Incorrect UserName Format or Empty";
                    return(new AjaxResponse(new ErrorInfo(checkMsg)));
                }

                if (String.IsNullOrEmpty(input.UserEmail))
                {
                    checkMsg = "Incorrect UserEmail Format or Empty";
                    return(new AjaxResponse(new ErrorInfo(checkMsg)));
                }

                if (String.IsNullOrEmpty(input.UserContact))
                {
                    checkMsg = "Incorrect UserContact Format or Empty";
                    return(new AjaxResponse(new ErrorInfo(checkMsg)));
                }

                if (String.IsNullOrEmpty(input.Remark))
                {
                    checkMsg = "Incorrect Remark Format or Empty";
                    return(new AjaxResponse(new ErrorInfo(checkMsg)));
                }

                if (String.IsNullOrEmpty(input.Signature))
                {
                    checkMsg = "Incorrect Signature Format or Empty";
                    return(new AjaxResponse(new ErrorInfo(checkMsg)));
                }

                if (String.IsNullOrEmpty(input.ResponseURL))
                {
                    checkMsg = "Incorrect ResponseURL Format or Empty";
                    return(new AjaxResponse(new ErrorInfo(checkMsg)));
                }

                if (String.IsNullOrEmpty(input.AdditionalURL))
                {
                    checkMsg = "Incorrect AdditionalURL Format or Empty";
                    return(new AjaxResponse(new ErrorInfo(checkMsg)));
                }

                return(new AjaxResponse(checkRes));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #8
0
        public async Task <AjaxResponse> AddPayment(AddPaymentModel input)
        {
            try
            {
                bool                   paymentSuccess = false;
                var                    contPaymentTransID = input.MerchantTransNo;
                PAYMENTHDR             paymentHDRLogic = new PAYMENTHDR(_env, _connectionString);
                PAYMENTDTL             paymentDTLLogic = new PAYMENTDTL(_env, _connectionString);
                DTO.Payment.PAYMENTHDR dataPaymentHDR, contPaymentHDR;
                DTO.Payment.PAYMENTDTL dataPaymentDTL, contPaymentDTL;

                contPaymentHDR = paymentHDRLogic.Retrieve(x => x.PaymentRef == contPaymentTransID);
                if (contPaymentHDR == null)
                {
                    using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                    {
                        try
                        {
                            dataPaymentHDR = new DTO.Payment.PAYMENTHDR
                            {
                                BizRegID       = "1",
                                BizLocID       = "1",
                                PaymentTransID = DateTime.Now.ToString("yyyyMMddHHmmss") + GeneratorHelper.GenerateRandomString(6),
                                PaymentRef     = input.MerchantTransNo,
                                MerchantCode   = input.MerchantCode,
                                BaseCurrency   = input.TransCurrency,
                                TransCurrency  = input.TransCurrency,
                                TransTotalAmt  = Convert.ToDecimal(input.TransAmt),
                                ProductDesc    = input.ProductDesc,
                                UserName       = input.UserName,
                                UserEmail      = input.UserEmail,
                                UserContact    = input.UserContact,
                                Signature      = input.Signature,
                                ResponseURL    = input.ResponseURL,
                                AdditionalURL  = input.AdditionalURL,
                                Status         = 1,
                                Flag           = 1,
                                IsHost         = 0
                            };
                            await paymentHDRLogic.Create(dataPaymentHDR);

                            paymentSuccess = true;
                            scope.Complete();
                        }
                        catch (Exception ex)
                        {
                            throw ex;
                        }
                    }
                }
                else
                {
                    return(new AjaxResponse(new ErrorInfo("Duplicate Merchant Transaction ID")));
                }

                return(new AjaxResponse(new { success = paymentSuccess, ID = dataPaymentHDR.PaymentTransID }));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #9
0
        public async Task <IActionResult> AddPayment([FromRoute] CreditCardId cardId, [FromBody] AddPaymentModel model)
        {
            try
            {
                await _mediator.Send(model.ToPaymentCommand(cardId, _clock, _currencyCode));

                return(Ok());
            }
            catch (AggregateNotFoundException)
            {
                return(NotFound());
            }
        }