public virtual ActionResult SiteDetails(int id, int?page = null, string sort = null, bool?sortAsc = null) { var site = Repositories.Sites.FindById(id); if (site == null) { return(new NotFoundResult()); } var siteVisits = site.Visits.OrderByDescending(v => v.Visited); var allSiteSpecies = Repositories.Trees.ListMeasuredSpeciesBySiteId(site.Id); var siteSpeciesDataSource = allSiteSpecies.SortAndPageInMemory( column => { if ("BotanicalName".Equals(column)) { return(s => s.ScientificName); } if ("CommonName".Equals(column)) { return(s => s.CommonName); } if ("MaxHeight".Equals(column)) { return(s => s.MaxHeight); } if ("MaxGirth".Equals(column)) { return(s => s.MaxGirth); } if ("MaxCrownSpread".Equals(column)) { return(s => s.MaxCrownSpread); } throw new NotImplementedException(); }, sort, sortAsc, page, 10); var siteSpeciesGridModel = new EntityGridModel <SiteMeasuredSpecies>(siteSpeciesDataSource) { RowsPerPage = 10 }; if (Request.IsAjaxRequest()) { return(PartialView("SiteSpeciesGridPartial2", siteSpeciesGridModel)); } var model = new BrowseSiteModel { Id = id, Details = Mapper.Map <Site, BrowseSiteDetailsModel>(site), Location = Mapper.Map <Site, BrowseSiteLocationModel>(site), PhotoSummaries = Mapper.Map <IEnumerable <SiteVisit>, IList <BrowsePhotoSumaryModel> >(siteVisits.Where(v => v.Photos.Any())), Visits = Mapper.Map <IEnumerable <SiteVisit>, IList <BrowseSiteVisitModel> >(siteVisits), SiteSpeciesModel = siteSpeciesGridModel }; return(View(model)); }
public virtual ActionResult Species(int?page = null, string sort = null, bool?sortAsc = null, string botanicalNameFilter = "", string commonNameFilter = "") { SpeciesBrowser browser = new SpeciesBrowser { PageIndex = page ?? 0, PageSize = 40, BotanicalNameFilter = botanicalNameFilter, CommonNameFilter = commonNameFilter, SortAscending = !sortAsc.HasValue || sortAsc.Value, SortProperty = "BotanicalName".Equals(sort) ? SpeciesBrowser.Property.BotanicalName : "CommonName".Equals(sort) ? SpeciesBrowser.Property.CommonName : "MaxHeight".Equals(sort) ? SpeciesBrowser.Property.MaxHeight : "MaxGirth".Equals(sort) ? SpeciesBrowser.Property.MaxGirth : "MaxCrownSpread".Equals(sort) ? SpeciesBrowser.Property.MaxCrownSpread : SpeciesBrowser.Property.BotanicalName }; var model = Repositories.Trees.ListAllMeasuredSpecies <GlobalMeasuredSpecies>(browser); var gridModel = new EntityGridModel <GlobalMeasuredSpecies>(model) { RowsPerPage = 40 }; if (Request.IsAjaxRequest()) { return(PartialView("GlobalSpeciesGridPartial", gridModel)); } return(View(gridModel)); }
public virtual ActionResult Locations(int?page = null, string sort = null, bool?sortAsc = null, string stateFilter = "", string countyFilter = "", string siteFilter = "") { SiteBrowser browser = new SiteBrowser { PageIndex = page ?? 0, PageSize = 40, StateFilter = stateFilter, CountyFilter = countyFilter, SiteFilter = siteFilter, SortAscending = !sortAsc.HasValue || sortAsc.Value, SortProperty = "State".Equals(sort) ? SiteBrowser.Property.State : "Site".Equals(sort) ? SiteBrowser.Property.Site : "County".Equals(sort) ? SiteBrowser.Property.County : "RHI5".Equals(sort) ? SiteBrowser.Property.RHI5 : "RHI10".Equals(sort) ? SiteBrowser.Property.RHI10 : "RGI5".Equals(sort) ? SiteBrowser.Property.RGI5 : "RGI10".Equals(sort) ? SiteBrowser.Property.RGI10 : "LastMeasurement".Equals(sort) ? SiteBrowser.Property.LastMeasurement : (SiteBrowser.Property?)null }; var model = Repositories.Sites.ListAllSites(browser); var gridModel = new EntityGridModel <Site>(model) { RowsPerPage = 40 }; if (Request.IsAjaxRequest()) { return(PartialView("LocationsGridPartial", gridModel)); } return(View(gridModel)); }
public IActionResult GridView(DataListModel args) { EntityGridModel model = new EntityGridModel(); args.CopyTo(model); return(GridView(model)); }
public IActionResult Export([FromBody] EntityGridModel model) { QueryView.Domain.QueryView queryView = null; if (model.QueryViewId.HasValue && !model.QueryViewId.Equals(Guid.Empty)) { queryView = _queryViewFinder.FindById(model.QueryViewId.Value); } else if (model.EntityId.HasValue && !model.EntityId.Value.Equals(Guid.Empty)) { queryView = _queryViewFinder.FindEntityDefaultView(model.EntityId.Value); } else if (model.EntityName.IsNotEmpty()) { queryView = _queryViewFinder.FindEntityDefaultView(model.EntityName); } else { return(NotFound()); } if (queryView == null) { return(NotFound()); } OrderExpression orderExp = null; if (model.IsSortBySeted) { orderExp = new OrderExpression(model.SortBy, model.SortDirection == 0 ? OrderType.Ascending : OrderType.Descending); } string path = _dataExporter.ToExcelFile(queryView, model.Filter, orderExp, queryView.Name, model.ExportType == 1, includeIndex: model.IncludeIndex, title: model.ExportTitle); if (path.IsEmpty()) { return(JError(T["list_nodata"])); } return(JOk(path)); }
public IActionResult RenderGridView([FromBody] EntityGridModel model) { QueryView.Domain.QueryView queryView = null; if (model.QueryViewId.HasValue && !model.QueryViewId.Equals(Guid.Empty)) { queryView = _queryViewFinder.FindById(model.QueryViewId.Value); } else if (model.EntityId.HasValue && !model.EntityId.Value.Equals(Guid.Empty)) { queryView = _queryViewFinder.FindEntityDefaultView(model.EntityId.Value); } else if (model.EntityName.IsNotEmpty()) { queryView = _queryViewFinder.FindEntityDefaultView(model.EntityName); } else { return(NotFound()); } if (queryView == null) { return(NotFound()); } if (!queryView.IsDefault && queryView.AuthorizationEnabled) { if (!_roleObjectAccessService.Exists(queryView.QueryViewId, QueryViewDefaults.ModuleName, CurrentUser.Roles.Select(n => n.RoleId).ToArray())) { return(Unauthorized()); } } model.QueryView = queryView; model.EntityId = queryView.EntityId; FetchDescriptor fetch = new FetchDescriptor { Page = model.Page, PageSize = model.PageSize, FetchConfig = queryView.FetchConfig, GetAll = !model.PagingEnabled }; if (model.IsSortBySeted) { QueryColumnSortInfo sort = new QueryColumnSortInfo(model.SortBy, model.SortDirection == 0); fetch.Sort = sort; } //查询关键字 if (model.Q.IsNotEmpty()) { fetch.Keyword = model.Q; fetch.Field = model.QField; } var canFetch = true; //filter by relationship if (model.RelationShipName.IsNotEmpty()) { var relationship = _relationShipFinder.FindByName(model.RelationShipName); if (relationship != null && model.ReferencedRecordId.HasValue && !model.ReferencedRecordId.Value.Equals(Guid.Empty)) { if (model.Filter == null) { model.Filter = new FilterExpression(); } var condition = new ConditionExpression(relationship.ReferencingAttributeName, ConditionOperator.Equal, model.ReferencedRecordId); model.Filter.AddCondition(condition); } model.RelationShipMeta = relationship; } if (model.RelationShipName.IsNotEmpty() && (!model.ReferencedRecordId.HasValue || model.ReferencedRecordId.Value.Equals(Guid.Empty))) { //如果被引用ID为空,则不查询数据 canFetch = false; } fetch.Filter = model.Filter; if (canFetch) { fetch.User = CurrentUser; var datas = _fetchService.Execute(fetch); if (model.OnlyData) { //var serializer = new DataContractJsonSerializer(typeof(User), new DataContractJsonSerializerSettings() //{ // UseSimpleDictionaryFormat = true//去掉Key和Value //}); //return new JsonResult() { Data = datas.Items.SerializeToJson(), JsonRequestBehavior = JsonRequestBehavior.AllowGet }; return(Content(datas.SerializeToJson())); } model.Grid = _gridService.Build(queryView, _fetchService.QueryResolver.EntityList, _fetchService.QueryResolver.AttributeList); model.EntityList = _fetchService.QueryResolver.EntityList; model.AttributeList = _fetchService.QueryResolver.AttributeList; model.RelationShipList = _fetchService.QueryResolver.RelationShipList; model.Items = datas.Items; model.TotalItems = datas.TotalItems; } else { _fetchService.GetMetaDatas(fetch); model.Grid = _gridService.Build(queryView, _fetchService.QueryResolver.EntityList, _fetchService.QueryResolver.AttributeList); model.EntityList = _fetchService.QueryResolver.EntityList; model.AttributeList = _fetchService.QueryResolver.AttributeList; model.RelationShipList = _fetchService.QueryResolver.RelationShipList; model.Items = new List <dynamic>(); model.TotalItems = 0; } var buttons = _ribbonbuttonFinder.Find(model.EntityId.Value, RibbonButtonArea.SubGrid); if (buttons.NotEmpty()) { buttons = buttons.OrderBy(x => x.DisplayOrder).ToList(); model.RibbonButtons = buttons; } if (model.IsSortBySeted == false) { if (_fetchService.QueryExpression.Orders.NotEmpty()) { model.SortBy = _fetchService.QueryExpression.Orders[0].AttributeName; model.SortDirection = (int)_fetchService.QueryExpression.Orders[0].OrderType; } } return(View($"~/Views/Entity/{WebContext.ActionName}.cshtml", model)); }
public virtual ActionResult StateDetails(int id, int?stateSpeciesPage = null, string stateSpeciesSort = null, bool?stateSpeciesSortAsc = null, int?sitesPage = null, string sitesSort = null, bool?sitesSortAsc = null, string parameterNamePrefix = null) { var state = Repositories.Locations.FindStateById(id); if (state == null) { return(new NotFoundResult()); } var model = Mapper.Map <State, BrowseStateModel>(state); var allStateSpecies = Repositories.Trees.ListMeasuredSpeciesByStateId(state.Id); var stateSpeciesDataSource = allStateSpecies.SortAndPageInMemory( column => { if ("BotanicalName".Equals(column)) { return(s => s.ScientificName); } if ("CommonName".Equals(column)) { return(s => s.CommonName); } if ("MaxHeight".Equals(column)) { return(s => s.MaxHeight); } if ("MaxGirth".Equals(column)) { return(s => s.MaxGirth); } if ("MaxCrownSpread".Equals(column)) { return(s => s.MaxCrownSpread); } throw new NotImplementedException(); }, stateSpeciesSort, stateSpeciesSortAsc, stateSpeciesPage, 10); var stateSpeciesGridModel = new EntityGridModel <StateMeasuredSpecies>(stateSpeciesDataSource) { ParameterNamePrefix = "stateSpecies", RowsPerPage = 10 }; if (Request.IsAjaxRequest() && "stateSpecies".Equals(parameterNamePrefix)) { return(PartialView("StateSpeciesGridPartial", stateSpeciesGridModel)); } model.StateSpeciesModel = stateSpeciesGridModel; var allSites = Repositories.Sites.FindSitesByStateId(state.Id); var sitesDataSource = allSites.SortAndPageInMemory( column => { if ("Site".Equals(column)) { return(s => s.Name); } if ("RHI5".Equals(column)) { return(s => s.ComputedRHI5); } if ("RHI10".Equals(column)) { return(s => s.ComputedRHI10); } if ("RGI5".Equals(column)) { return(s => s.ComputedRGI5); } if ("RGI10".Equals(column)) { return(s => s.ComputedRGI10); } throw new NotImplementedException(); }, sitesSort, sitesSortAsc, sitesPage, 10); var sitesGridModel = new EntityGridModel <Site>(sitesDataSource) { ParameterNamePrefix = "sites", RowsPerPage = 10 }; if (Request.IsAjaxRequest() && "sites".Equals(parameterNamePrefix)) { return(PartialView("SitesGridPartial", sitesGridModel)); } model.SitesModel = sitesGridModel; return(View(model)); }
public virtual ActionResult SpeciesDetails(string botanicalName, string commonName, int?siteId = null, int?stateId = null, int?stateSpeciesPage = null, string stateSpeciesSort = null, bool?stateSpeciesSortAsc = null, int?treesPage = null, string treesSort = null, bool?treesSortAsc = null, int?siteSpeciesPage = null, string siteSpeciesSort = null, bool?siteSpeciesSortAsc = null, string parameterNamePrefix = null) { GlobalMeasuredSpecies globalSpecies = Repositories.Trees.FindMeasuredSpeciesByName(botanicalName, commonName); if (globalSpecies == null) { return(new NotFoundResult()); } var model = new BrowseSpeciesModel { GlobalDetails = Mapper.Map <GlobalMeasuredSpecies, BrowseSpeciesDetailsModel>(globalSpecies) }; var allStateSpecies = Repositories.Trees.ListMeasuredSpeciesForStatesByName(botanicalName, commonName); var stateSpeciesDataSource = allStateSpecies.SortAndPageInMemory( column => { if ("State".Equals(column)) { return(s => s.State.Name); } if ("MaxHeight".Equals(column)) { return(s => s.MaxHeight); } if ("MaxGirth".Equals(column)) { return(s => s.MaxGirth); } if ("MaxCrownSpread".Equals(column)) { return(s => s.MaxCrownSpread); } throw new NotImplementedException(); }, stateSpeciesSort, stateSpeciesSortAsc, stateSpeciesPage, 10); var stateSpeciesGridModel = new EntityGridModel <StateMeasuredSpecies>(stateSpeciesDataSource) { ParameterNamePrefix = "stateSpecies", RowsPerPage = 10 }; if (Request.IsAjaxRequest() && "stateSpecies".Equals(parameterNamePrefix)) { return(PartialView("SpeciesByStateGridPartial", stateSpeciesGridModel)); } model.StateSpeciesModel = stateSpeciesGridModel; if (siteId.HasValue) { SiteMeasuredSpecies siteSpecies = Repositories.Trees.FindMeasuredSpeciesByNameAndSiteId(botanicalName, commonName, siteId.Value); if (siteSpecies == null) { return(new NotFoundResult()); } stateId = siteSpecies.Site.State.Id; model.SiteDetails = Mapper.Map <SiteMeasuredSpecies, BrowseSpeciesSiteDetailsModel>(siteSpecies); var allTrees = Repositories.Trees.ListByNameAndSiteId(botanicalName, commonName, siteId.Value); var treesDataSource = allTrees.SortAndPageInMemory( column => { if ("Height".Equals(column)) { return(t => t.Height); } if ("Girth".Equals(column)) { return(t => t.Girth); } if ("CrownSpread".Equals(column)) { return(t => t.CrownSpread); } throw new NotImplementedException(); }, treesSort, treesSortAsc, treesPage, 10); var treesGridModel = new EntityGridModel <Tree>(treesDataSource) { ParameterNamePrefix = "trees", RowsPerPage = 10 }; if (Request.IsAjaxRequest() && "trees".Equals(parameterNamePrefix)) { return(PartialView("TreesGridPartial", treesGridModel)); } model.TreesModel = treesGridModel; } if (stateId.HasValue) { StateMeasuredSpecies stateSpecies = Repositories.Trees.FindMeasuredSpeciesByNameAndStateId(botanicalName, commonName, stateId.Value); if (stateSpecies == null) { return(new NotFoundResult()); } model.StateDetails = Mapper.Map <StateMeasuredSpecies, BrowseSpeciesStateDetailsModel>(stateSpecies); var allSiteSpecies = Repositories.Trees.ListMeasuredSpeciesForSitesByNameAndStateId(botanicalName, commonName, stateId.Value); var siteSpeciesDataSource = allSiteSpecies.SortAndPageInMemory( column => { if ("Site".Equals(column)) { return(s => s.Site.Name); } if ("MaxHeight".Equals(column)) { return(s => s.MaxHeight); } if ("MaxGirth".Equals(column)) { return(s => s.MaxGirth); } if ("MaxCrownSpread".Equals(column)) { return(s => s.MaxCrownSpread); } throw new NotImplementedException(); }, siteSpeciesSort, siteSpeciesSortAsc, siteSpeciesPage, 10); var siteSpeciesGridModel = new EntityGridModel <SiteMeasuredSpecies>(siteSpeciesDataSource) { ParameterNamePrefix = "siteSpecies", RowsPerPage = 10 }; if (Request.IsAjaxRequest() && "siteSpecies".Equals(parameterNamePrefix)) { return(PartialView("SiteSpeciesGridPartial", siteSpeciesGridModel)); } model.SiteSpeciesModel = siteSpeciesGridModel; } return(View(model)); }
public IActionResult Post([FromBody] EntityGridModel model) { QueryView.Domain.QueryView queryView = null; if (model.QueryViewId.HasValue && !model.QueryViewId.Equals(Guid.Empty)) { queryView = _queryViewFinder.FindById(model.QueryViewId.Value); } else if (model.EntityId.HasValue && !model.EntityId.Value.Equals(Guid.Empty)) { queryView = _queryViewFinder.FindEntityDefaultView(model.EntityId.Value); } else if (model.EntityName.IsNotEmpty()) { queryView = _queryViewFinder.FindEntityDefaultView(model.EntityName); } else { return(NotFound()); } if (queryView == null) { return(NotFound()); } if (!queryView.IsDefault && queryView.AuthorizationEnabled) { if (!_roleObjectAccessService.Exists(queryView.QueryViewId, QueryViewDefaults.ModuleName, CurrentUser.Roles.Select(n => n.RoleId).ToArray())) { return(Unauthorized()); } } model.QueryView = queryView; model.EntityId = queryView.EntityId; FetchDescriptor fetch = new FetchDescriptor { Page = model.Page, PageSize = model.PageSize, FetchConfig = queryView.FetchConfig, GetAll = !model.PagingEnabled }; if (model.IsSortBySeted) { QueryColumnSortInfo sort = new QueryColumnSortInfo(model.SortBy, model.SortDirection == 0); fetch.Sort = sort; } //查询关键字 if (model.Q.IsNotEmpty()) { fetch.Keyword = model.Q; fetch.Field = model.QField; } var canFetch = true; //filter by relationship if (model.RelationShipName.IsNotEmpty()) { var relationship = _relationShipFinder.FindByName(model.RelationShipName); if (relationship != null && model.ReferencedRecordId.HasValue && !model.ReferencedRecordId.Value.Equals(Guid.Empty)) { if (model.Filter == null) { model.Filter = new FilterExpression(); } var condition = new ConditionExpression(relationship.ReferencingAttributeName, ConditionOperator.Equal, model.ReferencedRecordId); model.Filter.AddCondition(condition); } model.RelationShipMeta = relationship; } if (model.RelationShipName.IsNotEmpty() && (!model.ReferencedRecordId.HasValue || model.ReferencedRecordId.Value.Equals(Guid.Empty))) { //如果被引用ID为空,则不查询数据 canFetch = false; } fetch.Filter = model.Filter; if (canFetch) { fetch.User = CurrentUser; var fetchDatas = _fetchService.Execute(fetch); object aggregateDatas = null; if (queryView.AggregateConfig.IsNotEmpty()) { var aggFields = new List <AggregateExpressionField>().DeserializeFromJson(queryView.AggregateConfig); if (aggFields.NotEmpty()) { var queryExp = new QueryExpression().DeserializeFromJson(queryView.FetchConfig); if (model.Filter != null && (model.Filter.Conditions.NotEmpty() || (model.Filter.Filters.NotEmpty() && model.Filter.Filters.First().Conditions.NotEmpty()))) { queryExp.Criteria.AddFilter(model.Filter); } var aggExp = new AggregateExpression { ColumnSet = queryExp.ColumnSet, Criteria = queryExp.Criteria, EntityName = queryExp.EntityName, LinkEntities = queryExp.LinkEntities, AggregateFields = aggFields }; var aggDatas = _aggregateService.Execute(aggExp); var attributes = _attributeFinder.FindByName(queryView.EntityId, aggFields.Select(x => x.AttributeName).ToArray()); foreach (dynamic item in aggDatas) { var line = item as IDictionary <string, object>; var attribute = attributes.Find(x => x.Name.IsCaseInsensitiveEqual(line.Keys.First())); item.metadata = new { attribute.Name, attribute.LocalizedName, attribute.AttributeTypeName, attribute.EntityId, attribute.EntityName, attribute.EntityLocalizedName }; item.aggregatetype = aggFields.Find(x => x.AttributeName.IsCaseInsensitiveEqual(attribute.Name)).AggregateType; } aggregateDatas = new { View = new { queryView.QueryViewId, queryView.Name }, Data = aggDatas }; } } return(Content(new { FetchData = fetchDatas, AggregateData = aggregateDatas }.SerializeToJson())); } if (!model.IsSortBySeted) { if (_fetchService.QueryExpression.Orders.NotEmpty()) { model.SortBy = _fetchService.QueryExpression.Orders[0].AttributeName; model.SortDirection = (int)_fetchService.QueryExpression.Orders[0].OrderType; } } return(View($"~/Views/Entity/{WebContext.ActionName}.cshtml", model)); }
public IActionResult GridView([FromBody] EntityGridModel model) { QueryView.Domain.QueryView queryView = null; if (model.QueryViewId.HasValue && !model.QueryViewId.Equals(Guid.Empty)) { queryView = _queryViewFinder.FindById(model.QueryViewId.Value); } else if (model.EntityId.HasValue && !model.EntityId.Value.Equals(Guid.Empty)) { queryView = _queryViewFinder.FindEntityDefaultView(model.EntityId.Value); } else if (model.EntityName.IsNotEmpty()) { queryView = _queryViewFinder.FindEntityDefaultView(model.EntityName); } else { return(NotFound()); } if (queryView == null) { return(NotFound()); } if (!queryView.IsDefault && queryView.AuthorizationEnabled) { if (!_roleObjectAccessService.Exists(queryView.QueryViewId, QueryViewDefaults.ModuleName, CurrentUser.Roles.Select(n => n.RoleId).ToArray())) { return(Unauthorized()); } } //EntityGridModel model = new EntityGridModel(); model.QueryView = queryView; model.EntityId = queryView.EntityId; model.QueryViewId = queryView.QueryViewId; model.TargetFormId = queryView.TargetFormId; if (model.IsEnabledViewSelector) { model.QueryViews = _queryViewFinder.QueryAuthorized(n => n.Where(f => f.EntityId == model.EntityId && f.StateCode == RecordState.Enabled) .Sort(s => s.SortAscending(f => f.Name))); } if (!model.PageSizeBySeted && CurrentUser.UserSettings.PagingLimit > 0) { model.PageSize = CurrentUser.UserSettings.PagingLimit; } FetchDescriptor fetch = new FetchDescriptor { User = CurrentUser, Page = model.Page, PageSize = model.PageSize, FetchConfig = queryView.FetchConfig }; if (model.IsSortBySeted) { QueryColumnSortInfo sort = new QueryColumnSortInfo(model.SortBy, model.SortDirection == 0); fetch.Sort = sort; } fetch.Filter = model.Filter; if (model.Q.IsNotEmpty()) { fetch.Keyword = model.Q; fetch.Field = model.QField; } //buttons if (model.IsShowButtons) { FilterContainer <RibbonButton.Domain.RibbonButton> buttonFilter = FilterContainerBuilder.Build <RibbonButton.Domain.RibbonButton>() .And(w => w.StateCode == RecordState.Enabled && w.EntityId == model.EntityId.Value && (w.ShowArea == RibbonButtonArea.ListHead || w.ShowArea == RibbonButtonArea.ListRow)); if (model.QueryView.IsCustomButton && model.QueryView.CustomButtons.IsNotEmpty()) { List <Guid> buttonid = new List <Guid>(); buttonid = buttonid.DeserializeFromJson(model.QueryView.CustomButtons); buttonFilter.And(w => w.RibbonButtonId.In(buttonid)); } var buttons = _ribbonbuttonFinder.Query(n => n .Where(buttonFilter) .Sort(s => s.SortAscending(f => f.DisplayOrder))); model.RibbonButtons = buttons; } //var datas = _fetchService.Execute(fetch); _fetchDataService.GetMetaDatas(fetch); model.Grid = _gridService.Build(queryView, _fetchDataService.QueryResolver.EntityList, _fetchDataService.QueryResolver.AttributeList); model.EntityList = _fetchDataService.QueryResolver.EntityList; model.AttributeList = _fetchDataService.QueryResolver.AttributeList; model.RelationShipList = _fetchDataService.QueryResolver.RelationShipList; //model.Items = datas.Items; //model.TotalItems = datas.TotalItems; //model.TotalPages = datas.TotalPages; //aggregation if (queryView.AggregateConfig.IsNotEmpty()) { var aggFields = new List <AggregateExpressionField>().DeserializeFromJson(queryView.AggregateConfig); if (aggFields.NotEmpty()) { var aggExp = new AggregateExpression { ColumnSet = _fetchDataService.QueryExpression.ColumnSet, Criteria = _fetchDataService.QueryExpression.Criteria, EntityName = _fetchDataService.QueryExpression.EntityName, LinkEntities = _fetchDataService.QueryExpression.LinkEntities, AggregateFields = aggFields }; var aggDatas = _aggregateService.Execute(aggExp); model.AggregationData = aggDatas.NotEmpty() ? aggDatas.First() : null; model.AggregateFields = aggFields; } } if (model.IsSortBySeted == false) { if (_fetchDataService.QueryExpression.Orders.NotEmpty()) { model.SortBy = _fetchDataService.QueryExpression.Orders[0].AttributeName; model.SortDirection = (int)_fetchDataService.QueryExpression.Orders[0].OrderType; } } //字段权限 model.NonePermissionFields = _fetchDataService.NonePermissionFields; return(View($"~/Views/Entity/{WebContext.ActionName}.cshtml", model)); }
public IActionResult Post([FromBody] EntityGridModel model) { QueryView.Domain.QueryView queryView = null; if (model.QueryViewId.HasValue && !model.QueryViewId.Equals(Guid.Empty)) { queryView = _queryViewFinder.FindById(model.QueryViewId.Value); } else if (model.EntityId.HasValue && !model.EntityId.Value.Equals(Guid.Empty)) { queryView = _queryViewFinder.FindEntityDefaultView(model.EntityId.Value); } else if (model.EntityName.IsNotEmpty()) { queryView = _queryViewFinder.FindEntityDefaultView(model.EntityName); } else { return(NotFound()); } if (queryView == null) { return(NotFound()); } if (!queryView.IsDefault && queryView.AuthorizationEnabled) { if (!_roleObjectAccessService.Exists(queryView.QueryViewId, QueryViewDefaults.ModuleName, CurrentUser.Roles.Select(n => n.RoleId).ToArray())) { return(Unauthorized()); } } model.QueryView = queryView; model.EntityId = queryView.EntityId; FetchDescriptor fetch = new FetchDescriptor { Page = model.Page, PageSize = model.PageSize, FetchConfig = queryView.FetchConfig, GetAll = !model.PagingEnabled }; if (model.IsSortBySeted) { QueryColumnSortInfo sort = new QueryColumnSortInfo(model.SortBy, model.SortDirection == 0); fetch.Sort = sort; } //查询关键字 if (model.Q.IsNotEmpty()) { fetch.Keyword = model.Q; fetch.Field = model.QField; } var canFetch = true; //filter by relationship if (model.RelationShipName.IsNotEmpty()) { var relationship = _relationShipFinder.FindByName(model.RelationShipName); if (relationship != null && model.ReferencedRecordId.HasValue && !model.ReferencedRecordId.Value.Equals(Guid.Empty)) { if (model.Filter == null) { model.Filter = new FilterExpression(); } var condition = new ConditionExpression(relationship.ReferencingAttributeName, ConditionOperator.Equal, model.ReferencedRecordId); model.Filter.AddCondition(condition); } model.RelationShipMeta = relationship; } if (model.RelationShipName.IsNotEmpty() && (!model.ReferencedRecordId.HasValue || model.ReferencedRecordId.Value.Equals(Guid.Empty))) { //如果被引用ID为空,则不查询数据 canFetch = false; } fetch.Filter = model.Filter; if (canFetch) { fetch.User = CurrentUser; var datas = _fetchService.Execute(fetch); return(Content(datas.SerializeToJson())); } if (!model.IsSortBySeted) { if (_fetchService.QueryExpression.Orders.NotEmpty()) { model.SortBy = _fetchService.QueryExpression.Orders[0].AttributeName; model.SortDirection = (int)_fetchService.QueryExpression.Orders[0].OrderType; } } return(View($"~/Views/Entity/{WebContext.ActionName}.cshtml", model)); }