public List <HospitalFacility> GetByFilter(int pageNumber, int pageSize, HospitalFacilityListModelFilter filter, out int totalRecords)
        {
            using (var adapter = PersistenceLayer.GetDataAccessAdapter())
            {
                var linqMetaData = new LinqMetaData(adapter);

                if (filter == null)
                {
                    totalRecords = linqMetaData.MedicalVendorProfile.Count();
                    return(_hospitalFacilityFactory.CreateHospitalFacilities(linqMetaData.HospitalFacility.TakePage(pageNumber, pageSize)));
                }

                var query = from hf in linqMetaData.HospitalFacility
                            join o in linqMetaData.Organization on hf.HospitalFacilityId equals o.OrganizationId
                            orderby o.Name
                            select new { hf, o };

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

                if (filter.ParentHospitalPartnerId > 0)
                {
                    var hospitalFacilityIds = (from hphf in linqMetaData.HospitalPartnerHospitalFacility
                                               where hphf.HospitalPartnerId == filter.ParentHospitalPartnerId
                                               select hphf.HospitalFacilityId);
                    query = query.Where(q => hospitalFacilityIds.Contains(q.hf.HospitalFacilityId));
                }

                totalRecords = query.Count();
                return(_hospitalFacilityFactory.CreateHospitalFacilities(query.OrderBy(q => q.o.Name).TakePage(pageNumber, pageSize).Select(q => q.hf).ToArray()));
            }
        }
        public ActionResult Index(HospitalFacilityListModelFilter filter, int pageNumber = 1)
        {
            int totalRecords;
            var model = _organizationService.GetHospitalFacilityListModel(pageNumber, _pageSize, filter, out totalRecords);

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

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

            model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc);

            return(View(model));
        }
Exemplo n.º 3
0
        public HospitalFacilityListModel GetHospitalFacilityListModel(int pageNumber, int pageSize, HospitalFacilityListModelFilter filter, out int totalRecords)
        {
            var hospitalFacilities = _hospitalFacilityRepository.GetByFilter(pageNumber, pageSize, filter, out totalRecords);

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

            var organizationIds = hospitalFacilities.Select(hf => hf.Id).ToArray();

            var hospitalPartnerIdHospitalFacilityIdPairs = _hospitalFacilityRepository.GetHospitalPartnerIdHositalFacilityIdPair(organizationIds);

            if (hospitalPartnerIdHospitalFacilityIdPairs != null && hospitalPartnerIdHospitalFacilityIdPairs.Any())
            {
                organizationIds = organizationIds.Concat(hospitalPartnerIdHospitalFacilityIdPairs.Select(hphf => hphf.FirstValue)).ToArray();
            }

            var organizations = _organizationRepository.GetOrganizations(organizationIds);
            var orgListModels = GetOrganizationListModel(organizations);
            var contracts     = _medicalVendorRepository.GetAllContracts();

            return(_hospitalFacilityListModelFactory.Create(hospitalFacilities, orgListModels, contracts, hospitalPartnerIdHospitalFacilityIdPairs));
        }