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

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

            try
            {
                _offlineTableReservationRepository.Add(offlineTableReservation);
                await _unitOfWork.SaveChangesAsync();

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

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

            try
            {
                var currentOfflineTableReservation = await _offlineTableReservationRepository.Get(x => x.Id == id);

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

                currentOfflineTableReservation.TableId           = offlineTableReservation.TableId;
                currentOfflineTableReservation.ClientName        = offlineTableReservation.ClientName;
                currentOfflineTableReservation.ClientPhoneNumber = offlineTableReservation.ClientPhoneNumber;
                currentOfflineTableReservation.EmployeeId        = offlineTableReservation.EmployeeId;

                _offlineTableReservationRepository.Update(currentOfflineTableReservation);
                await _unitOfWork.SaveChangesAsync();

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