示例#1
0
        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());
        }
示例#2
0
        // 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);
        }
示例#3
0
        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());
        }
示例#4
0
 public async Task <CosApiResponse> CreateUpdateProduct(CreateUpdateProductRequest request)
 {
     NSLog.Logger.Info("CreateUpdateProduct", request);
     return(await CosBusProduct.Instance.CreateUpdateProduct(request));
 }