Пример #1
0
        public async Task <ListQuoteResponseModel> GetList(ListQuoteRequestModel request)
        {
            try
            {
                ListQuoteResponseModel response = await getListResponse(request);

                return(response);
            }
            catch (System.Exception)
            {
                throw;
            }
        }
Пример #2
0
        public async Task <ListQuoteResponseModel> GetListByUserAsync(ListQuoteRequestModel request, string userId)
        {
            try
            {
                ListQuoteResponseModel response = await getListResponseByUser(request, userId);

                return(response);
            }
            catch (System.Exception)
            {
                throw;
            }
        }
Пример #3
0
        private async Task <ListQuoteResponseModel> getListResponseBySnitch(ListQuoteRequestModel request, string snitchId)
        {
            IQueryable <QuoteModel> orderedQuery = null;
            var quotesCount = await countQuotesbySnitch(snitchId);

            var numberOfPages = quotesCount / request.N;

            orderedQuery = generateListQueriableBySnitch(request, orderedQuery, snitchId);

            ListQuoteResponseModel response = await getListResponse(request, orderedQuery, quotesCount, numberOfPages);

            return(response);
        }
Пример #4
0
        private static async Task <ListQuoteResponseModel> getListResponse(ListQuoteRequestModel request, IQueryable <QuoteModel> orderedQuery, int quotesCount, int numberOfPages)
        {
            var toReturnList = (await orderedQuery?.Skip(request.N * request.Page)
                                .Take(request.N)?.ToListAsync()).ConvertAll(
                q => q.ToFullViewMode()
                );

            var response = new ListQuoteResponseModel()
            {
                NumberOfPages = numberOfPages,
                PageNumber    = request.Page,
                Quotes        = toReturnList,
                TotalQuotes   = quotesCount
            };

            return(response);
        }
Пример #5
0
        private async Task <ListQuoteResponseModel> getListResponse(ListQuoteRequestModel request)
        {
            IQueryable <QuoteModel> orderedQuery = null;
            var quotesCount = await countQuotes();

            var numberOfPages = quotesCount / request.N;

            var queryUnordered = _context.Quote.AsNoTracking();

            switch (request.OrderBy)
            {
            case OrderByEnum.ByDate:
                orderedQuery = queryUnordered.OrderByDescending(q => q.Date);
                break;

            case OrderByEnum.ByName:
                orderedQuery = queryUnordered.OrderByDescending(q => q.User.Name);
                break;

            case OrderByEnum.ByPositiveVotes:
                orderedQuery = queryUnordered.OrderByDescending(q => q.Upvotes);
                break;

            case OrderByEnum.ByNegativeVotes:
                orderedQuery = queryUnordered.OrderByDescending(q => q.Downvotes);
                break;
            }

            var toReturnList = await orderedQuery?.Skip(request.N *request.Page)
                               .Take(request.N)?.ToListAsync();

            var response = new ListQuoteResponseModel()
            {
                NumberOfPages = numberOfPages,
                PageNumber    = request.Page,
                quotes        = toReturnList,
                TotalQuotes   = quotesCount
            };

            return(response);
        }