public JsonNetResult Aggregates(jqGridParamModel grid, int?ID, bool?save)
        {
            // turn off change tracking for high performance
            medicareDatabase.Configuration.AutoDetectChangesEnabled = false;

            using (var scope = Scope.New(IsolationLevel.ReadUncommitted)) {
                var query = medicareDatabase.MedicareExtendedProvidersAggregates.AsQueryable();

                if (ID > 0)
                {
                    query = query.Where(x => x.npi == ID);
                }
                else if (ID == 0)
                {
                    return(this.JsonEx(new { }));
                }

                if (save ?? false)
                {
                    Save(query, grid, "Aggregates.csv");

                    return(null);
                }

                var result = jqGridResponseDefaultModel.getDefaultResponse(query, grid);

                //convert to JSON and return to client
                return(this.JsonEx(result));
            }
        }
        public JsonNetResult Providers(jqGridParamModel grid, bool?save,
                                       SearchUtilizationAndPayments searchUtilizationAndPayments)
        {
            // turn off change tracking for high performance
            medicareDatabase.Configuration.AutoDetectChangesEnabled = false;

            using (var scope = Scope.New(IsolationLevel.ReadUncommitted)) {
                var query = medicareDatabase.MedicareExtendedProviders.AsQueryable();

                if (searchUtilizationAndPayments != null)
                {
                    query = searchUtilizationAndPayments.apply(medicareDatabase, query);
                }

                if (save ?? false)
                {
                    Save(query, grid, "Providers.csv");

                    return(null);
                }

                var result = jqGridResponseDefaultModel.getDefaultResponse(query, grid);

                //convert to JSON and return to client
                return(this.JsonEx(result));
            }
        }
        private void Save <T>(IQueryable <T> query, jqGridParamModel grid, string fileName)
        {
            query = jqGridResponseDefaultModel.getFilteringAndSorting(query, grid);

            httpContext.Response.ContentType = "text/csv";
            httpContext.Response.AddHeader("Content-Disposition", httpContext.getContentDisposition(fileName));
            httpContext.Response.Clear();

            httpContext.Response.Write(query.ToCsv());
            httpContext.Response.End();
        }
        public JsonNetResult GroupPracticeMembers(jqGridParamModel grid, int?ID, string PACID, bool?save)
        {
            // turn off change tracking for high performance
            medicareDatabase.Configuration.AutoDetectChangesEnabled = false;
            // UseDatabaseNullSemantics should be set true to improve filter performance
            medicareDatabase.Configuration.UseDatabaseNullSemantics = true;

            using (var scope = Scope.New(IsolationLevel.ReadUncommitted)) {
                if (String.IsNullOrEmpty(PACID) && ID > 0)
                {
                    PACID = medicareDatabase.MedicareExtendedPhysicians
                            .Where(x => x.NPI == ID)
                            .Select(x => x.Group_Practice_PAC_ID)
                            .FirstOrDefault();
                }

                // returns an empty object if there is no group practice
                if (String.IsNullOrEmpty(PACID))
                {
                    return(this.JsonEx(new { }));
                }

                // get the list of colleagues with same group practice ID excluding the current NPI
                var query = medicareDatabase.MedicareExtendedProviders
                            .Where(x => x.Group_Practice_PAC_ID == PACID);

                if (save ?? false)
                {
                    Save(query, grid, "GroupPracticeMembers.csv");

                    return(null);
                }

                var result = jqGridResponseDefaultModel.getDefaultResponse(query, grid);

                //convert to JSON and return to client
                return(this.JsonEx(result));
            }
        }