public IActionResult Post(int id, [FromBody] ObjetoPostReserva objeto)
 {
     if (objeto.Filtro == null)
     {
         return(BadRequest("Filtro no puede ser null"));
     }
     if (objeto.Datos == null)
     {
         return(BadRequest("Los datos no pueden ser null"));
     }
     if (objeto.HospedajeId == null)
     {
         return(BadRequest("El id del hospedaje no pueden ser null"));
     }
     try
     {
         HospedajeFiltro filtro      = objeto.Filtro;
         DatosUsuario    datos       = objeto.Datos;
         int             hospedajeId = (int)objeto.HospedajeId;
         Reserva         reserva     = logica.Reserva(filtro, hospedajeId, datos);
         logica.AgregarReserva(reserva);
         return(Ok(reserva));
     }
     catch (YaExisteLaEntidadExcepcion)
     {
         return(BadRequest("No se puede ingresar una reserva con el mismo id"));
     }
     catch (EntidadNoExisteExcepcion)
     {
         return(NotFound("No existe el hospedaje"));
     }
 }
示例#2
0
        public void PostReservaDatosNull()
        {
            var logicMock                 = new Mock <IReserva>(MockBehavior.Strict);
            var logicMockHospedaje        = new Mock <IHospedaje>(MockBehavior.Strict);
            ReservasController controller = new ReservasController(logicMock.Object, logicMockHospedaje.Object);
            DateTime           checkIn    = new DateTime(2020, 10, 9);
            DateTime           checkOut   = new DateTime(2020, 10, 11);
            const int          intTest    = 1;
            CantHuespedes      huespedes  = new CantHuespedes()
            {
                CantJubilados = 0,
                CantAdultos   = intTest,
                CantBebes     = intTest,
                CantNinios    = intTest,
            };

            HospedajeFiltro filtro = new HospedajeFiltro()
            {
                Huespedes = huespedes,
                CheckIn   = checkIn,
                CheckOut  = checkOut,
            };
            ObjetoPostReserva objeto = new ObjetoPostReserva()
            {
                HospedajeId = intTest, Datos = null, Filtro = filtro
            };

            var result   = controller.Post(intTest, objeto);
            var okResult = result as BadRequestObjectResult;

            logicMock.VerifyAll();
        }
示例#3
0
        public void TestCrearReservaValido()
        {
            CantHuespedes huespedes = new CantHuespedes()
            {
                CantAdultos   = 1,
                CantBebes     = 1,
                CantNinios    = 1,
                CantJubilados = 0,
            };
            HospedajeFiltro filtro = new HospedajeFiltro()
            {
                Huespedes = huespedes,
                CheckIn   = new DateTime(2020, 10, 2),
                CheckOut  = new DateTime(2020, 10, 2),
            };
            Hospedaje hospedaje = new Hospedaje()
            {
                Id = 0
            };
            DatosUsuario datosTurista = new DatosUsuario()
            {
                Apellido = "test",
                Nombre   = "Prueba",
                Mail     = "test"
            };
            var           logicaHospedajeMock = new Mock <IHospedaje>(MockBehavior.Strict);
            var           repoMock            = new Mock <IRepository <Reserva> >(MockBehavior.Strict);
            Reserva_Logic logica = new Reserva_Logic(repoMock.Object, logicaHospedajeMock.Object);

            logicaHospedajeMock.Setup(x => x.ObtenerPorId(0)).Returns(hospedaje);
            logicaHospedajeMock.Setup(x => x.ActualizarHospedaje(hospedaje));
            Reserva reserva = logica.Reserva(filtro, hospedaje.Id, datosTurista);

            Assert.AreEqual(hospedaje.Id, reserva.Hospedaje.Id);
        }
