public ReservationEntity(UserEntity user, RoomEntity room, DateTime from, DateTime to, IEnumerable <ServiceEntity>?services = null)
        {
            ReservationException.AssertDatesValid(from, to);

            Id           = Guid.NewGuid();
            User         = user;
            Room         = room;
            ReservedFrom = from;
            ReservedTo   = to;
            Services     = services ?? new List <ServiceEntity>();
        }
        public async Task ExecuteAsync(Guid reservationId)
        {
            var reservation = await ReservationRepository.GetAsync(reservationId);

            if (reservation.User != CurrentUser)
            {
                throw ReservationException.DoesNotBelongToYou();
            }

            if (DateTime.Now > reservation.ReservedTo)
            {
                throw ReservationException.AlreadyExpired();
            }

            await ReservationRepository.DeleteAndFlushAsync(reservation);
        }