public IActionResult Delete(int id)
        {
            VaccinationVM vaccination = repository.GetByCondition(v => v.Id == id).FirstOrDefault();

            if (vaccination == null)
            {
                Log.Information($"{CurrentMethod.GetName()}: прививка Id = {id} отсутствует в базе данных");
                return(NotFound());
            }

            try {
                repository.Delete(id);
            }
            catch (ArgumentNullException e) {
                Log.Error($"{CurrentMethod.GetName()}: при обработке запроса произошло исключение {e.GetType()}\n  Метод вызвавший исключение: {e.TargetSite.Name}\n  Параметр не может быть равен null\n  Имя параметра: {e.ParamName}\n  Стек вызовов:\n{e.StackTrace}");
                return(StatusCode(500));
            }
            catch (DbUpdateConcurrencyException e) {
                Log.Error($"{CurrentMethod.GetName()}: при обработке запроса произошло исключение {e.GetType()}\n  Метод вызвавший исключение: {e.TargetSite.Name}\n  Стек вызовов:\n{e.StackTrace}");
                return(StatusCode(500));
            }
            catch (DbUpdateException e) {
                Log.Error($"{CurrentMethod.GetName()}: при обработке запроса произошло исключение {e.GetType()}\n  Метод вызвавший исключение: {e.TargetSite.Name}\n  Стек вызовов:\n{e.StackTrace}");
                return(StatusCode(500));
            }

            Log.Information($"{CurrentMethod.GetName()}: удалена прививка Id = {id}");
            return(Ok());
        }
        public ActionResult <ResponseVM> Post([FromBody] VaccinationVM vaccination)
        {
            if (vaccination == null)
            {
                Log.Information($"{CurrentMethod.GetName()}: не удалось связать модель");
                ResponseVM response400 = new ResponseVM {
                    IsSuccess = false, ErrorMessage = "Bad request", StatusCode = 400, Result = "Не удалось связать модель, vaccination была равна null"
                };
                return(BadRequest(response400));
            }

            try {
                repository.Add(vaccination);
            }
            catch (DbUpdateConcurrencyException e) {
                Log.Error($"{CurrentMethod.GetName()}: при обработке запроса произошло исключение {e.GetType()}\n  Метод вызвавший исключение: {e.TargetSite.Name}\n  Стек вызовов:\n{e.StackTrace}");
                ResponseVM response500 = new ResponseVM {
                    IsSuccess = false, ErrorMessage = "Internal server error", StatusCode = 500, Result = "Внутренняя ошибка сервера"
                };
                return(StatusCode(500, response500));
            }
            catch (DbUpdateException e) {
                Log.Error($"{CurrentMethod.GetName()}: при обработке запроса произошло исключение {e.GetType()}\n  Метод вызвавший исключение: {e.TargetSite.Name}\n  Стек вызовов:\n{e.StackTrace}");
                ResponseVM response500 = new ResponseVM {
                    IsSuccess = false, ErrorMessage = "Internal server error", StatusCode = 500, Result = "Внутренняя ошибка сервера"
                };
                return(StatusCode(500, response500));
            }

            Log.Information($"{CurrentMethod.GetName()}: добавлена прививка Id = {vaccination.Id}");
            ResponseVM response200 = new ResponseVM {
                IsSuccess = true, StatusCode = 200, Result = $"Добавлена прививка Id = {vaccination.Id}"
            };

            return(Ok(response200));
        }
        public ActionResult <ResponseVM> Put([FromRoute] int id, [FromBody] VaccinationVM vaccination)
        {
            if (vaccination == null)
            {
                Log.Information($"{CurrentMethod.GetName()}: не удалось связать модель");
                ResponseVM response400 = new ResponseVM {
                    IsSuccess = false, ErrorMessage = "Bad request", StatusCode = 400, Result = "Не удалось связать модель, vaccination была равна null"
                };
                return(BadRequest(response400));
            }

            VaccinationVM vaccinationFromDB = null;

            try {
                vaccinationFromDB = repository.GetByCondition(v => v.Id == id).FirstOrDefault();
            }
            catch (ArgumentNullException e) {
                Log.Error($"{CurrentMethod.GetName()}: при обработке запроса произошло исключение {e.GetType()}\n  Метод вызвавший исключение: {e.TargetSite.Name}\n  Параметр не может быть равен null\n  Имя параметра: {e.ParamName}\n  Стек вызовов:\n{e.StackTrace}");
                ResponseVM response500 = new ResponseVM {
                    IsSuccess = false, ErrorMessage = "Internal server error", StatusCode = 500, Result = "Внутренняя ошибка сервера"
                };
                return(StatusCode(500, response500));
            }

            if (vaccinationFromDB == null)
            {
                Log.Information($"{CurrentMethod.GetName()}: прививка Id = {id} отсутствует в базе данных");
                ResponseVM response404 = new ResponseVM {
                    IsSuccess = false, ErrorMessage = "Not found", StatusCode = 404, Result = $"Прививка Id = {id} отсутствует в базе данных"
                };
                return(NotFound(response404));
            }

            try {
                repository.Update(vaccination);
            }
            catch (ArgumentNullException e) {
                Log.Error($"{CurrentMethod.GetName()}: при обработке запроса произошло исключение {e.GetType()}\n  Метод вызвавший исключение: {e.TargetSite.Name}\n  Параметр не может быть равен null\n  Имя параметра: {e.ParamName}\n  Стек вызовов:\n{e.StackTrace}");
                ResponseVM response500 = new ResponseVM {
                    IsSuccess = false, ErrorMessage = "Internal server error", StatusCode = 500, Result = "Внутренняя ошибка сервера"
                };
                return(StatusCode(500, response500));
            }
            catch (DbUpdateConcurrencyException e) {
                Log.Error($"{CurrentMethod.GetName()}: при обработке запроса произошло исключение {e.GetType()}\n  Метод вызвавший исключение: {e.TargetSite.Name}\n  Стек вызовов:\n{e.StackTrace}");
                ResponseVM response500 = new ResponseVM {
                    IsSuccess = false, ErrorMessage = "Internal server error", StatusCode = 500, Result = "Внутренняя ошибка сервера"
                };
                return(StatusCode(500, response500));
            }
            catch (DbUpdateException e) {
                Log.Error($"{CurrentMethod.GetName()}: при обработке запроса произошло исключение {e.GetType()}\n  Метод вызвавший исключение: {e.TargetSite.Name}\n  Стек вызовов:\n{e.StackTrace}");
                ResponseVM response500 = new ResponseVM {
                    IsSuccess = false, ErrorMessage = "Internal server error", StatusCode = 500, Result = "Внутренняя ошибка сервера"
                };
                return(StatusCode(500, response500));
            }

            Log.Information($"{CurrentMethod.GetName()}: изменена прививка Id = {id}");
            ResponseVM response200 = new ResponseVM {
                IsSuccess = true, StatusCode = 200, Result = $"Изменена прививка Id = {id}"
            };

            return(Ok(response200));
        }