Created
November 30, 2017 22:18
-
-
Save ChrisMoney/7194b83c276f35a2f1a70612cc41624f to your computer and use it in GitHub Desktop.
This is C# files contains the actions methods that knockout gets its data from.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Web.Mvc; | |
using System.Threading.Tasks; | |
using TMS.Automation.BLL.JobProfilesManager; | |
using TMS.BLL.JobGroupManager; | |
using TMS.Common; | |
using TMS.Common.Enums; | |
using TMS.Common.Extensions; | |
using TMS.TaskQueue.BLL.FilterManager; | |
using TMS.WebApp.Attributes; | |
using TMS.WebApp.DTO; | |
using TMS.Security.Manager; | |
using TMS.TaskQueue.DTO; | |
using TMS.WebApp.Models.Filters; | |
using TMS.TaskQueue.BLL.SystemManager; | |
namespace TMS.WebApp.Controllers | |
{ | |
[RequireModule(Modules = new [] {Module.TaskQueue, Module.Automation})] | |
public class FilterController : TMSBaseController | |
{ | |
public async Task SetFilterSessionVariables() | |
{ | |
using (var filterManager = new FilterMgr(_securityLogger)) | |
{ | |
var lstSelTaskGroups = AppSession.Current.Filter_SelectedTaskGroupIds == null | |
? new List<int>() : AppSession.Current.Filter_SelectedTaskGroupIds; | |
var lstSelTaskSources = AppSession.Current.Filter_SelectedTaskSourceIds == null | |
? new List<int>() : AppSession.Current.Filter_SelectedTaskSourceIds; | |
var lstSelUsers = AppSession.Current.Filter_SelectedUserIds == null | |
? new List<int>() : AppSession.Current.Filter_SelectedUserIds; | |
var lstSelStatus = AppSession.Current.Filter_SelectedStatusIds == null | |
? new List<int>() : AppSession.Current.Filter_SelectedStatusIds; | |
var lstSelectedSubStatus = AppSession.Current.Filter_SelectedSubStatuses ?? new List<string>(); | |
var lstSelPriority = AppSession.Current.Filter_SelectedPriorityIds == null | |
? new List<int>() : AppSession.Current.Filter_SelectedPriorityIds; | |
var lstSelSupervisors = AppSession.Current.Filter_SelectedSupervisorIds == null | |
? new List<long>() : AppSession.Current.Filter_SelectedSupervisorIds; | |
// Get Filters for user | |
var filter = await filterManager.GetFilters(AppSession.Current.User.UserId, | |
lstSelTaskGroups, | |
lstSelTaskSources, | |
lstSelUsers, | |
lstSelStatus, | |
lstSelectedSubStatus, | |
lstSelPriority, | |
Convert.ToDateTime(AppSession.Current.Filter_DateRangeStart), | |
Convert.ToDateTime(AppSession.Current.Filter_DateRangeEnd), | |
AppSession.Current.Filter_IsDateFilterActive, | |
lstSelSupervisors, | |
_securityLogger); | |
AppSession.Current.Filter_TaskGroupIds = filter.TaskGroups.Select(t => t.Id).ToList(); | |
AppSession.Current.Filter_TaskSourceIds = new List<int>(); | |
AppSession.Current.Filter_SelectedUserIds = lstSelUsers; | |
AppSession.Current.Filter_SupervisorIds = filter.Supervisors.Select (t => t.Id).ToList (); | |
AppSession.Current.Filter_StatusIds = filter.Status.Where(s => !s.IsClosedState).Select(s => s.Id).ToList(); | |
AppSession.Current.Filter_SelectedSubStatuses = filter.SubStatus; | |
AppSession.Current.Filter_PriorityIds = filter.Priorities.Select(p => p.Id).ToList(); | |
SetFilterDateTimes (AppSession.Current.Filter_IsDateFilterActive); | |
if (AppSession.Current.Filter_SelectedStatusIds == null) | |
{ | |
AppSession.Current.Filter_SelectedStatusIds = AppSession.Current.Filter_StatusIds; | |
} | |
filter.TaskGroups.ForEach(t => | |
{ | |
// Loop through each Task Source | |
t.TaskSources.ToList().ForEach(s => | |
{ | |
if (s.IsChecked && !AppSession.Current.Filter_TaskSourceIds.Contains (s.Id)) | |
{ | |
AppSession.Current.Filter_TaskSourceIds.Add (s.Id); | |
} | |
}); | |
}); | |
} | |
} | |
[HttpPost] | |
public async Task<ActionResult> GetUserList(string term, string page) | |
{ | |
using (var userMgr = new UserMgr (_securityLogger)) | |
{ | |
var list = await userMgr.GetList (w => ((string.IsNullOrEmpty (w.NT_User) ? false : w.NT_User.ToLower ().Contains (term.ToLower ())) || | |
(string.IsNullOrEmpty (w.DisplayName) ? false : w.DisplayName.ToLower ().Contains (term.ToLower ())) || | |
(string.IsNullOrEmpty (w.EmailAddress) ? false : w.EmailAddress.ToLower ().Contains (term.ToLower ())) || | |
(string.IsNullOrEmpty (w.PhoneNumber) ? false : w.PhoneNumber.ToLower ().Contains (term.ToLower ()))), | |
"DisplayName", true, ((int.Parse(page) - 1) * 30), 30); | |
var count =await userMgr.GetUsersCount (w => ((string.IsNullOrEmpty (w.DisplayName) ? false : w.DisplayName.ToLower ().Contains (term.ToLower ())) || | |
(string.IsNullOrEmpty (w.EmailAddress) ? false : w.EmailAddress.ToLower ().Contains (term.ToLower ())) || | |
(string.IsNullOrEmpty (w.PhoneNumber) ? false : w.PhoneNumber.ToLower ().Contains (term.ToLower ())))); | |
return Json (new { items = list.Select (s => new { id = s.UserId, text = s.DisplayName }), count = count }); | |
} | |
} | |
[HttpPost] | |
public ActionResult GetSupervisorList (string term, string page) | |
{ | |
using (var filterMgr = new FilterMgr (_securityLogger)) | |
{ | |
var count = 0; | |
var list = filterMgr.GetFilterSupervisors (term, AppSession.Current.User.UserId); | |
return Json (new { items = list.Select (s => new { id = s.Id, text = s.DisplayName }), count = count }); | |
} | |
} | |
[HttpPost] | |
public ActionResult GetTaskSubStatuses(string term, string page) | |
{ | |
using (ISubStatusMgr subStatusMgr = new SubStatusMgr()) | |
{ | |
var subStatuses = subStatusMgr.SearchByTerm(term).Select(ss => ss.Description).Distinct(StringComparer.InvariantCultureIgnoreCase); | |
return Json(new { items = subStatuses.Select (ss => new {id = ss, text = ss }) }); | |
} | |
} | |
private void SetFilterDateTimes(bool isDateFilterActive) | |
{ | |
if (isDateFilterActive == false) | |
{ | |
AppSession.Current.Filter_DateRangeEnd = DateTime.Now.ConvertDefaultToUTCForDisplay ().ToString (Globals.DATE_TIME_TZ_FORMAT); | |
AppSession.Current.Filter_DateRangeStart = DateTime.Now.ToString (Globals.DATE_FORMAT); | |
} | |
} | |
// POST: /Filter/Get | |
public async Task<JsonResult> Get() | |
{ | |
var filter = await GetFilterDTO(); | |
var savedFilters = await GetCustomFilters(); | |
return Json(new GetFilterVM { filter = filter, SavedFilters = savedFilters }); | |
} | |
private async Task<List<SavedFilterDTO>> GetCustomFilters() | |
{ | |
using (var filterMgr = new FilterMgr(_securityLogger)) | |
{ | |
var filters = await filterMgr.GetSavedUserFilters(AppSession.Current.User.UserId); | |
return filters; | |
} | |
} | |
private async Task<FilterDTO> GetFilterDTO() | |
{ | |
// Check if Selected Filters are empty | |
var lstSelTaskGroups = AppSession.Current.Filter_SelectedTaskGroupIds == null | |
? new List<int>() | |
: AppSession.Current.Filter_SelectedTaskGroupIds; | |
var lstSelTaskSources = AppSession.Current.Filter_SelectedTaskSourceIds == null | |
? new List<int>() | |
: AppSession.Current.Filter_SelectedTaskSourceIds; | |
var lstSelUsers = AppSession.Current.Filter_SelectedUserIds == null | |
? new List<int>() | |
: AppSession.Current.Filter_SelectedUserIds; | |
var lstSelStatus = AppSession.Current.Filter_SelectedStatusIds == null | |
? AppSession.Current.Filter_StatusIds | |
: AppSession.Current.Filter_SelectedStatusIds; | |
var lstSelectedSubStatus = AppSession.Current.Filter_SelectedSubStatuses ?? new List<string>(); | |
var lstSelPriority = AppSession.Current.Filter_SelectedPriorityIds == null | |
? new List<int>() | |
: AppSession.Current.Filter_SelectedPriorityIds; | |
var lstSelSups = AppSession.Current.Filter_SelectedSupervisorIds == null | |
? new List<long>() | |
: AppSession.Current.Filter_SelectedSupervisorIds; | |
var selDateField = AppSession.Current.Filter_DateField == null ? "" : AppSession.Current.Filter_DateField; | |
SetFilterDateTimes(AppSession.Current.Filter_IsDateFilterActive); | |
// Get Filters for user | |
using (var filterManager = new FilterMgr(_securityLogger)) | |
{ | |
var filter = await filterManager.GetFilters(AppSession.Current.User.UserId, | |
lstSelTaskGroups, | |
lstSelTaskSources, | |
lstSelUsers, | |
lstSelStatus, | |
lstSelectedSubStatus, | |
lstSelPriority, | |
Convert.ToDateTime(AppSession.Current.Filter_DateRangeStart).ConvertDefaultToUTCForDisplay(), | |
Convert.ToDateTime(AppSession.Current.Filter_DateRangeEnd).ConvertDefaultToUTCForDisplay(), | |
AppSession.Current.Filter_IsDateFilterActive, | |
lstSelSups, | |
_securityLogger); | |
filter.SelectedDateField = selDateField; | |
// Default Status filters need to indicate no status selected | |
if (filter.Status.Where(t => t.IsChecked).Count() == 5) | |
{ | |
if (filter.Status.Where(t => (t.Status == "New" && t.IsChecked) && | |
(t.Status == "In Progress" && t.IsChecked) && | |
(t.Status == "Hold" && t.IsChecked) && | |
(t.Status == "MoveTo" && t.IsChecked) && | |
(t.Status == "Escalate" && t.IsChecked)) != null) | |
{ | |
filter.IsStatusFiltered = false; | |
} | |
} | |
// Return | |
return filter; | |
} | |
} | |
[HttpPost] | |
public async Task<JsonResult> LoadSavedFilter(int id) | |
{ | |
using (var filterMgr = new FilterMgr(_securityLogger)) | |
{ | |
var filter = await filterMgr.GetUserFilter(AppSession.Current.User.UserId, id); | |
SetFilterSessionVariables(filter); | |
return Json(new { message = "success" }); | |
} | |
} | |
[HttpPost] | |
public async Task<JsonResult> RemoveSavedFilter(int id) | |
{ | |
using (var filterMgr = new FilterMgr(_securityLogger)) | |
{ | |
await filterMgr.RemoveUserFilter(AppSession.Current.User.UserId, id); | |
} | |
return Json(new { message = "success" }); | |
} | |
[HttpPost] | |
public async Task<JsonResult> SaveFilter(string name) | |
{ | |
var filter = new UserFilterSelectionDTO | |
{ | |
SelectedTaskSources = AppSession.Current.Filter_SelectedTaskSourceIds, | |
SelectedUsers = AppSession.Current.Filter_SelectedUserIds, | |
SelectedSupervisors = AppSession.Current.Filter_SelectedSupervisorIds, | |
SelectedTaskStatuses = AppSession.Current.Filter_SelectedStatusIds, | |
SelectedTaskSubStatuses = AppSession.Current.Filter_SelectedSubStatuses, | |
SelectedTaskPriorities = AppSession.Current.Filter_SelectedPriorityIds, | |
IsDateActive = AppSession.Current.Filter_IsDateFilterActive, | |
DateField = AppSession.Current.Filter_DateField, | |
RangeStartdate = Convert.ToDateTime(AppSession.Current.Filter_DateRangeStart), | |
RangeEndDate = Convert.ToDateTime(AppSession.Current.Filter_DateRangeEnd) | |
}; | |
using (var filterMgr = new FilterMgr(_securityLogger)) | |
{ | |
await filterMgr.SaveUserFilter(AppSession.Current.User.UserId, name, filter); | |
} | |
return Json(new { message = "success" }); | |
} | |
// POST: /Filter/Set | |
[HttpPost] | |
public JsonResult Set(FilterVM filter) | |
{ | |
// If all are empty, it is same as clear | |
if (filter.taskSourceIds == null && filter.userIds == null && filter.statusIds == null && filter.subStatuses == null && filter.priorityIds == null && | |
filter.supervisorIds == null && filter.includeDate == false) | |
{ | |
return ClearFilter(); | |
} | |
var selection = new UserFilterSelectionDTO | |
{ | |
SelectedTaskSources = filter.taskSourceIds, | |
SelectedUsers = filter.userIds, | |
SelectedSupervisors = filter.supervisorIds, | |
SelectedTaskStatuses = filter.statusIds, | |
SelectedTaskSubStatuses = filter.subStatuses, | |
SelectedTaskPriorities = filter.priorityIds, | |
IsDateActive = filter.includeDate, | |
DateField = filter.dateField, | |
RangeStartdate = filter.rangeStartDate, | |
RangeEndDate = filter.rangeEndDate | |
}; | |
// Assign to session variables | |
SetFilterSessionVariables(selection); | |
// Return | |
return Json(new {message = "success"}); | |
} | |
private void SetFilterSessionVariables(UserFilterSelectionDTO filter) | |
{ | |
AppSession.Current.Filter_SelectedTaskSourceIds = filter.SelectedTaskSources?.Any() ?? false | |
? filter.SelectedTaskSources | |
: null; | |
AppSession.Current.Filter_SelectedUserIds = filter.SelectedUsers?.Any() ?? false | |
? filter.SelectedUsers | |
: null; | |
AppSession.Current.Filter_SelectedStatusIds = filter.SelectedTaskStatuses?.Any() ?? false | |
? filter.SelectedTaskStatuses | |
: AppSession.Current.Filter_StatusIds; | |
AppSession.Current.Filter_SelectedSubStatuses = filter.SelectedTaskSubStatuses?.Any() ?? false | |
? filter.SelectedTaskSubStatuses | |
: new List<string>(); | |
AppSession.Current.Filter_SelectedPriorityIds = filter.SelectedTaskPriorities?.Any() ?? false | |
? filter.SelectedTaskPriorities | |
: null; | |
AppSession.Current.Filter_SelectedSupervisorIds = filter.SelectedSupervisors?.Any() ?? false | |
? filter.SelectedSupervisors | |
: null; | |
AppSession.Current.Filter_IsDateFilterActive = filter.IsDateActive; | |
if (filter.IsDateActive) | |
{ | |
AppSession.Current.Filter_DateRangeEnd = filter.RangeEndDate.ToString (Globals.DATETIME_FORMAT); | |
AppSession.Current.Filter_DateRangeStart = filter.RangeStartdate.ToString(Globals.DATETIME_FORMAT); | |
AppSession.Current.Filter_DateField = filter.DateField; | |
} | |
else | |
{ | |
SetFilterDateTimes (filter.IsDateActive); | |
AppSession.Current.Filter_DateField = ""; | |
} | |
} | |
// POST: /Filter/ClearFilter | |
[HttpPost] | |
public JsonResult ClearFilter() | |
{ | |
// Clear Session Variables | |
ClearFilterSessionVariables(); | |
using (var fmgr = new FilterMgr (_securityLogger)) | |
{ | |
// Return | |
return Json (new | |
{ | |
rangeStartDateTime = AppSession.Current.Filter_DateRangeStart, | |
rangeEndDateTime = AppSession.Current.Filter_DateRangeEnd, | |
dateFields = fmgr.GetDateFields ().ToList () | |
}); | |
} | |
} | |
private void ClearFilterSessionVariables() | |
{ | |
using (var filterMgr = new FilterMgr(_securityLogger)) | |
{ | |
AppSession.Current.Filter_SelectedTaskSourceIds = new List<int>(); | |
AppSession.Current.Filter_SelectedUserIds = null; | |
AppSession.Current.Filter_UserIds = null; | |
AppSession.Current.Filter_SelectedStatusIds = filterMgr.GetFilterStatuses(null).Where(x=>!x.IsClosedState).Select(x=>x.Id).ToList(); | |
AppSession.Current.Filter_SelectedSubStatuses = null; | |
AppSession.Current.Filter_SelectedPriorityIds = null; | |
AppSession.Current.Filter_SelectedSupervisorIds = null; | |
AppSession.Current.Filter_IsDateFilterActive = false; | |
AppSession.Current.Filter_DateField = ""; | |
SetFilterDateTimes (AppSession.Current.Filter_IsDateFilterActive); | |
} | |
} | |
#region Automation Filters | |
// GET: /Filter/GetAutomationFilters | |
[HttpGet] | |
public JsonResult GetAutomationFilters() | |
{ | |
using (var groupManager = new JobGroupMgr()) | |
{ | |
using (var profileManager = new JobProfileMgr()) | |
{ | |
var filters = new Automation.DTO.FilterDTO(); | |
filters.JobGroups = groupManager.GetByUserID(AppSession.Current.User.UserId); | |
filters.JobStatuses = profileManager.GetJobStatuses(); | |
filters.LastResultStatuses = profileManager.GetJobResultTypes(); | |
filters.Transactions = profileManager.GetTransactionTypes(); | |
filters.JobGroupIds = AppSession.Current.Filter_JobGroupIds.ListOrNew(); | |
filters.JobStatusIds = AppSession.Current.Filter_JobStatusIds.ListOrNew(); | |
filters.LastResultStatusIds = AppSession.Current.Filter_JobLastResultStatusIds.ListOrNew(); | |
filters.TransactionIds = AppSession.Current.Filter_TransactionIds.ListOrNew(); | |
filters.JobProfileId = AppSession.Current.Filter_JobProfileId; | |
filters.AutomationBatchEndDate = AppSession.Current.Filter_AutomationBatchEndDate; | |
filters.AutomationBatchStartDate = AppSession.Current.Filter_AutomationBatchStartDate; | |
return Json(new {result = filters}, | |
JsonRequestBehavior.AllowGet); | |
} | |
} | |
} | |
// GET: /Filter/GetUserAutomationFilters | |
[HttpGet] | |
public JsonResult GetUserAutomationFilters() | |
{ | |
var filters = new AutomationFiltersDTO(); | |
filters.JobProfileId = AppSession.Current.Filter_JobProfileId; | |
filters.AutomationBatchEndDate = AppSession.Current.Filter_AutomationBatchEndDate; | |
filters.AutomationBatchStartDate = AppSession.Current.Filter_AutomationBatchStartDate; | |
filters.JobGroupIds = AppSession.Current.Filter_JobGroupIds.ListOrNew(); | |
filters.JobStatusIds = AppSession.Current.Filter_JobStatusIds.ListOrNew(); | |
filters.LastResultStatusIds = AppSession.Current.Filter_JobLastResultStatusIds.ListOrNew(); | |
filters.TransactionIds = AppSession.Current.Filter_TransactionIds.ListOrNew(); | |
return Json(new {result = filters}, | |
JsonRequestBehavior.AllowGet); | |
} | |
// POST: /Filter/SetUserAutomationFilters | |
[HttpPost] | |
public JsonResult SetUserAutomationFilters(AutomationFiltersDTO data) | |
{ | |
AppSession.Current.Filter_JobProfileId = data.JobProfileId; | |
AppSession.Current.Filter_AutomationBatchEndDate = data.AutomationBatchEndDate; | |
AppSession.Current.Filter_AutomationBatchStartDate = data.AutomationBatchStartDate; | |
AppSession.Current.Filter_JobGroupIds = data.JobGroupIds; | |
AppSession.Current.Filter_JobStatusIds = data.JobStatusIds; | |
AppSession.Current.Filter_JobLastResultStatusIds = data.LastResultStatusIds; | |
AppSession.Current.Filter_TransactionIds = data.TransactionIds; | |
return Json(data); | |
} | |
// POST: /Filter/ClearUserAutomationFilters | |
[HttpPost] | |
public JsonResult ClearUserAutomationFilters() | |
{ | |
AppSession.Current.Filter_JobProfileId = null; | |
AppSession.Current.Filter_AutomationBatchEndDate = null; | |
AppSession.Current.Filter_AutomationBatchStartDate = null; | |
AppSession.Current.Filter_JobGroupIds = new List<int>(); | |
AppSession.Current.Filter_JobStatusIds = new List<int>(); | |
AppSession.Current.Filter_JobLastResultStatusIds = new List<int>(); | |
AppSession.Current.Filter_TransactionIds = new List<int>(); | |
return Json(new AutomationFiltersDTO()); | |
} | |
#endregion Automation Filters | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment