private ProductEditDto Fetch(IDataReader data)
        {
            var productEdit = new ProductEditDto();

            using (var dr = new SafeDataReader(data))
            {
                if (dr.Read())
                {
                    productEdit.ProductId      = dr.GetGuid("ProductId");
                    productEdit.ProductCode    = dr.IsDBNull("ProductCode") ? null : dr.GetString("ProductCode");
                    productEdit.Name           = dr.GetString("Name");
                    productEdit.ProductTypeId  = dr.GetInt32("ProductTypeId");
                    productEdit.UnitCost       = dr.GetString("UnitCost");
                    productEdit.StockByteNull  = (byte?)dr.GetValue("StockByteNull");
                    productEdit.StockByte      = dr.GetByte("StockByte");
                    productEdit.StockShortNull = (short?)dr.GetValue("StockShortNull");
                    productEdit.StockShort     = dr.GetInt16("StockShort");
                    productEdit.StockIntNull   = (int?)dr.GetValue("StockIntNull");
                    productEdit.StockInt       = dr.GetInt32("StockInt");
                    productEdit.StockLongNull  = (long?)dr.GetValue("StockLongNull");
                    productEdit.StockLong      = dr.GetInt64("StockLong");
                }
                FetchChildren(dr);
            }
            return(productEdit);
        }
예제 #2
0
        public async Task <GetProductForEditOutput> GetProductForEdit(NullableIdInput <long> input)
        {
            ProductEditDto productEditDto;

            if (!input.Id.HasValue)
            {
                productEditDto = new ProductEditDto()
                {
                    ProductOptions = new List <ProductOption>()
                };
            }
            else
            {
                IRepository <Product, long> repository = this._productRepository;
                Product async = await repository.GetAsync(input.Id.Value);

                productEditDto = async.MapTo <ProductEditDto>();
                ProductEditDto productEditDto1 = productEditDto;
                IRepository <ProductOption, long> repository1 = this._productOptionRepository;
                List <ProductOption> allListAsync             = await repository1.GetAllListAsync((ProductOption x) => x.ProductId == async.Id);

                productEditDto1.ProductOptions = allListAsync;
                productEditDto1 = null;
            }
            return(new GetProductForEditOutput()
            {
                Product = productEditDto
            });
        }
예제 #3
0
        public void Put(string id, ProductEditDto dto)
        {
            _activityLog.Post(id, ActivityType.Update);

            var product = _context.Products.Get(dto.Id);

            Mapper.Map(dto, product);

            if (id != product.Id)
            {
                return;
            }

            _context.Products.Update(product);

            try
            {
                _context.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (_context.Products.GetAllProductsWithCategories().Any(e => e.Id == id))
                {
                    throw;
                }
            }
        }
