public async Task <AddResult> AddReservation(ReservationAddModel model)
        {
            if (model.TimeFrom >= model.TimeTo)
            {
                throw new RestaurantBadRequestException("A foglalás végének későbbre kell esnie, mint a kezdete!");
            }

            if (model.TimeFrom < DateTime.Now || model.TimeTo < DateTime.Now)
            {
                throw new RestaurantBadRequestException("A foglalásnak az aktuális időpontnál későbbre kell esnie!");
            }

            if (string.IsNullOrEmpty(model.CustomerName))
            {
                throw new RestaurantBadRequestException("A foglaló vendég nevének megadása kötelező!");
            }

            if (model.CustomerPhone.Length > 15)
            {
                throw new RestaurantBadRequestException("A megadott telefonszám túl hosszú!");
            }

            var table = await DbContext.Tables.FindAsync(model.TableId);

            if (table == null)
            {
                throw new RestaurantNotFoundException("A megadott asztal nem létezik!");
            }

            if (!(await TableService.IsTableAvailable(model.TableId, model.TimeFrom, model.TimeTo)))
            {
                throw new RestaurantBadRequestException("A foglalás nem teljesíthető: a megadott asztal foglalt a választott időintervallumban!");
            }

            var reservation = DbContext.Reservations.Add(new Reservation()
            {
                TableId             = model.TableId,
                TimeFrom            = model.TimeFrom,
                TimeTo              = model.TimeTo,
                CustomerName        = model.CustomerName,
                CustomerPhoneNumber = model.CustomerPhone
            });

            await DbContext.SaveChangesAsync();

            return(new AddResult(reservation.Entity.Id));
        }
 public async Task <AddResult> AddReservation(ReservationAddModel reservation)
 => await ReservationService.AddReservation(reservation);