public object PesquisarUsuarios(PesquisarUsuariosQueryFilter filter)
        {
            if (string.IsNullOrEmpty(filter.Descritivo))
            {
                // Pesquisar sem filtro retorna lista vazia
                return(new object());
            }
            else
            {
                var query = _session.QueryOver <Usuario>()
                            .Where(x => x.Ativo);

                var a = query.List();

                var comparador = Restrictions.Disjunction();

                comparador.Add(Restrictions.InsensitiveLike(Projections.Property <Usuario>(x => x.Username), filter.Descritivo, MatchMode.Start));
                comparador.Add(Restrictions.InsensitiveLike(Projections.Property <Usuario>(x => x.Nome), filter.Descritivo, MatchMode.Start));
                comparador.Add(Restrictions.InsensitiveLike(Projections.Property <Usuario>(x => x.Descricao), filter.Descritivo, MatchMode.Start));

                query.Where(comparador);

                query.OrderBy(x => x.Username).Asc();

                var pagedObject = new PagedObject <Usuario>();

                pagedObject.Paginate(query, 30, filter.Pagina);

                return(pagedObject.PageResult(Mapper.Map <IList <UsuarioQueryModelSearch> >(pagedObject.ResultQuery.List())));
            }
        }
        public object PesquisarPublicacoes(PesquisarPublicacoesQueryFilter filter)
        {
            if (string.IsNullOrEmpty(filter.Descritivo))
            {
                // Pesquisar sem filtro retorna lista vazia
                return(new object());
            }
            else
            {
                var query = _session.QueryOver <Publicacao>()
                            .Where(x => x.Ativo)
                            .And(x => x.PublicacaoRespondida == null)
                            .And(x => x.PublicacaoRecompartilhada == null);

                var comparador = Restrictions.Disjunction();

                comparador.Add(Restrictions.InsensitiveLike(Projections.Property <Publicacao>(x => x.Conteudo), filter.Descritivo, MatchMode.Anywhere));

                query.Where(comparador);

                query.OrderBy(x => x.Data).Desc();

                var pagedObject = new PagedObject <Publicacao>();

                pagedObject.Paginate(query, 30, filter.Pagina);

                return(pagedObject.PageResult(Mapper.Map <IList <PublicacaoQueryModelSearch> >(pagedObject.ResultQuery.List())));
            }
        }
