public ActionResult GetActivitiesList(JQDTblParamModel dTblParams)
        {
            string countSQL       = "";
            string selectSQL      = "";
            string sqlWhere       = " WHERE 1=1 ";
            string sqlOrder       = " ORDER BY ";
            string sqlOffSetLimit = string.Format(" OFFSET {0} ROWS FETCH NEXT {1} ROWS ONLY;", dTblParams.iDisplayStart, dTblParams.iDisplayLength);

            countSQL = "select count(*) " +
                       "  from ActivityHistory a " +
                       " inner join Contact c on c.ID = a.ContactID" +
                       " inner join CompanyContact cc on cc.ContactID = c.ID " +
                       " inner join Company co on co.ID = cc.companyID ";

            selectSQL = "select a.ID, a.StartDate, a.EndDate, a.ActivityType, a.ActivityStatus, " +
                        "       co.Name CompanyName, c.LastName + ', ' + c.FirstName ContactName, " +
                        "       a.ActivityStatus, a.Subject, c.LastName, c.FirstName " +
                        "  from ActivityHistory a " +
                        "       inner join Contact c on c.ID = a.ContactID " +
                        "       inner join CompanyContact cc on c.ID = cc.contactID" +
                        "       inner join Company co on co.ID = cc.companyID ";

            var sVal = "";

            if (!string.IsNullOrEmpty(dTblParams.sSearch))
            {
                sVal      = string.Format("%{0}%", dTblParams.sSearch);
                sqlWhere += " AND (a.ActivityType like @p0 or a.ActivityStatus like @p0 " +
                            "  or a.Subject like @p0 " +
                            "  or c.LastName like @p0 or c.FirstName like @p0 " +
                            "  or co.Name like @p0) ";
            }

            var sortColIndex = Convert.ToInt32(Request["iSortCol_0"]);
            var sortDir      = Request["sSortDir_0"];

            sqlOrder += (sortColIndex == 0 ? string.Format("c.ID {0}", sortDir) :
                         sortColIndex == 1 ? string.Format("a.StartDate {0}", sortDir) :
                         sortColIndex == 2 ? string.Format("a.EndDate {0}", sortDir) :
                         sortColIndex == 3 ? string.Format("co.Name {0}", sortDir) :
                         sortColIndex == 4 ? string.Format("c.LastName {0}, c.FirstName {0}", sortDir) :
                         sortColIndex == 5 ? string.Format("a.ActivityStatus {0}", sortDir) :
                         string.Format("a.StartDate {0}", sortDir));

            string countSQLFinal  = string.Format("{0} {1}", countSQL.ToString(), sqlWhere);
            string selectSQLFinal = string.Format("{0} {1} {2} {3}", selectSQL.ToString(), sqlWhere, sqlOrder, sqlOffSetLimit);

            var totalRecs = db.Database.SqlQuery <Int32>(countSQLFinal, sVal);
            IEnumerable <ActivityListViewModel> displayedActivities;

            if (!string.IsNullOrEmpty(sVal))
            {
                displayedActivities = db.Database.SqlQuery <ActivityListViewModel>(selectSQLFinal, sVal).ToList();
            }
            else
            {
                displayedActivities = db.Database.SqlQuery <ActivityListViewModel>(selectSQLFinal).ToList();
            }

            var dispRecs = displayedActivities.Count();

            return(Json(new
            {
                sEcho = dTblParams.sEcho,
                iTotalRecords = totalRecs.ElementAt(0),
                iTotalDisplayRecords = totalRecs.ElementAt(0),
                data = Json(displayedActivities).Data
            },
                        "application/json",
                        JsonRequestBehavior.AllowGet));
        }
