public QueryFillsResponse QueryFill( Exchange exchange = Exchange.Undefined, OrderSide side = OrderSide.Undefined, string code = "", string exchangeId = "", string originalId = "", bool includeCancelFill = true, QueryPagination pagination = null ) { return (QueryFill( new QueryFillsRequest() { AccountNo = AccountNo, OrderExchangeId = exchangeId, Code = code, OrderOriginalId = originalId, OrderSide = side, IncludeCancelFill = includeCancelFill, Exchange = exchange, Pagination = pagination ?? new QueryPagination() { Size = 100 } })); }
/// <summary> /// Overridable. The base implementation /// makes sure that there is a sort order in the query, then /// executes <see cref="HandlePaginationForProvider"/>. /// </summary> /// <remarks> /// Inheritor note: If this is overridden, /// <see cref="PaginationIsHandled"/> should also /// be overridden. /// </remarks> /// <param name="pagination"></param> protected virtual void PreparePagination(QueryPagination <TModel> pagination) { if (HandlePaginationForProvider == null) { if (IsSqlServer) { // todo: implement a SQL Server implementation *shrug* } } if (HandlePaginationForProvider != null && pagination != null) { if (Query.OrderBy == null) { Query.OrderBy = new List <DataModelQuery <TModel> .SortItem>(); } if (Query.OrderBy.Count == 0) { foreach (string col in ModelMap.PrimaryKeyColumns) { Query.AddSortItem(col, true); } } HandlePaginationForProvider(pagination); } }
public QueryOrdersResponse QueryOrder( QueryOrderCriteria criteria = QueryOrderCriteria.QueryOrderAll, Exchange exchange = Exchange.Undefined, OrderSide side = OrderSide.Undefined, string code = "", string exchangeId = "", string originalId = "", QueryPagination pagination = null ) { return (QueryOrder( new QueryOrdersRequest() { AccountNo = AccountNo, OrderExchangeId = exchangeId, Code = code, OrderOriginalId = originalId, OrderSide = side, QueryCriteria = criteria, Exchange = exchange, Pagination = pagination ?? new QueryPagination() { Size = 100 } })); }
public async Task <ActionResult <ResultPagination> > GetReservations([FromQuery] QueryPagination query) { var page = query.Page; var limit = query.Limit; if (query.Page == null) { page = 1; } if (query.Limit == null) { limit = 20; } var items = await _context.Reservations .Skip((int)((page - 1) * limit)) .Take((int)limit) .Select(reservation => ReservationListToDTO(reservation)) .ToListAsync(); var count = _context.Reservations.Count(); return(new ResultPagination { Items = items, Pages = (int)Math.Round((decimal)(count / limit)), Page = (int)page, Count = count }); }
protected Links GetLinks(string baseUrl, QueryFilter filter, QueryPagination page, string query, bool includeChannels, int totalItemNumber, DateTime?startTime = null, DateTime?endTime = null) { var RequestPath = baseUrl.Substring(0, baseUrl.Length - 1); if (Request != null) { RequestPath += Request.Path; } int nextOffset = page.offset + page.limit; int prevOffset = page.offset - page.limit; Links links = new Links(); links.prev = $"{RequestPath}?filter[categories]={filter.categories}&filter[channels]={filter.channels}&page[offset]={prevOffset}&page[limit]={page.limit}"; if (startTime != null) { links.prev += "&filter[starttime]=" + startTime.Value.ToString("yyyy-MM-dd"); } if (endTime != null) { links.prev += "&filter[endtime]=" + endTime.Value.ToString("yyyy-MM-dd"); } if (includeChannels) { links.prev += "&include=channels"; } if (page.offset == 0) { links.prev = null; } if (query.Length > 0) { links.prev += "&query=" + query; } links.next = $"{RequestPath}?filter[categories]={filter.categories}&filter[channels]={filter.channels}&page[offset]={nextOffset}&page[limit]={page.limit}"; if (startTime != null) { links.next += "&filter[starttime]=" + startTime.Value.ToString("yyyy-MM-dd"); } if (endTime != null) { links.next += "&filter[endtime]=" + endTime.Value.ToString("yyyy-MM-dd"); } if (includeChannels) { links.next += "&include=channels"; } if (query.Length > 0) { links.next += "&query=" + query; } if (page.offset + page.limit >= totalItemNumber) { links.next = null; } return(links); }
public FrmQueryPositions() { InitializeComponent(); _Grid = new DefaultGridView <PositionDetail>(Grid); _NextPage = new QueryPagination { Size = (uint)PageSize.Value, Offset = 0, }; }
public FrmQueryOrders() { InitializeComponent(); _Grid = new DefaultGridView <Order>(Grid); _NextPage = new QueryPagination { Size = (uint)PageSize.Value, Offset = 0 }; }
public static PaginatedResult <T> ToPaginated <T>(this IQueryable <T> query, QueryPagination pagination) { var toSkip = (pagination.Page - 1) * pagination.PageSize; var res = query.Select(x => new { Count = query.Count(), Entity = x }) .Skip(toSkip) .Take(pagination.PageSize) .ToList(); return(new PaginatedResult <T>( res.Any() ? res.First().Count : 0, pagination.Page, pagination.PageSize, res.Select(x => x.Entity).ToList() )); }
public PaginatedResult <FlatOffer> Get( FlatType?flatType, int?minFlatSize, int?numberOfRooms, decimal?maxPrice, DateRange?dateAdded, DateRange?dateRemoved, QueryPagination pagination) { var query = _dbContext.FlatOffers.AsQueryable(); if (flatType.HasValue) { query = query.Where(x => x.FlatType == flatType.Value); } if (minFlatSize.HasValue) { query = query.Where(x => x.FlatSize >= minFlatSize.Value); } if (numberOfRooms.HasValue) { query = query.Where(x => x.NumberOfRooms == numberOfRooms.Value); } if (maxPrice.HasValue) { query = query.Where(x => x.Price <= maxPrice.Value); } if (dateAdded.HasValue) { query = query.WhereDateWithinRange(x => x.DateAdded, dateAdded.Value); } if (dateRemoved.HasValue) { query = query.WhereDateWithinRange(x => x.DateRemoved, dateRemoved.Value); } return(query .Include(x => x.Links) .Include(x => x.Notifications) .Where(x => x.DateRemoved == null || x.Notifications.Any(y => !y.Viewed)) .ToPaginated(pagination)); }
public QueryPositionResponse QueryPositions( Exchange exchange = Exchange.Undefined, string code = "", QueryPagination pagination = null ) { return (QueryPositions( new QueryPositionRequest() { AccountNo = AccountNo, Code = code, Exchange = exchange, Pagination = pagination ?? new QueryPagination() { Size = 100 } })); }
public IActionResult GetNews([FromQuery] QueryPagination page, [FromQuery] QueryFilter filter, [FromQuery] string query = "", [FromQuery] string baseUrl = "") { baseUrl = GetBaseUrl(baseUrl); if (filter.categories == 0) { filter = GetQueryFilter(); } query = GetSearchKey(filter.search, query); if (string.IsNullOrEmpty(baseUrl)) { _logger.Error("baseUrl not been provided"); return(NoContent()); } var schools = _schoolsService.GetSchools(baseUrl, ""); if (IsResourcesRequestValid(filter, schools, new List <int>() { 1, 2 })) { int total; var news = _newsPresentation.GetNews(filter.channelServerIds, baseUrl, query, page.offset, page.limit, out total); var links = string.IsNullOrEmpty(query) ? this.GetLinks(baseUrl, filter, page, "", true, total) : null; if (news.Count() == 0) { _logger.Information("no news found"); return(Ok(new { Data = schools, Links = links })); } var dataList = from p in news select new { id = p.Id.ToString(), type = "school-messenger.news", attributes = new { title = p.Title, featuredImage = string.IsNullOrEmpty(p.FeaturedImage) ? p.FeaturedImage : Uri.EscapeUriString(p.FeaturedImage), imageTitle = p.ImageTitle, summary = p.Summary, body = p.Body, linkOfCurrentPage = p.LinkOfCurrentPage, publishedDate = p.PublishedDate.ToString("yyyy-MM-ddTHH:mm:ssZ"), pageLastModified = p.PageLastModified.ToString("yyyy-MM-ddTHH:mm:ssZ"), pageTitle = p.PageTitle }, meta = new { i18n = new { translatableFields = new List <string> { "attributes.title", "attributes.summary", "attributes.body", "attributes.pageTitle" } } }, relationships = new { categories = new { data = new object[] { new { type = "school-messenger.categories", id = "2" } } }, channels = new { data = new object[] { new { type = "school-messenger.channels", id = p.ServerId.ToString() } } }, } }; return(Ok(new { Data = dataList, Links = links })); } _logger.Error("validation failed"); return(NoContent()); }
public IActionResult GetEvents([FromQuery] QueryPagination page, [FromQuery] QueryFilter filter, [FromQuery] string query = "", [FromQuery] string baseUrl = "") { baseUrl = GetBaseUrl(baseUrl); if (filter.categories == 0) { filter = GetQueryFilter(); } query = GetSearchKey(filter.search, query); if (string.IsNullOrEmpty(baseUrl)) { _logger.Error("baseUrl not been provided"); return(NoContent()); } var schools = _schoolsService.GetSchools(baseUrl, ""); if (IsResourcesRequestValid(filter, schools, new List <int>() { 3, 4 })) { if (filter.starttime == null || filter.starttime.Year < DateTime.Today.AddYears(-2).Year) { filter.starttime = DateTime.Today.AddDays(-10); filter.endtime = DateTime.Today.AddMonths(ENDPROID); } if (filter.endtime == null || filter.starttime.Year < DateTime.Today.AddYears(-2).Year) { filter.endtime = DateTime.Today.AddMonths(ENDPROID); } if (filter.endtime < filter.starttime) { filter.starttime = DateTime.Today.AddDays(-10); filter.endtime = DateTime.Today.AddMonths(ENDPROID); } int total; var events = _eventsPresentation.GetEvents(filter.channelServerIds, baseUrl, query, filter.starttime, filter.endtime, page.offset, page.limit, true, out total); var links = string.IsNullOrEmpty(query) ? this.GetLinks(baseUrl, filter, page, "", true, total) : null; if (events.Count() == 0) { _logger.Information("no events found"); return(NoContent()); } var eventsData = from c in events select new { id = c.EventId.ToString(), type = "school-messenger.events", attributes = new { name = c.Name, description = c.Description, starttime = c.StartTime, endtime = c.EndTime, starttimeutc = c.StartTimeUTC, endtimeutc = c.EndTimeUTC, isallday = c.IsAllDayEvent }, meta = new { i18n = new { translatableFields = new List <string> { "attributes.name", "attributes.description" } } }, relationships = new { categories = new { data = new object[] { new { type = "school-messenger.categories", id = "4" } } }, channels = new { data = new object[] { new { type = "school-messenger.channels", id = c.ServerId.ToString() } } }, } }; return(Ok(new { data = eventsData, links = links })); } _logger.Error("validation failed"); return(NoContent()); }
public IActionResult GetPeople([FromQuery] QueryPagination page, [FromQuery] QueryFilter filter, [FromQuery] string query = "", [FromQuery] string baseUrl = "") { baseUrl = GetBaseUrl(baseUrl); if (filter.categories == 0) { filter = GetQueryFilter(); } query = GetSearchKey(filter.search, query); if (string.IsNullOrEmpty(baseUrl)) { _logger.Error("baseUrl not been provided"); return(NoContent()); } var schools = _schoolsService.GetSchools(baseUrl, ""); if (IsResourcesRequestValid(filter, schools, new List <int> () { 5, 6 })) { int total; IEnumerable <Person> simplePeople = _peoplePresentation.GetPeople(filter.channelServerIds, baseUrl, query, page.offset, page.limit, out total); var links = string.IsNullOrEmpty(query) ? this.GetLinks(baseUrl, filter, page, query, true, total) : null; if (simplePeople.Count() == 0) { _logger.Information("no people found"); return(NoContent()); } var fullPeople = _peopleRepository.GetPeopleInfo(baseUrl, simplePeople); var dataList = from p in fullPeople select new { id = p.UserId.ToString(), type = "school-messenger.people", attributes = new { firstName = p.FirstName, lastName = p.LastName, jobTitle = p.JobTitle, phoneNumber = p.PhoneNumber, email = p.Email, website = p.Website, twitter = p.Twitter, about = p.Description + p.PersonalMessage, image = p.ImageUrl, name = p.FirstName + " " + p.LastName, description = p.Description, blog = p.Blog, personalMessage = p.PersonalMessage }, relationships = new { categories = new { data = new object[] { new { type = "school-messenger.categories", id = "6" } } }, channels = new { data = new object[] { new { type = "school-messenger.channels", id = p.ServerId.ToString() } } }, } }; return(Ok(new { Data = dataList, Links = links })); } _logger.Error("validation failed"); return(NoContent()); }
public IActionResult GetSchools([FromQuery] QueryPagination page, [FromQuery] QueryFilter filter, [FromQuery] string query = "", [FromQuery] string baseUrl = "") { baseUrl = GetBaseUrl(baseUrl); if (filter.categories == 0) { filter = GetQueryFilter(); } query = GetSearchKey(filter.search, query); if (string.IsNullOrEmpty(baseUrl)) { _logger.Error("baseUrl not been provided"); return(NoContent()); } int total; var schools = _schoolPresentation.GetSchools(baseUrl, query, page.offset, page.limit, out total); if (IsResourcesRequestValid(filter, schools, new List <int>() { 7, 8 })) { var links = string.IsNullOrEmpty(query) ? this.GetLinks(baseUrl, filter, page, "", true, total) : null; if (schools.Count() == 0) { _logger.Information("no schools"); return(Ok(new { Data = schools, Links = links })); } var dataList = from sch in schools select new { id = sch.ServerId.ToString(), type = "school-messenger.schools", attributes = new { name = sch.Description, address = sch.Address.Address1 + " " + sch.Address.City + " " + sch.Address.Province + " " + sch.Address.PostCode, latitude = "", longitude = "", defaultUrl = sch.Url, slogan = sch.Slogan, logo = sch.IconUrl, phone = sch.Phone, fax = sch.Fax, facebook = sch.Facebook, twitter = sch.Twitter, youtube = sch.Youtube, email = sch.Email }, relationships = new { categories = new { data = new object[] { new { type = "school-messenger.categories", id = "8" } } }, channels = new { data = new object[] { new { type = "school-messenger.channels", id = sch.DistrictServerId.ToString() } } }, } }; return(Ok(new { Data = dataList, Links = links })); } _logger.Information("validation failed"); return(NoContent()); }