public async Task <PagedList <ArticleDto> > Execute(ArticleParams articleParams) { var articles = await _readOnlyArticleRepository.GetArticlesAsync(articleParams); // TODO: find AutoMapper solution iso projection //var articlesDtos = _mapper.Map<IEnumerable<ArticleDto>>(articles); var articlesDtos = articles.Select(a => new ArticleDto() { Id = a.Id, Code = a.Code, Name1 = a.Name1, SupplierId = a.SupplierId, SupplierReference = a.SupplierReference, PurchasePrice = a.PurchasePrice, Unit = a.Unit, Photos = a.Photos.Select(p => new ArticlePhotoDto() { Id = p.Id, IsMain = p.IsMain, Url = p.Url }).ToList(), PhotoUrl = a.Photos.Any() ? a.Photos.First().Url : string.Empty }); var articlesToReturn = new PagedList <ArticleDto>(articlesDtos, articles.TotalCount, articles.CurrentPage, articles.PageSize); return(articlesToReturn); }
public void SetUp() { _articlesRepositoryMock = new Mock <IReadOnlyArticleRepository>(); var articleParams = new ArticleParams(); _testArticles = ArticleList.GetShortList().AsEnumerable(); }
public void Setup() { _articleRepositoryMock = new Mock <IArticleRepository>() { DefaultValue = DefaultValue.Mock }; _unitOfWorkMock = new Mock <IUnitOfWork>(); _unitOfWorkMock.Setup(m => m.ArticleRepository).Returns(_articleRepositoryMock.Object); _articleParams = new ArticleParams(); _testArticles = new List <Article>() { new ArticleBuilder().WithId(1).WithCode("Article1").WithName1("1st article").WithSupplierId("sup1").WithSupplierReference("sup1 ref 1").WithUnit("ST").WithPurchasePrice(10.00M).Build(), new ArticleBuilder().WithId(2).WithCode("Article2").WithName1("2nd article").WithSupplierId("sup2").WithSupplierReference("sup1 ref 2").WithUnit("ST").WithPurchasePrice(20.00M).Build(), new ArticleBuilder().WithId(3).WithCode("Article3").WithName1("3rd article").WithSupplierId("sup3").WithSupplierReference("sup2 ref 1").WithUnit("ST").WithPurchasePrice(30.00M).Build() }.AsEnumerable(); var articlesPagedList = new PagedList <Article>(items: _testArticles, count: 3, pageNumber: 1, pageSize: 10); _articleRepositoryMock .Setup(m => m.GetArticlesAsync(_articleParams)) .ReturnsAsync(articlesPagedList); _articleRepositoryMock .Setup(m => m.GetArticleByIdAsync(2)) .ReturnsAsync(articlesPagedList[1]); var mapper = new Mapper(new MapperConfiguration(cfg => cfg.AddProfile <AutoMapperProfiles>())); _articlesController = new ArticlesController(_listQueryMock.Object, _singleQueryMock.Object, _createCommandMock.Object, _updateCommandMock.Object, _deleteCommandMock.Object); }
public async Task <PagedList <Article> > GetArticlesForUser(ArticleParams articleParams) { var articles = GetArticlesForUser(articleParams.UserId, articleParams.ShowAll); articles = articles.OrderByDescending(d => d.Id); return(await PagedList <Article> .CreateAsync(articles, articleParams.PageNumber, articleParams.SizePage)); }
public void SetUp() { _articlesRepositoryMock = new Mock <IReadOnlyArticleRepository>(); _articleParams = new ArticleParams(); _testArticles = ArticleList.GetDefaultList().AsEnumerable(); _pagedListOfArticles = new PagedList <Article>(_testArticles, _testArticles.Count(), 1, 10); _readMapper = new Mapper(new MapperConfiguration(cfg => cfg.AddProfile <Helpers.AutoMapperProfiles>())); }
public async Task <ActionResult <IEnumerable <ArticleDto> > > GetArticles( [FromQuery] ArticleParams articleParams) { var articles = await _listQuery.Execute(articleParams); Response.AddPaginationHeader(articles.CurrentPage, articles.PageSize, articles.TotalCount, articles.TotalPages); return(Ok(articles.AsEnumerable())); }
public async Task <PagedList <ArticleDto> > Execute(ArticleParams articleParams) { var articles = await _readOnlyArticleRepository.GetArticlesAsync(articleParams); var articlesDtos = _mapper.Map <IEnumerable <ArticleDto> >(articles); var articlesToReturn = new PagedList <ArticleDto>(articlesDtos, articles.TotalCount, articles.CurrentPage, articles.PageSize); return(articlesToReturn); }
public async Task <IActionResult> GetArticles([FromQuery] ArticleParams articleParams) { int pageSize = articleParams.PageSize; int pageIndex = articleParams.PageIndex; var articlesFromRepo = await _repo.GetArticlesAsync(articleParams); var articles = _mapper.Map <IEnumerable <ArticleToReturnDto> >(articlesFromRepo); return(Ok(new { articles, articleParams.Length })); }
// Article public async Task <IEnumerable <Article> > GetArticlesAsync(ArticleParams articleParams) { // Gotta back for implementing orderby date after another migration var articles = _context.Articles .Where(a => a.IsDeleted == false) .Include(a => a.Category) .AsQueryable(); articles = TQuery.ArticleQuery(articleParams, articles); return(await articles.ToListAsync()); }
public async Task GetArticlesAsync_WithDefaultParams_ReturnsArticlesThatMatchCriteria() { //Arrange var articleParams = new ArticleParams(); //Act var result = await _readOnlyArticleRepository.GetArticlesAsync(articleParams); //Assert Assert.That(result.GetType(), Is.EqualTo(typeof(PagedList <Article>))); Assert.That(result.First().Photos.GetType(), Is.EqualTo(typeof(List <ArticlePhoto>))); Assert.That(result.Count, Is.EqualTo(_defaultPageSize)); Assert.That(result.First().Code, Is.EqualTo("Article01")); Assert.That(result[9].Code, Is.EqualTo("Article10")); }
private static IQueryable <Article> OrderByQuery( ArticleParams articleParams, IQueryable <Article> articles) { articles = articleParams.OrderBy switch { ArticleOrderBy.Code => articles.OrderBy(a => a.Code), ArticleOrderBy.SupplierReference => articles.OrderBy(a => a.SupplierReference), ArticleOrderBy.Name => articles.OrderBy(a => a.Name1), _ => articles.OrderBy(a => a.Code) }; return(articles); } }
public async Task <PagedList <Article> > GetArticlesAsync( ArticleParams articleParams) { var query = _readOnlyContext.Articles .Include(a => a.Photos) .AsQueryable(); query = FilterQuery(articleParams, query); query = OrderByQuery(articleParams, query); return(await PagedList <Article> .CreateAsync( query, articleParams.PageNumber, articleParams.PageSize)); }
public async Task GetArticlesAsync_WithFilterCodeArt_ReturnsArticlesThatMatchCriteria() { //Arrange var articleParams = new ArticleParams() { Code = "aRt" }; //Act var result = await _readOnlyArticleRepository.GetArticlesAsync(articleParams); //Assert Assert.That(result.GetType(), Is.EqualTo(typeof(PagedList <Article>))); Assert.That(result.Count, Is.EqualTo(_defaultPageSize)); Assert.That(result.TotalCount, Is.EqualTo(12)); }
public async Task GetArticlesAsync_WithFilterName1_ReturnsArticlesThatMatchCriteria() { //Arrange var articleParams = new ArticleParams() { Name1 = "rd art" }; //Act var result = await _readOnlyArticleRepository.GetArticlesAsync(articleParams); //Assert Assert.That(result.GetType(), Is.EqualTo(typeof(PagedList <Article>))); Assert.That(result.Count, Is.EqualTo(1)); Assert.That(result.First().Code, Is.EqualTo("Article03")); }
private static IQueryable <Article> OrderByQuery( ArticleParams articleParams, IQueryable <Article> articles) { // TODO: use enums instead of magic strings articles = articleParams.OrderBy switch { "code" => articles.OrderBy(a => a.Code), "supplierReference" => articles.OrderBy(a => a.SupplierReference), "name" => articles.OrderBy(a => a.Name1), _ => articles.OrderBy(a => a.Code) }; return(articles); } }
public async Task GetArticlesAsync_WithOrderBySupplierRef_ReturnsArticlesThatMatchCriteria() { //Arrange var articleParams = new ArticleParams() { OrderBy = Common.Enums.ArticleOrderBy.SupplierReference }; //Act var result = await _readOnlyArticleRepository.GetArticlesAsync(articleParams); //Assert Assert.That(result.GetType(), Is.EqualTo(typeof(PagedList <Article>))); Assert.That(result.Count, Is.EqualTo(_defaultPageSize)); Assert.That(result.First().SupplierReference, Is.EqualTo("sup1 ref 1")); Assert.That(result[9].SupplierReference, Is.EqualTo("sup5 ref 2")); }
public async Task GetArticlesAsync_WithFilterSupplierReference_ReturnsArticlesThatMatchCriteria() { //Arrange var articleParams = new ArticleParams() { SupplierReference = "SUP1" }; //Act var result = await _readOnlyArticleRepository.GetArticlesAsync(articleParams); //Assert Assert.That(result.GetType(), Is.EqualTo(typeof(PagedList <Article>))); Assert.That(result.Count, Is.EqualTo(2)); Assert.That(result.First().Code, Is.EqualTo("Article07")); Assert.That(result[1].Code, Is.EqualTo("Article08")); }
public async Task GetArticlesAsync_WithFilterUnit_ReturnsArticlesThatMatchCriteria() { //Arrange var articleParams = new ArticleParams() { Unit = "B" }; //Act var result = await _articleRepository.GetArticlesAsync(articleParams); //Assert Assert.That(result.GetType(), Is.EqualTo(typeof(PagedList <Article>))); Assert.That(result.Count, Is.EqualTo(5)); Assert.That(result.First().Code, Is.EqualTo("Article05")); Assert.That(result[4].Code, Is.EqualTo("Article12")); }
public async Task GetArticlesAsync_WithOrderByName1_ReturnsArticlesThatMatchCriteria() { //Arrange var articleParams = new ArticleParams() { OrderBy = Common.Enums.ArticleOrderBy.Name }; //Act var result = await _readOnlyArticleRepository.GetArticlesAsync(articleParams); //Assert Assert.That(result.GetType(), Is.EqualTo(typeof(PagedList <Article>))); Assert.That(result.Count, Is.EqualTo(_defaultPageSize)); Assert.That(result.First().Name1, Is.EqualTo("10th article")); Assert.That(result[9].Name1, Is.EqualTo("7th article")); }
public async Task GetArticlesAsync_WithPageSize5TakeLastPage_ReturnsArticlesThatMatchCriteria() { //Arrange var articleParams = new ArticleParams() { PageSize = 5, PageNumber = 3 }; //Act var result = await _readOnlyArticleRepository.GetArticlesAsync(articleParams); //Assert Assert.That(result.GetType(), Is.EqualTo(typeof(PagedList <Article>))); Assert.That(result.Count, Is.EqualTo(2)); Assert.That(result.First().Code, Is.EqualTo("Article11")); Assert.That(result[1].Code, Is.EqualTo("Article12")); }
public async Task GetArticlesAsync_WithFilterPurchasePriceMinAndMax_ReturnsArticlesThatMatchCriteria() { //Arrange var articleParams = new ArticleParams() { PurchasePriceMin = 50.00M, PurchasePriceMax = 80.00M }; //Act var result = await _readOnlyArticleRepository.GetArticlesAsync(articleParams); //Assert Assert.That(result.GetType(), Is.EqualTo(typeof(PagedList <Article>))); Assert.That(result.Count, Is.EqualTo(4)); Assert.That(result.First().Code, Is.EqualTo("Article05")); Assert.That(result[3].Code, Is.EqualTo("Article08")); }
public async Task GetArticlesAsync_WithFilterCodeCle1_ReturnsArticlesThatMatchCriteria() { //Arrange var articleParams = new ArticleParams() { Code = "cLe1" }; //Act var result = await _readOnlyArticleRepository.GetArticlesAsync(articleParams); //Assert Assert.That(result.GetType(), Is.EqualTo(typeof(PagedList <Article>))); Assert.That(result.Count, Is.EqualTo(3)); Assert.That(result.First().Code, Is.EqualTo("Article10")); Assert.That(result[1].Code, Is.EqualTo("Article11")); Assert.That(result[2].Code, Is.EqualTo("Article12")); }
private static IQueryable <Article> FilterQuery( ArticleParams articleParams, IQueryable <Article> articles) { if (!string.IsNullOrEmpty(articleParams.Code)) { articles = articles.Where(a => a.Code.ToUpper().Contains(articleParams.Code.ToUpper())); } if (!string.IsNullOrEmpty(articleParams.SupplierId)) { articles = articles.Where(a => a.SupplierId.ToUpper().Contains(articleParams.SupplierId.ToUpper())); } if (!string.IsNullOrEmpty(articleParams.SupplierReference)) { articles = articles.Where(a => a.SupplierReference.ToUpper().Contains(articleParams.SupplierReference.ToUpper())); } if (!string.IsNullOrEmpty(articleParams.Name1)) { articles = articles.Where(a => a.Name1.ToUpper().Contains(articleParams.Name1.ToUpper())); } if (!string.IsNullOrEmpty(articleParams.Unit)) { articles = articles.Where(a => a.Unit.ToUpper().Contains(articleParams.Unit.ToUpper())); } if (articleParams.PurchasePriceMin != null) { articles = articles.Where(a => a.PurchasePrice >= articleParams.PurchasePriceMin); } if (articleParams.PurchasePriceMax != null) { articles = articles.Where(a => a.PurchasePrice <= articleParams.PurchasePriceMax); } return(articles); }
public async Task <IActionResult> GetArticles(int userId, [FromQuery] ArticleParams articleParams) { articleParams.UserId = userId; if (articleParams.UserId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } var articlesFromRepo = await _repo.GetArticlesForUser(articleParams); if (articlesFromRepo == null) { return(NotFound()); } Response.AddPagination(articlesFromRepo.CurrentPage, articlesFromRepo.SizePage, articlesFromRepo.TotalCount, articlesFromRepo.Total); var articleReturn = Mapper.Map <IList <ArticleForListDto> > (articlesFromRepo); return(Ok(articleReturn)); }
public void Setup() { _articleParams = new ArticleParams(); _testArticles = ArticleList.GetShortList().AsEnumerable(); var articlesPagedList = new PagedList <Article>(items: _testArticles, count: 3, pageNumber: 1, pageSize: 10); _readMapper = new Mapper(new MapperConfiguration(cfg => cfg.AddProfile <ReadApplication.Helpers.AutoMapperProfiles>())); _writeMapper = new Mapper(new MapperConfiguration(cfg => cfg.AddProfile <WriteApplication.Helpers.AutoMapperProfiles>())); _listQueryMock = new Mock <IGetArticlesQuery>(); _singleQueryMock = new Mock <IGetArticleQuery>(); _createCommandMock = new Mock <ICreateArticleCommand>(); _updateCommandMock = new Mock <IUpdateArticleCommand>(); _updateCommandMock = new Mock <IUpdateArticleCommand>(); _deleteCommandMock = new Mock <IDeleteArticleCommand>(); var articlesDtoList = _readMapper.Map <IEnumerable <ArticleDto> >(articlesPagedList); _articlesDtoPagedList = new PagedList <ArticleDto>(articlesDtoList, articlesPagedList.TotalCount, articlesPagedList.CurrentPage, articlesPagedList.PageSize); _listQueryMock .Setup(m => m.Execute(It.IsAny <ArticleParams>())) .Returns(Task.FromResult(_articlesDtoPagedList)); _unitOfWork = new Mock <IUnitOfWork>(); _articleRepository = new Mock <IArticleRepository>(); _unitOfWork.Setup(uow => uow.ArticleRepository).Returns(_articleRepository.Object); _articlesController = new ArticlesController( _listQueryMock.Object, _singleQueryMock.Object, _createCommandMock.Object, _updateCommandMock.Object, _deleteCommandMock.Object) { ControllerContext = TestControllerContext }; }
protected void btnSave_Click(object sender, EventArgs e) { Master.ShowErrorMsg(""); if (!IsValid) { return; } try { txtArticleAlias.Text = txtArticleAlias.Text.Trim(); txtBannerPicFileName.Text = txtBannerPicFileName.Text.Trim(); txtLinkUrl.Text = txtLinkUrl.Text.Trim(); txtControlName.Text = txtControlName.Text.Trim(); txtSubItemControlName.Text = txtSubItemControlName.Text.Trim(); txtSubItemLinkUrl.Text = txtSubItemLinkUrl.Text.Trim(); ArticleParams param = new ArticleParams() { ArticleAlias = txtArticleAlias.Text, BannerPicFileName = txtBannerPicFileName.Text, LayoutModeId = Convert.ToInt32(rdolLayoutMode.SelectedValue), ShowTypeId = Convert.ToInt32(rdolShowType.SelectedValue), LinkUrl = txtLinkUrl.Text, LinkTarget = chkIsNewWindow.Checked ? "_blank" : "", ControlName = txtControlName.Text, SubItemControlName = txtSubItemControlName.Text, IsHideSelf = chkIsHideSelf.Checked, IsHideChild = chkIsHideChild.Checked, StartDate = Convert.ToDateTime(txtStartDate.Text), EndDate = Convert.ToDateTime(txtEndDate.Text), SortNo = Convert.ToInt32(txtSortNo.Text), DontDelete = chkDontDelete.Checked, PostAccount = c.GetEmpAccount(), SubjectAtBannerArea = chkSubjectAtBannerArea.Checked, PublishDate = Convert.ToDateTime(txtPublishDate.Text), IsShowInUnitArea = chkIsShowInUnitArea.Checked, IsShowInSitemap = chkIsShowInSitemap.Checked, SortFieldOfFrontStage = hidSortFieldOfFrontStage.Text, IsSortDescOfFrontStage = Convert.ToBoolean(hidIsSortDescOfFrontStage.Text), IsListAreaShowInFrontStage = Convert.ToBoolean(hidIsListAreaShowInFrontStage.Text), IsAttAreaShowInFrontStage = Convert.ToBoolean(hidIsAttAreaShowInFrontStage.Text), IsPicAreaShowInFrontStage = Convert.ToBoolean(hidIsPicAreaShowInFrontStage.Text), IsVideoAreaShowInFrontStage = Convert.ToBoolean(hidIsVideoAreaShowInFrontStage.Text), SubItemLinkUrl = txtSubItemLinkUrl.Text }; txtArticleSubjectZhTw.Text = txtArticleSubjectZhTw.Text.Trim(); txtCkeContextZhTw.Text = StringUtility.GetSievedHtmlEditorValue(txtCkeContextZhTw.Text); txtSubtitleZhTw.Text = txtSubtitleZhTw.Text.Trim(); txtPublisherNameZhTw.Text = txtPublisherNameZhTw.Text.Trim(); ArticleMultiLangParams paramZhTw = new ArticleMultiLangParams() { CultureName = LangManager.CultureNameZHTW, ArticleSubject = txtArticleSubjectZhTw.Text, ArticleContext = txtCkeContextZhTw.Text, IsShowInLang = chkIsShowInLangZhTw.Checked, PostAccount = c.GetEmpAccount(), Subtitle = txtSubtitleZhTw.Text, PublisherName = txtPublisherNameZhTw.Text, TextContext = StringUtility.RemoveHtmlTag(txtCkeContextZhTw.Text) }; txtArticleSubjectEn.Text = txtArticleSubjectEn.Text.Trim(); txtCkeContextEn.Text = StringUtility.GetSievedHtmlEditorValue(txtCkeContextEn.Text); txtSubtitleEn.Text = txtSubtitleEn.Text.Trim(); txtPublisherNameEn.Text = txtPublisherNameEn.Text.Trim(); ArticleMultiLangParams paramEn = new ArticleMultiLangParams() { CultureName = LangManager.CultureNameEN, ArticleSubject = txtArticleSubjectEn.Text, ArticleContext = txtCkeContextEn.Text, IsShowInLang = chkIsShowInLangEn.Checked, PostAccount = c.GetEmpAccount(), Subtitle = txtSubtitleEn.Text, PublisherName = txtPublisherNameEn.Text, TextContext = StringUtility.RemoveHtmlTag(txtCkeContextEn.Text) }; bool result = false; if (c.qsAct == ConfigFormAction.add) { Guid newArticleId = Guid.NewGuid(); param.ArticleId = newArticleId; param.ParentId = c.qsArtId; if (param.ArticleAlias == "") { param.ArticleAlias = newArticleId.ToString(); } result = artPub.InsertArticleData(param); if (result) { //ZhTw if (result && LangManager.IsEnableEditLangZHTW()) { paramZhTw.ArticleId = param.ArticleId; result = artPub.InsertArticleMultiLangData(paramZhTw); } //En if (result && LangManager.IsEnableEditLangEN()) { paramEn.ArticleId = param.ArticleId; result = artPub.InsertArticleMultiLangData(paramEn); } if (!result) { Master.ShowErrorMsg(Resources.Lang.ErrMsg_AddMultiLangFailed); } } else { if (param.HasIdBeenUsed) { Master.ShowErrorMsg(Resources.Lang.ErrMsg_ArticleIdHasBeenUsed); } else if (param.HasAliasBeenUsed) { Master.ShowErrorMsg(Resources.Lang.ErrMsg_ArticleAliasHasBeenUsed); } else { Master.ShowErrorMsg(Resources.Lang.ErrMsg_AddFailed); } } } else if (c.qsAct == ConfigFormAction.edit) { param.ArticleId = c.qsArtId; if (param.ArticleAlias == "") { param.ArticleAlias = c.qsArtId.ToString(); } result = artPub.UpdateArticleData(param); if (result) { //ZhTw if (result && LangManager.IsEnableEditLangZHTW()) { paramZhTw.ArticleId = param.ArticleId; result = artPub.UpdateArticleMultiLangData(paramZhTw); } //En if (result && LangManager.IsEnableEditLangEN()) { paramEn.ArticleId = param.ArticleId; result = artPub.UpdateArticleMultiLangData(paramEn); } if (!result) { Master.ShowErrorMsg(Resources.Lang.ErrMsg_UpdateMultiLangFailed); } } else { if (param.HasAliasBeenUsed) { Master.ShowErrorMsg(Resources.Lang.ErrMsg_ArticleAliasHasBeenUsed); } else { Master.ShowErrorMsg(Resources.Lang.ErrMsg_AddFailed); } } } if (result) { if (chkUpdateSearchDataSource.Checked) { // call sql server agent job //bool jobResult = artPub.CallSqlServerAgentJob("Update SampleEFCMS SearchDataSource"); // sp artPub.BuildSearchDataSource(""); } ClientScript.RegisterStartupScript(this.GetType(), "", StringUtility.GetNoticeOpenerJs("Config"), true); } //新增後端操作記錄 string description = string.Format(".{0} .儲存網頁/Save article[{1}][{2}] ArticleId[{3}] 結果/result[{4}]", Title, txtArticleSubjectZhTw.Text, txtArticleSubjectEn.Text, param.ArticleId, result); empAuth.InsertBackEndLogData(new BackEndLogData() { EmpAccount = c.GetEmpAccount(), Description = description, IP = c.GetClientIP() }); } catch (Exception ex) { c.LoggerOfUI.Error("", ex); Master.ShowErrorMsg(ex.Message); } }