コード例 #1
0
        public IActionResult Post(PaymentRequestVM paymentRequest)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    paymentRequest.ExpirationDate = new DateTime(paymentRequest.ExpirationDate.Year, paymentRequest.ExpirationDate.Month, 1);

                    PaymentStatusVM result = service.ProcessPaymentRequest(paymentRequest);

                    if (result.PaymentStatus == Enums.PaymentProcessStatus.processed.ToString())
                    {
                        return(Ok("Payment is processed"));
                    }
                    else
                    {
                        return(StatusCode(StatusCodes.Status500InternalServerError, "Unable to process payment"));
                    }
                }
                else
                {
                    return(BadRequest("Invalid inputs"));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                return(StatusCode(500, "Internal server error exception raised"));
            }
        }
コード例 #2
0
        public async Task <WrapperPaymentStatusListVM> Delete(PaymentStatusVM itemTemp)
        {
            IEnumerable <PaymentStatus> itemTask = await _repositoryWrapper.PaymentStatus.FindByConditionAsync(x => x.Id == itemTemp.Id && x.FactoryId == itemTemp.FactoryId);

            var item = itemTask.ToList().FirstOrDefault();

            if (item == null)
            {
                return(new WrapperPaymentStatusListVM());
            }
            _repositoryWrapper.PaymentStatus.Delete(item);
            await _repositoryWrapper.PaymentStatus.SaveChangesAsync();

            this._utilService.LogInfo("Successful In Deleting Item Cateory");

            var dataParam = new GetDataListVM()
            {
                FactoryId  = itemTemp.FactoryId,
                PageNumber = 1,
                PageSize   = 10,
                TotalRows  = 0
            };
            WrapperPaymentStatusListVM data = await GetListPaged(dataParam);

            return(data);
        }
コード例 #3
0
        public PaymentStatusVM ProcessPayment(PaymentInfo paymentRequest)
        {
            PaymentStatusVM paymentStatusVM = new PaymentStatusVM()
            {
                PaymentStatus         = Enums.PaymentProcessStatus.failed.ToString(),
                PaymentStatusDatetime = DateTime.Now
            };

            if (paymentRequest != null)
            {
                //insert in payment and payment status

                PaymentStatusInfo oPaymentStatusInfo = new PaymentStatusInfo()
                {
                    PaymentInfoId         = paymentRequest.Id,
                    PaymentStatus         = Enums.PaymentProcessStatus.pending.ToString(),
                    PaymentStatusDatetime = DateTime.Now,
                    PaymentInfo           = paymentRequest
                };

                unitOfWork.PaymentInfoRepo.Create(paymentRequest);
                unitOfWork.PaymentStatusInfoRepo.Create(oPaymentStatusInfo);
                unitOfWork.Commit();

                if (paymentRequest.Amount % 2 == 0)//if (new Random().Next(1, 11) % 2 == 0)
                {
                    paymentStatusVM.PaymentStatus = Enums.PaymentProcessStatus.processed.ToString();
                }
                else
                {
                    paymentStatusVM.PaymentStatus = Enums.PaymentProcessStatus.failed.ToString();
                }

                PaymentStatusInfo oPaymentStatusInfoOK = new PaymentStatusInfo()
                {
                    PaymentInfoId         = paymentRequest.Id,
                    PaymentStatus         = paymentStatusVM.PaymentStatus,
                    PaymentStatusDatetime = DateTime.Now,
                    PaymentInfo           = paymentRequest
                };

                unitOfWork.PaymentStatusInfoRepo.Create(oPaymentStatusInfoOK);
                unitOfWork.Commit();
            }

            return(paymentStatusVM);
        }
コード例 #4
0
        public async Task <IActionResult> AddPayment(PaymentStatusVM _payment)
        {
            var payment = new PaymentStatusVM {
                Amount          = _payment.Amount,
                EventDetailsID  = _payment.EventDetailsID,
                ReferenceNumber = _payment.ReferenceNumber,
                DateOfPayment   = DateTime.Now,
                Remarks         = _payment.Remarks
            };



            var response = await mediator.Send(new AddPaymentForEventCommand {
                MyEventPaymentStatus = payment
            });



            return(Json(response));
        }
