示例#1
0
        /// <summary>
        /// adds a card
        /// </summary>
        /// <param name="card"></param>
        /// <returns></returns>
        public Common.Models.Card AddCard(Common.Models.Card card, Guid userId)
        {
            using (var context = new PaymentsDbContext(ContextOptions))
            {
                try
                {
                    var cardnumber = card.CardNumber;
                    card.CardNumber = MaskCardNumber(cardnumber);
                    var dbCard = context.Cards.FirstOrDefault(c => c.CardNumber == card.CardNumber && c.CVC == card.CVC && c.UserId == userId && c.ExpiryDate == card.ExpiryDate);
                    if (dbCard == null || string.IsNullOrWhiteSpace(dbCard.Id.ToString()))
                    {
                        card.Id = Guid.NewGuid();
                        var newCard = MyMapper.Map <Models.Card>(card);
                        newCard.UserId = userId;
                        context.Cards.Add(newCard);
                        context.SaveChanges();
                    }
                    else
                    {
                        card.Id = dbCard.Id;
                    }
                    return(card);
                    //var toReturn = MyMapper.Map<Common.Models.Card>(result);

                    //return toReturn;
                }
                catch (Exception ex)
                {
                    Log.LogError(ex, "");
                    Log.LogError(ex, $"Failed to create user");
                    throw ex;
                }
            }
        }
示例#2
0
        /// <summary>
        /// updates a paymentr with BankPaymentId and success/failure information
        /// </summary>
        public Payment UpdatePayment(Payment paymentRequest)
        {
            using (var context = new PaymentsDbContext(ContextOptions))
            {
                try
                {
                    Log.LogInformation($"Updating Payment: {paymentRequest.PaymentId}");
                    var payment = context.Payments.First(p => p.Id == paymentRequest.PaymentId);
                    payment.BankPaymentId    = paymentRequest.BankPaymentId;
                    payment.IsSuccessful     = payment.IsSuccessful;
                    payment.Message          = paymentRequest.Message;
                    payment.PaymentStatusId  = paymentRequest.Status;
                    payment.Updated          = DateTime.UtcNow;
                    payment.RequestCompleted = paymentRequest.RequestCompleted.GetValueOrDefault();

                    context.SaveChanges();

                    return(paymentRequest);
                }
                catch (Exception ex)
                {
                    Log.LogError(ex, $"Failed tgo Update the payment {paymentRequest.PaymentId}");
                    paymentRequest.Message = ex.Message;
                    return(paymentRequest);
                }
            }
        }
示例#3
0
 /// <summary>
 /// adds a user
 /// </summary>
 /// <param name="user"></param>
 /// <returns></returns>
 public Common.Models.User AddUser(Common.Models.User user)
 {
     using (var context = new PaymentsDbContext(ContextOptions))
     {
         try
         {
             var dbUser = context.Users.FirstOrDefault(u => u.Fullname == user.Fullname && u.DateOfBirth == user.DateOfBirth);
             if (dbUser == null || string.IsNullOrWhiteSpace(dbUser.Id.ToString()))
             {
                 user.Id = Guid.NewGuid();
                 context.Users.Add(MyMapper.Map <Models.User>(user));
                 context.SaveChanges();
             }
             else
             {
                 user.Id = dbUser.Id;
             }
             return(user);
         }
         catch (Exception ex)
         {
             Log.LogError(ex, $"Failed to create user");
             throw ex;
         }
     }
 }
示例#4
0
        /// <summary>
        /// Adds a new payment
        /// </summary>
        public Common.Models.Payment StorePayment(Common.Models.Payment paymentRequest)
        {
            using (var context = new PaymentsDbContext(ContextOptions))
            {
                try
                {
                    var dbPayment = context.Payments.FirstOrDefault(c => c.Id == paymentRequest.PaymentId);
                    if (dbPayment == null || string.IsNullOrWhiteSpace(dbPayment.Id.ToString()))
                    {
                        Log.LogInformation($"Adding the payment to the database: {paymentRequest.PaymentId}");
                        var newPayment = MyMapper.Map <Models.Payment>(paymentRequest);
                        context.Payments.Add(newPayment);
                        context.SaveChanges();
                    }
                    else
                    {
                        Log.LogWarning($"Duplicate Payment: {paymentRequest.PaymentId}");
                        paymentRequest.Status       = Common.Enums.PaymentStatus.DuplicateRequest;
                        paymentRequest.IsSuccessful = false;
                        paymentRequest.Message      = $"Duplicate payment request";
                    }

                    return(paymentRequest);
                }
                catch (Exception ex)
                {
                    Log.LogError(ex, "Failed to store payment");
                    paymentRequest.Status = PaymentStatus.PaymentNotStored;
                    return(paymentRequest);
                }
            }
        }
        public List <Payment> CreatePayment(int PaymentNumber, string Status)
        {
            var dbPayments = _dbContext.payment;

            if (Status == null)
            {
                throw new ArgumentNullException();
            }

            if (Status != "InProcesing" && Status != "Success")
            {
                throw new InvalidStatusException("Invalid status");
            }
            foreach (var p in dbPayments)
            {
                if (p.PaymentNumber == PaymentNumber)
                {
                    throw new NumberAlreadyExists("Payment number already exists");
                }
            }

            _dbContext.payment.Add(new Payment(PaymentNumber, Status));
            _dbContext.SaveChanges();
            return(_dbContext.payment.ToList());
        }
示例#6
0
        public async Task <ActionResult <string> > Get(Guid providerReference, bool success)
        {
            var paymentMock = _paymentsDbContext.MockPayments.FirstOrDefault(x => x.ProviderReference == providerReference);

            if (paymentMock == null)
            {
                return(NotFound());
            }

            if (paymentMock.PaymentStatus != PaymentStatus.New)
            {
                return(BadRequest());
            }

            if (success)
            {
                await _bus.Publish(new PaymentMockPaid()
                {
                    PaymentReference = paymentMock.PaymentReference,
                    PaymentMockId    = paymentMock.Id
                });

                paymentMock.PaymentStatus = PaymentStatus.Completed;
            }
            else
            {
                paymentMock.PaymentStatus = PaymentStatus.Failed;
            }

            _paymentsDbContext.SaveChanges();

            return(Ok(new { returnUrl = "/orderPlaced" })); // todo thats mock of mock...
        }
 public void CreateUser(UserDTO user)
 {
     _context.Users.Add(user);
     _context.SaveChanges();
 }
 public IActionResult Post([FromBody] Payment payment)
 {
     _quotesDbContext.Payments.Add(payment);
     _quotesDbContext.SaveChanges();
     return(StatusCode(StatusCodes.Status201Created));
 }