public async Task <Order> PaymentNotifiedAsync(PaymentNotice payment) { Order order = await GetOrderByBookingIdAsync(payment.BookingId); var orderStatusBefore = order?.Status; if (order == null) { if (payment.Status == "approved" || payment.Status == "in_process") { order = _mapper.Map <PaymentNotice, Order>(payment); order.Registration = await _userManager.FindByIdAsync(payment.User_Id ?? string.Empty); order = await CreateOrderAsync(order); } } if (order != null && orderStatusBefore != "approved" && (order.Status == "approved" || payment.Status == "approved")) { order.PickUpTime = _calendarRepository.GetPickupEstimate(order.PreparationTime); order.Status = "approved"; MapMercadoPagoData(ref order, payment); order.Factura = await _billing.Facturar(order); _appDbContext.Orders.Update(order); _appDbContext.SaveChanges(); await AfterOrderConfirmedAsync(order); } return(order); }
public async Task <Order> PaymentNotified(PaymentNotice payment) { Order order = GetOrderByBookingId(payment.BookingId); var orderStatusBefore = order?.Status; if (order == null) { if (payment.Status == "approved" || payment.Status == "in_process") { order = _mapper.Map <PaymentNotice, Order>(payment); order.Registration = await _userManager.FindByIdAsync(payment.User_Id ?? string.Empty); order = CreateOrder(order); } } if (order != null && orderStatusBefore != "approved" && (order.Status == "approved" || payment.Status == "approved")) { order.PickUpTime = _calendarRepository.GetPickupEstimate(order.PreparationTime); order.Status = "approved"; order.Payout = _calendarRepository.LocalTime(); _appDbContext.Orders.Update(order); _appDbContext.SaveChanges(); await _emailRepository.SendOrderConfirmationAsync(order, () => _smsRepository.NotifyAdmins($"¡Pedido nuevo! Código {order.FriendlyBookingId}")); } return(order); }
private void MapMercadoPagoData(ref Order order, PaymentNotice payment) { order.PaymentReceived = true; order.MercadoPagoMail = payment.MercadoPagoMail; order.MercadoPagoName = payment.MercadoPagoName; order.MercadoPagoUsername = payment.MercadoPagoUsername; order.PhoneNumber = payment.PhoneNumber; order.CardHolderName = payment.CardHolderName; order.CardHolderNumber = payment.CardHolderNumber; order.CardHolderType = payment.CardHolderType; order.PayerIdNumber = payment.PayerIdNumber; order.PayerIdType = payment.PayerIdType; order.Payout = _calendarRepository.LocalTime(); }