public async Task <IActionResult> CreateAsync([FromBody] OnlineTableReservation onlineTableReservation)
        {
            if (onlineTableReservation == null)
            {
                var ex = new ArgumentException($"{nameof(onlineTableReservation)} can't be null");
                _logger.LogError(ex.ToString());
                throw ex;
            }

            if (!_validator.Validate(onlineTableReservation).IsValid)
            {
                var ex = new ArgumentException($"{nameof(onlineTableReservation)} is not valid");
                _logger.LogError(ex.ToString());
                throw ex;
            }

            try
            {
                _onlineTableReservationRepository.Add(onlineTableReservation);
                await _unitOfWork.SaveChangesAsync();

                return(Ok(onlineTableReservation));
            }
            catch
            {
                var ex = new Exception($"Error while adding onlineTableReservation nameof{nameof(onlineTableReservation)}");
                _logger.LogError(ex.ToString());
                throw ex;
            }
        }
        public async Task <IActionResult> UpdateById(int id, [FromBody] OnlineTableReservation onlineTableReservation)
        {
            if (id == default)
            {
                var ex = new ArgumentException($"{nameof(id)} cannot be 0");
                _logger.LogError(ex.ToString());
                throw ex;
            }

            if (!_validator.Validate(onlineTableReservation).IsValid)
            {
                var ex = new ArgumentException($"{nameof(onlineTableReservation)} is not valid");
                _logger.LogError(ex.ToString());
                throw ex;
            }

            try
            {
                var currentOnlineTableReservation = await _onlineTableReservationRepository.Get(x => x.Id == id);

                if (currentOnlineTableReservation == null)
                {
                    var ex = new NullReferenceException($"Error while updating online table reservation. Online table reservation with {nameof(id)}={id} not found");
                    _logger.LogError(ex.ToString());
                    throw ex;
                }

                currentOnlineTableReservation.TableId = onlineTableReservation.TableId;
                currentOnlineTableReservation.UserId  = onlineTableReservation.UserId;

                _onlineTableReservationRepository.Update(currentOnlineTableReservation);
                await _unitOfWork.SaveChangesAsync();

                return(Ok(currentOnlineTableReservation));
            }
            catch (Exception ex)
            {
                ex.Data["id"] = id;
                _logger.LogError(ex.ToString());
                throw ex;
            }
        }