Ejemplo n.º 3
0
        public object ListarNoticiasMaisDiscordadasDaSemana(ListarNoticiasParaOpinarQueryFilter filter)
        {
            DateTime seteDiasAtras = DateTime.Now.AddDays(-7);

            ListarNoticiasMaisConcordadasDaSemanaQueryModel noticiaQueryModel = null;
            Noticia noticiaAlias = null;
            Opiniao opiniaoAlias = null;

            var query = _session.QueryOver <Opiniao>(() => opiniaoAlias)
                        .JoinAlias(() => opiniaoAlias.Noticia, () => noticiaAlias)
                        .Where(x => x.Data >= seteDiasAtras)
                        .And(x => x.Tipo == TipoOpiniao.Discordo)
                        .SelectList(l => l
                                    .Select(x => noticiaAlias.Id).WithAlias(() => noticiaQueryModel.Id)
                                    .Select(x => noticiaAlias.Titulo).WithAlias(() => noticiaQueryModel.Titulo)
                                    .Select(x => noticiaAlias.Url).WithAlias(() => noticiaQueryModel.Url)
                                    .Select(x => noticiaAlias.UrlImagem).WithAlias(() => noticiaQueryModel.UrlImagem)
                                    .Select(x => noticiaAlias.Data).WithAlias(() => noticiaQueryModel.Data)
                                    .SelectCount(x => x.Id).WithAlias(() => noticiaQueryModel.Quantidade)
                                    .SelectGroup(x => noticiaAlias.Id))
                        .OrderByAlias(() => noticiaQueryModel.Quantidade).Desc
                        .TransformUsing(Transformers.AliasToBean <ListarNoticiasMaisConcordadasDaSemanaQueryModel>());

            var pagedObject = new PagedObject <Opiniao>();

            pagedObject.Paginate(query, 10, filter.Pagina);

            return(pagedObject.PageResult(Mapper.Map <IList <ListarNoticiasMaisConcordadasDaSemanaQueryModel> >(pagedObject.ResultQuery.List <ListarNoticiasMaisConcordadasDaSemanaQueryModel>())));
        }
        public async Task <IActionResult> GetTransfers(string section = "all", int page = 1)
        {
            User         user     = userService.FindUserByName(HttpContext.User.Identity.Name);
            EmployeeInfo employee = await employeeService.GetEmployeeInfoByUserId(user.Id);

            IQueryable <ConfirmTransferViewModel> transfers;

            if (section == "not_confirmed")
            {
                transfers =
                    transferService.GetNotConfirmedTransferViewModelsByCompanyId(user);
            }
            else
            {
                transfers = transferService.GetAllTransferViewModelsByCompanyId(user);
            }
            PagedObject <ConfirmTransferViewModel> pagedObject = await pagingService.DoPage <ConfirmTransferViewModel>(transfers, page);

            if (employee != null)
            {
                foreach (var confirmTransferViewModel in pagedObject.Objects)
                {
                    confirmTransferViewModel.IsUserHaveRightOfConfirm =
                        transferService.GetEmployeeRightOfConfirm(employee,
                                                                  confirmTransferViewModel.Transfer.AccountSender);
                }
            }
            else
            {
                UserInfo userInfo = await userService.FindUserInfoByUserId(user.Id);

                foreach (var confirmTransferViewModel in pagedObject.Objects)
                {
                    if (confirmTransferViewModel.Transfer.AccountSender != null)
                    {
                        if (confirmTransferViewModel.Transfer.AccountSender.UserInfoId == userInfo.Id)
                        {
                            confirmTransferViewModel.IsUserHaveRightOfConfirm = true;
                        }
                        else
                        {
                            confirmTransferViewModel.IsUserHaveRightOfConfirm = false;
                        }
                    }
                    confirmTransferViewModel.IsUserHaveRightOfConfirm = false;
                }
            }

            PagingViewModel <ConfirmTransferViewModel> model = new PagingViewModel <ConfirmTransferViewModel>
            {
                PageViewModel = new PageViewModel(pagedObject.Count, page, pagedObject.PageSize),
                Objects       = pagedObject.Objects
            };

            ViewBag.Section = section;

            return(View(model));
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> Index(int page = 1)
        {
            IQueryable <UserInfo>  users       = userService.GetUserList().OrderBy(n => n.User.UserName);
            PagedObject <UserInfo> pagedObject = await pagingService.DoPage <UserInfo>(users, page);

            PagingViewModel <UserInfo> UsersPagingViewModel = new PagingViewModel <UserInfo>
            {
                PageViewModel = new PageViewModel(pagedObject.Count, page, pagedObject.PageSize),
                Objects       = pagedObject.Objects
            };

            return(View(UsersPagingViewModel));
        }
        public async Task <IActionResult> PaymentCodeList(int page = 1)
        {
            IQueryable <PaymentСode>  paymentCodies = paymentCodeService.GetPaymentСodeList().OrderBy(c => c.Code);
            PagedObject <PaymentСode> pagedObject   = await pagingService.DoPage <PaymentСode>(paymentCodies, page);

            PagingViewModel <PaymentСode> PaymentCodiesPagingViewModel = new PagingViewModel <PaymentСode>
            {
                PageViewModel = new PageViewModel(pagedObject.Count, page, pagedObject.PageSize),
                Objects       = pagedObject.Objects
            };

            return(View(PaymentCodiesPagingViewModel));
        }
        public async Task <IActionResult> Index(int page = 1)
        {
            IQueryable <Company>  companies   = companyService.GetCompanies().OrderBy(c => c.NameCompany);
            PagedObject <Company> pagedObject = await pagingService.DoPage <Company>(companies, page);

            PagingViewModel <Company> CompaniesPagingViewModel = new PagingViewModel <Company>
            {
                PageViewModel = new PageViewModel(pagedObject.Count, page, pagedObject.PageSize),
                Objects       = pagedObject.Objects
            };

            return(View(CompaniesPagingViewModel));
        }
        public async Task <IActionResult> Index(int page = 1)
        {
            IQueryable <Limit>  limits      = limitService.GetLimitList().OrderBy(l => l.LimitName);
            PagedObject <Limit> pagedObject = await pagingService.DoPage <Limit>(limits, page);

            PagingViewModel <Limit> LimitsPagingViewModel = new PagingViewModel <Limit>
            {
                PageViewModel = new PageViewModel(pagedObject.Count, page, pagedObject.PageSize),
                Objects       = pagedObject.Objects
            };

            return(View(LimitsPagingViewModel));
        }
Ejemplo n.º 9
0
        public async Task <IActionResult> Index(int page = 1)
        {
            IQueryable <Bank>  banks       = bankService.GetBankList().OrderBy(b => b.BIK);
            PagedObject <Bank> pagedObject = await pagingService.DoPage <Bank>(banks, page);

            PagingViewModel <Bank> BanksPagingViewModel = new PagingViewModel <Bank>
            {
                PageViewModel = new PageViewModel(pagedObject.Count, page, pagedObject.PageSize),
                Objects       = pagedObject.Objects
            };

            return(View(BanksPagingViewModel));
        }
        public object UsuarioPublicacoes(UsuarioPublicacoesQueryFilter filter)
        {
            var query = _session.QueryOver <Publicacao>()
                        .Where(x => x.Ativo)
                        .And(x => x.Usuario.Id == filter.Usuario.Id)
                        .OrderBy(x => x.Data).Desc;

            var pagedObject = new PagedObject <Publicacao>();

            pagedObject.Paginate(query, 30, filter.Pagina);

            return(pagedObject.PageResult(Mapper.Map <IList <TimeLineQueryModel> >(pagedObject.ResultQuery.List())));
        }
Ejemplo n.º 11
0
        public ActionResult <PagedObject <Group> > QueryGroup([FromQuery] GroupQueryRequest request)
        {
            var dto      = _mapper.Map <GroupQueryRequest, GroupQueryDto>(request);
            var entities = _groupService.QueryGroup(dto);
            var result   = new PagedObject <Group>
            {
                Page     = dto.Page,
                PageSize = dto.PageSize,
                Total    = dto.TotalCount,
                Items    = _mapper.Map <IList <Domain.Entities.Group>, List <Group> >(entities),
            };

            return(result);
        }
Ejemplo n.º 12
0
        public ActionResult <PagedObject <Project> > QueryProject([FromQuery] ProjectQueryRequest request)
        {
            var dto      = _mapper.Map <ProjectQueryRequest, ProjectQueryDto>(request);
            var entities = _projectService.QueryProject(dto);
            var result   = new PagedObject <Project>
            {
                Page     = dto.Page,
                PageSize = dto.PageSize,
                Total    = dto.TotalCount,
                Items    = _mapper.Map <IList <Domain.Entities.Project>, List <Project> >(entities),
            };

            return(result);
        }
Ejemplo n.º 13
0
        public ActionResult <PagedObject <WorkType> > QueryWorkType([FromQuery] WorkTypeQueryRequest request)
        {
            var dto      = _mapper.Map <WorkTypeQueryRequest, WorkTypeQueryDto>(request);
            var entities = _workTypeService.QueryWorkType(dto);
            var result   = new PagedObject <WorkType>
            {
                Page     = dto.Page,
                PageSize = dto.PageSize,
                Total    = dto.TotalCount,
                Items    = _mapper.Map <IList <Domain.Entities.WorkType>, List <WorkType> >(entities),
            };

            return(result);
        }
        public async Task <ActionResult> Index(int id, int page = 1)
        {
            IQueryable <EmployeeInfo>  employees   = employeeService.GetEmployeesByCompanyId(id).OrderBy(c => c.FirstName);
            PagedObject <EmployeeInfo> pagedObject = await pagingService.DoPage <EmployeeInfo>(employees, page);

            PagingViewModel <EmployeeInfo> EmployeePagingViewModel = new PagingViewModel <EmployeeInfo>
            {
                PageViewModel = new PageViewModel(pagedObject.Count, page, pagedObject.PageSize),
                Objects       = pagedObject.Objects
            };

            ViewBag.CompanyId = id;

            return(View(EmployeePagingViewModel));
        }
Ejemplo n.º 15
0
        public object ListarNoticiasParaOpinar(ListarNoticiasParaOpinarQueryFilter filter, int usuarioId)
        {
            // Trazer todas as opiniões do usuário
            var subQuery = _session.QueryOver <Opiniao>()
                           .Where(x => x.Usuario.Id == usuarioId)
                           .Select(x => x.Noticia.Id)
                           .List <int>();

            // Recuperar as notícias que não são as notícias da consulta acima
            var query = _session.QueryOver <Noticia>()
                        .WhereRestrictionOn(x => x.Id).Not.IsInG(subQuery)
                        .OrderBy(x => x.Data).Desc;

            var pagedObject = new PagedObject <Noticia>();

            pagedObject.Paginate(query, 10, filter.Pagina);

            return(pagedObject.PageResult(Mapper.Map <IList <NoticiaQueryModel> >(pagedObject.ResultQuery.List())));
        }
        public object TimeLineUsuario(TimeLineUsuarioQueryFilter filter, int usuarioId)
        {
            var usuariosSeguindo = _session.QueryOver <SeguidorUsuario>()
                                   .Where(x => x.UsuarioSeguidor.Id == usuarioId)
                                   .Select(x => x.UsuarioSeguido.Id).List <int>();

            usuariosSeguindo.Add(usuarioId);

            var query = _session.QueryOver <Publicacao>()
                        .Where(x => x.Ativo)
                        .AndRestrictionOn(x => x.Usuario.Id).IsInG(usuariosSeguindo)
                        .OrderBy(x => x.Data).Desc;

            var pagedObject = new PagedObject <Publicacao>();

            pagedObject.Paginate(query, 30, filter.Pagina);

            return(pagedObject.PageResult(Mapper.Map <IList <TimeLineQueryModel> >(pagedObject.ResultQuery.List())));
        }
Ejemplo n.º 17
0
        public ActionResult <PagedObject <GroupPerson> > QueryPerson(
            [FromRoute]
            [Required(ErrorMessage = "DataAnnotationRequired")]
            [Guid(ErrorMessage = "DataAnnotationGuid")]
            string groupId,
            [FromQuery] GroupPersonQueryRequest request)
        {
            var dto = _mapper.Map <GroupPersonQueryRequest, GroupPersonQueryDto>(request);

            dto.GroupId = Guid.Parse(groupId);
            var entities = _groupService.QueryPerson(dto);
            var result   = new PagedObject <GroupPerson>
            {
                Page     = dto.Page,
                PageSize = dto.PageSize,
                Total    = dto.TotalCount,
                Items    = _mapper.Map <IList <Domain.Entities.GroupPerson>, List <GroupPerson> >(entities),
            };

            return(result);
        }
        public object ListarUsuariosMaisParecidosComUsuarioLogado(ListarUsuariosMaisParecidosComUsuarioLogadoQueryFilter filter, int usuarioLogadoId)
        {
            DateTime seteDiasAtras = DateTime.Now.AddDays(-7);

            ListarUsuariosMaisParecidosComUsuarioLogadoQueryModel usuarioQueryModel = null;
            Usuario usuarioAlias = null;
            Arquivo fotoAlias    = null;
            Opiniao opiniaoAlias = null;

            var noticias = _session.QueryOver <Opiniao>()
                           .Where(x => x.Usuario.Id == usuarioLogadoId)
                           .And(x => x.Tipo == TipoOpiniao.Concordo)
                           .Select(x => x.Noticia.Id).List <int>();

            var query = _session.QueryOver <Opiniao>(() => opiniaoAlias)
                        .JoinAlias(() => opiniaoAlias.Usuario, () => usuarioAlias)
                        .Left.JoinAlias(() => usuarioAlias.Foto, () => fotoAlias)
                        .Where(x => x.Tipo == TipoOpiniao.Concordo)
                        .And(x => usuarioAlias.Id != usuarioLogadoId)
                        .AndRestrictionOn(x => x.Noticia.Id).IsInG(noticias)
                        .SelectList(l => l
                                    .Select(x => usuarioAlias.Id).WithAlias(() => usuarioQueryModel.Id)
                                    .Select(x => usuarioAlias.Username).WithAlias(() => usuarioQueryModel.Username)
                                    .Select(x => usuarioAlias.Nome).WithAlias(() => usuarioQueryModel.Nome)
                                    .Select(x => usuarioAlias.Email).WithAlias(() => usuarioQueryModel.Email)
                                    .Select(x => fotoAlias.Nome).WithAlias(() => usuarioQueryModel.FotoNome)
                                    .SelectCount(x => x.Id).WithAlias(() => usuarioQueryModel.Quantidade)
                                    .SelectGroup(x => usuarioAlias.Id))
                        .OrderByAlias(() => usuarioQueryModel.Quantidade).Desc
                        .TransformUsing(Transformers.AliasToBean <ListarUsuariosMaisParecidosComUsuarioLogadoQueryModel>());

            var pagedObject = new PagedObject <Opiniao>();

            pagedObject.Paginate(query, 10, filter.Pagina);

            return(pagedObject.PageResult(Mapper.Map <IList <ListarUsuariosMaisParecidosComUsuarioLogadoQueryModel> >(pagedObject.ResultQuery.List <ListarUsuariosMaisParecidosComUsuarioLogadoQueryModel>())));
        }
Ejemplo n.º 19
0
        public async Task <List <SpotibroModels.PlaylistSummary> > GetUsersPlaylistsAsync(PartyGoer user, int limit = 10, int offset = 0)
        {
            try
            {
                var parameters = new ApiParameters
                {
                    Parameters = new Dictionary <string, string>
                    {
                        { "limit", limit.ToString() },
                        { "offset", offset.ToString() }
                    }
                };

                var response = await _spotifyHttpClient.SendHttpRequestAsync(user, _apiEndpoints[ApiEndpointType.GetUserPlaylists], parameters, null);

                response.EnsureSuccessStatusCode();

                PagedObject <UsersPlaylist> spotifyPlaylists = await response.Content.ReadFromJsonAsync <PagedObject <UsersPlaylist> >();

                List <SpotibroModels.PlaylistSummary> playlistSummaries = new List <SpotibroModels.PlaylistSummary>();

                foreach (var playlist in spotifyPlaylists.Items)
                {
                    playlistSummaries.Add(new SpotibroModels.PlaylistSummary {
                        Name = playlist.Name, PlaylistCoverArtUrl = playlist.Images.FirstOrDefault().Url, Id = playlist.Id
                    });
                }

                return(playlistSummaries);
            }
            catch (Exception ex)
            {
                await _logService.LogExceptionAsync(ex, "Error occurred in GetUsersPlaylistsAsync");

                return(null);
            }
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Enables processing of HTTP Web requests by a custom HttpHandler that implements the <see cref="T:System.Web.IHttpHandler"/> interface.
        /// </summary>
        /// <param name="context">An <see cref="T:System.Web.HttpContext"/> object that provides references to the intrinsic server objects (for example, Request, Response, Session, and Server) used to service HTTP requests.</param>
        public void ProcessRequest(HttpContext context)
        {
            /***********************
             * 1.通过模板编号获取模板
             * 2.模板解析器解析输出
             *   2.1 设置模板解析依赖资源 TempletDriving
             *   2.2 解析内容并输出网页
             *
             ***************************/
            TempletDriving tptRes = new TempletDriving(context);

            #region 页面渲染处理
            context.Response.Write(tptRes.GetDefinition("$TempletID$"));
            PageTemplet pageTpt = (new PageTemplet()).GetInstanceById(Convert.ToInt32(tptRes.GetDefinition("$TempletID$"))) as PageTemplet;
            if (pageTpt != null && pageTpt.IsExist == true && pageTpt.IsFilled == true)
            {
                #region 根据模板内的列表动态显示当前页内容
                if (pageTpt.IsMixedSyntax == false)
                {
                    DisplayContent(context, HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, pageTpt.TempletRawContent));
                    return;
                }
                else
                {
                    string             realContent = "", myPageHtml = "";
                    TempletParse       tpp = new TempletParse();
                    MultiResDependency res = new MultiResDependency(tptRes);

                    tpp.Caller = this;
                    tpp.SetResourceDependency(res);
                    tpp.SetTaggedObjectCollection(pageTpt.TempletRawContent);

                    //OleDbHelper.AppendToFile("~/debug.log", tpp.ParsedResult);
                    if (this.PagedObject == null)
                    {
                        myPageHtml = tpp.ParsedResult;
                        //+处理分页导航内容
                        if (this.PagerDic.Count > 0)
                        {
                            foreach (string pagerKey in PagerDic.Keys)
                            {
                                myPageHtml = myPageHtml.Replace(pagerKey, "");
                            }
                        }
                        DisplayContent(context, HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, myPageHtml));
                    }
                    else
                    {
                        string dynTpt           = tpp.ParsedResult;
                        string currentPageMatch = "";
                        PagedObject.SetResourceDependency(res);
                        string currentPage = tptRes.GetDefinition("$CurrentPage$").ToString();
                        if (currentPage != null && Util.IsMatch(@"^(\d+)$", currentPage, 1, 1, PagedObject.GetPageCount(),
                                                                out currentPageMatch))
                        {
                            PagedObject.CurrentPageIndex = int.Parse(currentPage);
                        }
                        else
                        {
                            PagedObject.CurrentPageIndex = 1;
                        }

                        #region 显示分页内容
                        realContent = PagedObject.GetCurrentPageContent();
                        //处理当前页内容
                        myPageHtml = dynTpt.Replace(PagedContentAlia, realContent);

                        //处理分页导航内容
                        if (this.PagerDic.Count > 0)
                        {
                            foreach (string pagerKey in PagerDic.Keys)
                            {
                                PagerTag Pager = PagerDic[pagerKey];
                                Pager.TotalRecordCount = PagedObject.GetTotalRecordCount();
                                Pager.CurrentPage      = PagedObject.CurrentPageIndex;
                                Pager.StartIndex       = PagedObject.StartIndex;
                                Pager.EndIndex         = PagedObject.EndIndex;
                                Pager.PageSize         = PagedObject.PageSize;

                                string formatDef = "$PagerFormat$";
                                if (tptRes.IsDefined(formatDef))
                                {
                                    Pager.DefaultPageFormat = tptRes.GetDefinition(formatDef).ToString();
                                }
                                myPageHtml = myPageHtml.Replace(pagerKey, Pager.ToString());
                            }
                        }
                        #endregion
                        DisplayContent(context, HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, myPageHtml));
                    }
                    tpp.Dispose();
                }
                #endregion
            }
            else
            {
                ShowMessage(context, "页面模板实体还原失败,请检查配置是否正确!");
            }
            #endregion
        }
