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")); }
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(); }