public async Task <IActionResult> CreateProduct([FromBody] CreateUpdateProductRequest request) { var categoryFilter = Builders <Category> .Filter.Where(x => x.Id.Equals(request.CategoryId)); var validCategory = await _mongoDbService.GetCollection <Category>(Collections.Categories) .Find(categoryFilter).AnyAsync(); if (!validCategory) { throw new CustomException("Invalid category specified."); } var session = await _mongoDbService.StartTransactionAsync(); var newProduct = new Product() { CategoryId = request.CategoryId, Name = request.Name.Trim(), Description = request.Description.Trim(), Stock = request.Stock, UnitPrice = request.UnitPrice, Base64Image = request.Base64Image, Active = true }; await _mongoDbService.GetCollection <Product>(Collections.Products).InsertOneAsync(session, newProduct); await _mongoDbService.CommitTransactionAsync(); return(new SuccessResult()); }
// Create Update Product public async Task <CosApiResponse> CreateUpdateProduct(CreateUpdateProductRequest request) { var response = new CosApiResponse(); try { using (var _db = new CosContext()) { var pro = request.Pro; if (string.IsNullOrEmpty(pro.ID)) /* insert */ { pro.ID = Guid.NewGuid().ToString(); var proDB = new Product() { Id = pro.ID, Name = pro.Name, CategoryId = pro.CateID, Price = (decimal)pro.Price, Status = (byte)Constants.EStatus.Deleted, }; _db.Products.Add(proDB); } else /* update */ { var proDB = _db.Products.Where(o => o.Id == pro.ID && o.Status == (byte)Constants.EStatus.Actived).FirstOrDefault(); if (proDB != null) { proDB.Price = (decimal)pro.Price; proDB.Name = pro.Name; proDB.CategoryId = pro.CateID; } } /* save data */ if (_db.SaveChanges() > 0) { response.Success = true; } else { response.Message = "Unable to add new or update product."; } NSLog.Logger.Info("ResponseCreateUpdateProduct", response); } } catch (Exception ex) { NSLog.Logger.Error("ErrorCreateUpdateProduct", null, response, ex); } finally { /*_db.Refresh();*/ } return(response); }
public async Task <IActionResult> UpdateProduct([FromBody] CreateUpdateProductRequest request) { var productFilter = Builders <Product> .Filter.Where(x => x.Id.Equals(request.Id)); var validProduct = await _mongoDbService.GetCollection <Product>(Collections.Products) .Find(productFilter).AnyAsync(); if (!validProduct) { throw new CustomException("Invalid product specified."); } var categoryFilter = Builders <Category> .Filter.Where(x => x.Id.Equals(request.CategoryId)); var validCategory = await _mongoDbService.GetCollection <Category>(Collections.Categories) .Find(categoryFilter).AnyAsync(); if (!validCategory) { throw new CustomException("Invalid category specified."); } var session = await _mongoDbService.StartTransactionAsync(); var updateDefinition = new UpdateDefinitionBuilder <Product>() .Set(x => x.CategoryId, request.CategoryId) .Set(x => x.Name, request.Name.Trim()) .Set(x => x.Description, request.Description.Trim()) .Set(x => x.Stock, request.Stock) .Set(x => x.UnitPrice, request.UnitPrice) .Set(x => x.Base64Image, request.Base64Image); await _mongoDbService.GetCollection <Product>(Collections.Products) .UpdateOneAsync(session, productFilter, updateDefinition); await _mongoDbService.CommitTransactionAsync(); return(new SuccessResult()); }
public async Task <CosApiResponse> CreateUpdateProduct(CreateUpdateProductRequest request) { NSLog.Logger.Info("CreateUpdateProduct", request); return(await CosBusProduct.Instance.CreateUpdateProduct(request)); }