예제 #4
0
        public async Task <IActionResult> EditProduct(int id, ProductEditDto productToEditDto)
        {
            if (productToEditDto == null)
            {
                return(BadRequest("Sended null product"));
            }

            var productFromDb = await _unitOfWork.Product.GetAsync(id);

            if (productFromDb == null)
            {
                return(BadRequest($"Product with Id:{id} not found"));
            }

            var selectedCategory = await _unitOfWork.Category.FindAsync(c => c.Id == productToEditDto.CategoryId);


            var requirementsToUpdate = _mapper.Map <Requirements>(productToEditDto.Requirements);

            var updatedProduct = await _unitOfWork.Product.ScaffoldProductForEditAsync(id, productToEditDto, requirementsToUpdate, selectedCategory, productFromDb);

            productFromDb = _mapper.Map(updatedProduct, productFromDb);

            if (await _unitOfWork.SaveAsync())
            {
                var editedProduct = await _unitOfWork.Product.GetAsync(id);

                return(CreatedAtRoute("GetProduct", new { id = id }, editedProduct));
            }

            return(BadRequest("Fail occured during editing Product"));
        }
 /// <summary>
 /// Updates in the database all changes made to the ProductEdit object.
 /// </summary>
 /// <param name="productEdit">The Product Edit DTO.</param>
 /// <returns>The updated <see cref="ProductEditDto"/>.</returns>
 public ProductEditDto Update(ProductEditDto productEdit)
 {
     using (var ctx = ConnectionManager <NpgsqlConnection> .GetManager("Invoices"))
     {
         using (var cmd = new NpgsqlCommand("dbo.UpdateProductEdit", ctx.Connection))
         {
             cmd.CommandType = CommandType.StoredProcedure;
             cmd.Parameters.AddWithValue("@ProductId", productEdit.ProductId).DbType = DbType.Guid;
             cmd.Parameters.AddWithValue("@ProductCode", productEdit.ProductCode == null ? (object)DBNull.Value : productEdit.ProductCode).DbType = DbType.StringFixedLength;
             cmd.Parameters.AddWithValue("@Name", productEdit.Name).DbType = DbType.String;
             cmd.Parameters.AddWithValue("@ProductTypeId", productEdit.ProductTypeId).DbType = DbType.Int32;
             cmd.Parameters.AddWithValue("@UnitCost", productEdit.UnitCost).DbType           = DbType.StringFixedLength;
             cmd.Parameters.AddWithValue("@StockByteNull", productEdit.StockByteNull == null ? (object)DBNull.Value : productEdit.StockByteNull.Value).DbType = DbType.Byte;
             cmd.Parameters.AddWithValue("@StockByte", productEdit.StockByte).DbType = DbType.Byte;
             cmd.Parameters.AddWithValue("@StockShortNull", productEdit.StockShortNull == null ? (object)DBNull.Value : productEdit.StockShortNull.Value).DbType = DbType.Int16;
             cmd.Parameters.AddWithValue("@StockShort", productEdit.StockShort).DbType = DbType.Int16;
             cmd.Parameters.AddWithValue("@StockIntNull", productEdit.StockIntNull == null ? (object)DBNull.Value : productEdit.StockIntNull.Value).DbType = DbType.Int32;
             cmd.Parameters.AddWithValue("@StockInt", productEdit.StockInt).DbType = DbType.Int32;
             cmd.Parameters.AddWithValue("@StockLongNull", productEdit.StockLongNull == null ? (object)DBNull.Value : productEdit.StockLongNull.Value).DbType = DbType.Int64;
             cmd.Parameters.AddWithValue("@StockLong", productEdit.StockLong).DbType = DbType.Int64;
             var rowsAffected = cmd.ExecuteNonQuery();
             if (rowsAffected == 0)
             {
                 throw new DataNotFoundException("ProductEdit");
             }
         }
     }
     return(productEdit);
 }
예제 #6
0
 /// <summary>
 /// Inserts a new ProductEdit object in the database.
 /// </summary>
 /// <param name="productEdit">The Product Edit DTO.</param>
 /// <returns>The new <see cref="ProductEditDto"/>.</returns>
 public ProductEditDto Insert(ProductEditDto productEdit)
 {
     using (var ctx = ConnectionManager <SQLiteConnection> .GetManager("Invoices"))
     {
         using (var cmd = new SQLiteCommand("dbo.AddProductEdit", ctx.Connection))
         {
             cmd.CommandType = CommandType.StoredProcedure;
             cmd.Parameters.AddWithValue("@ProductId", productEdit.ProductId).DbType = DbType.Guid;
             cmd.Parameters.AddWithValue("@ProductCode", productEdit.ProductCode == null ? (object)DBNull.Value : productEdit.ProductCode).DbType = DbType.StringFixedLength;
             cmd.Parameters.AddWithValue("@Name", productEdit.Name).DbType = DbType.String;
             cmd.Parameters.AddWithValue("@ProductTypeId", productEdit.ProductTypeId).DbType = DbType.Int32;
             cmd.Parameters.AddWithValue("@UnitCost", productEdit.UnitCost).DbType           = DbType.StringFixedLength;
             cmd.Parameters.AddWithValue("@StockByteNull", productEdit.StockByteNull == null ? (object)DBNull.Value : productEdit.StockByteNull.Value).DbType = DbType.Byte;
             cmd.Parameters.AddWithValue("@StockByte", productEdit.StockByte).DbType = DbType.Byte;
             cmd.Parameters.AddWithValue("@StockShortNull", productEdit.StockShortNull == null ? (object)DBNull.Value : productEdit.StockShortNull.Value).DbType = DbType.Int16;
             cmd.Parameters.AddWithValue("@StockShort", productEdit.StockShort).DbType = DbType.Int16;
             cmd.Parameters.AddWithValue("@StockIntNull", productEdit.StockIntNull == null ? (object)DBNull.Value : productEdit.StockIntNull.Value).DbType = DbType.Int32;
             cmd.Parameters.AddWithValue("@StockInt", productEdit.StockInt).DbType = DbType.Int32;
             cmd.Parameters.AddWithValue("@StockLongNull", productEdit.StockLongNull == null ? (object)DBNull.Value : productEdit.StockLongNull.Value).DbType = DbType.Int64;
             cmd.Parameters.AddWithValue("@StockLong", productEdit.StockLong).DbType = DbType.Int64;
             cmd.ExecuteNonQuery();
         }
     }
     return(productEdit);
 }
