예제 #1
0
        public static void Run(
            [QueueTrigger("azure", Connection = "AzureWebJobsStorage")]
            string message,
            ILogger log)
        {
            try
            {
                RSDbContext             context          = new RSDbContext();
                IMapper                 _mapper          = AutoMapperConfig.MapperConfig().CreateMapper();
                IRecommenceHobbyService _hobbyService    = new RecommenceHobbyService(new UnitOfWork(context));
                ICategoryService        _categoryService = new CategoryService(new UnitOfWork(context));
                IUserService            _userService     = new UserService(new UnitOfWork(context));
                IProductService         _productService  = new ProductService(new UnitOfWork(context));

                var recommence = JsonSerializer.Deserialize <Recommence>(message);

                var result = _hobbyService.RecommenceByHobbyGetListProduct(recommence);
                var userId = recommence.UserId;

                //create new category if not exist
                foreach (var item in result)
                {
                    var categoryId = item.CategoryId;
                    if (_categoryService.CheckCategory(categoryId))
                    {
                        CreateCategoryViewModel newCate = new CreateCategoryViewModel();
                        newCate.Code = categoryId;
                        _categoryService.Create(_mapper.Map <Category>(newCate));
                    }
                }

                //create products if not exist
                var products = _mapper.Map <IEnumerable <CreateProductViewModel> >(result)
                               .Select(x => _productService.Create(_mapper.Map <Product>(x)));

                //create new user if not exist
                CreateUserViewModel newUser = new CreateUserViewModel();
                newUser.Code = userId;
                _userService.Create(_mapper.Map <User>(newUser));

                //select list products'code
                IEnumerable <string> listCode = result.Select(x => x.Code);

                //create RecommenceHobbyModel to save database
                CreateRecommenceByHobbyViewModel hobbyViewModel = new CreateRecommenceByHobbyViewModel();
                var list = _mapper.Map <IEnumerable <ProductViewModel> >(products);
                hobbyViewModel.ProductRecommenceHobbies = list;
                hobbyViewModel.UserId = userId;
                var a = _mapper.Map <RecommenceHobby>(hobbyViewModel);
                _hobbyService.LoadAndUpdate(a);

///--------------------------------------------------------------------
///
            }
            catch (Exception ex)
            {
                log.LogError(ex.Message);
                throw;
            }
        }
        public ActionResult <IList <string> > LoadAndUpdate(Recommence recommence)
        {
            var result = _hobbyService.RecommenceByHobbyGetListProduct(recommence);
            var userId = recommence.UserId;

            //create new category if not exist
            foreach (var item in result)
            {
                var categoryId = item.CategoryId;
                if (_categoryService.CheckCategory(categoryId))
                {
                    CreateCategoryViewModel newCate = new CreateCategoryViewModel();
                    newCate.Code = categoryId;
                    _categoryService.Create(_mapper.Map <Category>(newCate));
                }
            }

            //create products if not exist
            var products = _mapper.Map <IEnumerable <CreateProductViewModel> >(result)
                           .Select(x => _productService.Create(_mapper.Map <Product>(x)));

            //create new user if not exist
            CreateUserViewModel newUser = new CreateUserViewModel();

            newUser.Code = userId;
            _userService.Create(_mapper.Map <User>(newUser));

            //select list products'code
            IEnumerable <string> listCode = result.Select(x => x.Code);

            //create new model to store database
            CreateRecommenceByHobbyViewModel hobbyViewModel = new CreateRecommenceByHobbyViewModel();
            var list = _mapper.Map <IEnumerable <ProductViewModel> >(products);

            hobbyViewModel.ProductRecommenceHobbies = list;
            hobbyViewModel.UserId = userId;

            //create RecommenceHobbyModel to save database
            var a = _mapper.Map <RecommenceHobby>(hobbyViewModel);

            _hobbyService.LoadAndUpdate(a);
            //----------------------
            //RecommenceByPriceService


            //get listproducts from model
            var listProducts = _priceService.RecommendByPriceAvarageGetListProducts(recommence);


            //check and new category if not exist
            foreach (var item in listProducts)
            {
                if (_categoryService.CheckCategory(item.CategoryId) == false)
                {
                    CreateCategoryViewModel newModel = new CreateCategoryViewModel();
                    newModel.Code = item.CategoryId;
                    _categoryService.Create(_mapper.Map <Category>(newModel));
                }
            }
            //check and create new product if not existed
            var productPrices = _mapper.Map <IEnumerable <CreateProductViewModel> >(listProducts)
                                .Select(x => _productService.Create(_mapper.Map <Product>(x)));


            //new model to store database
            CreateRecommenceByPriceViewModel priceViewModel = new CreateRecommenceByPriceViewModel();
            var listp = _mapper.Map <IEnumerable <ProductViewModel> >(productPrices);

            priceViewModel.ProductRecommencePrices = listp;
            priceViewModel.UserId = userId;

            //create new model or update to savechanges
            var b = _mapper.Map <RecommencePrice>(priceViewModel);

            _priceService.LoadAndUpdate(b);

            return(Ok());
        }