Пример #1
0
        public HomeViewModel AutoMappingHomeViewModel()
        {
            var model = new HomeViewModel();

            model.ListOfProducts   = new List <ProductViewModel>();
            model.ListOfCategories = new List <CategoryOverviewViewModel>();

            //Setup automapping
            var mapperOne = mapextension.ProductToProductviewmodel();
            var mapperSO  = mapextension.SpecialOfferToProductviewmodel();

            //For every product in system
            foreach (var singleProduct in productRepo.RetrieveAllProducts())
            {
                singleProduct.ProductCategories = categoryRepo.RetrieveCategoriesFromProduct(singleProduct);
                ProductViewModel pmodel = new ProductViewModel();
                pmodel.IsSpecialOffer = singleProduct.RetrieveSpecialOffer();

                //Check if product is specialoffer
                if (singleProduct is SpecialOffer)
                {
                    pmodel = mapperSO.Map <ProductViewModel>(singleProduct);
                }
                else
                {
                    pmodel = mapperOne.Map <ProductViewModel>(singleProduct);
                }

                //Filling categories for specific product
                foreach (Category c in categoryRepo.RetrieveCategoriesFromProduct(singleProduct))
                {
                    //Set up automapping
                    var mapperTwo = mapextension.CategoryToCategoryOverviewViewModel();
                    CategoryOverviewViewModel m = mapperTwo.Map <CategoryOverviewViewModel>(c);
                    pmodel.ProductCategories.Add(m);
                }

                model.ListOfProducts.Add(pmodel);
            }

            foreach (Category c in categoryRepo.RetrieveAllCategories())
            {
                //Set up automapping
                var mapperTwo = mapextension.CategoryToCategoryOverviewViewModel();
                CategoryOverviewViewModel m = mapperTwo.Map <CategoryOverviewViewModel>(c);
                model.ListOfCategories.Add(m);
            }

            foreach (Post p in postRepo.RetrieveAllPosts())
            {
                //Set up automapping
                var           mapperThree = mapextension.PostToPostViewModel();
                PostViewModel pmodel      = mapperThree.Map <PostViewModel>(p);
                model.PostsInSystem.Add(pmodel);
            }

            //Get currently logged in user
            var loggedInUser = HttpContext.Session.GetObjectFromJson <UserViewModel>("ComplexObject");

            model.UserLoggedIn = loggedInUser;

            return(model);
        }