Ejemplo n.º 1
0
        public async Task SeedAsync(HotelDbContext dbContext, IServiceProvider serviceProvider)
        {
            if (dbContext.Payments.Any())
            {
                return;
            }

            var paymentsService = serviceProvider.GetRequiredService <IPaymentsService>();

            var         paymentTypesService = serviceProvider.GetRequiredService <IPaymentTypesService>();
            var         reservationsService = serviceProvider.GetRequiredService <IReservationsService>();
            PaymentType paymentType         = await paymentTypesService.GetPaymentTypeByNameAsync("Direct bank transfer");

            Reservation reservationOne = reservationsService.GetAllReservationsList().First();
            Reservation reservationTwo = reservationsService.GetAllReservationsList().Last();

            var paymentOne = new Payment
            {
                DateOfPayment = DateTime.UtcNow.AddDays(-3),
                Amount        = 300,
                PaymentTypeId = paymentType.Id,
            };

            var reservationPaymentOne = new ReservationPayment
            {
                PaymentId     = paymentOne.Id,
                ReservationId = reservationOne.Id,
            };

            paymentOne.ReservationPayments = new List <ReservationPayment> {
                reservationPaymentOne
            };
            await paymentsService.AddPaymentAsync(paymentOne);

            var paymentTwo = new Payment
            {
                DateOfPayment = DateTime.UtcNow.AddDays(-2),
                Amount        = 500,
                PaymentTypeId = paymentType.Id,
            };

            var reservationPaymentTwo = new ReservationPayment
            {
                PaymentId     = paymentTwo.Id,
                ReservationId = reservationTwo.Id,
            };

            paymentTwo.ReservationPayments = new List <ReservationPayment> {
                reservationPaymentTwo
            };
            await paymentsService.AddPaymentAsync(paymentTwo);

            reservationOne.AdvancedPayment = paymentOne.Amount;
            reservationTwo.AdvancedPayment = paymentTwo.Amount;
            await dbContext.SaveChangesAsync();
        }
        public async Task <IActionResult> Add(AddPaymentInputModel model)
        {
            if (!this.ModelState.IsValid)
            {
                model.ListOfPaymentTypes = this.paymentTypesService
                                           .GetAllPaymentTypes <PaymentTypeDropDownViewModel>();

                model.ListOfNotPaidReservations = this.reservationsService
                                                  .GetAllReservations <DetailsReservationViewModel>()
                                                  .Where(x => x.TotalAmount > x.AdvancedPayment)
                                                  .ToList();

                return(this.View(model));
            }

            Payment payment = AutoMapperConfig.MapperInstance.Map <Payment>(model);

            List <Reservation> reservations = new List <Reservation>();

            foreach (var res in model.ReservationIds)
            {
                var reservation = await this.reservationsService.GetReservationByIdAsync(res);

                reservations.Add(reservation);
            }

            decimal totaAmoumtForAllReservations = reservations.Sum(x => x.TotalAmount);

            foreach (var res in reservations)
            {
                res.AdvancedPayment += model.Amount * res.TotalAmount / totaAmoumtForAllReservations;

                await this.reservationsService.SaveChangesForReservationAsync(res);

                var reservationPayment = new ReservationPayment
                {
                    PaymentId     = payment.Id,
                    ReservationId = res.Id,
                };

                payment.ReservationPayments.Add(reservationPayment);
            }

            await this.paymentsService.AddPaymentAsync(payment);

            return(this.Redirect($"/Administration/Payments/All"));
        }
Ejemplo n.º 3
0
        public async Task <IHttpActionResult> CreatePayment(ReservationPaymentBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var reservationPayment = new ReservationPayment
            {
                ReservationId = model.ReservationId,
                Payment       = new Payment
                {
                    PaymentDate     = model.Payment.PaymentDate,
                    Amount          = model.Payment.Amount,
                    PaymentStatusId = (model.Payment.StatusId == 0) ? 2 : model.Payment.StatusId
                }
            };

            await ReservationPaymentRepository.Add(reservationPayment);

            var result = await ReservationPaymentRepository.Get(reservationPayment.Id);

            var reservationViewModel = new ReservationPaymentViewModel
            {
                Id      = reservationPayment.Id,
                Payment = new PaymentViewModel
                {
                    Id          = result.PaymentId,
                    PaymentDate = result.Payment.PaymentDate,
                    Amount      = result.Payment.Amount,
                    //Status = result.Payment.Status.Description
                },
                Reservation = new ReservationViewModel
                {
                    Id = result.ReservationId,
                    ReservationDate = result.Reservation.ReservationDate,
                    NumberInParty   = result.Reservation.NumberInParty
                }
            };

            return(Ok(reservationViewModel));
        }
        public async Task Add(ReservationPayment payment)
        {
            _context.ReservationPayments.Add(payment);

            await _context.SaveChangesAsync();
        }