Example #1
0
        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);
        }