Exemple #1
0
 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
         }
     }));
 }
Exemple #2
0
 /// <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);
     }
 }
Exemple #3
0
 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
            });
        }
Exemple #5
0
        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);
        }
Exemple #6
0
 public FrmQueryPositions()
 {
     InitializeComponent();
     _Grid     = new DefaultGridView <PositionDetail>(Grid);
     _NextPage = new QueryPagination
     {
         Size   = (uint)PageSize.Value,
         Offset = 0,
     };
 }
Exemple #7
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));
        }
Exemple #10
0
 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
         }
     }));
 }
Exemple #11
0
        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());
        }
Exemple #12
0
        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());
        }
Exemple #14
0
        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());
        }