public async Task UpdateArticle(string author = null, string title = null, string description = null, bool?publish = null)
        {
            var articleContext = await _getArticleContextWorkflow.GetArticleContext();

            if (articleContext == null)
            {
                return;
            }

            var articleRequest = new ArticleRequest
            {
                BlogId      = articleContext.BlogId,
                Author      = author,
                Title       = title,
                Description = description,
                IsPublished = publish,
            };

            var updateArticleResponse = await _client.PutMessage(articleContext.GetSelfApiLink(), articleRequest);

            if (!updateArticleResponse.IsSuccessStatusCode)
            {
                throw new HttpRequestException($"failed HTTP request: {updateArticleResponse.StatusCode}\n{updateArticleResponse.ReasonPhrase}");
            }

            await _updateArticleContextWorkflow.GetAndUpdateArticleContext(articleContext);
        }
示例#2
0
        public ActionResult <CreateArticleService> Post(ArticleRequest request)
        {
            CreateArticleService  _service = new CreateArticleService(_unitOfWork);
            CreateArticleResponse response = _service.Execute(request);

            return(Ok(response));
        }
示例#3
0
        public IActionResult MenuGetList([FromQuery] ArticleRequest request)
        {
            int totalRow = 0;
            var list     = _articleAccess.SP_Menu_GetList(request.MenuIDs, Convert.ToInt16(request.GetChild), Convert.ToInt16(request.Status), out totalRow);

            return(Ok(new { TotalRow = totalRow, Items = list }));
        }
