public async Task <IActionResult> PutWarehouse([FromRoute] int id, [FromBody] WarehouseObjectModel ajaxWarehouse)
        {
            _logger.LogInformation($"Запрос изменения склада [#{id}]. Инициатор: " + _user.FullInfo);
            string msg;

            ajaxWarehouse.Name        = ajaxWarehouse.Name.Trim();
            ajaxWarehouse.Information = ajaxWarehouse.Information.Trim();

            if (!ModelState.IsValid ||
                id != ajaxWarehouse.Id ||
                id < 0 ||
                string.IsNullOrEmpty(ajaxWarehouse.Name) ||
                !_context.Warehouses.Any(x => x.Id != id))
            {
                msg = "Ошибка контроля валидности модели";
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = false,
                    Info = msg,
                    Status = StylesMessageEnum.danger.ToString(),
                    Tag = ModelState
                }));
            }

            if (_context.Warehouses.Any(x => x.Name.ToLower() == ajaxWarehouse.Name.ToLower() && x.Id != id))
            {
                _logger.LogWarning("Дубль склада (по имени)");
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = false,
                    Info = "Склад с тиким именем уже существует. Придумайте уникальное",
                    Status = StylesMessageEnum.danger.ToString()
                }));
            }

            WarehouseObjectModel warehouseDb = _context.Warehouses.FirstOrDefault(x => x.Id == id);

            if (warehouseDb.isReadonly && _user.Role != AccessLevelUserRolesEnum.ROOT)
            {
                msg = $"Объект только для чтения. Для удаления данного объекта требуется уровень привелегий [{AccessLevelUserRolesEnum.ROOT}]. Ваш уровень привелегий: {_user.Role}";;
                _logger.LogError(msg);
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = false,
                    Info = msg,
                    Status = StylesMessageEnum.danger.ToString()
                }));
            }

            warehouseDb.Name        = ajaxWarehouse.Name;
            warehouseDb.Information = ajaxWarehouse.Information;

            if (_user.Role == AccessLevelUserRolesEnum.ROOT)
            {
                warehouseDb.isGlobalFavorite = ajaxWarehouse.isGlobalFavorite;
                warehouseDb.isDisabled       = ajaxWarehouse.isDisabled;
                warehouseDb.isReadonly       = ajaxWarehouse.isReadonly;
            }

            _context.Update(warehouseDb);

            try
            {
                msg = $"Склад [{warehouseDb.Id}] сохранён";
                await _context.SaveChangesAsync();

                return(new ObjectResult(new ServerActionResult()
                {
                    Success = true,
                    Info = msg,
                    Status = StylesMessageEnum.success.ToString()
                }));
            }
            catch (Exception ex)
            {
                msg = $"Во время изменения 'Склада' [{warehouseDb.Id}] произошла ошибка. Exception: {ex.Message}{(ex.InnerException is null ? "" : ". InnerException: " + ex.InnerException.Message)}";
                _logger.LogError(ex, msg);
                return(new ObjectResult(new ServerActionResult()
                {
                    Success = false,
                    Info = msg,
                    Status = StylesMessageEnum.danger.ToString()
                }));
            }
        }