//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>()); }
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>()); }
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>()); }
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>()); }
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); }
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); }
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>()); }
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)); }
[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 }
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); }
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; }
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 }
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)); }
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)); }
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); }
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)); }
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); }
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)); }
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); }
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)); }
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)); }
public async Task <IActionResult> CategoryAssign(int productId, [FromBody] CategoryAssignRequest request) { var result = await _productService.CategoryAssign(request); return(BadRequest(result)); }
public async Task <ApiResult <bool> > CategoryAssign(int id, CategoryAssignRequest request) { return(await PutAsync <ApiResult <bool> >($"/api/Products/{id}/categories", request)); }