protected ActivityFilter CreateFilterFromQuery() { ActivityFilter filter = new ActivityFilter(); foreach (var key in Request.QueryString.AllKeys) { filter[key] = Request.QueryString[key]; } return filter; }
public static Activity GetActivityById(int id) { int countOfPages = 1; ActivityFilter filter = new ActivityFilter(); filter[ActivityConstants.ActivityID] = id.ToString(); Activity activity = DataManager.SearchActivityByFilterToPage(filter, 1, out countOfPages).SingleOrDefault(); if (activity != null) { return activity; } else { throw new ApplicationException("Invalid Activity ID"); } }
public static List<Activity> SearchActivityByFilterToPage(ActivityFilter filter, int? pageNumber, out int countOfPages) { return _dataActivityProvider.SearchByFilter(filter, pageNumber, out countOfPages); }
public List<Activity> SearchByFilter(ActivityFilter filter, int? pageNumber, out int countOfPages) { using (var dc = new EngageCCTDataClassesDataContext()) { IEnumerable<T_Activity> activities = dc.T_Activities; if (!String.IsNullOrEmpty(filter[ActivityConstants.ActivityID])) { int activityID; if (int.TryParse(filter[ActivityConstants.ActivityID], out activityID)) activities = activities.Where(e => e.ActivityID == activityID); } if (!String.IsNullOrEmpty(filter[ActivityConstants.CreatedBy])) { activities = activities.Where(e => e.Author.ToLower().Contains(filter[ActivityConstants.CreatedBy].ToLower())); } if (!String.IsNullOrEmpty(filter[ActivityConstants.ActivityType])) { int typeID; if (int.TryParse(filter[ActivityConstants.ActivityType], out typeID)) activities = activities.Where(e => e.TypeID == typeID); } if (!String.IsNullOrEmpty(filter[ActivityConstants.Priority])) { int typeID; if (int.TryParse(filter[ActivityConstants.Priority], out typeID)) activities = activities.Where(e => e.PriorityID == typeID); } if (!String.IsNullOrEmpty(filter[ActivityConstants.Recipient])) { int leadNumber; if (int.TryParse(filter[ActivityConstants.Recipient], out leadNumber)) { int leadID = _dataLeadProvider.GetLeadIDByNumber(leadNumber); var leadActivities = dc.T_ActivityLeads.Where(al => al.LeadID == leadID); activities = activities.Where(a => leadActivities.Any(la => la.ActivityID == a.ActivityID)); } } //time if (!String.IsNullOrEmpty(filter[ActivityConstants.From])) { DateTime from = DateTime.Parse(filter[ActivityConstants.From]); activities = activities.Where(e => from <= e.actDue); } if (!String.IsNullOrEmpty(filter[ActivityConstants.To])) { DateTime to = DateTime.Parse(filter[ActivityConstants.To]); activities = activities.Where(e => to >= e.actDue); } if (!String.IsNullOrEmpty(filter[ActivityConstants.Priority])) { int typeID; if (int.TryParse(filter[ActivityConstants.Priority], out typeID)) activities = activities.Where(e => e.PriorityID == typeID); } if (!String.IsNullOrEmpty(filter[ActivityConstants.Status])) { List<T_Activity> temp = new List<T_Activity>(); string[] statuses = filter[ActivityConstants.Status].Split(','); for (int i = 0; i < statuses.Length; i++) { temp = temp.Concat(activities.Where(e => e.StatusID == int.Parse(statuses[i].ToString()))).ToList(); } activities = temp; } if (!String.IsNullOrEmpty(filter[ActivityConstants.Owner])) { activities = activities.Where(e => e.Owner.ToLower().Contains(filter[ActivityConstants.Owner].ToLower())); } if (!String.IsNullOrEmpty(filter[ActivityConstants.Sender])) { activities = activities.Where(e => e.Sender.ToLower().Contains(filter[ActivityConstants.Sender].ToLower())); } if (!String.IsNullOrEmpty(filter[ActivityConstants.Subject])) { activities = activities.Where(e => e.actSubject.ToLower().Contains(filter[ActivityConstants.Subject].ToLower())); } if (!String.IsNullOrEmpty(filter[ActivityConstants.CreatedOn])) { activities = activities.Where(e => GetDateFormat(e).Contains(filter[ActivityConstants.CreatedOn].ToLower())); } if (!String.IsNullOrEmpty(filter[ActivityConstants.Sort])) { var pair = filter[ActivityConstants.Sort].Split(','); if (pair.Length == 2) { var sortBy = pair[0]; var sortDirection = pair[1]; switch (sortBy) { case SortConstants.ActivityType: if (sortDirection.Equals(SortConstants.Ascending)) { activities = activities.OrderBy(a => a.T_ActivityType.atType); } if (sortDirection.Equals(SortConstants.Descending)) { activities = activities.OrderByDescending(a => a.T_ActivityType.atType); } break; case SortConstants.Subject: if (sortDirection.Equals(SortConstants.Ascending)) { activities = activities.OrderBy(a => a.actSubject); } if (sortDirection.Equals(SortConstants.Descending)) { activities = activities.OrderByDescending(a => a.actSubject); } break; case SortConstants.Priority: if (sortDirection.Equals(SortConstants.Priority)) { activities = activities.OrderBy(a => a.T_Priority.prType); } if (sortDirection.Equals(SortConstants.Descending)) { activities = activities.OrderByDescending(a => a.T_Priority.prType); } break; case SortConstants.Status: if (sortDirection.Equals(SortConstants.Ascending)) { activities = activities.OrderBy(a => a.T_ActivityStatus.asStatus); } if (sortDirection.Equals(SortConstants.Descending)) { activities = activities.OrderByDescending(a => a.T_ActivityStatus.asStatus); } break; } } } int countActivitiesOnPage; if (int.TryParse(ConfigurationManager.AppSettings["countOfActivitiesOnPage"], out countActivitiesOnPage)) { countOfPages = (activities.Count() - 1) / countActivitiesOnPage + 1; } else { countActivitiesOnPage = 10; countOfPages = (activities.Count() - 1) / countActivitiesOnPage + 1; } if (pageNumber != null) { if (pageNumber.Value > countOfPages || pageNumber.Value < 0) { pageNumber = 1; } int temp = activities.Count(); List<Activity> activityList = new List<Activity>(); for (int i = (pageNumber.Value - 1) * countActivitiesOnPage; i < pageNumber.Value * countActivitiesOnPage && i < activities.Count(); i++) { Activity activity = GetActivityEntity(activities.ElementAt(i)); activityList.Add(activity); } return activityList; } else { return activities.Select(e => GetActivityEntity(e)).ToList(); } } }