예제 #7
0
        public ProductDetailsDto Post(ProductEditDto dto)
        {
            _logger.LogDebug(LoggingEvents.UpdateItem, "Спроба додати новий товар.");
            var product = new Product();

            Mapper.Map(dto, product);

            try
            {
                var category = _db.ProductCategories.SingleOrDefault(s => s.Id == product.ProductCategoryId);
                var products = _db.Products;

                product.Article = SequenceId(products, category.SequenceId);

                if (products.ToList().Any(o => o.Article == product.Article))
                {
                    _logger.LogWarning(LoggingEvents.CreateItemErorr, "Товар з таким арикулом вже існує, повтрюю спробу створити товар");
                    Post(dto);
                }

                _context.Products.Add(product);
                _context.SaveChanges();
                _activityLog.Post(product.Id, ActivityType.Create);

                _logger.LogInformation(LoggingEvents.CreateItemSuccess, "Товар додано успішно!", product);
            }
            catch (Exception e)
            {
                _logger.LogError(LoggingEvents.CreateItemErorr, e, $"Виникла помилка при створенні нового товару {Utilities.ModelToJson(product)}");
            }

            return(Mapper.Map <ProductDetailsDto>(product));
        }
예제 #8
0
        public async Task <ProductDto> Save(ProductEditDto itemToEdit)
        {
            Product res;

            if (itemToEdit.Id != Guid.Empty)
            {
                _logger.LogDebug($"Calling Update Product for id=[{itemToEdit.Id}]");
                //edit
                res = await this.GetInner(itemToEdit.Id);

                if (res == null)
                {
                    throw new NotFoundException($"Product with id={itemToEdit.Id} not exists!");
                }
                res.Name         = itemToEdit.Name;
                res.Description  = itemToEdit.Description;
                res.CategoryName = itemToEdit.CategoryName;
                res.IdTeacher    = itemToEdit.IdTeacher;
                res.EndDate      = itemToEdit.EndDate;
                res.StartDate    = itemToEdit.StartDate;
                _dbCtx.Products.Update(res);
                _dbCtx.SaveChanges();
            }
            else
            {
                //insert
                res    = itemToEdit.ToEntity();
                res.Id = Guid.NewGuid();
                _logger.LogDebug($"Calling Insert Product for id=[{res.Id}] (temp id, not created yet!)");
                await _dbCtx.Products.AddAsync(res);

                _dbCtx.SaveChanges();
            }
            return(res.ToDto());
        }
예제 #9
0
        protected override void DataPortal_Update()
        {
            var dto = new ProductEditDto();

            dto.ProductId      = ProductId;
            dto.ProductCode    = ProductCode;
            dto.Name           = Name;
            dto.ProductTypeId  = ProductTypeId;
            dto.UnitCost       = UnitCost;
            dto.StockByteNull  = StockByteNull;
            dto.StockByte      = StockByte;
            dto.StockShortNull = StockShortNull;
            dto.StockShort     = StockShort;
            dto.StockIntNull   = StockIntNull;
            dto.StockInt       = StockInt;
            dto.StockLongNull  = StockLongNull;
            dto.StockLong      = StockLong;
            using (var dalManager = DalFactoryInvoices.GetManager())
            {
                var args = new DataPortalHookArgs(dto);
                OnUpdatePre(args);
                var dal = dalManager.GetProvider <IProductEditDal>();
                using (BypassPropertyChecks)
                {
                    var resultDto = dal.Update(dto);
                    args = new DataPortalHookArgs(resultDto);
                }
                OnUpdatePost(args);
                // flushes all pending data operations
                FieldManager.UpdateChildren(this);
            }
        }
예제 #10
0
        /// <summary>
        /// 添加或者修改Product的方法
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <ProductListDto> CreateOrUpdateProductDto(ProductEditDto input)
        {
            string webRootPath = _hostingEnvironment.WebRootPath;

            if (!string.IsNullOrEmpty(input.Img64) && !string.IsNullOrEmpty(input.FileName))
            {
                var base64 = new WechatImgBase64()
                {
                    fileName = input.FileName, imageBase64 = input.Img64
                };
                var photoUrl = await FilesPostsBase64(base64, "product");

                input.PhotoUrl = !string.IsNullOrEmpty(photoUrl) ? photoUrl : input.PhotoUrl;
            }
            if (input.Id.HasValue)
            {
                var entity = _productRepository.GetAsync(input.Id.MapTo <Guid>()).Result;
                var url    = entity.PhotoUrl;
                var result = await UpdateProductAsync(input);

                //删除原来的单个图片
                if (url != result.PhotoUrl && url != "/assets/img/default.png")
                {
                    if (File.Exists(webRootPath + url))
                    {
                        File.Delete(webRootPath + url);
                    }
                }
                return(result);
            }
            else
            {
                return(await CreateProductAsync(input));
            }
        }
