Ejemplo n.º 1
0
        //public async Task<ApiResult<PageResult<ProductViewModel>>> GetAllByCategoryId(string languageId, GetPublicProductPagingRequest request)
        //{
        //    var query = from p in _context.Products
        //                join pt in _context.ProductTranslations on p.Id equals pt.ProductId into ppt
        //                from pt in ppt.DefaultIfEmpty()
        //                where (pt.LanguageId == languageId || pt == null)
        //                join pic in _context.ProductInCategories on p.Id equals pic.ProductId
        //                join c in _context.Categories on pic.CategoryId equals c.Id

        //                select new { p, pt, pic };

        //    if (request.CategoryId.HasValue && request.CategoryId.Value > 0)
        //    {
        //        query = query.Where(p => p.pic.CategoryId == request.CategoryId);
        //    }
        //    int totalRow = await query.CountAsync();
        //    var data = query.Skip((request.PageIndex - 1) * request.PageSize).Take(request.PageSize)
        //        .Select(x => new ProductViewModel()
        //        {
        //            Price = x.p.Price,
        //            OriginalPrice = x.p.OriginalPrice,
        //            Stock = x.p.Stock,
        //            ViewCount = x.p.ViewCount,
        //            DateCreated = x.p.DateCreated,
        //            ProductId = x.p.Id,
        //            Name = x.pt.Name == null ? SystemConstants.NotAvailable : x.pt.Name,
        //            Description = x.pt.Description== null ? SystemConstants.NotAvailable : x.pt.Description,
        //            Details = x.pt.Details== null ? SystemConstants.NotAvailable : x.pt.Details,
        //            SeoDescription = x.pt.SeoDescription== null ? SystemConstants.NotAvailable : x.pt.SeoDescription,
        //            SeoTitle =x.pt.SeoTitle== null ? SystemConstants.NotAvailable : x.pt.SeoTitle,
        //            SeoAlias = x.pt.SeoAlias== null ? SystemConstants.NotAvailable : x.pt.SeoAlias
        //        });
        //    var pageResult = new PageResult<ProductViewModel>()
        //    {
        //        Item = (List<ProductViewModel>)data,
        //        TotalRecord = totalRow,
        //        PageIndex = request.PageIndex,
        //        PageSize = request.PageSize
        //    };

        //    return new ApiSuccessResult<PageResult<ProductViewModel>>(pageResult);
        //}

        public async Task <ApiResult <bool> > CategoryAssign(CategoryAssignRequest request)
        {
            if (!(await _context.Products.AnyAsync(x => x.Id == request.Id)))
            {
                return(new ApiErrorResult <bool>("Id sản phẩm không tồn tại "));
            }

            foreach (SelectedItem category in request.Categories)
            {
                var productInCategory = _context.ProductInCategories.SingleOrDefault(x =>
                                                                                     x.ProductId == request.Id && x.CategoryId == Int32.Parse(category.Id));

                if (category.Selected == false)
                {
                    if (productInCategory != null)
                    {
                        _context.ProductInCategories.Remove(productInCategory);
                    }
                }
                else
                {
                    if (productInCategory == null)
                    {
                        await _context.ProductInCategories.AddAsync(new ProductInCategory()
                        {
                            ProductId  = request.Id,
                            CategoryId = Int32.Parse(category.Id)
                        });
                    }
                }
            }
            await _context.SaveChangesAsync();

            return(new ApiSuccessResult <bool>());
        }