示例#4
0
        public void BuscarPuntoIdValidoOcupado()
        {
            List <Imagen> imagenes = new List <Imagen>()
            {
                new Imagen()
                {
                    Id = 0, Ruta = "test.jpg",
                },
            };
            var             repoMock        = new Mock <IRepository <Hospedaje> >(MockBehavior.Strict);
            var             logicaPuntoMock = new Mock <IPuntoTuristico>(MockBehavior.Strict);
            Hospedaje_Logic logica          = new Hospedaje_Logic(repoMock.Object, logicaPuntoMock.Object);
            PuntoTuristico  punto           = new PuntoTuristico()
            {
                Nombre      = "Prueba",
                Descripcion = "DASD",
                Imagen      = imagenes.First(),
                Id          = 0,
                PuntosTuristicosCategoria = new List <PuntoTuristicoCategoria>(),
            };
            Hospedaje hospedaje = new Hospedaje()
            {
                Id = 0,
                NombreHospedaje    = "Hotel X",
                Descripcion        = "Test",
                Direccion          = "Test",
                CantidadEstrellas  = 2,
                Capacidad          = 5,
                PrecioPorNoche     = 140,
                PrecioTotalPeriodo = 200,
                Imagenes           = imagenes,
                Ocupado            = true,
                PuntoTuristico     = punto,
            };
            List <Hospedaje> lista = new List <Hospedaje>()
            {
                hospedaje
            };

            repoMock.Setup(x => x.GetAll()).Returns(lista);

            CantHuespedes huespedes = new CantHuespedes()
            {
                CantAdultos   = 1,
                CantBebes     = 0,
                CantNinios    = 1,
                CantJubilados = 0,
            };

            HospedajeFiltro filtro = new HospedajeFiltro()
            {
                Huespedes = huespedes,
                CheckIn   = new DateTime(2020, 10, 9),
                CheckOut  = new DateTime(2020, 10, 11),
            };
            List <Hospedaje> retorno = logica.BuscarHospedajePunto(punto.Id, filtro);

            Assert.AreEqual(0, retorno.Count);
        }
        private static void CargarDatosFiltro(HospedajeFiltro filtro, Reserva retorno)
        {
            int cantidadHuespedes = filtro.Huespedes.CapacidadTotal();

            retorno.CantidadHuespedes = cantidadHuespedes;
            retorno.CheckIn           = filtro.CheckIn;
            retorno.CheckOut          = filtro.CheckOut;
        }
        public void GetHospedajesPorPuntoYFiltroOk()
        {
            string stringPrueba                 = "Test";
            int    intPrueba                    = 5;
            int    puntoId                      = 0;
            var    logicMock                    = new Mock <IHospedaje>(MockBehavior.Strict);
            HospedajesController controller     = new HospedajesController(logicMock.Object);
            HospedajeModel       hospedajeModel = new HospedajeModel()
            {
                NombreHospedaje    = stringPrueba,
                Descripcion        = stringPrueba,
                Direccion          = stringPrueba,
                CantidadEstrellas  = intPrueba,
                Capacidad          = intPrueba,
                PrecioPorNoche     = intPrueba,
                PrecioTotalPeriodo = intPrueba,
                Imagenes           = new List <Imagen>()
                {
                    new Imagen()
                    {
                        Ruta = stringPrueba, Id = intPrueba
                    }
                },
            };
            Hospedaje hospedaje = hospedajeModel.ToEntity();

            hospedaje.PuntoTuristico = new PuntoTuristico()
            {
                Id = puntoId, Nombre = "Test"
            };
            CantHuespedes huespedes = new CantHuespedes()
            {
                CantJubilados = 0,
                CantAdultos   = 1,
                CantBebes     = 0,
                CantNinios    = 1,
            };

            HospedajeFiltro filtro = new HospedajeFiltro()
            {
                Huespedes = huespedes,
                CheckIn   = new DateTime(2020, 10, 9),
                CheckOut  = new DateTime(2020, 10, 19),
            };

            logicMock.Setup(x => x.BuscarHospedajePunto(puntoId, filtro)).
            Returns(new List <Hospedaje>()
            {
                hospedaje
            });

            var result   = controller.GetFiltro(puntoId, filtro);
            var okResult = result as OkObjectResult;
            var retorno  = okResult.Value as List <Hospedaje>;

            logicMock.VerifyAll();
            Assert.AreEqual(1, retorno.Count);
        }
        public Reserva Reserva(HospedajeFiltro filtro, int hospedajeId, DatosUsuario datosTurista)
        {
            Reserva retorno = new Reserva();

            CargarDatosFiltro(filtro, retorno);
            CargarDatosTurista(datosTurista, retorno);
            SetearEstadoYDescripcion(retorno);
            SetearHospedaje(hospedajeId, retorno);
            return(retorno);
        }
        private static int ObtenerDias(HospedajeFiltro filtro)
        {
            DateTime checkIn  = filtro.CheckIn;
            DateTime checkOut = filtro.CheckOut;

            if (ValidadorFecha.FechaMenor(checkIn, checkOut))
            {
                return((int)(checkOut - checkIn).TotalDays);
            }
            else
            {
                throw new RevisarFechaExcepcion();
            }
        }
