コード例 #1
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);
        }
コード例 #2
0
        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"))
            ;
        }