示例#2
0
        public ActionResult GetContactsList(JQDTblParamModel dTblParams)
        {
            string countSQL       = "";
            string selectSQL      = "";
            string sqlWhere       = " WHERE 1=1 ";
            string sqlOrder       = " ORDER BY ";
            string sqlOffSetLimit = string.Format(" OFFSET {0} ROWS FETCH NEXT {1} ROWS ONLY;", dTblParams.iDisplayStart, dTblParams.iDisplayLength);

            countSQL = "select count(*) " +
                       "  from Contact c " +
                       " inner join CompanyContact cc on c.ID = cc.contactID" +
                       " inner join Company co on co.ID = cc.companyID ";

            selectSQL = "select c.ID, c.Honorific, c.FirstName, c.MiddleName, c.LastName, " +
                        "       c.Suffix, c.Title, c.Phone, c.Email, co.Name CompanyName " +
                        "  from Contact c " +
                        " inner join CompanyContact cc on c.ID = cc.contactID" +
                        " inner join Company co on co.ID = cc.companyID ";


            var sVal = "";

            if (!string.IsNullOrEmpty(dTblParams.sSearch))
            {
                sVal = string.Format("%{0}%", dTblParams.sSearch);
                // sqlWhere += " AND (c.Honorific like '%@p0%' or c.FirstName like '%@p0%' " +
                //            "  or c.MiddleName like '%@p0%' or c.LastName like '%@p0%' " +
                //            "  or c.Suffix like '%@p0%' or c.Phone like '%@p0%' " +
                //            "  or c.Email like '%@p0%' or co.Name like '%@p0%')";
                sqlWhere += " AND (c.Honorific like @p0 or c.FirstName like @p0 " +
                            "  or c.MiddleName like @p0 or c.LastName like @p0 " +
                            "  or c.Suffix like @p0 or c.Phone like @p0 " +
                            "  or c.Email like @p0 or co.Name like @p0)";
            }

            var sortColIndex = Convert.ToInt32(Request["iSortCol_0"]);
            var sortDir      = Request["sSortDir_0"];

            sqlOrder += (sortColIndex == 0 ? string.Format("c.ID {0}", sortDir) :
                         sortColIndex == 1 ? string.Format("c.LastName {0}, c.FirstName {0}", sortDir) :
                         sortColIndex == 2 ? string.Format("c.Title {0}", sortDir) :
                         sortColIndex == 3 ? string.Format("c.Phone {0}", sortDir) :
                         sortColIndex == 4 ? string.Format("c.Email {0}", sortDir) :
                         sortColIndex == 5 ? string.Format("co.Name {0}", sortDir) :
                         string.Format("c.LastName {0}, c.FirstName {0}", sortDir));

            string countSQLFinal  = string.Format("{0} {1}", countSQL.ToString(), sqlWhere);
            string selectSQLFinal = string.Format("{0} {1} {2} {3}", selectSQL.ToString(), sqlWhere, sqlOrder, sqlOffSetLimit);

            var totalRecs = db.Database.SqlQuery <Int32>(countSQLFinal, sVal);
            IEnumerable <ContactListViewModel> displayedContacts;

            if (!string.IsNullOrEmpty(sVal))
            {
                displayedContacts = db.Database.SqlQuery <ContactListViewModel>(selectSQLFinal, sVal).ToList();
            }
            else
            {
                displayedContacts = db.Database.SqlQuery <ContactListViewModel>(selectSQLFinal, sVal).ToList();
            }

            var dispRecs = displayedContacts.Count();

            // generate array appropriate for dataTables.net javascript handlers

            /*
             * var q = from c in displayedContacts
             *      select new[]
             *    {
             *      c.ID.ToString(),
             *      c.FullName.ToString(),
             *      c.Title.ToString(),
             *      c.Phone.ToString(),
             *      c.Email.ToString(),
             *      c.CompanyName.ToString(),
             *      c.Honorific.ToString(),
             *      c.FirstName.ToString(),
             *      c.MiddleName.ToString(),
             *      c.LastName.ToString()
             *    };
             */
            return(Json(new
            {
                sEcho = dTblParams.sEcho,
                iTotalRecords = totalRecs.ElementAt(0),
                iTotalDisplayRecords = totalRecs.ElementAt(0),
                data = Json(displayedContacts).Data
            },
                        "application/json",
                        JsonRequestBehavior.AllowGet));
        }
示例#3
0
        public ActionResult GetCompaniesList(JQDTblParamModel dTblParams)
        {
            var allCompanies = db.Companies;
            IEnumerable <Company> filteredCompanies;

            if (!string.IsNullOrEmpty(dTblParams.sSearch))
            {
                filteredCompanies = db.Companies
                                    .Where(c => c.Name.Contains(dTblParams.sSearch) ||
                                           c.Address1.Contains(dTblParams.sSearch) ||
                                           c.Address2.Contains(dTblParams.sSearch) ||
                                           c.CityRegion.Contains(dTblParams.sSearch) ||
                                           c.StateProvince.Contains(dTblParams.sSearch) ||
                                           c.PostalCode.Contains(dTblParams.sSearch) ||
                                           c.Country.Contains(dTblParams.sSearch) ||
                                           c.Phone.Contains(dTblParams.sSearch) ||
                                           c.Fax.Contains(dTblParams.sSearch));
            }
            else
            {
                filteredCompanies = allCompanies;
            }

            var sortColIndex = Convert.ToInt32(Request["iSortCol_0"]);
            var sortDir      = Request["sSortDir_0"];

            Func <Company, string> sortOrder = (cSort => sortColIndex == 0 ? cSort.ID.ToString() :
                                                sortColIndex == 1 ? cSort.Name :
                                                sortColIndex == 2 ? cSort.Address1 :
                                                sortColIndex == 3 ? cSort.CityRegion :
                                                sortColIndex == 4 ? cSort.StateProvince :
                                                sortColIndex == 5 ? cSort.PostalCode :
                                                sortColIndex == 6 ? cSort.Phone :
                                                sortColIndex == 7 ? cSort.Fax :
                                                cSort.Name);

            if (sortDir == "asc")
            {
                filteredCompanies = filteredCompanies.OrderBy(sortOrder);
            }
            else
            {
                filteredCompanies = filteredCompanies.OrderByDescending(sortOrder);
            }

            var displayedCompanies = filteredCompanies.Skip(dTblParams.iDisplayStart).Take(dTblParams.iDisplayLength);

            var totalRecs = allCompanies.Count();

            // TODO: sorting / filtering can get a little kooky (especially with multi-column sorts)
            // explore using the dbContext SQL queries directly

            var q = from c in displayedCompanies.AsEnumerable()
                    select new []
            {
                c.ID.ToString(),
                c.Name.ToString(),
                c.Address1.ToString(),
                c.CityRegion.ToString(),
                c.StateProvince.ToString(),
                c.PostalCode.ToString(),
                c.Phone.ToString(),
                c.Fax.ToString(),
            };


            var dispRecs = q.Count();

            return(Json(new
            {
                sEcho = dTblParams.sEcho,
                iTotalRecords = totalRecs,
                iTotalDisplayRecords = dispRecs,
                aaData = q
            },
                        JsonRequestBehavior.AllowGet));
        }