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); }
public void Crear_Falla_PorqueHayCamasRepetidas() { var habitacion = new Reserva { ReservaCamas = new List <ReservaCama> { new ReservaCama { CamaId = 1 }, new ReservaCama { CamaId = 1 }, } }; Assert.That(() => _service.Crear(habitacion), Throws.Exception .TypeOf <AppException>() .With.Property("Message").EqualTo("No puede reservarse dos veces la misma cama")) ; }