public ActionResult Pago(Pago pago) { TempData["MostrarPago"] = true; if (!ModelState.IsValid) { return(View(pago)); } else { var habitacion = habitacionesBusiness.ObtenerHabitacion(pago.HabitacionId); pago.Costo = habitacion.Precio; pago.Descripcion = "Reserva Habitacion " + habitacion.CodigoHabitacion; TarjetaBusiness tarjetaBusiness = new TarjetaBusiness(); if (tarjetaBusiness.SonDatosValidos(pago)) { var tarjetaId = tarjetaBusiness.ObtenerTarjetaIdPorNumero(pago.NumeroTarjeta); if (tarjetaBusiness.HaySaldo(pago.Costo, tarjetaId)) { PagoBusiness pagoBusiness = new PagoBusiness(); if (pagoBusiness.Pagar(pago)) { HabitacionesBusiness habitacionesBusiness = new HabitacionesBusiness(); var detalle = Session["Detalle"] as HabitacionDetalle; var miembro = Session["Miembro"] as Miembro; DateTime checkin = DateTime.ParseExact(detalle.CheckIn, "dd/MM/yyyy", null); DateTime checkOut = DateTime.ParseExact(detalle.CheckOut, "dd/MM/yyyy", null); habitacionesBusiness.ReservarHabitacion(habitacion.HabitacionId, miembro.Dni, detalle.Habitacion.CodigoHotel, detalle.Habitacion.CodigoHabitacion, detalle.Habitacion.Numero, detalle.Habitacion.Precio, detalle.Habitacion.CantidadCamas, checkin, checkOut); TempData["MostrarPago"] = null; return(View(pago)); } else { TempData["ErrorMessage"] = "Error el realizar el pago"; return(View(pago)); } } else { TempData["ErrorMessage"] = "No tiene saldo suficiente"; return(View(pago)); } } else { TempData["ErrorMessage"] = "Datos de la tarjeta inválidos"; return(View(pago)); } } }