Ejemplo n.º 2
0
        public async Task <ApiResult <bool> > AssignCategory(int Id, CategoryAssignRequest request)
        {
            var product = await _context.ProductRepository.GetByIDAsync(Id);

            if (product == null)
            {
                return(new ApiErrorResult <bool>("Sản phẩm không tồn tại"));
            }
            // remove category if doesnt check from request
            var categoriesList = request.Categories.ToList();

            foreach (var category in categoriesList)
            {
                var productInCategory = await _context.ProductInCategoryRepository.FirstOrDefaultAsync(x => x.ProductId == Id && x.CategoryId == int.Parse(category.Id));

                if (productInCategory != null && category.Selected == false)
                {
                    _context.ProductInCategoryRepository.Delete(productInCategory);
                }
                else if (productInCategory == null && category.Selected)
                {
                    _context.ProductInCategoryRepository.Add(new ProductInCategory()
                    {
                        ProductId  = Id,
                        CategoryId = int.Parse(category.Id)
                    });
                }
            }

            await _context.SaveChangesAsync();

            return(new ApiSuccessResult <bool>());
        }
Ejemplo n.º 3
0
        public async Task <ApiResult <bool> > CategoryAssisgn(int productId, CategoryAssignRequest request)
        {
            var product = await _context.Products.FindAsync(productId);

            if (product == null)
            {
                throw new eShopException($"Cannot find a product: {productId}");
            }

            foreach (var category in request.Categories)
            {
                var productInCategory = await _context.ProductInCategories.FirstOrDefaultAsync(x => x.ProductId == productId && x.CategoryId == int.Parse(category.Id));

                if (productInCategory != null && category.Selected == false)     //Kiem tra nếu product đang được gán category, category ko duoc chon
                {
                    _context.ProductInCategories.Remove(productInCategory);      // thì bỏ gán
                }
                else if (productInCategory == null && category.Selected == true) //Kiem tra nếu product đang chưa được gán category,
                {
                    productInCategory = new ProductInCategory()
                    {
                        ProductId  = productId,
                        CategoryId = int.Parse(category.Id)
                    };
                    _context.ProductInCategories.Add(productInCategory);  //thì gán vào
                }
            }

            await _context.SaveChangesAsync();

            return(new ApiResultSuccess <bool>());
        }
Ejemplo n.º 4
0
        public async Task <ApiResult <bool> > CategoryAssign(int id, CategoryAssignRequest request)
        {
            // lấy user
            var user = await _context.Products.FindAsync(id); // tìm thoe id mà gặp phát lấy ra luân rồi không tìm tiếp  // co nghĩa là chỉ 1

            if (user == null)                                 // nếu user không tồn tại
            {
                return(new ApiErrorResult <bool>($"sản phẩm với id {id} không tồn tại"));
            }
            foreach (var category in request.Categories)
            {
                var productInCategory = await _context.ProductInCategories.FirstOrDefaultAsync(x =>
                                                                                               x.CategoryId == int.Parse(category.Id) &&
                                                                                               x.ProductId == id);

                if (productInCategory != null && category.Selected == false)
                {
                    _context.ProductInCategories.Remove(productInCategory);
                }
                else if (productInCategory == null && category.Selected)
                {
                    await _context.ProductInCategories.AddAsync(new ProductInCategory()
                    {
                        CategoryId = int.Parse(category.Id),
                        ProductId  = id
                    }); // ở đay là add từng role nên không có s nhe
                }
            }
            await _context.SaveChangesAsync();

            return(new ApiSuccessResult <bool>());
        }
Ejemplo n.º 5
0
        private async Task <CategoryAssignRequest> GetCategoryAssignRequest(int id)
        {
            var languageId = HttpContext.Session.GetString(SystemConstants.AppSettings.DefaultLanguageId);

            ProductVm productObj = null;

            if (id > 0)
            {
                productObj = await _productApiClient.GetById(id, languageId);
            }
            var categories = await _categoryApiClient.GetAll(languageId);

            var categoryAssignRequest = new CategoryAssignRequest();

            foreach (var role in categories)
            {
                categoryAssignRequest.Categories.Add(new SelectItem()
                {
                    Id       = role.Id.ToString(),
                    Name     = role.Name,
                    Selected = productObj != null && productObj.Categories.Contains(role.Name)
                });
            }
            return(categoryAssignRequest);
        }
