/// <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); } }
/// <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; } }