public static jqGridLoadOptions GetLoadOptions(NameValueCollection queryString)
        {
            var lParams = queryString;

            if (lParams == null)
            {
                return new jqGridLoadOptions();
            }

            var loadOptions = new jqGridLoadOptions
                                  {
                                      search =
                                          string.IsNullOrEmpty(lParams["_search"])
                                              ? false
                                              : bool.Parse(lParams["_search"]),
                                      sortIndex = string.IsNullOrEmpty(lParams["sidx"]) ? null : lParams["sidx"],
                                      sortOrder = string.IsNullOrEmpty(lParams["sord"]) ? null : lParams["sord"],
                                      page = string.IsNullOrEmpty(lParams["page"]) ? 0 : int.Parse(lParams["page"]),
                                      rows = string.IsNullOrEmpty(lParams["rows"]) ? 0 : int.Parse(lParams["rows"]),
                                      searchParams = new Dictionary<string, string>()
                                  };

            if (loadOptions.search == true)
            {
                foreach (var param in lParams.AllKeys)
                {
                    if (param != "_search" && param != "nd" && param != "page" && param != "rows" && param != "sidx" && param != "sord")
                    {
                        loadOptions.searchParams.Add(param, lParams[param]);
                    }
                }
            }
            return loadOptions;
        }
        public List<SerializableProcurement> GetSerializableProcurements(jqGridLoadOptions loadOptions)
        {
            if (loadOptions == null)
                throw new ArgumentNullException("loadOptions", "loadOptions is null.");

            var sortIndex = loadOptions.sortIndex;
            var sortOrder = loadOptions.sortOrder;

            if (string.IsNullOrEmpty(sortIndex))
            {
                sortIndex = "CreatedOn";
                sortOrder = "desc";
            }
            else
            {
                if (string.IsNullOrEmpty(sortOrder))
                    sortOrder = "asc";
            }

            IEnumerable<Procurement> procurements;

            if (loadOptions.search == false)
            {
                procurements = dc.Procurements.OrderBy(sortIndex + " " + sortOrder);
            }
            else
            {
                AddLikePercentsToValues(loadOptions.searchParams);

                var sql = BuildSerializableProcurementSqlStatement(sortIndex, sortOrder, loadOptions.searchParams);

                procurements = dc.ExecuteQuery<Procurement>(sql, loadOptions.searchParams.Values.ToArray());
            }

            return procurements.Select(SerializableProcurement.ConvertProcurementToSerializableProcurement)
                .ToList();
        }
        public List<SerializableDonor> GetSerializableParents(jqGridLoadOptions loadOptions)
        {
            var donorType = GetDonorTypeByName("Parent");

            return GetSerializableDonors(loadOptions, donorType.DonorType_ID, "LastName");
        }
        public List<SerializableDonor> GetSerializableDonors(jqGridLoadOptions loadOptions, int donorTypeId, string defaultSortColumnName)
        {
            if (loadOptions == null)
                throw new ArgumentNullException("loadOptions", "loadOptions is null.");

            if (string.IsNullOrEmpty(loadOptions.sortIndex))
                loadOptions.sortIndex = defaultSortColumnName;

            if (string.IsNullOrEmpty(loadOptions.sortOrder))
                loadOptions.sortOrder = "asc";

            IEnumerable<Donor> donors;

            if (loadOptions.search == false)
            {
                donors = dc.Donors.Where(x => x.DonorType_ID == donorTypeId).OrderBy(loadOptions.sortIndex + " " + loadOptions.sortOrder);
            }
            else
            {
                AddLikePercentsToValues(loadOptions.searchParams);

                var sql = BuildSerializableDonorSqlStatement(loadOptions.sortIndex, loadOptions.sortOrder, loadOptions.searchParams, donorTypeId);

                donors = dc.ExecuteQuery<Donor>(sql, loadOptions.searchParams.Values.ToArray());
            }

            return donors.Where(DonorIsNotClosed).Select(SerializableDonor.ConvertDonorToSerializableProcurement).ToList();
        }
        public List<SerializableDonor> GetSerializableBusinesses(jqGridLoadOptions loadOptions)
        {
            var donorType = GetDonorTypeByName("Business");

            return GetSerializableDonors(loadOptions, donorType.DonorType_ID, "BusinessName");
        }