Ejemplo n.º 6
0
        private async Task <CategoryAssignRequest> GetCategoryAssignRequest(int id)
        {
            var languageId = HttpContext.Session.GetString(SystemConstants.AppSettings.DefaultLanguageId);

            var productObj = await _productApiClient.GetById(id, languageId);

            // chúng ta phải lấy ra được danh sách role
            var categories = await _categoryApiClient.GetAll(languageId);  // trả về một danh sách ApiResult<List<RoleVm>> ,ta đưa vào list<RoleVm> nên thằng ResultObj sẽ là list<RoleVm>

            var categoryAssignRequest = new CategoryAssignRequest();

            foreach (var category in categories.ResultObj)  // ResultObj nằm trong ApiResult
            {
                categoryAssignRequest.Categories.Add(new SelectItem()
                {
                    Id       = category.Id.ToString(),
                    Name     = category.Name,
                    Selected = productObj.Categories.Contains(category.Name) // Contains xem nó có chứa Name của role không,nếu có nó sẽ là true không là false
                });
            }

            categoryAssignRequest.Id = id;

            return(categoryAssignRequest);
        }
Ejemplo n.º 7
0
        public async Task <ApiResult <bool> > CategoryAssign(int id, CategoryAssignRequest request)
        {
            var user = await _context.Products.FindAsync(id);

            if (user == null)
            {
                return(new ApiErrorResult <bool>($"Sản phẩm với id {id} không tồn tại"));
            }
            foreach (var category in request.Categories)
            {
                var productInCategory = await _context.ProductInCategories
                                        .FirstOrDefaultAsync(x => x.CategoryId == int.Parse(category.Id) &&
                                                             x.ProductId == id);

                if (productInCategory != null && category.Selected == false)
                {
                    _context.ProductInCategories.Remove(productInCategory);
                }
                else if (productInCategory == null && category.Selected)
                {
                    await _context.ProductInCategories.AddAsync(new ProductInCategory()
                    {
                        CategoryId = int.Parse(category.Id),
                        ProductId  = id
                    });
                }
            }
            await _context.SaveChangesAsync();

            return(new ApiSuccessResult <bool>());
        }
Ejemplo n.º 8
0
        public async Task <IActionResult> CategoryAssign(int id, [FromBody] CategoryAssignRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var result = await _ProductService.CategoryAssign(id, request);

            if (!result.IsSuccessed)
            {
                return(BadRequest(result));
            }
            return(Ok(result));
        }
Ejemplo n.º 9
0
        [HttpPut("{id}/categories")]        //Lay id tren URL
        public async Task <IActionResult> CategoryAssign(int id, [FromBody] CategoryAssignRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var result = await _productService.CategoryAssisgn(id, request);

            if (!result.IsSuccessed)
            {
                return(BadRequest(result));
            }
            return(Ok(result)); //Tra ve doi tuong de phia client xem xet
        }
Ejemplo n.º 10
0
 public async Task<IActionResult> CategoryAssign(CategoryAssignRequest request)
 {
     if (!ModelState.IsValid)
     {
         return View(request);
     }
     var result = await _productApiClient.CategoryAssign(request.Id, request);
     if (result.IsSuccessed)
     {
         TempData["Result"] = "Cập nhập danh mục thành công";
         return RedirectToAction("Index", "Product");
     }
     ModelState.AddModelError("", result.Message);
     var categoryAssignRequest = await GetCategoryAssignRequest(request.Id);
     return View(categoryAssignRequest);
 }
Ejemplo n.º 11
0
        private async Task<CategoryAssignRequest> GetCategoryAssignRequest(int id)
        {
            string languageId = GetLanguageId();
            var productViewModel = (await _productApiClient.GetById(id, languageId)).ResultObj;
            var categories = (await _categoryApiClient.GetAll(languageId));
            var categoryAssignRequest = new CategoryAssignRequest();

            foreach (var category in categories)
            {
                categoryAssignRequest.Categories.Add(new SelectedItem()
                {
                    Id = category.Id.ToString(),
                    Name = category.Name,
                    Selected = productViewModel.Categories.Contains(category.Name)
                });
            }
            return categoryAssignRequest;
        }
