public void ReservaDto_a_Reserva()
        {
            DadaUnaReservaDto();

            var reserva = ReservaMapper.Map(_unaReservaCreacionDTO);

            reserva.PasajeroTitular.NombreCompleto.Should().Be(_pasajero.NombreCompleto);
            reserva.PasajeroTitular.DniOPasaporte.Should().Be(_pasajero.DniOPasaporte);
            reserva.PasajeroTitular.Email.Should().Be(_pasajero.Email);
            reserva.PasajeroTitular.Telefono.Should().Be(_pasajero.Telefono);
            reserva.PasajeroTitular.Pais.Should().Be(_pasajero.Pais);

            reserva.PrimeraNoche.Should().Be(_desde);
            reserva.UltimaNoche.Should().Be(_hasta.AddDays(-1));
            reserva.HoraEstimadaDeLlegada.Should().Be(new TimeSpan(11, 0, 0));
            reserva.Estado.Should().Be(ReservaEstadoEnum.HizoCheckout);
            reserva.CantidadDePasajeros.Should().Be(3);
            reserva.Canal.Should().Be(_unaReservaCreacionDTO.Canal);
            reserva.ReservaCamas.Should().HaveCount(1);
            reserva.ReservaHabitacionesPrivadas.Should().HaveCount(3);

            reserva.ReservaCamas.Should().Contain(x => x.CamaId == UN_CAMA_ID);
            reserva.ReservaHabitacionesPrivadas.Should().Contain(x => x.HabitacionPrivadaId == 100);
            reserva.ReservaHabitacionesPrivadas.Should().Contain(x => x.HabitacionPrivadaId == 200);
            reserva.ReservaHabitacionesPrivadas.Should().Contain(x => x.HabitacionPrivadaId == 400);
        }
Example #2
0
        public async Task <int> Crear([FromBody] ReservaCreacionDTO creacionDTO)
        {
            if (creacionDTO.CamasIds != null && creacionDTO.CamasIds.Count == 0 && creacionDTO.HabitacionesPrivadasIds != null && creacionDTO.HabitacionesPrivadasIds.Count == 0)
            {
                throw new AppException("Se debe reservar al menos una habitaciĆ³n o cama");
            }

            if (creacionDTO.CamasIds != null && creacionDTO.CamasIds.Count() != creacionDTO.CamasIds.Distinct().Count())
            {
                throw new AppException("No puede reservarse dos veces la misma cama");
            }

            if (creacionDTO.HabitacionesPrivadasIds != null && creacionDTO.HabitacionesPrivadasIds.Count() != creacionDTO.HabitacionesPrivadasIds.Distinct().Count())
            {
                throw new AppException("No se puede reservar dos veces la misma habitaciĆ³n");
            }

            if (creacionDTO.DiaDeCheckin == creacionDTO.DiaDeCheckout)
            {
                throw new AppException("Se debe reservar al menos una noche");
            }

            var reserva = ReservaMapper.Map(creacionDTO);

            await SiElPasajeroTitularYaExisteModificarloSinoCrearlo(reserva);

            var id = await _service.Crear(reserva);

            return(id);
        }
 private static void RefrescarCache()
 {
     cacheReservas = ReservaMapper.TraerReservas();
     listaHoteles  = HotelMapper.TraerHoteles();
     listaClientes = ClienteServicio.TraerClientes();
     listaHoteles.ForEach(x => x.Habitaciones.AddRange(HabitacionMapper.TraerHabitacionesPorId(x.Id)));
     LlenarListas();
 }
Example #4
0
        public async Task <int> Cancelar([FromBody] CancelarDTO dto)
        {
            var reserva = ReservaMapper.Map(dto);

            await _service.Cancelar(reserva);

            return(reserva.Id);
        }
Example #5
0
        public async Task <int> HacerCheckOut([FromBody] HacerCheckOutDTO dto)
        {
            var reserva = ReservaMapper.Map(dto);

            await _service.HacerCheckOut(reserva);

            return(reserva.Id);
        }
Example #6
0
        public async Task <ReservasDelPeriodoDTO> ListarVigentesEntre(string primeraNoche, int dias)
        {
            var primeraNocheDateTime = Utilidades.ConvertirFecha(primeraNoche);
            var ultimaNoche          = primeraNocheDateTime.AddDays(dias - 1);

            var reservas = await _service.ListarVigentesEntre(primeraNocheDateTime, ultimaNoche);

            return(ReservaMapper.Map(reservas, primeraNocheDateTime, ultimaNoche.AddDays(1)));
        }
        public void ReservaConHabPrivada_a_ReservaDTO()
        {
            var reserva    = DadaUnaReservaQueTieneHabitacionPrivadaPeroNoCama();
            var reservaDTO = ReservaMapper.MapDetalle(reserva);

            reservaDTO.DiaDeCheckin.Should().Be(Utilidades.ConvertirFecha(_desde));
            reservaDTO.DiaDeCheckout.Should().Be(Utilidades.ConvertirFecha(_hasta.AddDays(1)));
            reservaDTO.Camas.Should().HaveCount(0);
            reservaDTO.HabitacionesPrivadas.Should().HaveCount(1);
            reservaDTO.HabitacionesPrivadas.First().Id.Should().Be(1);
        }