예제 #11
0
        /// <summary>
        /// 新增Product
        /// </summary>
        protected virtual async Task <ProductEditDto> Create(ProductEditDto input)
        {
            var entity = input.MapTo <Product>();
            var id     = await _entityRepository.InsertAndGetIdAsync(entity);

            return(entity.MapTo <ProductEditDto>());
        }
예제 #12
0
        protected virtual async Task Update(ProductEditDto input)
        {
            //TODO:更新前的逻辑判断,是否允许更新
            if (!input.CreateProjectCount.HasValue || input.CreateProjectCount.Value < 0)
            {
                throw new UserFriendlyException("项目创建次数必须大于等于0");
            }
            if (!input.Price.HasValue || input.Price.Value < 0)
            {
                throw new UserFriendlyException("产品价格必须大于等于0");
            }
            //if (!input.Indate.HasValue || input.Indate.Value < 0)
            //{
            //    throw new UserFriendlyException("有效天数必须大于等于0");
            //}



            var entity = await _entityRepository.GetAsync(input.Id.Value);

            if (entity.Published)
            {
                throw new UserFriendlyException("产品已经发布,禁止修改!");
            }

            // 产品编码不允许被修改,直接使用原有编码进行覆盖,防止操作dom和模拟post修改
            input.Code = entity.Code;


            //   input.MapTo(entity);


            ObjectMapper.Map(input, entity);
            await _entityRepository.UpdateAsync(entity);
        }
예제 #13
0
        protected virtual async Task <ProductEditDto> Create(ProductEditDto input)
        {
            //TODO:新增前的逻辑判断,是否允许新增
            if (!input.CreateProjectCount.HasValue || input.CreateProjectCount.Value < 0)
            {
                throw new UserFriendlyException("项目创建次数必须大于等于0");
            }
            if (!input.Price.HasValue || input.Price.Value < 0)
            {
                throw new UserFriendlyException("产品价格必须大于等于0");
            }
            //if (!input.Indate.HasValue || input.Indate.Value < 0)
            //{
            //    throw new UserFriendlyException("有效天数必须大于等于0");
            //}



            var entity = ObjectMapper.Map <Product>(input);

            //  var entity = input.MapTo<Product>();

            // 生成产品编码
            entity.Code = ProductCodeGen.GetCode((int)entity.Type.ToEnum <DownloadTypeEnum>(true), AbpSession.UserId.Value);

            entity = await _entityRepository.InsertAsync(entity);

            return(ObjectMapper.Map <ProductEditDto>(entity));
        }
예제 #14
0
        protected virtual async Task <ProductEditDto> CreateProductAsync(ProductEditDto input)
        {
            var entity = ObjectMapper.Map <Product>(input);

            entity = await _productRepository.InsertAsync(entity);

            return(entity.MapTo <ProductEditDto>());
        }
예제 #15
0
        /// <summary>
        /// 新增产品
        /// </summary>
        public virtual async Task <ProductEditDto> CreateProductAsync(ProductEditDto input)
        {
            var entity = input.MapTo <Product>();

            entity = await _productRepository.InsertAsync(entity);

            return(entity.MapTo <ProductEditDto>());
        }
예제 #16
0
        /// <summary>
        /// 编辑产品
        /// </summary>
        public virtual async Task UpdateProductAsync(ProductEditDto input)
        {
            var entity = await _productRepository.GetAsync(input.Id.Value);

            input.MapTo(entity);

            await _productRepository.UpdateAsync(entity);
        }
        public ProductEditDto CreateMission(ProductEditDto input)
        {
            var task = AutoMapper.Mapper.Map <Product>(input);

            var entity = _entityRepository.Insert(task);

            CurrentUnitOfWork.SaveChanges();
            return(AutoMapper.Mapper.Map <ProductEditDto>(entity));
        }
예제 #18
0
        protected virtual async Task UpdateProductAsync(ProductEditDto input)
        {
            var entity = await _productRepository.GetAsync(input.Id.Value);

            input.MapTo(entity);

            // ObjectMapper.Map(input, entity);
            await _productRepository.UpdateAsync(entity);
        }
예제 #19
0
        /// <summary>
        /// 编辑Product
        /// </summary>
        protected virtual async Task <ProductEditDto> Update(ProductEditDto input)
        {
            var entity = await _entityRepository.GetAsync(input.Id.Value);

            input.MapTo(entity);
            await _entityRepository.UpdateAsync(entity);

            return(entity.MapTo <ProductEditDto>());
        }
