public void Index_SyncRequest_RetrievesPageInfoPropertyFromModel()
        {
            Mock <BusinessTripService> mock = new Mock <BusinessTripService>();

            mock.Setup(m => m.PageInfo).Returns(new PageInfo()
            {
                TotalItems = 9, PageSize = 3, PageNumber = 3
            });
            BusinessTripController controller = GetNewBusinessTripControllerWithControllerContext(mock.Object, null);

            ViewResult result = controller.Index(null, null) as ViewResult;

            BusinessTripListViewModel model = result.ViewData.Model as BusinessTripListViewModel;

            Assert.AreEqual(9, model.PageInfo.TotalItems);
            Assert.AreEqual(3, model.PageInfo.PageSize);
            Assert.AreEqual(3, model.PageInfo.PageNumber);
            Assert.AreEqual(3, model.PageInfo.TotalPages);
        }
        public void Index_SyncRequest_RetrievesBusinessTripsPropertyFromModel()
        {
            Mock <BusinessTripService> mock = new Mock <BusinessTripService>();

            mock.Setup(m => m.GetPage(It.IsAny <IEnumerable <BusinessTripDTO> >(), It.IsAny <int>())).Returns(new BusinessTripDTO[] {
                new BusinessTripDTO {
                    Id   = 1,
                    Name = "02.09.2018_026"
                }
            });
            BusinessTripController controller = GetNewBusinessTripControllerWithControllerContext(mock.Object, null);

            ViewResult result = controller.Index(null, null) as ViewResult;

            BusinessTripListViewModel model = result.ViewData.Model as BusinessTripListViewModel;

            Assert.AreEqual(1, model.BusinessTrips.Count());
            Assert.AreEqual(1, model.BusinessTrips.FirstOrDefault().Id);
            Assert.AreEqual("02.09.2018_026", model.BusinessTrips.FirstOrDefault().Name);
        }
        public ActionResult Index(BusinessTripFilter filter, string filterAsJsonString, int page = 1)
        {
            if (filterAsJsonString != null)
            {
                filter = System.Web.Helpers.Json.Decode <BusinessTripFilter>(filterAsJsonString);
            }
            IEnumerable <BusinessTripDTO> btDto = (_businessTripService as BusinessTripService).Get(filter); // Filter

            btDto = _businessTripService.GetPage(btDto, page);                                               // Paging
            Mapper.Initialize(cfg => cfg.CreateMap <BusinessTripDTO, BusinessTripViewModel>()
                              .ForMember(bt => bt.Employees, opt => opt.Ignore()));
            IEnumerable <BusinessTripViewModel> businessTrips = Mapper.Map <IEnumerable <BusinessTripDTO>, IEnumerable <BusinessTripViewModel> >(btDto);
            BusinessTripListViewModel           model         = new BusinessTripListViewModel {
                BusinessTrips = businessTrips,
                Filter        = filter,
                PageInfo      = _businessTripService.PageInfo
            };

            if (Request.Headers["X-Requested-With"] == "XMLHttpRequest")
            {
                _logger.Info("Executed async request");
                var transformModel = new {
                    BusinessTrips = model.BusinessTrips.Select(bt => new {
                        bt.Id,
                        Code      = bt.Name,
                        DateStart = bt.DateStart.ToString("dd MMMM yyyy"),
                        DateEnd   = bt.DateEnd.ToString("dd MMMM yyyy"),
                        bt.Destination
                    }).ToArray(),
                    model.Filter,
                    model.PageInfo
                };
                return(Json(transformModel, JsonRequestBehavior.AllowGet));
            }
            _logger.Info("Executed sync request");
            return(View("Index", model));
        }