Example #8
0
        public async Task <int> HacerCheckIn([FromBody] HacerCheckInDTO dto)
        {
            ValidarQueNoEsteDosVecesElMismoPasajero(dto);

            var reserva = ReservaMapper.Map(dto);

            await SiElPasajeroTitularYaExisteModificarloSinoCrearlo(reserva);
            await SiAlgunPasajeroAnexoYaExisteModificarlo(reserva);

            await _service.HacerCheckIn(reserva);

            return(reserva.Id);
        }
Example #9
0
 public HotelServicios()
 {
     _listahoteles      = new List <Hotel>();
     _listaHabitaciones = new List <Habitacion>();
     _listaReservas     = new List <Reserva>();
     //Cache
     _listaclientes = ClienteMapper.TraerTodos();
     _listahoteles  = HotelMapper.Hotel_getAll();
     _listaReservas = ReservaMapper.Reserva_getAll();
     foreach (Hotel a in _listahoteles)
     {
         _listaHabitaciones.AddRange(HabitacionMapper.Habitacion_getAllByHotel(a.Id));
     }
 }
Example #10
0
        public async Task <IEnumerable <ReservaResumenDTO> > Listar(ReservaEstadoEnum?estado, string checkInDesde, string checkInHasta, string checkOutDesde, string checkOutHasta)
        {
            var checkInDesdeDateTime = checkInDesde != null?Utilidades.ConvertirFecha(checkInDesde) : (DateTime?)null;

            var checkInHastaDateTime = checkInHasta != null?Utilidades.ConvertirFecha(checkInHasta) : (DateTime?)null;

            var checkOutDesdeDateTime = checkOutDesde != null?Utilidades.ConvertirFecha(checkOutDesde) : (DateTime?)null;

            var checkOutHastaDateTime = checkOutHasta != null?Utilidades.ConvertirFecha(checkOutHasta) : (DateTime?)null;

            var reservas = await _service.Listar(estado, checkInDesdeDateTime, checkInHastaDateTime, checkOutDesdeDateTime, checkOutHastaDateTime);

            return(ReservaMapper.Map(reservas));
        }
Example #11
0
        public int EliminarReserva(int id)
        {
            TransactionResult resultado = ReservaMapper.Delete(id);

            if (resultado.IsOk)
            {
                ReservaCache();
                return(resultado.Id);
            }
            else
            {
                throw new ReservasException(resultado.Error);
            }
        }
Example #12
0
        public int IngresarReserva(Reserva reserva, Habitacion hab)
        {
            if (reserva.CantidadHuespedes > hab.CantidadPlazas)
            {
                throw new ReservasException("Cantidad de huespedes superior a plaza.");
            }
            if (reserva.FechaIngreso.Date < DateTime.Today.Date)
            {
                throw new ReservasException("La fecha debe ser mayor o igual a hoy.");
            }
            if (reserva.FechaEgreso.Date - reserva.FechaIngreso.Date < TimeSpan.FromDays(1))
            {
                throw new ReservasException("Fecha de egreso debe ser mayor a ingreso.");
            }

            var reservas = _listaReservas.Where(o => o.IdHabitacion == reserva.IdHabitacion);
            var cliente  = _listaclientes.FirstOrDefault(o => o.Id == reserva.IdCliente);

            if (cliente == null)
            {
                throw new ReservasException("El cliente no existe.");
            }

            for (DateTime i = reserva.FechaIngreso; i <= reserva.FechaEgreso; i = i.AddDays(1))
            {
                if (reservas.Where(t => i >= t.FechaIngreso & i < t.FechaEgreso).Any())
                {
                    throw new ReservasException("La habitacion se encuentra reservada.");
                }
            }
            TransactionResult resultado = ReservaMapper.Insert(reserva);

            if (resultado.IsOk)
            {
                reserva.Id = resultado.Id;

                SendMailAsync(reserva, cliente.Email);
                ReservaCache();
                return(resultado.Id);
            }
            else
            {
                throw new ReservasException(resultado.Error);
            }
        }
        public void ListaReservas_a_ReservasDelPeriodoDTO()
        {
            DadaUnaListaDeReservas();
            var desde = new DateTime(2020, 8, 1);
            var hasta = new DateTime(2020, 8, 31);

            var reservasDelPeriodoDTO = ReservaMapper.Map(_unaListaDeReservas, desde, hasta);
            var primeraReserva        = reservasDelPeriodoDTO.Reservas.First();

            reservasDelPeriodoDTO.Desde.Should().Be(Utilidades.ConvertirFecha(desde));
            reservasDelPeriodoDTO.Hasta.Should().Be(Utilidades.ConvertirFecha(hasta));

            primeraReserva.DiaDeCheckin.Should().Be("2020-08-01");
            primeraReserva.DiaDeCheckout.Should().Be("2020-08-31");
            primeraReserva.CamasIds.Should().HaveCount(2);
            primeraReserva.CamasIds.First().Should().Be(1);
            primeraReserva.CamasIds.Skip(1).First().Should().Be(2);
        }
 public static void InsertarReserva(Reserva reserva)
 {
     if (ExisteReserva(reserva))
     {
         throw new ReservaExistenteException(reserva.Id);
     }
     else
     {
         LlenarListas();
         ValidacionDeReserva(reserva);
         TransactionResult result = ReservaMapper.Insert(reserva);
         if (!result.IsOk)
         {
             throw new ErrorServidorException(result.Error);
         }
         else
         {
             RefrescarCache();
         }
     }
 }
