override public Reserva getById(int idReserva) { RepositorioHotel repoHotel = new RepositorioHotel(); RepositorioRegimen repoRegimen = new RepositorioRegimen(); RepositorioCliente repoCliente = new RepositorioCliente(); RepositorioEstadia repoEstadia = new RepositorioEstadia(); RepositorioEstadoReserva repoEstadoReserva = new RepositorioEstadoReserva(); //Elementos de la Reserva a devolver Reserva reserva; decimal codigoReserva = 0; decimal diasAlojados = 0; DateTime fechaCreacion = Utils.getSystemDatetimeNow(); DateTime fechaDesde = Utils.getSystemDatetimeNow(); DateTime fechaHasta = Utils.getSystemDatetimeNow(); //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.Reserva WHERE idReserva = @idReserva"; sqlConnection.Open(); reader = sqlCommand.ExecuteReader(); while (reader.Read()) { codigoReserva = reader.GetDecimal(reader.GetOrdinal("CodigoReserva")); diasAlojados = reader.GetDecimal(reader.GetOrdinal("DiasAlojados")); fechaDesde = reader.GetDateTime(reader.GetOrdinal("FechaDesde")); fechaHasta = reader.GetDateTime(reader.GetOrdinal("FechaHasta")); fechaCreacion = reader.GetDateTime(reader.GetOrdinal("FechaCreacion")); } //Cierro Primera Consulta sqlConnection.Close(); //Armo la reserva completa reserva = new Reserva(idReserva, null, null, null, null, codigoReserva, diasAlojados, fechaCreacion, fechaDesde, fechaHasta, null); return(reserva); }
public Reserva getIdByIdEstadia(int idEstadia) { Reserva reserva = null; RepositorioRegimen repoRegimen = new RepositorioRegimen(); RepositorioHotel repoHotel = new RepositorioHotel(); RepositorioEstadia repoEstadia = new RepositorioEstadia(); RepositorioCliente repoClientes = new RepositorioCliente(); RepositorioEstadoReserva repoEstadoReserva = new RepositorioEstadoReserva(); String connectionString = ConfigurationManager.AppSettings["BaseLocal"]; SqlConnection sqlConnection = new SqlConnection(connectionString); SqlCommand sqlCommand = new SqlCommand(); SqlDataReader reader; sqlCommand.Parameters.AddWithValue("@idEstadia", idEstadia); sqlCommand.CommandType = CommandType.Text; sqlCommand.Connection = sqlConnection; sqlCommand.CommandText = "SELECT * FROM LOS_BORBOTONES.Reserva WHERE idEstadia = @idEstadia"; sqlConnection.Open(); reader = sqlCommand.ExecuteReader(); while (reader.Read()) { int idReserva = reader.GetInt32(reader.GetOrdinal("idReserva")); decimal codigoReserva = reader.GetDecimal(reader.GetOrdinal("CodigoReserva")); decimal diasAlojados = reader.GetDecimal(reader.GetOrdinal("DiasAlojados")); DateTime fechaDesde = reader.SafeGetDateTime(reader.GetOrdinal("FechaDesde")); DateTime fechaHasta = reader.SafeGetDateTime(reader.GetOrdinal("FechaHasta")); DateTime fechaCreacion = reader.SafeGetDateTime(reader.GetOrdinal("FechaCreacion")); Hotel hotel = repoHotel.getById(reader.GetInt32(reader.GetOrdinal("idHotel")));; Regimen regimen = repoRegimen.getById(reader.GetInt32(reader.GetOrdinal("idRegimen"))); Estadia estadia = repoEstadia.getById(reader.GetInt32(reader.GetOrdinal("idEstadia"))); Cliente cliente = repoClientes.getById(reader.GetInt32(reader.GetOrdinal("idCliente"))); EstadoReserva estado = repoEstadoReserva.getByIdReserva(idReserva); reserva = new Reserva(idReserva, hotel, estadia, regimen, cliente, codigoReserva, diasAlojados, fechaCreacion, fechaDesde, fechaHasta, estado); } sqlConnection.Close(); return(reserva); }
public List <Reserva> getByIdHotel(int idHotel) { RepositorioHotel repoHotel = new RepositorioHotel(); RepositorioRegimen repoRegimen = new RepositorioRegimen(); RepositorioCliente repoCliente = new RepositorioCliente(); RepositorioEstadia repoEstadia = new RepositorioEstadia(); RepositorioEstadoReserva repoEstadoReserva = new RepositorioEstadoReserva(); List <Reserva> reservas = new List <Reserva>(); String connectionString = ConfigurationManager.AppSettings["BaseLocal"]; SqlConnection sqlConnection = new SqlConnection(connectionString); SqlCommand sqlCommand = new SqlCommand(); SqlDataReader reader; sqlCommand.Parameters.AddWithValue("@idHotel", idHotel); sqlCommand.CommandType = CommandType.Text; sqlCommand.Connection = sqlConnection; sqlCommand.CommandText = "SELECT * FROM LOS_BORBOTONES.Reserva WHERE idHotel = @idHotel"; sqlConnection.Open(); reader = sqlCommand.ExecuteReader(); while (reader.Read()) { int idReserva = reader.GetInt32(reader.GetOrdinal("idReserva")); decimal codigoReserva = reader.GetDecimal(reader.GetOrdinal("CodigoReserva")); DateTime fechaCreacion = reader.GetDateTime(reader.GetOrdinal("FechaCreacion")); DateTime fechaDesde = reader.GetDateTime(reader.GetOrdinal("FechaDesde")); DateTime fechaHasta = reader.GetDateTime(reader.GetOrdinal("FechaHasta")); decimal diasAlojados = reader.GetDecimal(reader.GetOrdinal("DiasAlojados")); Reserva reserva = new Reserva(idReserva, null, null, null, null, codigoReserva, diasAlojados, fechaCreacion, fechaDesde, fechaHasta, null); reservas.Add(reserva); } sqlConnection.Close(); return(reservas); }
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 int GetReservaValida(int codReserva, DateTime date, Usuario user, int hotelIn) { int idHotel = 0; int idReserva = 0; int hotelFound = 0; decimal cantidadNoches = 0; DateTime fechaOut = Utils.getSystemDatetimeNow(); RepositorioUsuario repouser = new RepositorioUsuario(); Usuario userIn = user; if (userIn == null) { return(4); } String connectionString = ConfigurationManager.AppSettings["BaseLocal"]; SqlConnection sqlConnection = new SqlConnection(connectionString); SqlCommand sqlCommand = new SqlCommand(); SqlDataReader reader; sqlCommand.Parameters.AddWithValue("@CodReserva", codReserva); sqlCommand.Parameters.AddWithValue("@date", date); sqlCommand.CommandType = CommandType.Text; sqlCommand.Connection = sqlConnection; sqlCommand.CommandText = "SELECT r.idReserva,r.idHotel,r.FechaHasta,r.DiasAlojados FROM LOS_BORBOTONES.Reserva as r,LOS_BORBOTONES.EstadoReserva as er WHERE r.CodigoReserva = @CodReserva and r.FechaDesde = @date and er.idReserva=r.idReserva and er.TipoEstado IN ('RC','RM')"; sqlConnection.Open(); reader = sqlCommand.ExecuteReader(); while (reader.Read()) { idReserva = reader.GetInt32(reader.GetOrdinal("idReserva")); idHotel = reader.GetInt32(reader.GetOrdinal("idHotel")); fechaOut = reader.GetDateTime(reader.GetOrdinal("FechaHasta")); cantidadNoches = reader.GetDecimal(reader.GetOrdinal("DiasAlojados")); } sqlConnection.Close(); if (idReserva == 0) { //llamo a cancelar la reserva en estado reserva RepositorioEstadia repoEstadia = new RepositorioEstadia(); RepositorioEstadoReserva repoEstadoReserva = new RepositorioEstadoReserva(); String estado = repoEstadia.getEstado(codReserva); if (estado.Equals("RC") | estado.Equals("RM")) { repoEstadoReserva.rechazarReserva(codReserva, userIn.getIdUsuario(), date); return(2); } return(5); } /* esto miraba que sea cualquier hotel del usuario, no en el que esta logueado * foreach (Hotel h in userIn.getHoteles()) * { * //si encuentro el hotel en el que el usuario trabaja entonces valido bien * if (h.getIdHotel() == idHotel) * hotelFound = 1; * }*/ if (hotelIn == idHotel) { hotelFound = 1; } if (hotelFound == 0) { return(3); } if (idReserva != 0 && hotelFound != 0) { //llamo a actualizar la estadia RepositorioEstadia repoEstadia = new RepositorioEstadia(); //int idEstadia = getIdEstadiaByCodReserva(codReserva); //comento lo de arriba ya que es un insert esto, no un update como pense al principio int idEstadia = 0; Boolean facturada = false; Usuario userOut = userIn; Estadia estadia = new Estadia(idEstadia, userIn, userOut, date, fechaOut, facturada, cantidadNoches); idEstadia = repoEstadia.create(estadia); //repoEstadia.updateIn(estadia); //hago update de reserva para darle id estadia Reserva reserva = getById(idReserva); this.updateIn(idReserva, idEstadia); //hago update de EstadoReserva RepositorioEstadoReserva repoEstadoReserva = new RepositorioEstadoReserva(); int idEstadoReserva = 0; String desc = "Reserva Con Ingreso"; String tipoEstado = "RCI"; EstadoReserva estadoReserva = new EstadoReserva(idEstadoReserva, userIn, reserva, tipoEstado, date, desc); repoEstadoReserva.update(estadoReserva); return(idEstadia); } return(0); }