public async Task <IActionResult> Filtrate(FilterMessageDto data) { var messageSourse = await _messageOperationService.Filter(data); var count = messageSourse.Count(); var result = messageSourse.Skip((data.PageNumber - 1) * PAGE_SIZE).Take(PAGE_SIZE).ToList(); var user = await _userManager.FindByEmailAsync(User.Identity.Name); for (int i = 0; i < result.Count; i++) { if (result[i].UserId != null) { if (result[i].User == null) { result[i].User = await _userManager.FindByIdAsync(result[i].UserId.ToString()); } } } PageViewModel pageViewModel = new PageViewModel(count, data.PageNumber, PAGE_SIZE); TaskViewModel model = new TaskViewModel { Tasks = result, CurrentUser = user, PageViewModel = pageViewModel }; if (!string.IsNullOrEmpty(data.ReturnUrl)) { return(RedirectToAction(data.ReturnUrl.Split("/")[1], data.ReturnUrl.Split("/")[0], model)); } return(View("Index", model)); }
/// <summary> /// Фильтровать сообщение /// </summary> /// <param name="data"></param> /// <returns></returns> public async Task <IEnumerable <Message> > Filter(FilterMessageDto data) { IEnumerable <Message> messages = null; if (data.DateFilter != 0) { switch (data.DateFilter) { case DateFilter.All: messages = await messageService.GetAll(); break; case DateFilter.ThisMonth: messages = (await messageService.Find(message => message.CreatedAt.Month == DateTime.Now.Month && message.CreatedAt.Year == DateTime.Now.Year)); break; case DateFilter.ThisWeek: var startDate = DateTime.Now.AddDays(-(int)DateTime.Now.DayOfWeek - 1); var endDate = DateTime.Now.AddDays(7 - (int)DateTime.Now.DayOfWeek); messages = (await messageService.Find(message => message.CreatedAt.Month == DateTime.Now.Month && message.CreatedAt.Year == DateTime.Now.Year && message.CreatedAt.Day >= startDate.Day && message.CreatedAt.Day <= endDate.Day)); break; case DateFilter.ThisYear: messages = (await messageService.Find(message => message.CreatedAt.Year == DateTime.Now.Year)); break; case DateFilter.Today: messages = (await messageService.Find(message => message.CreatedAt.Day == DateTime.Now.Day && message.CreatedAt.Month == DateTime.Now.Month && message.CreatedAt.Year == DateTime.Now.Year)); break; case DateFilter.Yesterday: messages = (await messageService.Find(message => message.CreatedAt.Day == DateTime.Now.AddDays(1).Day&& message.CreatedAt.Month == DateTime.Now.Month && message.CreatedAt.Year == DateTime.Now.Year)); break; default: messages = await messageService.GetAll(); break; } } if (data.MessageType > 0 && (int)data.MessageType <= 3) { messages = await messageService.Find(message => message.Type == data.MessageType); } if ((int)data.MessageType > 3) { messages = await messageService.GetAll(); } if (data.Priority > 0 && (int)data.Priority <= 4) { messages = await messageService.Find(message => message.Priority == data.Priority); } if ((int)data.Priority > 4) { messages = await messageService.GetAll(); } return(messages); }