Example #15
0
        public ConsultarReservaResponse ConsultarReserva(ConsultarReservaRequest request)
        {
            var response = new ConsultarReservaResponse();

            try
            {
                response = request.Validate();

                if (!response.Error)
                {
                    response.Reserva = ReservaMapper.MapperToConsultaDto(_reservaRepository.Consultar(request.Token, request.Cpf, request.Matricula, request.Senha));
                }
            }
            catch (Exception ex)
            {
                response.Error = true;
                response.ErrorMessages.Add(ex.Message);
            }

            return(response);
        }
Example #16
0
        public IncluirReservaResponse IncluirReserva(IncluirReservaRequest request)
        {
            var response = new IncluirReservaResponse();
            var retorno  = new RetornoIncluirReservaDto();

            try
            {
                response = request.Validate();

                if (!response.Error)
                {
                    response.Retorno = ReservaMapper.MapperToIncluirDto(_reservaRepository.Incluir(ReservaMapper.Mapper(request.Reserva)));
                }
            }
            catch (Exception ex)
            {
                response.Error = true;
                response.ErrorMessages.Add(ex.Message);
            }

            return(response);
        }
        public void ReservaConCamas_a_ReservaDTO()
        {
            DadaUnaListaDeReservas();
            var reserva    = _unaListaDeReservas.Skip(1).First();
            var reservaDTO = ReservaMapper.MapDetalle(reserva);

            reservaDTO.Estado.Should().Be(ReservaEstadoEnum.InHouse);
            reservaDTO.HoraEstimadaDeLlegada.Should().Be("11:00");
            reservaDTO.CantidadDePasajeros.Should().Be(1);
            reservaDTO.Canal.Should().Be(reserva.Canal);
            reservaDTO.DiaDeCheckin.Should().Be(Utilidades.ConvertirFecha(_desde));
            reservaDTO.DiaDeCheckout.Should().Be(Utilidades.ConvertirFecha(_hasta.AddDays(1)));
            reservaDTO.Camas.Should().HaveCount(2);
            reservaDTO.Camas.First().Id.Should().Be(1);
            reservaDTO.Camas.Skip(1).First().Id.Should().Be(2);

            reservaDTO.PasajeroTitular.DniOPasaporte.Should().Be(_pasajero.DniOPasaporte);
            reservaDTO.PasajeroTitular.NombreCompleto.Should().Be(_pasajero.NombreCompleto);
            reservaDTO.PasajeroTitular.Email.Should().Be(_pasajero.Email);
            reservaDTO.PasajeroTitular.Telefono.Should().Be(_pasajero.Telefono);
            reservaDTO.PasajeroTitular.Pais.Should().Be(_pasajero.Pais);
        }
Example #18
0
 private void ReservaCache()
 {
     _listaReservas = ReservaMapper.Reserva_getAll();
 }
Example #19
0
        public async Task <ReservaDetalleDTO> ObtenerPorId(int id)
        {
            var reserva = await _service.ObtenerPorId(id);

            return(ReservaMapper.MapDetalle(reserva));
        }
Example #20
0
 public ReservaCrudFactory()
 {
     mapper = new ReservaMapper();
     dao    = SqlDao.GetInstance();
 }