Ejemplo n.º 12
0
        public async Task <IActionResult> CategoryAssign(CategoryAssignRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var result = await _productApiClient.CategoryAssignForProduct(request.Id, request);

            if (result != null && result.IsSuccessed)
            {
                TempData["result"] = "Gán danh mục sản phẩm thành công";
                return(RedirectToAction("Index")); //Neu update thanh cong thì Redirect
            }
            ModelState.AddModelError("", result.Message);
            var roleAssignRequest = await GetCategoryAssignRequest(request.Id);

            return(View(roleAssignRequest)); //Neu không thành công thì trả về View với request để user sửa
        }
Ejemplo n.º 13
0
        public async Task <IActionResult> CategoryAssign(CategoryAssignRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }
            var result = await _productApiClient.CategoryAssign(request.Id, request);

            if (result.IsSuccessed)
            {
                //TempData["result"] = "Cập nhập danh mục thành công";
                _notyf.Success("Cập nhập danh mục thành công");
                return(RedirectToAction("Index"));
            }
            ModelState.AddModelError("", result.Message);//key and message
            var roleAssignRequest = await GetCategoryAssignRequest(request.Id);

            return(View(roleAssignRequest));
        }
Ejemplo n.º 14
0
        public async Task <IActionResult> AssignCategory(CategoryAssignRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }
            var result = await _productApiClient.AssginCategory(request.Id, request);

            if (result.IsSuccessed)
            {
                TempData["success"] = "Gán danh mục thành thành công";
                return(RedirectToAction("Index"));
            }

            ModelState.AddModelError("", result.Message);
            var categoryAssignRequest = await GetCategoryAssignRequest(request.Id);

            return(View(categoryAssignRequest));
        }
Ejemplo n.º 15
0
        private async Task <CategoryAssignRequest> GetCategoryAssignRequest(int id)
        {
            var productObj = await _productApiClient.GetById(id);

            var categories = await _categoryApiClient.GetAll();

            var categoryAssignRequest = new CategoryAssignRequest();

            foreach (var role in categories)
            {
                categoryAssignRequest.Categories.Add(new SelectItem()
                {
                    Id       = role.Id.ToString(),
                    Name     = role.Name,
                    Selected = productObj.Categories.Contains(role.Name)
                });
            }
            return(categoryAssignRequest);
        }
Ejemplo n.º 16
0
        public async Task <ApiResult <bool> > AssginCategory(int Id, CategoryAssignRequest request)
        {
            var jsonRequest  = JsonConvert.SerializeObject(request);
            var httpContent  = new StringContent(jsonRequest, Encoding.UTF8, "application/json");
            var client       = _httpClientFactory.CreateClient();
            var sessionToken = _httpContextAccessor.HttpContext.Session.GetString("Token");

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", sessionToken);

            client.BaseAddress = new Uri(_configuration["BaseAddress"]);
            using var response = await client.PutAsync($"/api/products/{Id}/categories", httpContent);

            var result = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <ApiSuccessResult <bool> >(result));
            }

            return(JsonConvert.DeserializeObject <ApiErrorResult <bool> >(result));
        }
Ejemplo n.º 17
0
        private async Task <CategoryAssignRequest> GetCategoryAssignRequest(int id)
        {
            var languageId = HttpContext.Session.GetString(SystemConstants.AppSettings.DefaultLanguageId);

            var productObj = await _productApiClient.GetById(id, languageId); //tim product

            var categories = await _categoryApiClient.GetAll(languageId);     //tim danh sách category có trong hệ thống

            var categoryAssignRequest = new CategoryAssignRequest();

            foreach (var category in categories)
            {
                categoryAssignRequest.Categories.Add(new SelectItem()        //Nhờ Roles được new khi khai báo thuộc tính nên khi Add vào không bị Add vào danh sách null
                {
                    Id       = category.Id.ToString(),
                    Name     = category.Name,
                    Selected = productObj.Categories.Contains(category.Name) //Neu user đang được assign role này thì Selected = true
                });
            }
            return(categoryAssignRequest);
        }
