예제 #1
0
        public async Task <IHttpActionResult> Get([FromUri] ProviderFilterBindingModel search)
        {
            var userId = User.Identity.GetUserId <int>();
            var query  = _extendedSnapshotProvider.Get();

            try
            {
                var showRateAndQA = (search != null && ShowRateAndQA(search));

                var result = await _queryFilterService.GetFilteredOrderedPageAsync <ProvidersViewModel>(
                    query,
                    search.Filter,
                    search.Sorting,
                    search.Page,
                    search.Count,
                    ProvidersViewModel.FromExtendedProviderSnapshot(showRateAndQA));

                return(Ok <object>(new { showRateAndQA = showRateAndQA, result = result }));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
예제 #2
0
        public async Task <IHttpActionResult> GetAutosuggestOptions(
            [FromUri] string search  = null,
            [FromUri] int?jobTypeId  = null,
            [FromUri] int?languageId = null,
            [FromUri] int?domain1Id  = null,
            [FromUri] int?domain2Id  = null,
            [FromUri] int?officeId   = null)
        {
            var query = _extendedSnapshotProvider.Get();

            try
            {
                var showRateAndQA = false;
                int serviceTypeId = 0;
                var filter        = new ProviderFilterBindingModelFilter();
                var service       = _providerRepo.GetAny <JobType>(x => x.Id == jobTypeId.Value).Select(x => x.ServiceType).FirstOrDefault();
                if (service == null)
                {
                    showRateAndQA = false;
                }
                else
                {
                    if (service.SpecifyLanguage && languageId.HasValue || !service.SpecifyLanguage)
                    {
                        showRateAndQA = true;
                    }
                    serviceTypeId       = service.Id;
                    filter.Name         = search;
                    filter.ServiceTypes = service != null ? new List <int> {
                        serviceTypeId
                    } : null;
                    filter.Languages = languageId.HasValue ? new List <int> {
                        languageId.Value
                    } : null;
                    // domains ...
                };
                if (officeId != null)
                {
                    filter.Offices = new List <int> {
                        officeId.Value
                    };
                    filter.EmplStatuses = new List <int> {
                        1, 2, 3, 4, 5
                    };
                }


                var result = await _queryFilterService.GetFilteredOrderedPageAsync <ProvidersViewModel>(
                    query,
                    filter,
                    new ProviderFilterBindingModelSorting(),
                    1,
                    25,
                    ProvidersViewModel.FromExtendedProviderSnapshot(showRateAndQA),
                    useDistinctAfterProjection : true,
                    ignoreTerminalFilters : true);

                return(Ok <object>(new { showRateAndQA = showRateAndQA, result = result }));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
        // GET: Providers
        public IActionResult Index(string surname, string firstname, string adress, string birthday, int page = 1, ProvidersSortState sortOrder = ProvidersSortState.SurnameAsc)
        {
            int pageSize = 10;
            IQueryable <Providers> source = _context.Providers;

            if (surname != null)
            {
                source = source.Where(x => x.Surname.Contains(surname));
            }

            if (firstname != null)
            {
                source = source.Where(x => x.Firstname.Contains(firstname));
            }

            if (adress != null)
            {
                source = source.Where(x => x.Adress.Contains(adress));
            }

            if (birthday != null)
            {
                source = source.Where(x => x.Birthday == DateTime.Parse(birthday));
            }

            switch (sortOrder)
            {
            case ProvidersSortState.SurnameAsc:
                source = source.OrderBy(x => x.Surname);
                break;

            case ProvidersSortState.SurnameDesc:
                source = source.OrderByDescending(x => x.Surname);
                break;

            case ProvidersSortState.FirstnameAsc:
                source = source.OrderBy(x => x.Firstname);
                break;

            case ProvidersSortState.FirstnsmeDesc:
                source = source.OrderByDescending(x => x.Firstname);
                break;

            case ProvidersSortState.AdressAsc:
                source = source.OrderBy(x => x.Adress);
                break;

            case ProvidersSortState.AdressDesc:
                source = source.OrderByDescending(x => x.Adress);
                break;

            case ProvidersSortState.BirthdayAsc:
                source = source.OrderBy(x => x.Birthday);
                break;

            case ProvidersSortState.BirthdayDesc:
                source = source.OrderByDescending(x => x.Birthday);
                break;

            default:
                source = source.OrderBy(x => x.Surname);
                break;
            }



            var                count    = source.Count();
            var                items    = source.Skip((page - 1) * pageSize).Take(pageSize);
            PageViewModel      pageView = new PageViewModel(count, page, pageSize);
            ProvidersViewModel ivm      = new ProvidersViewModel
            {
                PageViewModel   = pageView,
                SortViewModel   = new SortProvidersViewModel(sortOrder),
                FilterViewModel = new FilterProvidersViewModel(surname, firstname, adress, birthday),
                Providers       = items
            };

            return(View(ivm));
        }