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); }
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, }; }
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>()); }