Ejemplo n.º 18
0
        public async Task <IActionResult> CategoryAssign(CategoryAssignRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var result = await _productApiClient.CategoryAssign(request.Id, request);

            if (result.IsSuccessed)
            {
                TempData["result"] = "Cập nhập danh mục thành công"; //có key là result
                return(RedirectToAction("Index"));
            }

            ModelState.AddModelError("", result.Message);                       // đây là lỗi của Model này

            var roleAssignRequest = await GetCategoryAssignRequest(request.Id); // nếu trong trường hợp bị false nó vẫn lấy được về

            return(View(roleAssignRequest));
        }
Ejemplo n.º 19
0
        private async Task <CategoryAssignRequest> GetCategoryAssignRequest(int productId)
        {
            var currentLang = _httpContextAccessor.HttpContext.Session.GetString(SystemConstant.AppSettings.DefaultLanguageId);
            var product     = await _productApiClient.GetById(productId, currentLang);

            var categoryList = await _categoryApiClient.GetAll(currentLang);

            var categoryAssignRequest = new CategoryAssignRequest();

            if (categoryList != null || product != null)
            {
                foreach (var category in categoryList)
                {
                    categoryAssignRequest.Categories.Add(new SelectedItem()
                    {
                        Id       = category.Id.ToString(),
                        Name     = category.Name,
                        Selected = product.Categories.Contains(category.Name)
                    });
                }
            }
            return(categoryAssignRequest);
        }
Ejemplo n.º 20
0
        public async Task <ApiResult <bool> > CategoryAssignForProduct(int id, CategoryAssignRequest request)
        {
            var client = _httpClientFactory.CreateClient();

            client.BaseAddress = new Uri(_configuration["BaseAddress"]);
            var sessions = _httpContextAccessor.HttpContext.Session.GetString("Token");

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", sessions); //Gán Token vào Thuộc tính Authorization của RequestHeader

            var json        = JsonConvert.SerializeObject(request);                                         //Chuyển request thành dạng json
            var httpContent = new StringContent(json, Encoding.UTF8, "application/json");

            var response = await client.PutAsync($"/api/products/{id}/categories", httpContent);

            var result = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <ApiResultSuccess <bool> >(result));
            }

            return(JsonConvert.DeserializeObject <ApiResultError <bool> >(result));
        }
Ejemplo n.º 21
0
        public async Task <ApiResult <bool> > CategoryAssign(int id, CategoryAssignRequest request)
        {
            var client = _httpClientFactory.CreateClient();

            client.BaseAddress = new Uri(_configuration["BaseAddress"]);
            var sessions = _httpContextAccessor.HttpContext.Session.GetString("Token");

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", sessions);

            var json        = JsonConvert.SerializeObject(request);
            var httpContent = new StringContent(json, Encoding.UTF8, "application/json");

            // đây chính là đường dẫn kết nối với role của tầng Backend và lấy về response mang về đây sử lý tiếp
            var response = await client.PutAsync($"/api/products/{id}/categories", httpContent);

            var result = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <ApiSuccessResult <bool> >(result));
            }

            return(JsonConvert.DeserializeObject <ApiErrorResult <bool> >(result));
        }
Ejemplo n.º 22
0
        public async Task <IActionResult> CategoryAssign(int productId, [FromBody] CategoryAssignRequest request)
        {
            var result = await _productService.CategoryAssign(request);

            return(BadRequest(result));
        }
Ejemplo n.º 23
0
 public async Task <ApiResult <bool> > CategoryAssign(int id, CategoryAssignRequest request)
 {
     return(await PutAsync <ApiResult <bool> >($"/api/Products/{id}/categories", request));
 }