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