예제 #20
0
        public async Task <ActionResult <ProductDto> > Put([FromBody] ProductEditDto value)
        {
            if (value.Id == Guid.Empty)
            {
                throw new Exception("Unable to edit a Product without ID");
            }
            var res = await _service.Save(value);

            return(res);
        }
예제 #21
0
        /// <summary>
        /// 新增Product
        /// </summary>
        //[AbpAuthorize(ProductAppPermissions.Product_CreateProduct)]
        protected virtual async Task <ProductListDto> CreateProductAsync(ProductEditDto input)
        {
            //TODO:新增前的逻辑判断,是否允许新增
            var entity = ObjectMapper.Map <Product>(input);

            entity.SearchCount = 0;
            entity             = await _productRepository.InsertAsync(entity);

            return(entity.MapTo <ProductListDto>());
        }
예제 #22
0
        public IActionResult Put([FromRoute] string id, [FromBody] ProductEditDto product)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            _service.Put(id, product);

            return(Accepted());
        }
예제 #23
0
 /// <summary>
 /// 添加或者修改Product的公共方法
 /// </summary>
 /// <param name="input"></param>
 /// <returns></returns>
 public async Task <ProductEditDto> CreateOrUpdateProductAsync(ProductEditDto input)
 {
     if (input.Id.HasValue)
     {
         return(await Update(input));
     }
     else
     {
         return(await Create(input));
     }
 }
예제 #24
0
        public async Task <bool> Update(ProductEditDto input)
        {
            var orignal = await _context.Products.SingleOrDefaultAsync(s => s.Id == input.Id);

            var MappedProduct = _mapper.Map(input, orignal);

            var UpdatedProduct = _context.Products.Update(MappedProduct);
            var res            = await _context.SaveChangesAsync();

            return(res > 0 ? true : false);
        }
예제 #25
0
        protected virtual async Task Update(ProductEditDto input)
        {
            //TODO:更新前的逻辑判断,是否允许更新

            var entity = await _entityRepository.GetAsync(input.Id.Value);

            input.MapTo(entity);

            // ObjectMapper.Map(input, entity);
            await _entityRepository.UpdateAsync(entity);
        }
예제 #26
0
        /// <summary>
        /// 编辑Product
        /// </summary>
        //[AbpAuthorize(ProductAppPermissions.Product_EditProduct)]
        protected virtual async Task <ProductListDto> UpdateProductAsync(ProductEditDto input)
        {
            //TODO:更新前的逻辑判断,是否允许更新
            var entity = await _productRepository.GetAsync(input.Id.Value);

            input.MapTo(entity);

            // ObjectMapper.Map(input, entity);
            var result = await _productRepository.UpdateAsync(entity);

            return(result.MapTo <ProductListDto>());
        }
예제 #27
0
        protected virtual async Task <ProductEditDto> Create(ProductEditDto input)
        {
            //TODO:新增前的逻辑判断,是否允许新增

            // var entity = ObjectMapper.Map <Product>(input);
            var entity = input.MapTo <Product>();


            entity = await _entityRepository.InsertAsync(entity);

            return(entity.MapTo <ProductEditDto>());
        }
예제 #28
0
        /// <summary>
        /// 更新商品标签
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <ProductListDto> CreateOrUpdateProductLable(ProductEditDto input)
        {
            var entity = await _entityRepository.GetAsync(input.Id.Value);

            entity.Lable = input.Lable;
            if (string.IsNullOrEmpty(input.Lable))
            {
                entity.Lable = null;
            }
            var result = await _entityRepository.UpdateAsync(entity);

            return(result.MapTo <ProductListDto>());
        }
예제 #29
0
        public IActionResult Edit(Guid id)
        {
            var originalProduct = _productsServiceClient.GetProductById(id);

            var product = new ProductEditDto
            {
                Id    = originalProduct.Id,
                Name  = originalProduct.Name,
                Price = originalProduct.Price
            };

            return(View(product));
        }
        public ProductEditDto UpdateMission(ProductEditDto input)
        {
            // var task = _AfficheRepository.GetAll().FirstOrDefault(t => t.CargoID == input.CargoID);

            var task = AutoMapper.Mapper.Map <Product>(input);
            //_entityRepository.Update(task);
            //if (result != null)
            //{ _AfficheRepository.Update(result); }
            var entity = _entityRepository.Update(task);

            CurrentUnitOfWork.SaveChanges();
            return(AutoMapper.Mapper.Map <ProductEditDto>(entity));
        }