示例#9
0
        public void PostReservaYaExisteId()
        {
            string             stringPrueba       = "test";
            var                logicMock          = new Mock <IReserva>(MockBehavior.Strict);
            var                logicMockHospedaje = new Mock <IHospedaje>(MockBehavior.Strict);
            ReservasController controller         = new ReservasController(logicMock.Object, logicMockHospedaje.Object);
            DateTime           checkIn            = new DateTime(2020, 10, 9);
            DateTime           checkOut           = new DateTime(2020, 10, 11);
            const int          intTest            = 1;
            CantHuespedes      huespedes          = new CantHuespedes()
            {
                CantJubilados = 0,
                CantAdultos   = intTest,
                CantBebes     = intTest,
                CantNinios    = intTest,
            };

            HospedajeFiltro filtro = new HospedajeFiltro()
            {
                Huespedes = huespedes,
                CheckIn   = checkIn,
                CheckOut  = checkOut,
            };

            DatosUsuario datos = new DatosUsuario()
            {
                Nombre   = stringPrueba,
                Apellido = stringPrueba,
                Mail     = stringPrueba
            };

            logicMock.Setup(x => x.Reserva(filtro, intTest, datos)).Returns(It.IsAny <Reserva>());
            logicMock.Setup(x => x.AgregarReserva(It.IsAny <Reserva>())).Throws(new YaExisteLaEntidadExcepcion());

            ObjetoPostReserva objeto = new ObjetoPostReserva()
            {
                HospedajeId = intTest, Datos = datos, Filtro = filtro
            };

            var result   = controller.Post(intTest, objeto);
            var okResult = result as BadRequestObjectResult;

            logicMock.VerifyAll();
        }
示例#10
0
 public IActionResult GetFiltro(int id, [FromBody] HospedajeFiltro filtro)
 {
     try
     {
         List <Hospedaje> hospedaje = logic.BuscarHospedajePunto(id, filtro);
         return(Ok(hospedaje));
     }
     catch (RevisarFechaExcepcion)
     {
         return(BadRequest("Revisar CheckIn y CheckOut"));
     }
     catch (EntidadNoExisteExcepcion)
     {
         return(NotFound("El hospedaje o el punto no existen "));
     }
     catch (FechaVaciaException)
     {
         return(BadRequest("Revisar CheckIn y CheckOut, uno de los dos no fue seteado correctamente"));
     }
 }
        public List <Hospedaje> BuscarHospedajePunto(int puntoId, HospedajeFiltro filtro)
        {
            List <Hospedaje> hospedajes = this.ObtenerHospedajesDePunto(puntoId);
            List <Hospedaje> retorno    = new List <Hospedaje>();
            int capacidad = filtro.Huespedes.CapacidadTotal();
            int dias      = ObtenerDias(filtro);

            foreach (Hospedaje hospedaje in hospedajes)
            {
                if (TieneCapacidad(capacidad, hospedaje))
                {
                    if (NoOcupado(hospedaje))
                    {
                        hospedaje.PrecioTotalPeriodo = CalcularPrecioTotal
                                                           (filtro.Huespedes, hospedaje.PrecioPorNoche, dias);

                        retorno.Add(hospedaje);
                    }
                }
            }
            return(retorno);
        }