Ejemplo n.º 1
0
        /// <summary>
        /// Realizar pago de reserva y retornar voucher de compra
        /// </summary>
        /// <returns></returns>
        public static string PagarReserva(
            string idReserva,
            int idMedioDePago)
        {
            int codigoReserva;

            if (!int.TryParse(idReserva, out codigoReserva))
            {
                throw new Exception("El código de reserva solo puede contener numeros");
            }

            if (idMedioDePago == 0)
            {
                throw new Exception("Falta seleccionar medio de pago");
            }

            PasajeDAO.ValidarEstadoReserva(codigoReserva);

            try
            {
                var        conn = Repository.GetConnection();
                SqlCommand cmd  = new SqlCommand("TIRANDO_QUERIES.sp_pago_reserva", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@reserva_id", codigoReserva);
                cmd.Parameters.AddWithValue("@metodo_pago", idMedioDePago);
                SqlParameter codigoPasaje = new SqlParameter();
                codigoPasaje.Direction = ParameterDirection.ReturnValue;
                cmd.Parameters.Add(codigoPasaje);
                cmd.ExecuteReader();
                cmd.Dispose();
                conn.Close();
                conn.Dispose();
                return(codigoPasaje.Value.ToString());
            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrió un error durante el pago de la reserva, por favor intente nuevamente", ex);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Obtener reserva por ID.
        /// </summary>
        /// <returns></returns>

        public static ReservaAPagar GetReservaAPagarByID(string idReserva)
        {
            int codigoReserva;

            if (!int.TryParse(idReserva, out codigoReserva))
            {
                throw new Exception("El código de reserva solo puede contener numeros");
            }

            var    conn    = Repository.GetConnection();
            string comando = string.Format(@"SELECT rese_precio AS precio, " +
                                           "rv_fecha_salida AS fecha_salida, " +
                                           "(SELECT p.puer_nombre FROM [TIRANDO_QUERIES].Puerto p " +
                                           "JOIN [TIRANDO_QUERIES].Tramo t " +
                                           "ON t.tram_puerto_desde = p.puer_codigo " +
                                           "WHERE t.tram_recorrido = rv.rv_recorrido " +
                                           "AND t.tram_orden = 1) AS puerto_desde, " +
                                           "(SELECT p.puer_nombre " +
                                           "FROM [TIRANDO_QUERIES].Puerto p " +
                                           "JOIN [TIRANDO_QUERIES].Tramo t " +
                                           "ON t.tram_puerto_hasta = p.puer_codigo " +
                                           "WHERE t.tram_recorrido = rv.rv_recorrido " +
                                           "AND t.tram_orden = (SELECT MAX(tram_orden) " +
                                           "FROM [TIRANDO_QUERIES].Tramo t2 " +
                                           "WHERE t2.tram_recorrido = rv.rv_recorrido)) AS puerto_hasta, " +
                                           "c.clie_apellido, " +
                                           "c.clie_nombre, " +
                                           "rese_estado " +
                                           "FROM [TIRANDO_QUERIES].Reserva " +
                                           "JOIN [TIRANDO_QUERIES].Ruta_Viaje rv ON rese_ruta = rv.rv_codigo " +
                                           "JOIN [TIRANDO_QUERIES].Recorrido r ON rv.rv_recorrido = r.reco_codigo " +
                                           "JOIN [TIRANDO_QUERIES].Cliente c ON rese_cliente = c.clie_codigo " +
                                           "WHERE rese_codigo = {0} AND reco_invalido <> 1", codigoReserva);
            DataTable      dataTable;
            SqlDataAdapter dataAdapter;

            try
            {
                PasajeDAO.ValidarEstadoReserva(codigoReserva);

                dataAdapter = new SqlDataAdapter(comando, conn);
                dataTable   = new DataTable();

                dataAdapter.Fill(dataTable);

                if (dataTable.Rows.Count == 0)
                {
                    throw new Exception("No se encuentra registrada ninguna reserva con ese número");
                }

                DataRow registroReserva = dataTable.Rows[0];

                decimal precio          = decimal.Parse(registroReserva["precio"].ToString());
                string  fechaSalida     = registroReserva["fecha_salida"].ToString();
                string  puertoDesde     = registroReserva["puerto_desde"].ToString();
                string  puertoHasta     = registroReserva["puerto_hasta"].ToString();
                string  nombreCliente   = registroReserva["clie_nombre"].ToString();
                string  apellidoCliente = registroReserva["clie_apellido"].ToString();

                var reserva = new ReservaAPagar
                {
                    Apellido    = apellidoCliente,
                    FechaSalida = fechaSalida,
                    Nombre      = nombreCliente,
                    Precio      = precio,
                    PuertoDesde = puertoDesde,
                    PuertoHasta = puertoHasta
                };

                conn.Close();
                conn.Dispose();

                return(reserva);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }