public async Task <IActionResult> GetSubcategories([FromQuery] string categoryId) { const string API_LOCATE = CONTROLLER_LOCATE + ".GetSubcategories"; if (String.IsNullOrEmpty(categoryId)) { return(LogBadRequest( _logger, API_LOCATE, customError: $"Что-то пошло не так, необходимо выбрать категорию." )); } var category = (await _repository.GetCategory(categoryId)).DeepClone(); if (category is null) { return(LogBadRequest( _logger, API_LOCATE, customError: $"Что-то пошло не так, не удалось найти выбранную категорию.\nКатегория: {categoryId}", returnStatusCode: 404 )); } category.Subcategories = (await _repository.GetSubcategories(categoryId, isGetOnlyVisible: true)) .OrderBy(x => x.Alias) .Select(x => { x.Category = null; return(x); }) .ToList(); foreach (var entity in category.Subcategories) { entity.Photos = entity.Photos.OrderBy(x => x.Date).ToList(); } return(Success(category)); }
/// <inheritdoc/> public async Task <ServiceExecuteResult <bool> > AddOrUpdate(CategoryDTO entityDTO) { try { if (String.IsNullOrEmpty(entityDTO?.CategoryId)) { var(entity, error) = await this.CreateEntity( entityDTO, addEntityDbFunc : _repository.AddCategory); if (entity == null) { return(new ServiceExecuteResult <bool> { IsSuccess = false, Error = error }); } return(new ServiceExecuteResult <bool> { IsSuccess = true, Result = true }); } else { var oldEntity = await _repository.GetCategory(entityDTO.CategoryId); if (oldEntity is null) { var msg = $"Не удалось найти категорию с именем \"{entityDTO.Alias}\" (идентификатором \"{entityDTO.CategoryId}\")"; _logger.LogError(msg); return(new ServiceExecuteResult <bool> { IsSuccess = false, Error = msg }); } if (entityDTO.Alias.TransformToId() != oldEntity.Alias.TransformToId()) { var(isSuccess, error) = await FullUpdate(entityDTO, oldEntity); return(new ServiceExecuteResult <bool> { IsSuccess = isSuccess, Result = isSuccess, Error = error }); } else { var(isSuccess, error) = await this.UpdateEntity( oldEntity, entityDTO, updateEntityDbFunc : _repository.UpdateCategory); return(new ServiceExecuteResult <bool> { IsSuccess = isSuccess, Result = isSuccess, Error = error }); } } } catch (Exception ex) { var msg = $"В результате добавления/обновления произошла ошибка: {ex.Message}"; _logger.LogError($"{msg}\nModel: {JsonHelper.Serialize(entityDTO)}"); return(new ServiceExecuteResult <bool> { IsSuccess = false, Error = msg }); } }