コード例 #5
0
        public async Task <WrapperPaymentStatusListVM> Update(string id, PaymentStatusVM vm)
        {
            IEnumerable <PaymentStatus> ItemDB = await _repositoryWrapper.PaymentStatus.FindByConditionAsync(x => x.Id == id && x.FactoryId == vm.FactoryId);

            var ItemUpdated = _utilService.GetMapper().Map <PaymentStatusVM, PaymentStatus>(vm, ItemDB.ToList().FirstOrDefault());

            _repositoryWrapper.PaymentStatus.Update(ItemUpdated);
            await _repositoryWrapper.PaymentStatus.SaveChangesAsync();

            this._utilService.LogInfo("Successful In Updating Item Cateory");


            var dataParam = new GetDataListVM()
            {
                FactoryId  = vm.FactoryId,
                PageNumber = 1,
                PageSize   = 10,
                TotalRows  = 0
            };
            WrapperPaymentStatusListVM data = await GetListPaged(dataParam);

            return(data);
        }
コード例 #6
0
        public async Task <WrapperPaymentStatusListVM> Add(PaymentStatusVM vm)
        {
            var entityToAdd = _utilService.GetMapper().Map <PaymentStatusVM, PaymentStatus>(vm);

            //string uniqueIdTask =await _repositoryWrapper.PaymentStatus.GetUniqueId();

            //// Todo  need to aandle unique id from db
            //entityToAdd.UniqueId = uniqueIdTask;
            entityToAdd = _repositoryWrapper.PaymentStatus.Create(entityToAdd);
            await _repositoryWrapper.PaymentStatus.SaveChangesAsync();

            this._utilService.LogInfo("Successful In saving  Item Category");

            var dataParam = new GetDataListVM()
            {
                FactoryId  = vm.FactoryId,
                PageNumber = 1,
                PageSize   = 10,
                TotalRows  = 0
            };
            WrapperPaymentStatusListVM data = await GetListPaged(dataParam);

            return(data);
        }
コード例 #7
0
 public async Task <ActionResult <WrapperPaymentStatusListVM> > DeletePaymentStatus([FromBody] PaymentStatusVM itemVM)
 {
     return(await _serviceWrapper.PaymentStatusService.Delete(itemVM));
 }
コード例 #8
0
 public async Task <ActionResult <WrapperPaymentStatusListVM> > AddPaymentStatus([FromBody] PaymentStatusVM PaymentStatus)
 {
     return(await _serviceWrapper.PaymentStatusService.Add(PaymentStatus));
 }
コード例 #9
0
 public async Task <ActionResult <WrapperPaymentStatusListVM> > UpdatePaymentStatus(string id, [FromBody] PaymentStatusVM PaymentStatus)
 {
     return(await _serviceWrapper.PaymentStatusService.Update(id, PaymentStatus));
 }
コード例 #10
0
        public PaymentStatusVM ProcessPayment(PaymentInfo paymentRequest)
        {
            PaymentStatusVM paymentStatusVM = new PaymentStatusVM()
            {
                PaymentStatus         = Enums.PaymentProcessStatus.failed.ToString(),
                PaymentStatusDatetime = DateTime.Now
            };

            if (paymentRequest != null)
            {
                //insert in payment and payment status


                PaymentStatusInfo oPaymentStatusInfo = new PaymentStatusInfo()
                {
                    PaymentInfoId         = paymentRequest.Id,
                    PaymentStatus         = Enums.PaymentProcessStatus.pending.ToString(),
                    PaymentStatusDatetime = DateTime.Now,
                    PaymentInfo           = paymentRequest
                };

                unitOfWork.PaymentInfoRepo.Create(paymentRequest);
                unitOfWork.PaymentStatusInfoRepo.Create(oPaymentStatusInfo);
                unitOfWork.Commit();

                int tryCount = 3;
                //even amount will be processed , odd one will be failed //just for test case

                for (int i = 1; i <= tryCount; i++)                      //upto retry count
                {
                    if (paymentRequest.Amount % 2 == 0 && i == tryCount) //if (new Random().Next(1, 11) % 2 == 0)
                    {
                        paymentStatusVM.PaymentStatus = Enums.PaymentProcessStatus.processed.ToString();
                    }
                    else
                    {
                        paymentStatusVM.PaymentStatus = Enums.PaymentProcessStatus.failed.ToString();
                    }

                    PaymentStatusInfo oPaymentStatusInfoOK = new PaymentStatusInfo()
                    {
                        PaymentInfoId         = paymentRequest.Id,
                        PaymentStatus         = paymentStatusVM.PaymentStatus,
                        PaymentStatusDatetime = DateTime.Now,
                        PaymentInfo           = paymentRequest
                    };

                    unitOfWork.PaymentStatusInfoRepo.Create(oPaymentStatusInfoOK);
                    unitOfWork.Commit();

                    if (paymentStatusVM.PaymentStatus == Enums.PaymentProcessStatus.processed.ToString())
                    {
                        break;
                    }
                    else
                    {
                        System.Threading.Thread.Sleep(500);
                    }
                }
            }

            return(paymentStatusVM);
        }