public async Task <ActionResult> Index(Guid id, UpdateHistoryViewModel model, string command)
        {
            if (model.SelectedScreen == "date" && command == "search" && !ModelState.IsValid)
            {
                int screenId = 0;
                int.TryParse(model.SelectedScreen, out screenId);
                var screens = await mediator.SendAsync(new GetNotificationAuditScreens());

                var response = await mediator.SendAsync(new GetNotificationAuditTable(id, model.PageNumber, screenId, null, null));

                model.Screens            = screens.ToList();
                model.PageSize           = response.PageSize;
                model.UpdateHistoryItems = response.TableData.ToList();
                model.NumberOfFilterdNotificationAudits = response.NumberOfFilteredNotificationAudits;
                return(View(model));
            }

            if (model.SelectedScreen == "date" && command == "search")
            {
                DateTime startDate = new DateTime(model.StartYear.GetValueOrDefault(), model.StartMonth.GetValueOrDefault(), model.StartDay.GetValueOrDefault());
                DateTime endDate   = new DateTime(model.EndYear.GetValueOrDefault(), model.EndMonth.GetValueOrDefault(), model.EndDay.GetValueOrDefault());

                TempData["startDate"] = startDate;
                TempData["endDate"]   = endDate;

                return(RedirectToAction("Index", new { filter = model.SelectedScreen }));
            }

            return(RedirectToAction("Index", new { filter = model.SelectedScreen }));
        }
        public void StartDateIsAfterEndDate_ValidationError()
        {
            UpdateHistoryViewModel vm = this.CreateViewModel();

            vm.SetDates(DateTime.Now, DateTime.Now.AddDays(-1));

            var result = ValidateModel(vm);

            Assert.Equal(true, result.Count > 0);

            Assert.Collection(result, item => Assert.Contains(IndexResources.FromDateAfterToDate, item.ErrorMessage));
        }
        public void AddCorrectDateFilter_ValidationSuccess()
        {
            UpdateHistoryViewModel vm = this.CreateViewModel();

            vm.StartDay   = 1;
            vm.StartMonth = 1;
            vm.StartYear  = 2019;
            vm.EndDay     = 2;
            vm.EndMonth   = 1;
            vm.EndYear    = 2019;

            Assert.Equal(true, ValidateModel(vm).Count == 0);
        }
        public void CheckFilterList()
        {
            UpdateHistoryViewModel vm = this.CreateViewModel();

            foreach (var selectListItem in vm.FilterTerms.Where(p => p.Text != "Date" && p.Text != "View all"))
            {
                Assert.Equal(true, vm.Screens.Count(p => p.ScreenName == selectListItem.Text) > 0);
                Assert.Equal(true, vm.Screens.Count(p => p.Id == int.Parse(selectListItem.Value)) > 0);
            }

            Assert.Equal(true, vm.FilterTerms.Count(p => p.Text == "View all") > 0);
            Assert.Equal(true, vm.FilterTerms.Count(p => p.Text == "Date") > 0);
            Assert.Equal(true, vm.FilterTerms.Count(p => p.Value == string.Empty) == 1);
            Assert.Equal(true, vm.FilterTerms.Count(p => p.Value == "date") == 1);
        }
        public async Task <ActionResult> Index(Guid id, string filter, int page = 1)
        {
            DateTime startDate = new DateTime();
            DateTime endDate   = new DateTime();

            if (filter == "date" && TempData.ContainsKey("startDate") && TempData.ContainsKey("endDate"))
            {
                startDate = DateTime.Parse(TempData["startDate"].ToString());
                endDate   = DateTime.Parse(TempData["endDate"].ToString());

                TempData["startDate"] = filter == "date" ? startDate.ToString() : null;
                TempData["endDate"]   = filter == "date" ? endDate.ToString() : null;
            }
            else
            {
                startDate = DateTime.MinValue;
                endDate   = DateTime.MaxValue;
                TempData.Remove("startDate");
                TempData.Remove("endDate");
            }

            int screenId = 0;

            int.TryParse(filter, out screenId);
            var response = await mediator.SendAsync(new GetNotificationAuditTable(id, page, screenId, startDate, endDate));

            var screens = await mediator.SendAsync(new GetNotificationAuditScreens());

            var model = new UpdateHistoryViewModel(response, screens);

            model.NotificationId = id;

            model.SelectedScreen = filter;

            model.HasHistoryItems = model.NumberOfNotificationAudits == 0 ? false : true;

            model.SetDates(startDate, endDate);

            return(View(model));
        }
        public void AddEmptyDates_ValidationFailure()
        {
            UpdateHistoryViewModel vm = this.CreateViewModel();

            vm.StartDay   = null;
            vm.StartMonth = null;
            vm.StartYear  = null;
            vm.EndDay     = null;
            vm.EndMonth   = null;
            vm.EndYear    = null;

            var result = ValidateModel(vm);

            Assert.Equal(true, result.Count > 0);

            Assert.Collection(result,
                              item => Assert.Contains(IndexResources.DayError, item.ErrorMessage),
                              item => Assert.Contains(IndexResources.MonthError, item.ErrorMessage),
                              item => Assert.Contains(IndexResources.YearError, item.ErrorMessage),
                              item => Assert.Contains(IndexResources.DayError, item.ErrorMessage),
                              item => Assert.Contains(IndexResources.MonthError, item.ErrorMessage),
                              item => Assert.Contains(IndexResources.YearError, item.ErrorMessage));
        }