Ejemplo n.º 21
0
 public List <SpotibroModels.Track> Convert(PagedObject <SpotifyModels.Track> tracks)
 {
     return(tracks.Items.Select(p => Convert(p)).ToList());
 }
Ejemplo n.º 22
0
        /// <summary>
        /// 生成网站栏目/频道静态文件
        /// </summary>
        /// <param name="aWebChannel">指定了ChannelID的实体</param>
        public void Generate(AccessWebChannel aWebChannel, ChannelGeneratorOptions options)
        {
            if (aWebChannel.IsFilled == false)
            {
                aWebChannel = (new AccessWebChannel()).GetInstanceById(aWebChannel.ChannelID) as AccessWebChannel;
            }

            if (aWebChannel != null && aWebChannel.IsExist == true && aWebChannel.IsFilled == true)
            {
                if (aWebChannel.StaticFileGenDir.IndexOf("/") == -1)
                {
                    ShowMessage("生成文件目录设置有错误,系统终止!");
                    return;
                }

                TempletSetting tptConfig = aWebChannel.TempletConfig;
                if (tptConfig == null)
                {
                    ShowMessage("该频道没有配置模板,不能生成相关文件!");
                }
                else
                {
                    string strGenFilePath, strFileName, strFileExt, strGenResult = "";
                    if (aWebChannel.StaticFileGenDir.IndexOf("{#$ChannelID$#}") != -1)
                    {
                        aWebChannel.StaticFileGenDir = aWebChannel.StaticFileGenDir.Replace("{#$ChannelID$#}", aWebChannel.ChannelID.ToString());
                    }
                    strGenFilePath = Util.ParseAppPath(aWebChannel.StaticFileGenDir);
                    //ShowMessage(strGenFilePath);
                    if (!strGenFilePath.EndsWith("\\"))
                    {
                        strGenFilePath += "\\";
                    }

                    //最终页面内容
                    string strGenFileContent = "";
                    string trackPath         = "";

                    this.UTCDateBegin = DateTime.Now.ToUniversalTime();

                    if (options != null && options.GenerateSinglePage == false)
                    {
                        ShowMessage("* 已禁止单页综合内容页生成!");
                    }
                    else
                    {
                        #region 单页综合生成
                        if (tptConfig.GenerateSinglePage == true)
                        {
                            strFileName = tptConfig.MixedSingleTemplet.FileNameConfig.FileNameTag.GetTagValue().ToString();
                            strFileExt  = tptConfig.MixedSingleTemplet.FileNameConfig.FileExtentionName;

                            PageTemplet pageTpt = (new PageTemplet()).GetInstanceById(tptConfig.MixedSingleTemplet.TempletID) as PageTemplet;
                            if (pageTpt != null && pageTpt.IsExist == true && pageTpt.IsFilled == true)
                            {
                                if (pageTpt.IsMixedSyntax == false)
                                {
                                    if (!pageTpt.SiteBaseDir.EndsWith("/"))
                                    {
                                        pageTpt.SiteBaseDir += "/";
                                    }
                                    strGenResult = OleDbHelper.SetTextFileContent(strGenFilePath + strFileName + strFileExt,
                                                                                  "utf-8",
                                                                                  HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, pageTpt.TempletRawContent));

                                    if (strGenResult == "0")
                                    {
                                        FireGeneratorFileFinished(strGenFilePath + strFileName + strFileExt);
                                    }
                                }
                                else
                                {
                                    TempletParse tpp = new TempletParse();
                                    tpp.Caller = this;
                                    tpp.SetResourceDependency(aWebChannel);
                                    tpp.TagTrack = new System.Collections.Generic.Dictionary <string, string>();
                                    tpp.TagTrack.Add("T" + pageTpt.TempletID.ToString(), pageTpt.ModifiedTime.ToString("yyyyMMddHHmmss"));
                                    tpp.SetTaggedObjectCollection(pageTpt.TempletRawContent);

                                    strGenFileContent = HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, tpp.ParsedResult);
                                    //插入Track代码
                                    trackPath = GetSiteRelativeUrl(strGenFilePath + strFileName + strFileExt);
                                    GetTrackHtmlInSertCode(tpp.TagTrack, trackPath, "</body>", ref strGenFileContent);

                                    strGenResult = OleDbHelper.SetTextFileContent(trackPath, "utf-8", strGenFileContent);

                                    if (strGenResult == "0")
                                    {
                                        FireGeneratorFileFinished(trackPath);
                                    }
                                }

                                if (strGenResult == "0")
                                {
                                    TrackUnit.RemoveUpdateRecord(0, trackPath);
                                    ShowMessage(string.Format("单页内容生成成功!<a href=\"{0}\" target=\"_blank\">{0}</a>", GetSiteRelativeUrl(strGenFilePath + strFileName + strFileExt)));
                                }
                            }
                            else
                            {
                                ShowMessage("页面模板实体还原失败,请检查配置是否正确!");
                            }
                        }
                        #endregion
                    }

                    if (options != null && options.GenerateListPage == false)
                    {
                        ShowMessage("* 已禁止列表页生成!");
                    }
                    else
                    {
                        #region 列表页面生成
                        if (tptConfig.GenerateListPage == true)
                        {
                            strFileExt = tptConfig.ListPageTemplet.FileNameConfig.FileExtentionName;
                            tptConfig.ListPageTemplet.FileNameConfig.FileNameTag.SetResourceDependency(aWebChannel);
                            strFileName = tptConfig.ListPageTemplet.FileNameConfig.FileNameTag.GetTagValue().ToString();

                            PageTemplet pageTpt = (new PageTemplet()).GetInstanceById(tptConfig.ListPageTemplet.TempletID) as PageTemplet;
                            if (pageTpt != null && pageTpt.IsExist == true && pageTpt.IsFilled == true)
                            {
                                strGenResult = "";
                                #region 根据模板内的列表动态生成多个页
                                if (pageTpt.IsMixedSyntax == false)
                                {
                                    if (!pageTpt.SiteBaseDir.EndsWith("/"))
                                    {
                                        pageTpt.SiteBaseDir += "/";
                                    }
                                    strGenResult = OleDbHelper.SetTextFileContent(strGenFilePath + strFileName + strFileExt,
                                                                                  "utf-8",
                                                                                  HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, pageTpt.TempletRawContent));

                                    if (strGenResult == "0")
                                    {
                                        FireGeneratorFileFinished(strGenFilePath + strFileName + strFileExt);
                                        ShowMessage(string.Format("文件生成成功!<a href=\"{0}\" target=\"_blank\">{0}</a>", GetSiteRelativeUrl(strGenFilePath + strFileName + strFileExt)));
                                    }
                                }
                                else
                                {
                                    string       realContent = "", myPageHtml = "";
                                    TempletParse tpp = new TempletParse();

                                    //获取要分页变化的模块内容(含Pager)
                                    //替换分页变化的内容 + 生成多页

                                    tpp.Caller = this;
                                    tpp.SetResourceDependency(aWebChannel);

                                    tpp.TagTrack = new System.Collections.Generic.Dictionary <string, string>();
                                    tpp.TagTrack.Add("T" + pageTpt.TempletID.ToString(), pageTpt.ModifiedTime.ToString("yyyyMMddHHmmss"));
                                    tpp.SetTaggedObjectCollection(pageTpt.TempletRawContent);

                                    if (this.PagedObject == null)
                                    {
                                        myPageHtml = tpp.ParsedResult;
                                        //处理分页导航内容
                                        if (this.PagerDic.Count > 0)
                                        {
                                            foreach (string pagerKey in PagerDic.Keys)
                                            {
                                                myPageHtml = myPageHtml.Replace(pagerKey, "");
                                            }
                                        }

                                        strGenFileContent = HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, myPageHtml);
                                        //插入Track代码
                                        trackPath = GetSiteRelativeUrl(strGenFilePath + TagBase.TrimTagDefine(strFileName, '_', '-') + strFileExt);
                                        GetTrackHtmlInSertCode(tpp.TagTrack, trackPath, "</body>", ref strGenFileContent);
                                        strGenResult = OleDbHelper.SetTextFileContent(trackPath, "utf-8", strGenFileContent);
                                        if (strGenResult == "0")
                                        {
                                            FireGeneratorFileFinished(trackPath);
                                        }
                                        TrackUnit.RemoveUpdateRecord(0, trackPath);
                                    }
                                    else
                                    {
                                        string dynTpt = tpp.ParsedResult;
                                        PagedObject.SetResourceDependency(aWebChannel);
                                        while (PagedObject.CurrentPageIndex <= PagedObject.GetPageCount())
                                        {
                                            #region 处理分页内容
                                            realContent = PagedObject.GetCurrentPageContent();
                                            //处理当前页内容
                                            myPageHtml = dynTpt.Replace(PagedContentAlia, realContent);

                                            //处理分页导航内容
                                            if (this.PagerDic.Count > 0)
                                            {
                                                foreach (string pagerKey in PagerDic.Keys)
                                                {
                                                    PagerTag Pager = PagerDic[pagerKey];
                                                    Pager.TotalRecordCount  = PagedObject.GetTotalRecordCount();
                                                    Pager.CurrentPage       = PagedObject.CurrentPageIndex;
                                                    Pager.StartIndex        = PagedObject.StartIndex;
                                                    Pager.EndIndex          = PagedObject.EndIndex;
                                                    Pager.PageSize          = PagedObject.PageSize;
                                                    Pager.DefaultPageFormat = aWebChannel.StaticFileGenDir + strFileName.Replace("{#$CIDX$#}", "{0}") + strFileExt;

                                                    //Util.Debug(false, Pager.ToString());
                                                    myPageHtml = myPageHtml.Replace(pagerKey, Pager.ToString());
                                                    //Util.Debug(false, this.PagerDic[pagerKey].OuterDefineText);
                                                }
                                            }
                                            int    currentPage     = PagedObject.CurrentPageIndex;
                                            string currentFileName = strFileName.Replace("{#$CIDX$#}", currentPage.ToString());

                                            strGenFileContent = HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, myPageHtml);
                                            //插入Track代码
                                            trackPath = GetSiteRelativeUrl(strGenFilePath + currentFileName + strFileExt);
                                            GetTrackHtmlInSertCode(tpp.TagTrack, trackPath, "</body>", ref strGenFileContent);
                                            strGenResult = OleDbHelper.SetTextFileContent(trackPath, "utf-8", strGenFileContent);
                                            //清除更新请求
                                            TrackUnit.RemoveUpdateRecord(0, trackPath);

                                            if (strGenResult == "0")
                                            {
                                                FireGeneratorFileFinished(trackPath);
                                                ShowMessage(string.Format("列表页文件生成成功!<a href=\"{0}\" target=\"_blank\">{0}</a>", trackPath));
                                            }

                                            if (currentPage == 1)
                                            {
                                                trackPath = strGenFilePath + currentFileName.Trim('1', '-', '_') + strFileExt;
                                                OleDbHelper.SetTextFileContent(trackPath, "utf-8", strGenFileContent);
                                                FireGeneratorFileFinished(trackPath);
                                                TrackUnit.RemoveUpdateRecord(0, trackPath);
                                            }
                                            PagedObject.MoveNextPage();
                                            #endregion
                                        }
                                    }
                                    tpp.Dispose();
                                }
                                #endregion
                                if (strGenResult == "0")
                                {
                                    ShowMessage("列表页内容生成成功完成。");
                                }
                            }
                            else
                            {
                                ShowMessage("页面模板实体还原失败,请检查配置是否正确!");
                            }
                        }
                        #endregion
                    }

                    if (options != null && options.GenerateDetailPage == false)
                    {
                        ShowMessage("* 已禁止详细内容页生成!");
                    }
                    else
                    {
                        #region 详细页面生成
                        if (tptConfig.GenerateDetailPage == true)
                        {
                            strFileExt = tptConfig.DetailPageTemplet.FileNameConfig.FileExtentionName;
                            PageTemplet pageTpt = (new PageTemplet()).GetInstanceById(tptConfig.DetailPageTemplet.TempletID) as PageTemplet;
                            if (pageTpt != null && pageTpt.IsExist == true && pageTpt.IsFilled == true)
                            {
                                if (pageTpt.IsMixedSyntax == false)
                                {
                                    strFileName = tptConfig.DetailPageTemplet.FileNameConfig.FileNameTag.GetTagValue().ToString();
                                    if (!pageTpt.SiteBaseDir.EndsWith("/"))
                                    {
                                        pageTpt.SiteBaseDir += "/";
                                    }
                                    strGenResult = OleDbHelper.SetTextFileContent(strGenFilePath + strFileName + strFileExt,
                                                                                  "utf-8",
                                                                                  HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, pageTpt.TempletRawContent));

                                    if (strGenResult == "0")
                                    {
                                        FireGeneratorFileFinished(strGenFilePath + strFileName + strFileExt);
                                    }
                                }
                                else
                                {
                                    TempletParse tpp = new TempletParse();
                                    OleDbHelper  hp  = FanmaquerOleDbModule.GetOleDbInstance(FanmaquarConfig.ConnectionKey);

                                    DataTable dTab = hp.GetDataTable(string.Format("select * from Tbl_Articles where Pubed=True and Archived=false and TypeID={0} order by Sort asc,NewsID desc",
                                                                                   aWebChannel.ChannelID));

                                    if (dTab != null && dTab.Rows.Count > 0)
                                    {
                                        for (int i = 0; i < dTab.Rows.Count; i++)
                                        {
                                            AccessWebNews news = AccessWebNews.LoadFromDataRow(dTab.Rows[i]);
                                            tptConfig.DetailPageTemplet.FileNameConfig.FileNameTag.SetResourceDependency(news);
                                            strFileName = tptConfig.DetailPageTemplet.FileNameConfig.FileNameTag.GetTagValue().ToString();

                                            MultiResDependency newsRes = new MultiResDependency(aWebChannel, news);
                                            tpp.SetResourceDependency(newsRes);
                                            tpp.TagTrack = new System.Collections.Generic.Dictionary <string, string>();
                                            tpp.TagTrack.Add("T" + pageTpt.TempletID.ToString(), pageTpt.ModifiedTime.ToString("yyyyMMddHHmmss"));
                                            tpp.SetTaggedObjectCollection(pageTpt.TempletRawContent);

                                            string newsfileWithFullPath = strGenFilePath + strFileName + strFileExt;
                                            if (news.VirtualPath.Length > 5)
                                            {
                                                newsfileWithFullPath = Util.ParseAppPath(news.VirtualPath);
                                            }
                                            else
                                            {
                                                news.VirtualPath = aWebChannel.StaticFileGenDir + strFileName + strFileExt;
                                                news.RefreshVirtualPath();
                                            }

                                            strGenFileContent = HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, tpp.ParsedResult);
                                            //插入Track代码
                                            trackPath = GetSiteRelativeUrl(newsfileWithFullPath);
                                            GetTrackHtmlInSertCode(tpp.TagTrack, trackPath, "</body>", ref strGenFileContent);

                                            strGenResult = OleDbHelper.SetTextFileContent(newsfileWithFullPath, "utf-8", strGenFileContent);
                                            if (strGenResult == "0")
                                            {
                                                TrackUnit.RemoveUpdateRecord(0, trackPath);
                                                FireGeneratorFileFinished(trackPath);
                                                ShowMessage(string.Format("内容页文件生成成功!<a href=\"{0}\" target=\"_blank\">{0}</a>", trackPath));
                                            }
                                        }
                                    }

                                    tpp.Dispose();
                                }

                                if (strGenResult == "0")
                                {
                                    ShowMessage("详细页面内容生成成功完成。");
                                }
                            }
                            else
                            {
                                ShowMessage("页面模板实体还原失败,请检查配置是否正确!");
                            }
                        }
                        #endregion
                    }
                }

                ShowMessage("已完成所有处理,如没有任何消息显示,这可能是该栏目没有内容或配置错误!");
                ShowMessage("$end$");
            }
        }
