示例#1
0
        public static Reserva Map(ReservaCreacionDTO dto)
        {
            var reserva = new Reserva
            {
                ReservaCamas = dto.CamasIds?.Select(x => new ReservaCama {
                    CamaId = x
                }).ToList(),
                ReservaHabitacionesPrivadas = dto.HabitacionesPrivadasIds?.Select(x => new ReservaHabitacionPrivada {
                    HabitacionPrivadaId = x
                }).ToList(),
                PasajeroTitular       = PasajeroMapper.Map(dto.PasajeroTitular),
                Estado                = dto.Estado,
                Canal                 = dto.Canal,
                HoraEstimadaDeLlegada = TimeSpan.Parse(dto.HoraEstimadaDeLlegada),
                CantidadDePasajeros   = dto.CantidadDePasajeros,
                PrimeraNoche          = Utilidades.ConvertirFecha(dto.DiaDeCheckin),
                UltimaNoche           = Utilidades.ConvertirFecha(dto.DiaDeCheckout).AddDays(-1),
            };

            // Seguro esto se puede hacer mejor
            foreach (var reservaCama in reserva.ReservaCamas)
            {
                reservaCama.Reserva = reserva;
            }

            return(reserva);
        }
示例#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 void DadaUnaReservaDto()
 {
     _unaReservaCreacionDTO = new ReservaCreacionDTO
     {
         PasajeroTitular = _pasajero,
         Canal           = "Booking",
         DiaDeCheckin    = Utilidades.ConvertirFecha(_desde),
         DiaDeCheckout   = Utilidades.ConvertirFecha(_hasta),
         CamasIds        = new List <int> {
             UN_CAMA_ID
         },
         HabitacionesPrivadasIds = new List <int> {
             100, 200, 400
         },
         HoraEstimadaDeLlegada = "11:00",
         Estado = ReservaEstadoEnum.HizoCheckout,
         CantidadDePasajeros = 3,
     };
 }
示例#4
0
        public async Task <int> CrearReserva(int?camaId, int?habitacionPrivadaId,
                                             PasajeroDTO pasajero, DateTime desde, DateTime hasta)
        {
            var body = new ReservaCreacionDTO
            {
                PasajeroTitular         = pasajero,
                HabitacionesPrivadasIds = habitacionPrivadaId == null ? new List <int>() : new List <int> {
                    (int)habitacionPrivadaId
                },
                CamasIds = camaId == null ? new List <int>() : new List <int> {
                    (int)camaId
                },
                DiaDeCheckin          = Utilidades.ConvertirFecha(desde),
                DiaDeCheckout         = Utilidades.ConvertirFecha(hasta),
                HoraEstimadaDeLlegada = "11:30:00",
                CantidadDePasajeros   = 2,
                Canal = "Booking",
            };

            var respuesta = await _httpClient.PostAsJsonAsync(ENDPOINT, body);

            respuesta.StatusCode.Should().Be(HttpStatusCode.OK);
            return(await respuesta.Content.ReadAsAsync <int>());
        }