private List <VehicleGlassShortResponseModel> FindProductsByVehicleInfo(VehicleGlassRequestModel requestModel)
        {
            var vehicle       = _vehicles.GetVehicleByMakeModelAndBodyTypeIds(requestModel.MakeId, requestModel.ModelId, requestModel.BodyTypeId);
            var glassesResult = new List <VehicleGlassShortResponseModel>();

            var applicableGlasses = !string.IsNullOrEmpty(requestModel.ProductType)
                ? _vehicles.GetApplicableGLassesByProductType(vehicle, requestModel.ProductType)
                : _vehicles.GetApplicableGLasses(vehicle);

            if (applicableGlasses != null)
            {
                User user = null;
                if (User.Identity.IsAuthenticated)
                {
                    user = _users.GetByEmail(User.Identity.Name);
                }

                foreach (var glass in applicableGlasses)
                {
                    var glassToAdd = Mapper.Map <VehicleGlassShortResponseModel>(glass);
                    glassToAdd.ProductInfos = GetProductInfos(glass, user);

                    glassesResult.Add(glassToAdd);
                }
            }

            return(glassesResult);
        }
Пример #2
0
        public void GetProductTypes_ShouldReturnProductsWithouRepeatables()
        {
            mapper.Execute();

            VehicleGlassRequestModel request = new VehicleGlassRequestModel()
            {
                MakeId = 1
            };
            Vehicle vehicle = new Vehicle()
            {
                MakeId = 1
            };
            var glasses = new List <VehicleGlass>()
            {
                new VehicleGlass()
                {
                    Position = "WS"
                },
                new VehicleGlass()
                {
                    Position = "WS"
                },
                new VehicleGlass()
                {
                    Position = "WS"
                },
                new VehicleGlass()
                {
                    Position = "BL"
                },
                new VehicleGlass()
                {
                    Position = "BL"
                },
                new VehicleGlass()
                {
                    Position = "LQF"
                }
            }.AsQueryable();

            var vehiclesMock = new Mock <IVehiclesService>();

            vehiclesMock.Setup(x => x.GetVehicleByMakeModelAndBodyTypeIds(request.MakeId, null, null)).Returns(vehicle);
            vehiclesMock.Setup(x => x.GetApplicableGLasses(vehicle)).Returns(glasses);

            var controller = new ProductsController(null, vehiclesMock.Object, null, null, null, null);
            var result     = controller.GetPositions(request);

            Assert.IsInstanceOfType(result, typeof(OkNegotiatedContentResult <List <string> >));
            var responseContent = ((OkNegotiatedContentResult <List <string> >)result).Content;

            Assert.AreEqual(responseContent.ToList().Count, 3);
            Assert.AreEqual(responseContent[0], "WS");
            Assert.AreEqual(responseContent[1], "BL");
            Assert.AreEqual(responseContent[2], "LQF");

            vehiclesMock.VerifyAll();
        }
Пример #3
0
        public void FindByVehicleInfo_ShouldReturnCorrectProducts()
        {
            mapper.Execute();

            string testProductType           = "windscreen";
            VehicleGlassRequestModel request = new VehicleGlassRequestModel()
            {
                MakeId = 1, ProductType = testProductType
            };
            Vehicle vehicle = new Vehicle()
            {
                MakeId = 1
            };
            var glasses = new List <VehicleGlass>()
            {
                new VehicleGlass()
                {
                    Id = 1
                },
                new VehicleGlass()
                {
                    Id = 2
                },
                new VehicleGlass()
                {
                    Id = 3
                }
            }.AsQueryable();

            var vehiclesMock = new Mock <IVehiclesService>();

            vehiclesMock.Setup(x => x.GetVehicleByMakeModelAndBodyTypeIds(request.MakeId, null, null)).Returns(vehicle);
            vehiclesMock.Setup(x => x.GetApplicableGLassesByProductType(vehicle, testProductType)).Returns(glasses);

            var controller = new ProductsController(null, vehiclesMock.Object, null, null, null, null);
            var result     = controller.FindByVehicleInfo(request);

            Assert.IsInstanceOfType(result, typeof(OkNegotiatedContentResult <List <VehicleGlassShortResponseModel> >));
            var responseContent = ((OkNegotiatedContentResult <List <VehicleGlassShortResponseModel> >)result).Content;

            Assert.AreEqual(responseContent.ToList().Count, 3);
            Assert.AreEqual(responseContent[0].Id, 1);
            Assert.AreEqual(responseContent[1].Id, 2);
            Assert.AreEqual(responseContent[2].Id, 3);

            vehiclesMock.VerifyAll();
            vehiclesMock.Verify(x => x.GetApplicableGLasses(It.IsAny <Vehicle>()), Times.Never);
        }
        public IHttpActionResult GetPositions(VehicleGlassRequestModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                var positions = FindProductsByVehicleInfo(model).Select(x => x.Position).Distinct();
                return(Ok(positions));
            }
            catch (Exception e)
            {
                HandlExceptionLogging(e, "", _controllerName);
                return(InternalServerError());
            }
        }
        public IHttpActionResult FindByVehicleInfo(VehicleGlassRequestModel requestModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                var glasses = FindProductsByVehicleInfo(requestModel);

                return(Ok(glasses.ToList()));
            }
            catch (Exception e)
            {
                HandlExceptionLogging(e, "", _controllerName);
                return(InternalServerError());
            }
        }