public string GetContentOrderByString(int siteId, string orderValue, TaxisType defaultType) { var taxisType = defaultType; var orderByString = string.Empty; if (!string.IsNullOrEmpty(orderValue)) { if (StringUtils.EqualsIgnoreCase(orderValue, StlParserUtility.OrderDefault)) { taxisType = TaxisType.OrderByTaxisDesc; } else if (StringUtils.EqualsIgnoreCase(orderValue, StlParserUtility.OrderBack)) { taxisType = TaxisType.OrderByTaxis; } else if (StringUtils.EqualsIgnoreCase(orderValue, StlParserUtility.OrderAddDate)) { taxisType = TaxisType.OrderByAddDateDesc; } else if (StringUtils.EqualsIgnoreCase(orderValue, StlParserUtility.OrderAddDateBack)) { taxisType = TaxisType.OrderByAddDate; } else if (StringUtils.EqualsIgnoreCase(orderValue, StlParserUtility.OrderLastModifiedDate)) { taxisType = TaxisType.OrderByLastModifiedDateDesc; } else if (StringUtils.EqualsIgnoreCase(orderValue, StlParserUtility.OrderLastModifiedDateBack)) { taxisType = TaxisType.OrderByLastModifiedDate; } else if (StringUtils.EqualsIgnoreCase(orderValue, StlParserUtility.OrderHits)) { taxisType = TaxisType.OrderByHits; } else if (StringUtils.EqualsIgnoreCase(orderValue, StlParserUtility.OrderHitsByDay)) { taxisType = TaxisType.OrderByHitsByDay; } else if (StringUtils.EqualsIgnoreCase(orderValue, StlParserUtility.OrderHitsByWeek)) { taxisType = TaxisType.OrderByHitsByWeek; } else if (StringUtils.EqualsIgnoreCase(orderValue, StlParserUtility.OrderHitsByMonth)) { taxisType = TaxisType.OrderByHitsByMonth; } else if (StringUtils.EqualsIgnoreCase(orderValue, StlParserUtility.OrderRandom)) { taxisType = TaxisType.OrderByRandom; } else { orderByString = orderValue; } } return(ETaxisTypeUtils.GetContentOrderByString(taxisType, orderByString)); }
private static List <Channel> ParserOrder(List <Channel> channels, TaxisType taxisType) { if (taxisType == TaxisType.OrderById || taxisType == TaxisType.OrderByChannelId) { return(channels.OrderBy(x => x.Id).ToList()); } if (taxisType == TaxisType.OrderByIdDesc || taxisType == TaxisType.OrderByChannelIdDesc) { return(channels.OrderByDescending(x => x.Id).ToList()); } if (taxisType == TaxisType.OrderByAddDate) { return(channels.OrderBy(x => x.AddDate).ToList()); } if (taxisType == TaxisType.OrderByAddDateDesc) { return(channels.OrderByDescending(x => x.AddDate).ToList()); } if (taxisType == TaxisType.OrderByLastModifiedDate) { return(channels.OrderBy(x => x.LastModifiedDate).ToList()); } if (taxisType == TaxisType.OrderByLastModifiedDateDesc) { return(channels.OrderByDescending(x => x.LastModifiedDate).ToList()); } if (taxisType == TaxisType.OrderByTaxis) { return(channels.OrderBy(x => x.Taxis).ToList()); } if (taxisType == TaxisType.OrderByTaxisDesc) { return(channels.OrderByDescending(x => x.Taxis).ToList()); } if (taxisType == TaxisType.OrderByRandom) { return(channels.OrderBy(x => Guid.NewGuid()).ToList()); } return(channels.OrderBy(x => x.Taxis).ToList()); }
private static List <Site> ParserOrder(List <Site> sites, TaxisType taxisType) { if (taxisType == TaxisType.OrderById) { return(sites.OrderBy(x => x.Id).ToList()); } if (taxisType == TaxisType.OrderByIdDesc) { return(sites.OrderByDescending(x => x.Id).ToList()); } if (taxisType == TaxisType.OrderByAddDate) { return(sites.OrderBy(x => x.CreatedDate).ToList()); } if (taxisType == TaxisType.OrderByAddDateDesc) { return(sites.OrderByDescending(x => x.CreatedDate).ToList()); } if (taxisType == TaxisType.OrderByLastModifiedDate) { return(sites.OrderBy(x => x.LastModifiedDate).ToList()); } if (taxisType == TaxisType.OrderByLastModifiedDate) { return(sites.OrderByDescending(x => x.LastModifiedDate).ToList()); } if (taxisType == TaxisType.OrderByTaxis) { return(sites.OrderBy(x => x.Taxis).ToList()); } if (taxisType == TaxisType.OrderByTaxisDesc) { return(sites.OrderByDescending(x => x.Taxis).ToList()); } if (taxisType == TaxisType.OrderByRandom) { return(sites.OrderBy(x => Guid.NewGuid()).ToList()); } return(sites.OrderBy(x => x.Taxis).ToList()); }
public static string GetContentOrderAttributeName(TaxisType taxisType) { var retVal = nameof(Content.Taxis); switch (taxisType) { case TaxisType.OrderById: case TaxisType.OrderByIdDesc: retVal = nameof(Content.Id); break; case TaxisType.OrderByChannelId: case TaxisType.OrderByChannelIdDesc: retVal = nameof(Content.ChannelId); break; case TaxisType.OrderByAddDate: case TaxisType.OrderByAddDateDesc: retVal = nameof(Content.AddDate); break; case TaxisType.OrderByLastModifiedDate: case TaxisType.OrderByLastModifiedDateDesc: retVal = nameof(Content.LastModifiedDate); break; case TaxisType.OrderByHits: retVal = nameof(Content.Hits); break; case TaxisType.OrderByHitsByDay: retVal = nameof(Content.HitsByDay); break; case TaxisType.OrderByHitsByWeek: retVal = nameof(Content.HitsByWeek); break; case TaxisType.OrderByHitsByMonth: retVal = nameof(Content.HitsByMonth); break; } return(retVal); }
public static string GetContentOrderByString(TaxisType taxisType, string orderByString) { if (!string.IsNullOrEmpty(orderByString)) { if (orderByString.Trim().ToUpper().StartsWith("ORDER BY ")) { return(orderByString); } return("ORDER BY " + orderByString); } var retVal = string.Empty; if (taxisType == TaxisType.OrderById) { retVal = $"ORDER BY {nameof(Content.Top)} DESC, {nameof(Content.Id)} ASC"; } else if (taxisType == TaxisType.OrderByIdDesc) { retVal = $"ORDER BY {nameof(Content.Top)} DESC, {nameof(Content.Id)} DESC"; } else if (taxisType == TaxisType.OrderByChannelId) { retVal = $"ORDER BY {nameof(Content.Top)} DESC, {nameof(Content.ChannelId)} ASC, {nameof(Content.Id)} DESC"; } else if (taxisType == TaxisType.OrderByChannelIdDesc) { retVal = $"ORDER BY {nameof(Content.Top)} DESC, {nameof(Content.ChannelId)} DESC, {nameof(Content.Id)} DESC"; } else if (taxisType == TaxisType.OrderByAddDate) { retVal = $"ORDER BY {nameof(Content.Top)} DESC, {nameof(Content.AddDate)} ASC, {nameof(Content.Id)} DESC"; } else if (taxisType == TaxisType.OrderByAddDateDesc) { retVal = $"ORDER BY {nameof(Content.Top)} DESC, {nameof(Content.AddDate)} DESC, {nameof(Content.Id)} DESC"; } else if (taxisType == TaxisType.OrderByLastModifiedDate) { retVal = $"ORDER BY {nameof(Content.Top)} DESC, {nameof(Content.LastModifiedDate)} ASC, {nameof(Content.Id)} DESC"; } else if (taxisType == TaxisType.OrderByLastModifiedDateDesc) { retVal = $"ORDER BY {nameof(Content.Top)} DESC, {nameof(Content.LastModifiedDate)} DESC, {nameof(Content.Id)} DESC"; } else if (taxisType == TaxisType.OrderByTaxis) { retVal = $"ORDER BY {nameof(Content.Top)} DESC, {nameof(Content.Taxis)} ASC, {nameof(Content.Id)} DESC"; } else if (taxisType == TaxisType.OrderByTaxisDesc) { retVal = $"ORDER BY {nameof(Content.Top)} DESC, {nameof(Content.Taxis)} DESC, {nameof(Content.Id)} DESC"; } else if (taxisType == TaxisType.OrderByHits) { retVal = $"ORDER BY {nameof(Content.Hits)} DESC, {nameof(Content.Id)} DESC"; } else if (taxisType == TaxisType.OrderByHitsByDay) { retVal = $"ORDER BY {nameof(Content.HitsByDay)} DESC, {nameof(Content.Id)} DESC"; } else if (taxisType == TaxisType.OrderByHitsByWeek) { retVal = $"ORDER BY {nameof(Content.HitsByWeek)} DESC, {nameof(Content.Id)} DESC"; } else if (taxisType == TaxisType.OrderByHitsByMonth) { retVal = $"ORDER BY {nameof(Content.HitsByMonth)} DESC, {nameof(Content.Id)} DESC"; } else if (taxisType == TaxisType.OrderByRandom) { //retVal = SqlUtils.GetOrderByRandom(); } return(retVal); }
public static string GetContentOrderByString(TaxisType taxisType) { return(GetContentOrderByString(taxisType, string.Empty)); }
private void ParserOrderQuery(Query query, TaxisType taxisType) { if (taxisType == TaxisType.OrderById) { query.OrderByDesc(nameof(Content.Top)).OrderBy(nameof(Content.Id)); } else if (taxisType == TaxisType.OrderByIdDesc) { query.OrderByDesc(nameof(Content.Top), nameof(Content.Id)); } else if (taxisType == TaxisType.OrderByChannelId) { query.OrderByDesc(nameof(Content.Top)) .OrderBy(nameof(Content.ChannelId)) .OrderByDesc(nameof(Content.Id)); } else if (taxisType == TaxisType.OrderByChannelIdDesc) { query.OrderByDesc(nameof(Content.Top), nameof(Content.ChannelId), nameof(Content.Id)); } else if (taxisType == TaxisType.OrderByAddDate) { query.OrderByDesc(nameof(Content.Top)) .OrderBy(nameof(Content.AddDate)) .OrderByDesc(nameof(Content.Id)); } else if (taxisType == TaxisType.OrderByAddDateDesc) { query.OrderByDesc(nameof(Content.Top), nameof(Content.AddDate), nameof(Content.Id)); } else if (taxisType == TaxisType.OrderByLastModifiedDate) { query.OrderByDesc(nameof(Content.Top)) .OrderBy(nameof(Content.LastModifiedDate)) .OrderByDesc(nameof(Content.Id)); } else if (taxisType == TaxisType.OrderByLastModifiedDateDesc) { query.OrderByDesc(nameof(Content.Top), nameof(Content.LastModifiedDate), nameof(Content.Id)); } else if (taxisType == TaxisType.OrderByTaxis) { query.OrderByDesc(nameof(Content.Top)) .OrderBy(nameof(Content.Taxis)) .OrderByDesc(nameof(Content.Id)); } else if (taxisType == TaxisType.OrderByTaxisDesc) { query.OrderByDesc(nameof(Content.Top), nameof(Content.Taxis), nameof(Content.Id)); } else if (taxisType == TaxisType.OrderByHits) { query.OrderByDesc(nameof(Content.Hits), nameof(Content.Id)); } else if (taxisType == TaxisType.OrderByHitsByDay) { query.OrderByDesc(nameof(Content.HitsByDay), nameof(Content.Id)); } else if (taxisType == TaxisType.OrderByHitsByWeek) { query.OrderByDesc(nameof(Content.HitsByWeek), nameof(Content.Id)); } else if (taxisType == TaxisType.OrderByHitsByMonth) { query.OrderByDesc(nameof(Content.HitsByMonth), nameof(Content.Id)); } else if (taxisType == TaxisType.OrderByRandom) { query.OrderByRandom(Guid.NewGuid().ToString()); } }
public async Task <List <KeyValuePair <int, Content> > > ParserGetContentsDataSourceAsync(Site site, int channelId, int contentId, string groupContent, string groupContentNot, string tags, bool isImageExists, bool isImage, bool isVideoExists, bool isVideo, bool isFileExists, bool isFile, bool isRelatedContents, int startNum, int totalNum, TaxisType taxisType, bool isTopExists, bool isTop, bool isRecommendExists, bool isRecommend, bool isHotExists, bool isHot, bool isColorExists, bool isColor, ScopeType scopeType, string groupChannel, string groupChannelNot, NameValueCollection others, Query query) { if (!await _channelRepository.IsExistsAsync(channelId)) { return(null); } var channel = await _channelRepository.GetAsync(channelId); var repository = GetRepository(site, channel); query = GetQuery(query, site.Id) .Select( nameof(ContentSummary.Id), nameof(ContentSummary.ChannelId), nameof(ContentSummary.Checked), nameof(ContentSummary.CheckedLevel) ) .WhereTrue(nameof(Content.Checked)); if (isRelatedContents && contentId > 0) { query.WhereNot(nameof(Content.Id), contentId); } if (isTopExists) { query = isTop ? query.WhereTrue(nameof(Content.Top)) : query.WhereNullOrFalse(nameof(Content.Top)); } if (isRecommendExists) { query = isRecommend ? query.WhereTrue(nameof(Content.Recommend)) : query.WhereNullOrFalse(nameof(Content.Recommend)); } if (isHotExists) { query = isHot ? query.WhereTrue(nameof(Content.Hot)) : query.WhereNullOrFalse(nameof(Content.Hot)); } if (isColorExists) { query = isColor ? query.WhereTrue(nameof(Content.Color)) : query.WhereNullOrFalse(nameof(Content.Color)); } if (!string.IsNullOrEmpty(groupContent)) { query.Where(q => q .Where(nameof(Content.GroupNames), groupContent) .OrWhereInStr(repository.Database.DatabaseType, nameof(Content.GroupNames), $",{groupContent}") .OrWhereInStr(repository.Database.DatabaseType, nameof(Content.GroupNames), $",{groupContent},") .OrWhereInStr(repository.Database.DatabaseType, nameof(Content.GroupNames), $"{groupContent},") ); } if (!string.IsNullOrEmpty(groupContentNot)) { query .WhereNot(nameof(Content.GroupNames), groupContentNot) .WhereNotInStr(repository.Database.DatabaseType, nameof(Content.GroupNames), $",{groupContentNot}") .WhereNotInStr(repository.Database.DatabaseType, nameof(Content.GroupNames), $",{groupContentNot},") .WhereNotInStr(repository.Database.DatabaseType, nameof(Content.GroupNames), $"{groupContentNot},"); } if (!string.IsNullOrEmpty(tags)) { var tagNames = ListUtils.GetStringList(tags); foreach (var tagName in tagNames) { query.Where(q => q .Where(nameof(Content.TagNames), tagName) .OrWhereInStr(repository.Database.DatabaseType, nameof(Content.TagNames), $",{tagName}") .OrWhereInStr(repository.Database.DatabaseType, nameof(Content.TagNames), $",{tagName},") .OrWhereInStr(repository.Database.DatabaseType, nameof(Content.TagNames), $"{tagName},")); } } if (isImageExists) { if (isImage) { query .WhereNot(nameof(Content.ImageUrl), string.Empty) .WhereNotNull(nameof(Content.ImageUrl)); } else { query.WhereNullOrEmpty(nameof(Content.ImageUrl)); } } if (isVideoExists) { if (isVideo) { query .WhereNot(nameof(Content.VideoUrl), string.Empty) .WhereNotNull(nameof(Content.VideoUrl)); } else { query.WhereNullOrEmpty(nameof(Content.VideoUrl)); } } if (isFileExists) { if (isFile) { query .WhereNot(nameof(Content.FileUrl), string.Empty) .WhereNotNull(nameof(Content.FileUrl)); } else { query.WhereNullOrEmpty(nameof(Content.FileUrl)); } } var channelIdList = await _channelRepository.GetChannelIdsAsync(channel, scopeType, groupChannel, groupChannelNot, string.Empty); if (channelIdList == null || channelIdList.Count == 0) { return(null); } if (channelIdList.Count == 1) { query.Where(nameof(Content.ChannelId), channelIdList[0]); } else { query.WhereIn(nameof(Content.ChannelId), channelIdList); } if (others != null && others.Count > 0) { foreach (var attributeName in others.AllKeys) { if (repository.TableColumns.Exists(x => StringUtils.EqualsIgnoreCase(x.AttributeName, attributeName))) { var value = others.Get(attributeName); if (!string.IsNullOrEmpty(value)) { if (StringUtils.StartsWithIgnoreCase(value, "not:")) { value = value.Substring("not:".Length); if (value.IndexOf(',') == -1) { query.WhereNot(attributeName, value); } else { var collection = ListUtils.GetStringList(value); foreach (var val in collection) { query.WhereNot(attributeName, val); } } } else if (StringUtils.StartsWithIgnoreCase(value, "contains:")) { value = value.Substring("contains:".Length); if (value.IndexOf(',') == -1) { query.WhereLike(attributeName, $"%{value}%"); } else { var collection = ListUtils.GetStringList(value); query.Where(q => { foreach (var val in collection) { q.OrWhereLike(attributeName, $"%{val}%"); } return(q); }); } } else if (StringUtils.StartsWithIgnoreCase(value, "start:")) { value = value.Substring("start:".Length); if (value.IndexOf(',') == -1) { query.WhereStarts(attributeName, value); } else { var collection = ListUtils.GetStringList(value); query.Where(q => { foreach (var val in collection) { q.OrWhereStarts(attributeName, val); } return(q); }); } } else if (StringUtils.StartsWithIgnoreCase(value, "end:")) { value = value.Substring("end:".Length); if (value.IndexOf(',') == -1) { query.WhereEnds(attributeName, value); } else { var collection = ListUtils.GetStringList(value); query.Where(q => { foreach (var val in collection) { q.OrWhereEnds(attributeName, val); } return(q); }); } } else { if (value.IndexOf(',') == -1) { query.Where(attributeName, value); } else { var collection = ListUtils.GetStringList(value); query.Where(q => { foreach (var val in collection) { q.OrWhere(attributeName, val); } return(q); }); } } } } } } ParserOrderQuery(query, taxisType); //if (!string.IsNullOrEmpty(where)) //{ // query.WhereRaw(where); //} var summaries = await repository.GetAllAsync <ContentSummary>(query); if (startNum > 1 && totalNum > 0) { summaries = summaries.Skip(startNum - 1).Take(totalNum).ToList(); } else if (startNum > 1) { summaries = summaries.Skip(startNum - 1).ToList(); } else if (totalNum > 0) { summaries = summaries.Take(totalNum).ToList(); } var list = new List <KeyValuePair <int, Content> >(); var i = 0; foreach (var summary in summaries) { var content = await GetAsync(site, summary.ChannelId, summary.Id); list.Add(new KeyValuePair <int, Content>(i++, content)); } return(list); }
public async Task <List <KeyValuePair <int, Channel> > > ParserGetChannelsAsync(int siteId, int pageChannelId, string group, string groupNot, bool isImageExists, bool isImage, int startNum, int totalNum, TaxisType order, ScopeType scopeType, bool isTotal) { var channels = new List <Channel>(); List <int> channelIdList; if (isTotal)//从所有栏目中选择 { channelIdList = await GetChannelIdsAsync(siteId, siteId, ScopeType.All); } else { channelIdList = await GetChannelIdsAsync(siteId, pageChannelId, scopeType); } foreach (var channelId in channelIdList) { var channel = await GetAsync(channelId); if (!string.IsNullOrEmpty(group)) { if (!ListUtils.ContainsIgnoreCase(channel.GroupNames, group)) { continue; } } if (!string.IsNullOrEmpty(groupNot)) { if (ListUtils.ContainsIgnoreCase(channel.GroupNames, groupNot)) { continue; } } if (isImageExists) { if (isImage) { if (string.IsNullOrEmpty(channel.ImageUrl)) { continue; } } else { if (!string.IsNullOrEmpty(channel.ImageUrl)) { continue; } } } channels.Add(channel); } channels = ParserOrder(channels, order); if (startNum > 1 && totalNum > 0) { channels = channels.Skip(startNum - 1).Take(totalNum).ToList(); } else if (startNum > 1) { channels = channels.Skip(startNum - 1).ToList(); } else if (totalNum > 0) { channels = channels.Take(totalNum).ToList(); } var list = new List <KeyValuePair <int, Channel> >(); var i = 0; foreach (var channel in channels) { list.Add(new KeyValuePair <int, Channel>(i++, channel)); } return(list); }
public async Task <List <KeyValuePair <int, Site> > > ParserGetSitesAsync(string siteName, string siteDir, int startNum, int totalNum, ScopeType scopeType, TaxisType taxisType) { var sites = new List <Site>(); var summaries = await GetSummariesAsync(); Site site = null; if (!string.IsNullOrEmpty(siteName)) { site = await GetSiteBySiteNameAsync(siteName); } else if (!string.IsNullOrEmpty(siteDir)) { site = await GetSiteByDirectoryAsync(siteDir); } var siteIds = summaries.Select(x => x.Id).ToList(); if (site != null) { siteIds = summaries.Where(x => x.ParentId == site.Id).Select(x => x.Id).ToList(); } else { if (scopeType == ScopeType.Children) { siteIds = summaries.Where(x => x.ParentId == 0 && !x.Root).Select(x => x.Id).ToList(); } else if (scopeType == ScopeType.Descendant) { siteIds = summaries.Where(x => !x.Root).Select(x => x.Id).ToList(); } } foreach (var siteId in siteIds) { sites.Add(await GetAsync(siteId)); } sites = ParserOrder(sites, taxisType); if (startNum > 1 && totalNum > 0) { sites = sites.Skip(startNum - 1).Take(totalNum).ToList(); } else if (startNum > 1) { sites = sites.Skip(startNum - 1).ToList(); } else if (totalNum > 0) { sites = sites.Take(totalNum).ToList(); } var list = new List <KeyValuePair <int, Site> >(); var i = 0; foreach (var entity in sites) { list.Add(new KeyValuePair <int, Site>(i++, entity)); } return(list); }