Beispiel #1
0
        /// <inheritdoc/>
        public async Task <ServiceExecuteResult <PageInfo> > GetPageInfo(int pageInfoId)
        {
            try
            {
                var pageInfo = await _repository.GetPageInfo(pageInfoId);

                return(new ServiceExecuteResult <PageInfo>
                {
                    IsSuccess = true,
                    Result = pageInfo
                });
            }
            catch (Exception ex)
            {
                var msg = $"Не удалось получить информацию о странице с идентификатором \"{pageInfoId}\". {ex.Message}";

                _logger.LogError(ex, msg);
                return(new ServiceExecuteResult <PageInfo>
                {
                    IsSuccess = false,
                    Error = msg
                });
            }
        }
        /// <inheritdoc/>
        public async Task <ServiceExecuteResult <bool> > AddOrUpdate(PageInfoDTO entityDTO)
        {
            try
            {
                if (entityDTO.PageInfoId == 0)
                {
                    var(entity, error) = await this.CreateEntity(
                        entityDTO,
                        addEntityDbFunc : _repository.AddPageInfo);

                    if (entity == null)
                    {
                        return(new ServiceExecuteResult <bool>
                        {
                            IsSuccess = false,
                            Error = error
                        });
                    }

                    return(new ServiceExecuteResult <bool>
                    {
                        IsSuccess = true,
                        Result = true
                    });
                }
                else
                {
                    var oldEntity = await _repository.GetPageInfo(entityDTO.PageInfoId);

                    if (oldEntity is null)
                    {
                        var msg = $"Не удалось найти страницу с идентификатором \"{entityDTO.PageInfoId}\"";
                        if (!entityDTO.IsAliasCanBeEdited)
                        {
                            msg += $"и наименованием \"{entityDTO.Alias}\"";
                        }

                        _logger.LogError(msg);
                        return(new ServiceExecuteResult <bool>
                        {
                            IsSuccess = false,
                            Error = msg
                        });
                    }

                    if (
                        entityDTO.IsAliasCanBeEdited &&
                        oldEntity.Alias.TransformToId() != entityDTO.Alias.TransformToId()
                        )
                    {
                        //await FullUpdate(entityDTO, oldEntity);
                        throw new NotImplementedException();
                    }
                    else
                    {
                        var(isSuccess, error) = await this.UpdateEntity(
                            oldEntity,
                            entityDTO,
                            updateEntityDbFunc : _repository.UpdatePageInfo);

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