public override Hotel getById(int id) { RepositorioCategoria repositorioCategoria = new RepositorioCategoria(); RepositorioRegimen repositorioRegimen = new RepositorioRegimen(); RepositorioCierreTemporal repositorioCierreTemporal = new RepositorioCierreTemporal(); RepositorioDireccion repositorioDireccion = new RepositorioDireccion(); RepositorioReserva repositorioReserva = new RepositorioReserva(); String connectionString = ConfigurationManager.AppSettings["BaseLocal"]; SqlConnection sqlConnection = new SqlConnection(connectionString); SqlCommand sqlCommand = new SqlCommand(); SqlDataReader reader; Hotel hotel = null; sqlCommand.Parameters.AddWithValue("@idHotel", id); sqlCommand.CommandType = CommandType.Text; sqlCommand.Connection = sqlConnection; sqlCommand.CommandText = "SELECT * FROM LOS_BORBOTONES.Hotel WHERE idHotel = @idHotel"; sqlConnection.Open(); reader = sqlCommand.ExecuteReader(); if (reader.Read()) { int idHotel = reader.GetInt32(reader.GetOrdinal("idHotel")); String nombre = reader.GetString(reader.GetOrdinal("Nombre")); String mail = reader.SafeGetString(reader.GetOrdinal("Mail")); String telefono = reader.SafeGetString(reader.GetOrdinal("Telefono")); DateTime fechaInicio = reader.GetDateTime(reader.GetOrdinal("FechaInicioActividades")); int idCategoria = reader.GetInt32(reader.GetOrdinal("idCategoria")); int idDireccion = reader.GetInt32(reader.GetOrdinal("idDireccion")); Categoria categoria = repositorioCategoria.getById(idCategoria); Direccion direccion = repositorioDireccion.getById(idDireccion); hotel = new Hotel(idHotel, categoria, direccion, nombre, mail, telefono, fechaInicio); } else { //Si no encuentro elemento con ese ID tiro una excepción throw new NoExisteIDException("No existe hotel con el ID asociado"); } //Cierro Primera Consulta sqlConnection.Close(); return(hotel); }
public int crearBajaTemporal(CierreTemporal cierreTemporal) { RepositorioCierreTemporal repositorioCierreTemporal = new RepositorioCierreTemporal(); RepositorioReserva repositorioReserva = new RepositorioReserva(); Hotel hotel = cierreTemporal.getHotel(); bool existReservas = repositorioReserva.existReservaBetweenDate(cierreTemporal.getFechaInicio(), cierreTemporal.getFechaFin(), cierreTemporal.getHotel().getIdHotel()); if (existReservas) { throw new RequestInvalidoException("No es posible dar de baja temporal el hotel. Existen reservas para la fecha la cual se quiere dar de baja el hotel"); } return(repositorioCierreTemporal.create(cierreTemporal)); }
public void vincularHuespedes(int codReserva, List <Cliente> clientes) { String connectionString = ConfigurationManager.AppSettings["BaseLocal"]; SqlConnection sqlConnection = new SqlConnection(connectionString); SqlCommand sqlCommand = new SqlCommand(); SqlDataReader reader; RepositorioReserva repoReserva = new RepositorioReserva(); Reserva reserva = repoReserva.getReservaByCodigoReserva(codReserva); int idHabitacion = 0; sqlCommand.CommandType = CommandType.Text; sqlCommand.Connection = sqlConnection; sqlCommand.Parameters.AddWithValue("@idReserva", reserva.getIdReserva()); foreach (Habitacion item in reserva.getHabitaciones()) { idHabitacion = item.getIdHabitacion(); } sqlCommand.Parameters.AddWithValue("@idHabitacion", idHabitacion); StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.Append(@" BEGIN TRY BEGIN TRANSACTION "); int k = 1; foreach (Cliente item in clientes) { String paramName = "@idCliente" + k.ToString(); sqlBuilder.AppendFormat("INSERT INTO LOS_BORBOTONES.Reserva_X_Habitacion_X_Cliente(idReserva,idHabitacion,idCliente) VALUES(@idReserva,@idHabitacion,{0})", paramName); sqlCommand.Parameters.AddWithValue(paramName, item.getIdCliente()); k++; } sqlBuilder.Append(@" COMMIT END TRY BEGIN CATCH ROLLBACK END CATCH "); sqlCommand.CommandText = sqlBuilder.ToString(); sqlConnection.Open(); reader = sqlCommand.ExecuteReader(); sqlConnection.Close(); }
public override List <Hotel> getAll() { RepositorioCategoria repositorioCategoria = new RepositorioCategoria(); RepositorioRegimen repositorioRegimen = new RepositorioRegimen(); RepositorioCierreTemporal repositorioCierreTemporal = new RepositorioCierreTemporal(); RepositorioDireccion repositorioDireccion = new RepositorioDireccion(); RepositorioReserva repositorioReserva = new RepositorioReserva(); List <Hotel> hoteles = new List <Hotel>(); String connectionString = ConfigurationManager.AppSettings["BaseLocal"]; SqlConnection sqlConnection = new SqlConnection(connectionString); SqlCommand sqlCommand = new SqlCommand(); SqlDataReader reader; Hotel hotel = null; sqlCommand.CommandType = CommandType.Text; sqlCommand.Connection = sqlConnection; sqlCommand.CommandText = "SELECT idHotel,Nombre,Mail,Telefono,FechaInicioActividades,idCategoria,idDireccion FROM LOS_BORBOTONES.Hotel AS HOT;"; sqlConnection.Open(); reader = sqlCommand.ExecuteReader(); while (reader.Read()) { int idHotel = reader.GetInt32(reader.GetOrdinal("idHotel")); String nombre = reader.GetString(reader.GetOrdinal("Nombre")); String mail = reader.SafeGetString(reader.GetOrdinal("Mail")); String telefono = reader.SafeGetString(reader.GetOrdinal("Telefono")); DateTime fechaInicio = reader.GetDateTime(reader.GetOrdinal("FechaInicioActividades")); int idCategoria = reader.GetInt32(reader.GetOrdinal("idCategoria")); int idDireccion = reader.GetInt32(reader.GetOrdinal("idDireccion")); Categoria categoria = repositorioCategoria.getById(idCategoria); Direccion direccion = repositorioDireccion.getById(idDireccion); hotel = new Hotel(idHotel, categoria, direccion, nombre, mail, telefono, fechaInicio); hoteles.Add(hotel); } //Cierro Primera Consulta sqlConnection.Close(); return(hoteles); }
override public EstadoReserva getById(int idEstadoReserva) { RepositorioUsuario repoUsuario = new RepositorioUsuario(); RepositorioReserva repoReserva = new RepositorioReserva(); //Elementos del EstadoReserva a devolver EstadoReserva estadoReserva = null; Usuario usuario = null; Reserva reserva = null; String tipoEstado = ""; DateTime fecha = Utils.getSystemDatetimeNow(); String descripcion = ""; //Configuraciones de la consulta String connectionString = ConfigurationManager.AppSettings["BaseLocal"]; SqlConnection sqlConnection = new SqlConnection(connectionString); SqlCommand sqlCommand = new SqlCommand(); SqlDataReader reader; //Primera Consulta sqlCommand.Parameters.AddWithValue("@idEstadoReserva", idEstadoReserva); sqlCommand.CommandType = CommandType.Text; sqlCommand.Connection = sqlConnection; sqlCommand.CommandText = "SELECT * FROM LOS_BORBOTONES.EstadoReserva WHERE idEstado = @idEstadoReserva"; sqlConnection.Open(); reader = sqlCommand.ExecuteReader(); while (reader.Read()) { usuario = repoUsuario.getById(reader.GetOrdinal("IdUsuario")); //reserva = repoReserva.getById(reader.GetOrdinal("IdReserva")); //fecha = reader.GetDateTime(reader.GetOrdinal("Fecha")); tipoEstado = reader.GetString(reader.GetOrdinal("TipoEstado")); descripcion = reader.GetString(reader.GetOrdinal("Descripcion")); estadoReserva = new EstadoReserva(idEstadoReserva, usuario, reserva, tipoEstado, fecha, descripcion); } //Cierro Primera Consulta sqlConnection.Close(); //Si no encuentro elemento con ese ID tiro una excepción //if (usuario.Equals(null)) throw new NoExisteIDException("No existe estadoReserva con el ID asociado"); //Armo el estadoReserva completo return(estadoReserva); }
public List <Hotel> getByQuery(String nombreHotel, int?estrellas, String ciudad, String pais) { RepositorioCategoria repositorioCategoria = new RepositorioCategoria(); RepositorioRegimen repositorioRegimen = new RepositorioRegimen(); RepositorioCierreTemporal repositorioCierreTemporal = new RepositorioCierreTemporal(); RepositorioDireccion repositorioDireccion = new RepositorioDireccion(); RepositorioReserva repositorioReserva = new RepositorioReserva(); List <Hotel> hoteles = new List <Hotel>(); String connectionString = ConfigurationManager.AppSettings["BaseLocal"]; SqlConnection sqlConnection = new SqlConnection(connectionString); SqlCommand sqlCommand = new SqlCommand(); SqlDataReader reader; sqlCommand.CommandType = CommandType.Text; sqlCommand.Connection = sqlConnection; sqlCommand.CommandText = "SELECT DISTINCT(HOT.idHotel),HOT.Nombre,HOT.Mail,HOT.Telefono,HOT.FechaInicioActividades,HOT.idCategoria,HOT.idDireccion FROM LOS_BORBOTONES.Hotel AS HOT" + " JOIN LOS_BORBOTONES.Categoria AS CAT ON CAT.idCategoria= HOT.idCategoria" + " JOIN LOS_BORBOTONES.Direccion AS DIR ON DIR.idDireccion = HOT.idDireccion" + getCondiciones(nombreHotel, estrellas, ciudad, pais, sqlCommand) + ";"; sqlConnection.Open(); reader = sqlCommand.ExecuteReader(); while (reader.Read()) { int idHotel = reader.GetInt32(reader.GetOrdinal("idHotel")); String nombre = reader.GetString(reader.GetOrdinal("Nombre")); String mail = reader.SafeGetString(reader.GetOrdinal("Mail")); String telefono = reader.SafeGetString(reader.GetOrdinal("Telefono")); DateTime fechaInicio = reader.GetDateTime(reader.GetOrdinal("FechaInicioActividades")); int idCategoria = reader.GetInt32(reader.GetOrdinal("idCategoria")); int idDireccion = reader.GetInt32(reader.GetOrdinal("idDireccion")); Categoria categoria = repositorioCategoria.getById(idCategoria); Direccion direccion = repositorioDireccion.getById(idDireccion); Hotel hotel = new Hotel(idHotel, categoria, direccion, nombre, mail, telefono, fechaInicio); hoteles.Add(hotel); } //Cierro Primera Consulta sqlConnection.Close(); return(hoteles); }
public EstadoReserva getByIdReserva(int idReserva) { RepositorioUsuario repoUsuario = new RepositorioUsuario(); RepositorioReserva repoReserva = new RepositorioReserva(); EstadoReserva estadoReserva = null; //Configuraciones de la consulta String connectionString = ConfigurationManager.AppSettings["BaseLocal"]; SqlConnection sqlConnection = new SqlConnection(connectionString); SqlCommand sqlCommand = new SqlCommand(); SqlDataReader reader; //Primera Consulta sqlCommand.Parameters.AddWithValue("@idReserva", idReserva); sqlCommand.CommandType = CommandType.Text; sqlCommand.Connection = sqlConnection; sqlCommand.CommandText = @" SELECT * FROM LOS_BORBOTONES.EstadoReserva WHERE idReserva = @idReserva;"; sqlConnection.Open(); reader = sqlCommand.ExecuteReader(); if (reader.Read()) { int idEstadoReserva = reader.GetInt32(reader.GetOrdinal("idEstado")); String tipoEstado = reader.GetString(reader.GetOrdinal("TipoEstado")); DateTime fecha = reader.SafeGetDateTime(reader.GetOrdinal("Fecha")); String descripcion = reader.GetString(reader.GetOrdinal("Descripcion")); Usuario usuario = repoUsuario.getById(reader.GetInt32(reader.GetOrdinal("IdUsuario"))); Reserva reserva = repoReserva.getById(reader.GetInt32(reader.GetOrdinal("IdReserva"))); estadoReserva = new EstadoReserva(idEstadoReserva, usuario, reserva, tipoEstado, fecha, descripcion); } sqlConnection.Close(); return(estadoReserva); }
public int facturar(List <Estadia> estadias, List <ConsumibleParaMostrar> consumiblesXEstadia, String tipoPago, String nombreTarjeta, decimal nroTarjeta, int codSegTarjeta, int vencTarjeta) { int idFactura = 0; int resultado = 0; int numeroFactura = 0; RepositorioEstadia repoEstadia = new RepositorioEstadia(); RepositorioReserva repoReserva = new RepositorioReserva(); RepositorioItemFactura repoItemFactura = new RepositorioItemFactura(); Estadia estadia = null; Reserva reserva = null; //suponemos que hay solo 1 estadia por estrategia enunciado, pero lo dejo aca como para hacer mas si necesito. estadia = estadias.First(); //traigo la reserva y comparo los dias que sean los mismos los de la reserva que los que tuve efectivamente la estadia reserva = repoReserva.getIdByIdEstadia(estadia.getIdEstadia()); List <ItemFactura> itemsFactura = new List <ItemFactura>(); float total = 0; int puntos = 0; //float cant = 1;//pongo cant siempre en 1 ya que no marco mas que 1 solo consumible y lo mismo con la habitacion float monto = 0;//va a ser siempre el precio del cons ya que no marco mas que 1 solo consumible DateTime fecha = Utils.getSystemDatetimeNow(); int idItemFactura = 0; //int idConsumible = 0; //traigo el numero de factura asi le sumo 1 que sera el nuevo. numeroFactura = getLastNumeroFactura() + 1; //traigo regimen para sumarlo o ver si es all inclusive RepositorioRegimen repoRegimen = new RepositorioRegimen(); Regimen regimen = reserva.getRegimen(); Boolean allInclusive = false; if (regimen.getCodigoRegimen().Equals("RGAI")) { allInclusive = true; } //traigo el total //hago for each de los consumibles y sumo total y puntos ItemFactura itemFactura = null; float montoTotal = 0; foreach (ConsumibleParaMostrar cm in consumiblesXEstadia) { int cantidad = cm.getCantidad(); //SI ES ALL INCLUSIVE NO SUMAN PARA EL TOTAL DE LA FACTURA if (!allInclusive) { monto = cm.getConsumible().getPrecio(); } else { monto = 0; } itemFactura = new ItemFactura(idItemFactura, cm.getConsumible().getIdConsumible(), cm.getCantidad(), monto, fecha, idFactura); itemsFactura.Add(itemFactura); montoTotal = monto * cm.getCantidad() + montoTotal; } if (allInclusive) { //es all inclusive, hago un solo itemFactura all inclusive y no se cobra nada int idConsumible = 6;//poner el idConsumible del all inclusive monto = 0; //necesito un nuevo campo que sea descripcion por regimen de estadia itemFactura = new ItemFactura(idItemFactura, idConsumible, 1, monto, fecha, idFactura); itemsFactura.Add(itemFactura); } //sumo la habitacion x los dias alojados float montoHabitacion = 0; float totalHabitacion = 0; //conseguir el montoHabitacion de la reserva montoHabitacion = (float)repoReserva.getMonto(reserva); if (reserva.getDiasAlojados() == estadia.getCantidadNoches()) { float diasAlojados = (float)reserva.getDiasAlojados(); //se quedo toda la estadia hago solo un item factura con los dias x el monto totalHabitacion = montoHabitacion * diasAlojados; int idConsumible = 5; //con 5 marco que es la habitacion itemFactura = new ItemFactura(idItemFactura, idConsumible, diasAlojados, montoHabitacion, fecha, idFactura); itemsFactura.Add(itemFactura); } else { //no se quedo toda la estadia hago un item factura con los diasAlojados x el monto y aparte un item por cada dia que quedo. float diasAlojados = (float)estadia.getCantidadNoches(); float diasAlojadosTotal = (float)reserva.getDiasAlojados(); totalHabitacion = montoHabitacion * diasAlojadosTotal; int idConsumible = 5; //con 5 marco que es la habitacion itemFactura = new ItemFactura(idItemFactura, idConsumible, diasAlojados, montoHabitacion, fecha, idFactura); itemsFactura.Add(itemFactura); float gap = (float)(reserva.getDiasAlojados() - estadia.getCantidadNoches()); itemFactura = new ItemFactura(idItemFactura, idConsumible, gap, montoHabitacion, fecha, idFactura); itemsFactura.Add(itemFactura); } //sumo los puntos float dias = (float)reserva.getDiasAlojados(); puntos = (int)(montoHabitacion * dias) / 20; //puntos de habitacion puntos = puntos + (int)(montoTotal / 10); //puntos de consumibles total = totalHabitacion + montoTotal; Factura factura = new Factura(idFactura, estadia, reserva, numeroFactura, fecha, total, puntos, tipoPago, itemsFactura, nombreTarjeta, nroTarjeta, codSegTarjeta, vencTarjeta); idFactura = this.create(factura); if (idFactura != 0) { foreach (ItemFactura item in itemsFactura) { //hago el set de idFactura para el create item.setIdFactura(idFactura); } repoItemFactura.createTodos(itemsFactura); //hacer update de la estadia avisando que ya facture repoEstadia.facturado(estadia.getIdEstadia()); repoEstadia.updateEstadoFacturado(reserva.getIdReserva()); resultado = 1; } else { resultado = 2; //falla creando factura } return(resultado); }
public List <HabitacionDisponible> getHabitacionesDisponibles(DateTime fechaInicio, DateTime fechaFin, Hotel hotel, TipoHabitacion tipoHabitacion, Regimen regimen, Reserva reserva) { List <HabitacionDisponible> habitacionesDisponibles = new List <HabitacionDisponible>(); RepositorioRegimen repoRegimen = new RepositorioRegimen(); String connectionString = ConfigurationManager.AppSettings["BaseLocal"]; SqlConnection sqlConnection = new SqlConnection(connectionString); SqlCommand sqlCommand = new SqlCommand(); SqlDataReader reader; RepositorioReserva repoReserva = new RepositorioReserva(); repoReserva.cancelarReservasNoShow(hotel); sqlCommand.Parameters.AddWithValue("@fechaInicio", fechaInicio); sqlCommand.Parameters.AddWithValue("@fechaFin", fechaFin); sqlCommand.Parameters.AddWithValue("@idHotel", hotel.getIdHotel()); String queryTipoHab = ""; if (tipoHabitacion != null) { sqlCommand.Parameters.AddWithValue("@idtipoHabitacion", tipoHabitacion.getIdTipoHabitacion()); queryTipoHab = "AND HAB.idTipoHabitacion=@idtipoHabitacion "; } String queryModificarReservaParaTraerLaHabitacionQueYaReserve = reserva == null ? "" : "AND RES.idReserva!=" + reserva.getIdReserva(); sqlCommand.CommandType = CommandType.Text; sqlCommand.Connection = sqlConnection; sqlCommand.CommandText = "SELECT HAB.idHabitacion,HAB.Activa,HAB.Numero,HAB.Piso,HAB.Ubicacion,Hab.Descripcion,HAB.idHotel,HAB.idTipoHabitacion,REG.idRegimen FROM LOS_BORBOTONES.Habitacion AS HAB " + "JOIN LOS_BORBOTONES.Hotel AS HOT ON HOT.idHotel=HAB.idHotel " + "JOIN LOS_BORBOTONES.Regimen_X_Hotel AS RXH ON RXH.idHotel=HOT.idHotel " + "JOIN LOS_BORBOTONES.Regimen AS REG ON REG.idRegimen = RXH.idRegimen " + "JOIN LOS_BORBOTONES.TipoHabitacion AS TIP ON TIP.idTipoHabitacion=HAB.idTipoHabitacion " + "WHERE REG.Activo=1 " + "AND HAB.idHotel=@idHotel " + "AND HAB.Activa=1 " + queryTipoHab + "AND NOT EXISTS ( " + "SELECT * FROM LOS_BORBOTONES.Reserva_X_Habitacion_X_Cliente AS RXHXC " + "JOIN LOS_BORBOTONES.Reserva AS RES ON RES.idReserva = RXHXC.idReserva " + "WHERE HAB.idHabitacion= RXHXC.idHabitacion " + queryModificarReservaParaTraerLaHabitacionQueYaReserve + "AND (RES.FechaDesde < @fechaFin AND @fechaInicio < RES.FechaHasta ) " + "AND NOT EXISTS( " + "SELECT * FROM LOS_BORBOTONES.EstadoReserva AS ESRE " + "WHERE RES.idReserva = ESRE.idReserva " + "AND ESRE.TipoEstado IN ('RCR','RCC','RCNS') " + ") " + ") " + "AND NOT EXISTS (SELECT * FROM LOS_BORBOTONES.CierreTemporal AS CIE WHERE CIE.idHotel= HOT.idHotel AND CIE.FechaInicio < @fechaFin AND @fechaInicio < CIE.FechaFin) "; if (regimen != null) { sqlCommand.Parameters.AddWithValue("@idRegimen", regimen.getIdRegimen()); sqlCommand.CommandText += " AND REG.idRegimen=@idRegimen "; } sqlCommand.CommandText += " GROUP BY HAB.idHabitacion, REG.idRegimen, HAB.Activa,HAB.Numero,HAB.Piso,HAB.Ubicacion,HAB.idHotel,HAB.idTipoHabitacion,HAB.Descripcion " + " ORDER BY HAB.idHabitacion;"; sqlConnection.Open(); reader = sqlCommand.ExecuteReader(); while (reader.Read()) { int qidHabitacion = reader.GetInt32(reader.GetOrdinal("idHabitacion")); int qidTipoHabitacion = reader.GetInt32(reader.GetOrdinal("idTipoHabitacion")); bool qactiva = reader.GetBoolean(reader.GetOrdinal("Activa")); int qnumero = reader.GetInt32(reader.GetOrdinal("Numero")); int qpiso = reader.GetInt32(reader.GetOrdinal("Piso")); int qidRegimen = reader.GetInt32(reader.GetOrdinal("idRegimen")); String qubicacion = reader.GetString(reader.GetOrdinal("Ubicacion")); String qdescripcion = reader.SafeGetString(reader.GetOrdinal("Descripcion")); Regimen qregimen = repoRegimen.getById(qidRegimen); Habitacion qhabitacion = new Habitacion(qidHabitacion, qactiva, qnumero, qpiso, qubicacion, qdescripcion); habitacionesDisponibles.Add(new HabitacionDisponible(qhabitacion, qregimen)); } //Cierro Primera Consulta sqlConnection.Close(); return(habitacionesDisponibles); }