Ejemplo n.º 1
0
 private void ProductUpdateHandler(ProductUpdatedMessage message)
 {
     ProductModel product = message.Product;
     view.UpdateProduct(product.ID, product.Name, product.Price.ToString(), product.Discount.ToString());
 }
Ejemplo n.º 2
0
 public void Handle(ProductUpdatedMessage message)
 {
     //Use current hub property
     CurrentHubContext.Clients.All.productUpdated(new { Message = "Product Update handled in ProductOperationsModule.", message.ProductId });
 }
Ejemplo n.º 3
0
        public async Task <IActionResult> Edit(EditProductViewModel editProductViewModel)
        {
            var productExists = await this.dbContext
                                .Products
                                .AnyAsync(x => x.Id == editProductViewModel.Id);

            if (!productExists)
            {
                return(this.BadRequest(ProductConstants.ProductDoesNotExistMessage));
            }

            if (this.ModelState.IsValid)
            {
                var product = await this.dbContext
                              .Products
                              .FirstOrDefaultAsync(x => x.Id == editProductViewModel.Id);

                this.mapper.Map(editProductViewModel, product);

                product.LastUpdated = DateTime.Now;


                var messageData = new ProductUpdatedMessage
                {
                    ProductId   = editProductViewModel.Id,
                    Description = editProductViewModel.Description,
                    ImageUrl    = editProductViewModel.ImageUrl,
                    Name        = editProductViewModel.Name,
                    Price       = editProductViewModel.Price,
                    Weight      = editProductViewModel.Weight
                };

                var message = new Message(messageData);

                await this.dbContext
                .Messages
                .AddAsync(message);

                this.dbContext
                .Products
                .Update(product);

                await this.dbContext
                .SaveChangesAsync();

                var msg = await this.dbContext
                          .Messages
                          .FindAsync(message.Id);

                await this.publisher.Publish(messageData);

                msg.MarkAsPublished();

                await this.dbContext
                .SaveChangesAsync();

                return(this.Ok());
            }

            var errors = this.ModelState
                         .SelectMany(x => x.Value.Errors)
                         .Select(x => x.ErrorMessage)
                         .ToList();

            return(this.BadRequest(errors));
        }