Ejemplo n.º 1
0
        public async Task <Product> UpdateProduct(Messaging.Model.Product productToEdit)
        {
            if (!_repositoryProduct.AllEntities().Any(x => x.Id == productToEdit.ProductId))
            {
                throw new EntityCommandExecutionException($"No product with id {productToEdit.ProductId}");
            }

            var aditionalDetailsToAdd = productToEdit.AditionalDetails
                                        .Where(x => x.AditionalDetailId == 0)
                                        .Select(MapToDatabaseEntity)
                                        .ToList();

            var aditionalDetailsToEdit = productToEdit.AditionalDetails
                                         .Where(x => x.AditionalDetailId != 0)
                                         .ToList();

            var editedProduct = _repositoryProduct.AllEntities().First(x => x.Id == productToEdit.ProductId);

            _repositoryProduct.Update(editedProduct);

            editedProduct.Name        = productToEdit.Name;
            editedProduct.Description = productToEdit.Description;
            editedProduct.CategoryId  = productToEdit.CategoryId;
            editedProduct.RowVersion  = productToEdit.RowVersion;

            aditionalDetailsToEdit.ForEach(x =>
            {
                var editedDetail = editedProduct.AditionalDetails.First(y => y.Id == x.AditionalDetailId);
                _repositoryAditionalDetails.Update(editedDetail);
                editedDetail.Name       = x.Name;
                editedDetail.Text       = x.Text;
                editedDetail.RowVersion = x.RowVersion;
            });

            aditionalDetailsToAdd.ForEach(x =>
            {
                _repositoryAditionalDetails.Add(x);
                editedProduct.AditionalDetails.Add(x);
            });

            await _unitOfWork.SaveChangesAsync();

            return(editedProduct);
        }
Ejemplo n.º 2
0
 private IProductUpdatedEvent MapProductAddedToMessaje(Product addedProduct, Messaging.Model.Product extraInformation)
 {
     return(new ProductUpdatedEvent
     {
         Product = new Messaging.Model.Product
         {
             ProductId = addedProduct.Id,
             CategoryId = (int)addedProduct.CategoryId,
             Description = addedProduct.Description,
             Name = addedProduct.Name,
             Price = extraInformation.Price,
             Inventory = extraInformation.Inventory,
             AditionalDetails = addedProduct.AditionalDetails.Select(x => new Messaging.Model.AditionalDetail
             {
                 AditionalDetailId = x.Id,
                 Name = x.Name,
                 Text = x.Text
             }).ToList()
         }
     });
 }
Ejemplo n.º 3
0
        public async Task <Product> AddNewProduct(Messaging.Model.Product productToAdd)
        {
            var aditionalDetails = productToAdd.AditionalDetails.Select(x => new AditionalDetail
            {
                Id   = x.AditionalDetailId,
                Name = x.Name,
                Text = x.Text
            }).ToList();

            var addedProduct = new Product
            {
                CategoryId       = productToAdd.CategoryId,
                Description      = productToAdd.Description,
                Name             = productToAdd.Name,
                AditionalDetails = aditionalDetails
            };

            _repositoryProduct.Add(addedProduct);
            await _unitOfWork.SaveChangesAsync();

            return(addedProduct);
        }