示例#4
0
        public HttpResponseMessage AddArticles([FromBody] ArticleRequest article)
        {
            try
            {
                using (BackNetEntity db = new BackNetEntity())
                {
                    var oArticle = new Models.articles();
                    oArticle.name           = article.name;
                    oArticle.description    = article.description;
                    oArticle.price          = article.price;
                    oArticle.total_in_shelf = article.total_in_shelf;
                    oArticle.total_in_vault = article.total_in_vault;
                    oArticle.store_id       = article.store_id;
                    db.articles.Add(oArticle);
                    db.SaveChanges();

                    var message = Request.CreateResponse(HttpStatusCode.Created, article);
                    message.Headers.Location = new Uri(Request.RequestUri +
                                                       article.id.ToString());

                    return(message);
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
        private async Task <Article> AttemptCreateNewBlogArticle(ArticleRequest request)
        {
            var blog = await GetBlogForEntry(request.BlogId);

            if (blog == null ||
                string.IsNullOrWhiteSpace(request.Author) ||
                string.IsNullOrWhiteSpace(request.Title))
            {
                return(null);
            }

            var newBlogArticle = new Article()
            {
                BlogId      = blog.Id,
                Author      = request.Author,
                Title       = request.Title,
                Description = request.Description,
                Created     = _clock.Now
            };

            await _context.Add(newBlogArticle);

            await _context.SaveChanges();

            return(newBlogArticle);
        }
示例#6
0
        public async Task <ApiResult <Article> > Get([ModelBinder] ArticleRequest request)
        {
            var keyId = request.Id;

            // throw new ArgumentException("exception test"); 异常测试
            return(await Task.Run(() => ApiResult <Article> .Success(_articleServices.Get(keyId))));
        }
        public async Task Put_Article_Should_Update_Article()
        {
            var articleRequest = new ArticleRequest()
            {
                Title       = GetUniqueStringValue("title_"),
                Body        = GetUniqueStringValue("body_"),
                IsPublished = false,
                PublishDate = null,
                Author      = "God",
            };

            var postRresponse = ExecuteJsonPostRequest("api/v1/article", articleRequest);

            var articleResponse = await GetResponse <ArticleResponse>(postRresponse);

            var articleRequest2 = new ArticleRequest()
            {
                Title       = GetUniqueStringValue("title_"),
                Body        = GetUniqueStringValue("body_"),
                IsPublished = false,
                PublishDate = null,
                Author      = "God2",
            };

            var putResponse = ExecuteJsonPutRequest($"api/v1/article/{articleResponse.Id}", articleRequest2);

            var articleResponse2 = await GetResponse <ArticleResponse>(putResponse);

            Assert.AreEqual(HttpStatusCode.OK, postRresponse.StatusCode);
            Assert.AreNotEqual(articleResponse.Title, articleResponse2.Title);
            Assert.AreNotEqual(articleResponse.Body, articleResponse2.Body);
            Assert.AreNotEqual(articleResponse.Author, articleResponse2.Author);
            Assert.AreEqual(articleResponse.Id, articleResponse2.Id);
        }
        //
        // GET: /Test/
        public ActionResult Index(ArticleRequest request)
        {
            //获取分类
            ChannelRequest channelRequest = new ChannelRequest()
            {
                ParentId = -1
            };
            var channelResult = service.GetChannelList(channelRequest);
            //这里可以改造成注入方式
            //var channelResult = this.CmsService.GetChannelList(channelRequest);

            //获取分类树
            List <TreeNode> resultTree = new List <TreeNode>();

            this.GetChannelTree(channelResult, resultTree, 0);
            if (resultTree.Count > 0)
            {
                request.ChannelIds = resultTree.Select(t => t.ID).ToList();
            }

            foreach (var item in resultTree)
            {
                for (var i = 1; i <= item.level; i++)
                {
                    item.Name = "-" + item.Name;
                }
            }

            ViewBag.ChannelId = new SelectList(resultTree.AsEnumerable(), "ID", "Name");
            var result = service.GetArticleList(request);

            return(View(result));
        }
示例#9
0
        public IActionResult GetImageList([FromQuery] ArticleRequest req)
        {
            int totalRow = 0;
            var list     = _articleAccess.SP_ArticleImage_GetList(req.TopRow, req.ImageID, req.ArticleID, req.Status, req.Page, req.PageSize, out totalRow);

            return(Ok(new { TotalRow = totalRow, Items = list }));
        }
示例#10
0
 public HttpResponseMessage PutArticles(ArticleRequest oModel)
 {
     try
     {
         using (BackNetEntity db = new BackNetEntity())
         {
             articles oArticles = db.articles.Find(oModel.id);
             if (oArticles == null)
             {
                 return(Request.CreateErrorResponse(HttpStatusCode.NotFound,
                                                    "La Store con el Id " + oModel.id.ToString() + " no pudo actualizarse"));
             }
             else
             {
                 oArticles.name            = oModel.name;
                 oArticles.description     = oModel.description;
                 oArticles.price           = oModel.price;
                 oArticles.total_in_shelf  = oModel.total_in_shelf;
                 oArticles.total_in_vault  = oModel.total_in_vault;
                 oArticles.store_id        = oModel.store_id;
                 db.Entry(oArticles).State = System.Data.Entity.EntityState.Modified;
                 db.SaveChanges();
                 return(Request.CreateResponse(HttpStatusCode.OK));
             }
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
示例#11
0
        public IEnumerable <Article> GetArticleList(ArticleRequest request = null)
        {
            request = request ?? new ArticleRequest();
            using (var dbContext = new CmsDbContext())
            {
                IQueryable <Article> articles = dbContext.Articles.Include("Channel");

                if (!string.IsNullOrEmpty(request.Title))
                {
                    articles = articles.Where(u => u.Title.Contains(request.Title));
                }

                if (request.ChannelId > 0)
                {
                    articles = articles.Where(u => u.ChannelId == request.ChannelId);
                }

                if (request.IsActive != null)
                {
                    articles = articles.Where(u => u.IsActive == request.IsActive);
                }

                return(articles.OrderByDescending(u => u.ID).ToPagedList(request.PageIndex, request.PageSize));
            }
        }
        public async Task Delete_Article_Should_Delete_Article()
        {
            var articleRequest = new ArticleRequest()
            {
                Title       = GetUniqueStringValue("title_"),
                Body        = GetUniqueStringValue("body_"),
                IsPublished = false,
                PublishDate = null,
                Author      = "God",
            };

            var postRresponse = ExecuteJsonPostRequest("api/v1/article", articleRequest);

            Assert.AreEqual(HttpStatusCode.OK, postRresponse.StatusCode);

            var articleResponse = await GetResponse <ArticleResponse>(postRresponse);

            var deleteRresponse = ExecuteDeleteRequest($"api/v1/article/{articleResponse.Id}");

            Assert.AreEqual(HttpStatusCode.OK, deleteRresponse.StatusCode);

            var getResponse = ExecuteGetRequest($"api/v1/article/{articleResponse.Id}");

            Assert.AreEqual(HttpStatusCode.NotFound, getResponse.StatusCode);
        }
        public async Task SavesNewEntryWhenConditionsMeet()
        {
            var blog            = new BlogFixture().Build();
            var newEntryRequest = new ArticleRequest
            {
                BlogId      = blog.Id,
                Author      = "Test",
                Title       = "Some-title",
                Description = "some-Description",
            };

            var dbContextFixture = new MockBlogApiDbContextFixture().With(blog, blog.Id);
            var clock            = new MockClock();

            var blogEntryCoordinator = new CreateArticleCoordinatorFixture()
            {
                Context = dbContextFixture.Build(),
                Clock   = clock
            }.Build();

            var result = await blogEntryCoordinator.CreateNewArticleAsync(newEntryRequest);

            Assert.Equal(newEntryRequest.BlogId, result.BlogId);
            Assert.Equal(newEntryRequest.Author, result.Author);
            Assert.Equal(newEntryRequest.Title, result.Title);
            Assert.Equal(newEntryRequest.Description, result.Description);
            Assert.Equal(clock.Now, result.Created);

            dbContextFixture.Mock.Verify(ctx => ctx.Add(result));
            dbContextFixture.Mock.Verify(ctx => ctx.SaveChanges());
        }
示例#14
0
        public IActionResult CMSGetList([FromQuery] ArticleRequest data)
        {
            int totalRow = 0;
            var list     = _articleAccess.SP_Article_GetList_CMS(data.ArticleID, data.Title, data.MenuID, data.Tags, data.isHot, data.Status, data.FromDate, data.ToDate, data.Page, data.PageSize, out totalRow);

            return(Ok(new { TotalRow = totalRow, Items = list }));
        }
示例#15
0
        public IActionResult TopNew([FromQuery] ArticleRequest request)
        {
            int totalRow = 0;
            var list     = _articleAccess.SP_Article_GetTopView_Web(request.TopRow, request.MenuID, request.UrlRedirect, 1, 10, out totalRow);

            return(Ok(new { TotalRow = totalRow, Items = list }));
        }
示例#16
0
        public IActionResult GetArticleRelationList([FromQuery] ArticleRequest request)
        {
            int totalRow = 0;
            var list     = _articleAccess.SP_Article_GetListSameMenu_Web(request.TopRow, request.ArticleID, request.Page, request.PageSize, out totalRow);

            return(Ok(new { TotalRow = totalRow, Items = list }));
        }
示例#17
0
        public async Task <Entities.Storage.Article> Update(ArticleRequest request)
        {
            _context.Entry(request.Article).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(request.Article);
        }
示例#18
0
        /// <summary>
        /// 获取分页列表数据
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ActionResult GetGridJson(ArticleRequest request)
        {
            request.rows     = 15;
            request.UserCode = base.UserCode;
            var data = _article.GetDataListForPage(request);

            return(Content(data.ToJson()));
        }
示例#19
0
        public async Task <ActionResult <ArticleDto> > Create(ArticleRequest model)
        {
            var article = await _repository.Create(model);

            return(article != null
                ? Created(nameof(Create), article)
                : StatusCode(StatusCodes.Status500InternalServerError, null));
        }
示例#20
0
 private void UpdateValues(Article existingArticle, ArticleRequest updatedArticle)
 {
     existingArticle.Author      = updatedArticle.Author ?? existingArticle.Author;
     existingArticle.Title       = updatedArticle.Title ?? existingArticle.Title;
     existingArticle.Description = updatedArticle.Description ?? existingArticle.Description;
     existingArticle.IsPublished = updatedArticle.IsPublished ?? existingArticle.IsPublished;
     existingArticle.Updated     = _clock.Now;
 }
 public void EditArticle([FromBody] ArticleRequest request)
 {
     LogsDataManager.SendLog(
         request.LibrarianId,
         "Librarian",
         "edited article " + request.Article.Title);
     DocumentsDataManager.EditArticle(request.Article);
 }
示例#22
0
        public IActionResult GetList([FromQuery] ArticleRequest request)
        {
            int totalRow = 0;
            var list     = _articleAccess.SP_Article_GetList_Web(request.TopRow, request.ArticleID, request.Title, request.MenuID,
                                                                 request.UrlRedirect, request.Tags, request.isHot, request.Page, request.PageSize, out totalRow);

            return(Ok(new { TotalRow = totalRow, Items = list }));
        }
        public async Task <Article> CreateNewArticleAsync(ArticleRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            return(await AttemptCreateNewBlogArticle(request));
        }
示例#24
0
        public async Task <Entities.Storage.Article> Add(ArticleRequest request)
        {
            if (request.Article.Author.Role == Role.Default && request.Article.Type == ArticleType.Shared)
            {
                return(null);
            }

            return(await _articleRepository.Add(request));
        }
示例#25
0
        public async Task <ArticleDto> UpdateArticle(string slug, ArticleRequest <UpdateArticleCommand> request)
        {
            var command = request.Article;

            command.Slug = slug;

            await mediator.Send(command);

            return(await mediator.Send(new ArticleBySlugQuery { Slug = slug }));
        }
示例#26
0
 public async Task <IHttpActionResult> Put(int id, [FromBody] ArticleRequest articleRequest)
 {
     if (IsCurrentUserPublisher())
     {
         return(await Put <ArticleRequest, Article>(id, articleRequest));
     }
     else
     {
         return(BadRequest("Only publisher can update article"));
     }
 }
示例#27
0
 public async Task <IHttpActionResult> Post([FromBody] ArticleRequest articleRequest)
 {
     if (IsCurrentUserPublisher())
     {
         return(await Post <ArticleRequest, Article>(articleRequest));
     }
     else
     {
         return(BadRequest("Only publisher can add article"));
     }
 }
示例#28
0
 public async Task AddAsync(ArticleRequest articleRequest)
 {
     ArticleModel articleModel = new ArticleModel()
     {
         Title            = articleRequest.Title,
         Author           = articleRequest.Author,
         PublicationDate  = articleRequest.PublicationDate,
         PublicationPlace = articleRequest.PublicationPlace
     };
     await _articleRepository.AddAsync(articleModel);
 }
        public async Task <ActionResult> UpdateArticle(Guid articleId, [FromBody] ArticleRequest articleRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            articleRequest.UserName = HttpContext.User.Identity.Name;
            await _articleService.UpdateEntityAsync(articleId, articleRequest);

            return(NoContent());
        }
        private Article ArrangeFor_CreateEntityAsyncTest(ArticleRequest articleRequest)
        {
            var article = _mapper.Map <ArticleRequest, Article>(articleRequest);

            _mockMapper.Setup(m => m.Map <ArticleRequest, Article>(articleRequest))
            .Returns(article);
            article.Id = Guid.NewGuid();

            _mockRepository.Setup(r => r.Add(article));

            return(article);
        }
示例#31
0
        public IEnumerable<Article> GetArticleList(ArticleRequest request = null)
        {
            request = request ?? new ArticleRequest();
            using (var dbContext = new CmsDbContext())
            {
                IQueryable<Article> articles = dbContext.Articles.Include("Channel");

                if (!string.IsNullOrEmpty(request.Title))
                    articles = articles.Where(u => u.Title.Contains(request.Title));

                if (request.ChannelId > 0)
                    articles = articles.Where(u => u.ChannelId == request.ChannelId);

                if (request.IsActive != null)
                    articles = articles.Where(u => u.IsActive == request.IsActive);

                return articles.OrderByDescending(u => u.ID).ToPagedList(request.PageIndex, request.PageSize);
            }
        }