Exemplo n.º 1
0
        public ResultMessage Update(ArticleAddDto article, int articleId, IUserDto user)
        {
            _logger.LogInformation($"START: Article.Update: Name:{article.Name}");

            var validationResult = _addValidator.Validate(article);

            if (!validationResult.IsValid)
            {
                _logger.LogInformation($"END: Article.Update: Id:{articleId} -- VALIDATION");
                return(new ResultMessage
                {
                    Status = HttpStatusCode.BadRequest,
                    ValidationMessages = validationResult.GetErrorsList()
                });
            }
            try
            {
                var articleData = _unitOfWork.ArticlesRepository.GetById(articleId);
                if (articleData == null || articleData.IsDraft)
                {
                    _logger.LogInformation($"END: Article.Update: Id:{articleId} -- NOTFOUND");
                    return(new ResultMessage
                    {
                        Status = HttpStatusCode.NotFound,
                    });
                }


                if (user.IsAdmin || (user.Id == articleData.CreatedBy && (!articleData.IsActive.HasValue || !articleData.IsActive.Value)))
                {
                    article.Adapt(articleData, typeof(ArticleAddDto), typeof(DBModels.Articles));
                    articleData.UpdatedAt = DateTime.Now;
                    articleData.UpdatedBy = user.Id;

                    var sliderDto = new SliderDto
                    {
                        attachmentType = AttachmentTypesEnum.Articles,
                        Items          = article.UpdatedImages ?? new List <SliderItemDto>(),
                        SubFolderName  = articleData.SubFolderName,
                        ParentId       = articleId
                    };

                    //check profile picture
                    if (sliderDto.Items.Count > 0)
                    {
                        articleData.ProfilePicture = _sliderManager.GetProfilePicturePath(sliderDto, article.ProfilePicture);
                    }

                    _unitOfWork.ArticlesRepository.Update(articleData);
                    _unitOfWork.Commit();

                    // update files
                    if (sliderDto.Items.Count > 0)
                    {
                        _sliderManager.Update(sliderDto);
                    }

                    _logger.LogInformation($"END: Article.Update: ID:{articleId} --SUCCESS");

                    return(new ResultMessage
                    {
                        Status = HttpStatusCode.OK
                    });
                }
                else
                {
                    _logger.LogInformation($"END: Article.Update: Id:{articleId} -- UNAuthorized");

                    return(new ResultMessage
                    {
                        Status = HttpStatusCode.Unauthorized
                    });
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, string.Empty);
                return(new ResultMessage
                {
                    Status = HttpStatusCode.InternalServerError
                });
            }
        }
Exemplo n.º 2
0
        public ResultMessage Insert(ArticleAddDto article, IUserDto user)
        {
            _logger.LogInformation($"START: Article.Insert: Name:{article.Name}");

            var validationResult = _addValidator.Validate(article);

            if (!validationResult.IsValid)
            {
                _logger.LogInformation($"END: Article.Insert: Name:{article.Name}  --VALIDATION");
                return(new ResultMessage
                {
                    Status = HttpStatusCode.BadRequest,
                    ValidationMessages = validationResult.GetErrorsList()
                });
            }
            try
            {
                var articleEntity = article.Adapt <DBModels.Articles>();
                articleEntity.CreatedAt = DateTime.Now;
                articleEntity.CreatedBy = user.Id;

                var articleFolderName = Guid.NewGuid().ToString();

                var sliderDto = new SliderDto
                {
                    attachmentType = AttachmentTypesEnum.Articles,
                    Items          = article.UpdatedImages,
                    SubFolderName  = articleFolderName
                };

                if (sliderDto.Items.Count > 0)
                {
                    articleEntity.ProfilePicture = _sliderManager.GetProfilePicturePath(sliderDto);
                }

                articleEntity.SubFolderName = articleFolderName;
                articleEntity.Images        = null;
                articleEntity.IsActive      = null;

                if (user.IsAdmin)
                {
                    articleEntity.IsActive = true;
                }

                _unitOfWork.ArticlesRepository.Insert(articleEntity);
                _unitOfWork.Commit();

                sliderDto.ParentId = articleEntity.Id;
                _sliderManager.Add(sliderDto);

                _logger.LogInformation($"END: Article.Insert: Name:{article.Name}  --SUCCESS");

                return(new ResultMessage
                {
                    Status = HttpStatusCode.OK
                });
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, string.Empty);
                return(new ResultMessage()
                {
                    ErrorCode = (int)ProductsErrorsCodeEnum.ProductsInsertError,
                    Status = HttpStatusCode.InternalServerError
                });
            }
        }