public CollectionResult <UserCarDto> GetCars(FilterUserCar filter, string currentUserId)
        {
            UserManager.IsUserInRegularRole(currentUserId);

            if (filter == null)
            {
                filter = new FilterUserCar
                {
                    ItemsPerPage = Common.Constants.FilterConstants.DefaultItemsPerPage,
                    CurrentPage  = Common.Constants.FilterConstants.DefaultCurrentPage
                };
            }

            var result = Paginate(filter.CurrentPage, filter.ItemsPerPage, BuildQueryForCars(currentUserId, filter), out var itemsCount)
                         .ToList()
                         .Select(Mapper.Map <UserCarDto>)
                         .ToList();

            return(new CollectionResult <UserCarDto>
            {
                CurrentPage = filter.CurrentPage,
                ItemsPerPage = filter.ItemsPerPage,
                Items = result,
                ItemsCount = itemsCount
            });
        }
        public void GetCars_Must_Return_Info_For_User_Cars(bool showDeleted)
        {
            //Arrange
            var cars = new List <UserCar>
            {
                UserCarUtils.Create(1, "Test1", "TestModel1", "TestMark1", "1"),
                UserCarUtils.Create(2, "Test2", "TestModel2", "TestMark2", "1"),
                UserCarUtils.Create(3, "Test3", "TestModel3", "TestMark3", "1", true),
                UserCarUtils.Create(4, "Test4", "TestModel4", "TestMark4", "1", true)
            };

            var filter = new FilterUserCar
            {
                CurrentPage  = 1,
                ItemsPerPage = 10
            };

            var user = new ApplicationUser
            {
                Id          = "1",
                UserProfile = new UserProfile
                {
                    Cars = cars
                }
            };

            _userManagerMock.Setup(act => act.IsUserInRegularRole(user.Id));
            _userManagerMock.Setup(act => act.CheckAndGet(user.Id)).Returns(user);

            //Act
            var result = _manager.GetCars(filter, user.Id);

            //Assert
            Assert.AreEqual(result.ItemsCount, 2);
            if (!showDeleted)
            {
                Assert.AreEqual(cars[0].Name, result.Items.ElementAt(0).Name);
                Assert.AreEqual(cars[1].Name, result.Items.ElementAt(1).Name);
                Assert.AreEqual(cars[0].Model.Name, result.Items.ElementAt(0).Model);
                Assert.AreEqual(cars[1].Model.Mark.Name, result.Items.ElementAt(1).Mark);
            }
            else
            {
                Assert.AreEqual(cars[2].Name, result.Items.ElementAt(0).Name);
                Assert.AreEqual(cars[3].Name, result.Items.ElementAt(1).Name);
                Assert.AreEqual(cars[2].Model.Name, result.Items.ElementAt(0).Model);
                Assert.AreEqual(cars[3].Model.Mark.Name, result.Items.ElementAt(1).Mark);
            }
        }
        private IQueryable <UserCar> BuildQueryForCars(string userId, FilterUserCar filter)
        {
            var query = UnitOfWork.Repository <IUserCarRepository>()
                        .GetAll(true)
                        .Include(car => car.Model)
                        .Include(car => car.Model.Mark)
                        .Where(car => car.User.ApplicationUser.Id == userId);

            if (!filter.IsDeleted)
            {
                query = query.Where(car => !car.IsDeleted);
            }

            return(query.OrderByDescending(car => car.Created));
        }
Example #4
0
 public IHttpActionResult GetCar(FilterUserCar filter)
 {
     return(CallBusinessLogicActionWithResult(() => _manager.GetCars(filter, User.Identity.GetUserId())));
 }