Ejemplo n.º 23
0
        public void ProcessRequest(HttpContext context)
        {
            HttpRequest Request = context.Request;

            if (Util.IsNumerical(Request.QueryString["ChannelID"]))
            {
                AccessWebChannel aWebChannel = new AccessWebChannel(Int32.Parse(Request.QueryString["ChannelID"]));
                if (aWebChannel.IsFilled == false)
                {
                    aWebChannel = (new AccessWebChannel()).GetInstanceById(aWebChannel.ChannelID) as AccessWebChannel;
                }

                if (aWebChannel != null && aWebChannel.IsExist == true && aWebChannel.IsFilled == true)
                {
                    TempletSetting tptConfig = aWebChannel.TempletConfig;
                    if (tptConfig == null)
                    {
                        ShowMessage("该频道没有配置模板,不能动态显示相关内容!");
                        return;
                    }

                    if (Request.QueryString["Action"] == "list")
                    {
                        if (tptConfig.GenerateListPage == true)
                        {
                            #region 列表页面生成
                            PageTemplet pageTpt = (new PageTemplet()).GetInstanceById(tptConfig.ListPageTemplet.TempletID) as PageTemplet;
                            if (pageTpt != null && pageTpt.IsExist == true && pageTpt.IsFilled == true)
                            {
                                #region 根据模板内的列表动态显示当前页内容
                                if (pageTpt.IsMixedSyntax == false)
                                {
                                    DisplayContent(HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, pageTpt.TempletRawContent));
                                    return;
                                }
                                else
                                {
                                    string       realContent = "", myPageHtml = "";
                                    TempletParse tpp = new TempletParse();

                                    tpp.Caller = this;
                                    tpp.SetResourceDependency(aWebChannel);
                                    tpp.SetTaggedObjectCollection(pageTpt.TempletRawContent);

                                    if (this.PagedObject == null)
                                    {
                                        myPageHtml = tpp.ParsedResult;
                                        //处理分页导航内容
                                        if (this.PagerDic.Count > 0)
                                        {
                                            foreach (string pagerKey in PagerDic.Keys)
                                            {
                                                myPageHtml = myPageHtml.Replace(pagerKey, "");
                                            }
                                        }
                                        DisplayContent(HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, myPageHtml));
                                    }
                                    else
                                    {
                                        string dynTpt           = tpp.ParsedResult;
                                        string currentPageMatch = "";
                                        PagedObject.SetResourceDependency(aWebChannel);
                                        if (Request.QueryString["Page"] != null && Util.IsMatch(@"^(\d+)$", Request.QueryString["Page"], 1, 1, PagedObject.GetPageCount(), out currentPageMatch))
                                        {
                                            PagedObject.CurrentPageIndex = int.Parse(Request.QueryString["Page"]);
                                        }
                                        else
                                        {
                                            PagedObject.CurrentPageIndex = 1;
                                        }

                                        #region 显示分页内容
                                        realContent = PagedObject.GetCurrentPageContent();
                                        //处理当前页内容
                                        myPageHtml = dynTpt.Replace(PagedContentAlia, realContent);

                                        //处理分页导航内容
                                        if (this.PagerDic.Count > 0)
                                        {
                                            foreach (string pagerKey in PagerDic.Keys)
                                            {
                                                PagerTag Pager = PagerDic[pagerKey];
                                                Pager.TotalRecordCount = PagedObject.GetTotalRecordCount();
                                                Pager.CurrentPage      = PagedObject.CurrentPageIndex;
                                                Pager.StartIndex       = PagedObject.StartIndex;
                                                Pager.EndIndex         = PagedObject.EndIndex;
                                                Pager.PageSize         = PagedObject.PageSize;

                                                Pager.DefaultPageFormat = Request.ServerVariables["SCRIPT_NAME"] + "?ChannelID=" + aWebChannel.ChannelID.ToString() + "&action=list&Page={0}";
                                                myPageHtml = myPageHtml.Replace(pagerKey, Pager.ToString());
                                            }
                                        }
                                        DisplayContent(HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, myPageHtml));
                                        #endregion
                                    }
                                    tpp.Dispose();
                                }
                                #endregion
                            }
                            else
                            {
                                ShowMessage("页面模板实体还原失败,请检查配置是否正确!");
                            }
                            #endregion
                        }
                        else
                        {
                            ShowMessage("没有可以直接查看的分页内容!");
                        }
                    }
                    else
                    {
                        if (tptConfig.GenerateSinglePage == true)
                        {
                            #region 单页综合生成
                            PageTemplet pageTpt = (new PageTemplet()).GetInstanceById(tptConfig.MixedSingleTemplet.TempletID) as PageTemplet;
                            if (pageTpt != null && pageTpt.IsExist == true && pageTpt.IsFilled == true)
                            {
                                if (pageTpt.IsMixedSyntax == false)
                                {
                                    DisplayContent(HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, pageTpt.TempletRawContent));
                                }
                                else
                                {
                                    TempletParse tpp = new TempletParse();
                                    tpp.Caller = this;
                                    tpp.SetResourceDependency(aWebChannel);
                                    tpp.SetTaggedObjectCollection(pageTpt.TempletRawContent);
                                    DisplayContent(HtmlTextGenerator.GetRightHtmlText(pageTpt.SiteBaseDir, tpp.ParsedResult));
                                }
                            }
                            else
                            {
                                ShowMessage("页面模板实体还原失败,请检查配置是否正确!");
                            }
                            #endregion
                        }
                        else
                        {
                            ShowMessage("没有可以直接查看的单页综合内容!");
                        }
                    }
                }
                else
                {
                    ShowMessage("频道资料无效!");
                }
            }
            else
            {
                //根据ID找到频道、 应用频道模板、分析模板内容输出
                if (Util.IsNumerical(Request.QueryString["ID"]))
                {
                    ViewNews(Int32.Parse(Request.QueryString["ID"]));
                }
                else
                {
                    ShowMessage("请指定要查看的动态内容!");
                }
            }
        }