Beispiel #1
0
        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));
        }
Beispiel #2
0
        /// <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
                });
            }
        }