예제 #1
0
 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));
         }
     }
 }