public QuotationViewModel(IList <QuotationModel> quotations, QuotationSortType sortModel, QuotationFilterData filterData, PaginationModel paginationModel)
 {
     this.Quotations      = quotations;
     this.SortModel       = sortModel;
     this.FilterData      = filterData;
     this.PaginationModel = paginationModel;
 }
        public int GetTotalCount(QuotationSortType sortOrder, QuotationFilterData filterData)
        {
            int quotationsCount = DB.QuotationsView
                                  .OrderBySortType(sortOrder)
                                  .WhereByFilterData(filterData)
                                  .Count();

            return(quotationsCount);
        }
        public IQueryable <QuotationDataView> Get(QuotationSortType sortOrder, QuotationFilterData filterData, PaginationData paginationData)
        {
            IQueryable <QuotationDataView> quotations = this.Get()
                                                        .OrderBySortType(sortOrder)
                                                        .WhereByFilterData(filterData)
                                                        .Pagination(paginationData);

            return(quotations);
        }
        public IActionResult Index(int pageNumber = 1, QuotationSortType sortOrder = QuotationSortType.None, QuotationFilterData filterData = null)
        {
            var paginationData = new PaginationData(pageNumber);

            var quotations      = QuotationRepository.Get(sortOrder, filterData, paginationData).ToList();
            var quotationModels = Mapper.Map <List <QuotationModel> >(quotations);

            var quotationCount  = QuotationRepository.GetTotalCount(sortOrder, filterData);
            var paginationModel = new PaginationModel(paginationData, quotationCount);

            var model = new QuotationViewModel(quotationModels, sortOrder, filterData, paginationModel);

            return(View("Index", model));
        }
        public IQueryable <QuotationDataView> GetBySort(QuotationSortType sortOrder)
        {
            var quotations = DB.QuotationsView.OrderBySortType(sortOrder);

            return(quotations);
        }
        public static IQueryable <QuotationDataView> OrderBySortType(this IQueryable <QuotationDataView> quotations, QuotationSortType sortOrder)
        {
            IQueryable <QuotationDataView> sortQuotations;

            switch (sortOrder)
            {
            case QuotationSortType.IdAsc:
                sortQuotations = quotations.OrderBy(s => s.Id);
                break;

            case QuotationSortType.IdDesc:
                sortQuotations = quotations.OrderByDescending(s => s.Id);
                break;

            case QuotationSortType.NameAsc:
                sortQuotations = quotations.OrderBy(s => s.Name);
                break;

            case QuotationSortType.NameDesc:
                sortQuotations = quotations.OrderByDescending(s => s.Name);
                break;

            case QuotationSortType.SymbolAsc:
                sortQuotations = quotations.OrderBy(s => s.Symbol);
                break;

            case QuotationSortType.SymbolDesc:
                sortQuotations = quotations.OrderByDescending(s => s.Symbol);
                break;

            case QuotationSortType.PriceAsc:
                sortQuotations = quotations.OrderBy(s => s.Price);
                break;

            case QuotationSortType.PriceDesc:
                sortQuotations = quotations.OrderByDescending(s => s.Price);
                break;

            case QuotationSortType.PercentChange1HAsc:
                sortQuotations = quotations.OrderBy(s => s.PercentChange1h);
                break;

            case QuotationSortType.PercentChange1HDesc:
                sortQuotations = quotations.OrderByDescending(s => s.PercentChange1h);
                break;

            case QuotationSortType.PercentChange24HAsc:
                sortQuotations = quotations.OrderBy(s => s.PercentChange24h);
                break;

            case QuotationSortType.PercentChange24HDesc:
                sortQuotations = quotations.OrderByDescending(s => s.PercentChange24h);
                break;

            case QuotationSortType.MarketCapAsc:
                sortQuotations = quotations.OrderBy(s => s.MarketCap);
                break;

            case QuotationSortType.MarketCapDesc:
                sortQuotations = quotations.OrderByDescending(s => s.MarketCap);
                break;

            case QuotationSortType.LastUpdatedAsc:
                sortQuotations = quotations.OrderBy(s => s.LastUpdated);
                break;

            case QuotationSortType.LastUpdatedDesc:
                sortQuotations = quotations.OrderByDescending(s => s.LastUpdated);
                break;

            case QuotationSortType.None:
                sortQuotations = quotations;
                break;

            default:
                sortQuotations = quotations;
                break;
            }

            return(sortQuotations);
        }