using Hncore.Pass.Vpn.Domain; using Hncore.Pass.Vpn.Service; using Home.Models; using Microsoft.AspNetCore.Mvc; using System; using System.Linq.Expressions; using Hncore.Infrastructure.Extension; using Hncore.Infrastructure.EntitiesExtension; using System.Threading.Tasks; using System.Linq; using Microsoft.EntityFrameworkCore; using Hncore.Infrastructure.WebApi; namespace Home.Controllers { public class ArticleController : MvcBaseController { ArticleService m_ArticleServce; public ArticleController(ArticleService _ArticleServce) { m_ArticleServce = _ArticleServce; } [HttpGet] public async Task Index([FromQuery]ArticleSearchModel request) { request = request ?? new ArticleSearchModel(); Expression> exp = m => 1 == 1; if (request.Catalog > 0) { exp = exp.And(m => m.CatalogId == request.Catalog); } if (request.KeyWord.Has()) { exp = exp.And(m => m.Title.Contains(request.KeyWord) || m.SubTitle.Contains(request.KeyWord)); } var ret = await m_ArticleServce.Page(request.PageIndex, request.PageSize, exp); return View(ret); } [HttpGet] public async Task Search([FromQuery]ArticleSearchModel request) { request = request ?? new ArticleSearchModel(); Expression> exp = m => 1 == 1; if (request.Catalog > 0) { exp = exp.And(m => m.CatalogId == request.Catalog); } if (request.KeyWord.Has()) { exp = exp.And(m => m.Title.Contains(request.KeyWord) || m.SubTitle.Contains(request.KeyWord)); } var ret = await m_ArticleServce.Page(request.PageIndex, request.PageSize, exp); return View(ret); } [HttpGet] public async Task Info(int id) { var prev = await m_ArticleServce.Query(m => m.Id < id).OrderByDescending(m => m.Id).FirstOrDefaultAsync(); var ret = await m_ArticleServce.GetById(id); var next = await m_ArticleServce.Query(m => m.Id > id).OrderBy(m => m.Id).FirstOrDefaultAsync(); return View(new ArticleInfoMode() { Prev = prev, Info = ret, Next = next }); } [HttpGet] public async Task Infoapi(int id) { var prev = await m_ArticleServce.Query(m => m.Id < id).OrderByDescending(m => m.Id).FirstOrDefaultAsync(); var ret = await m_ArticleServce.GetById(id); var next = await m_ArticleServce.Query(m => m.Id > id).OrderBy(m => m.Id).FirstOrDefaultAsync(); var data = new ArticleInfoMode() { Prev = prev, Info = ret, Next = next }; return new ApiResult(data); } [HttpGet] public IActionResult TaoBao() { return View(); } } }