예제 #1
0
        public ActionResult Index(CorporateAccountListModelFilter filter = null, int pageNumber = 1)
        {
            int totalRecords;
            var model = _organizationService.GetCorporateAccountListModel(pageNumber, PAGE_SIZE, filter, out totalRecords);

            if (model == null)
            {
                model = new CorporateAccountListModel();
            }
            model.Filter = filter;

            var currentAction          = ControllerContext.RouteData.Values["action"].ToString();
            Func <int, string> urlFunc = pn => Url.Action(currentAction, new { pageNumber = pn, filter.Name, filter.ShowHealthPlanOnly, filter.ShowCorporateAccountOnly });

            model.PagingModel = new PagingModel(pageNumber, PAGE_SIZE, totalRecords, urlFunc);
            return(View(model));
        }
예제 #2
0
        public CorporateAccountListModel GetCorporateAccountListModel(int pageNumber, int pageSize, CorporateAccountListModelFilter filter, out int totalRecords)
        {
            var accounts = _corporateAccountRepository.GetbyFilter(pageNumber, pageSize, filter, out totalRecords);

            if (accounts.IsNullOrEmpty())
            {
                return(null);
            }

            var accountIds            = accounts.Select(a => a.Id).ToArray();
            var accountIdPackagesPair =
                _corporateAccountRepository.GetAccountIdPackagesNamePair(accountIds);

            var organizations = _organizationRepository.GetOrganizations(accountIds);
            var orgListModels = GetOrganizationListModel(organizations);

            return(_corporateAccountListModelFactory.Create(accounts, accountIdPackagesPair, orgListModels));
        }
        public IEnumerable <CorporateAccount> GetbyFilter(int pageNumber, int pageSize, CorporateAccountListModelFilter filter, out int totalRecords)
        {
            using (var adapter = PersistenceLayer.GetDataAccessAdapter())
            {
                var linqMetaData = new LinqMetaData(adapter);

                var query = from a in linqMetaData.Account
                            join o in linqMetaData.Organization on a.AccountId equals o.OrganizationId
                            where o.IsActive
                            select new { a, o };

                if (filter == null)
                {
                    var accounts = from q in query
                                   orderby q.o.Name
                                   select q.a;
                    totalRecords = accounts.Count();

                    return(Mapper.MapMultiple(accounts.TakePage(pageNumber, pageSize).ToArray()));
                }

                if (!string.IsNullOrEmpty(filter.Name))
                {
                    query = query.Where(q => q.o.Name.Contains(filter.Name));
                }

                if (filter.ShowHealthPlanOnly)
                {
                    query = query.Where(q => q.a.IsHealthPlan);
                }

                if (filter.ShowCorporateAccountOnly)
                {
                    query = query.Where(q => q.a.IsHealthPlan == false);
                }

                var accountQuery = from q in query
                                   orderby q.o.Name
                                   select q.a;

                totalRecords = accountQuery.Count();
                return(Mapper.MapMultiple(accountQuery.TakePage(pageNumber, pageSize).ToArray()));
            }
        }