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() })); } }