Ejemplo n.º 1
0
        public async Task <User> Handle(CreateUserCommand request, CancellationToken cancellationToken)
        {
            var user = await _repository.Add(new User
            {
                Email     = request.Email,
                FirstName = request.FirstName,
                LastName  = request.LastName
            });

            await _dbContext.SaveChangesAsync(cancellationToken);

            // burada event fırlatılacak (CreatedUserEvent)
            await _massTransitEventProducer.Publish(new UserCreatedEvent
                                                    { Email = user.Email, Id = user.Id, FirstName = user.FirstName, LastName = user.LastName });

            return(user);
        }
        public async Task <Domain.Customer> Handle(UpdateCustomerCommand request, CancellationToken cancellationToken)
        {
            var customer = await _repository.GetById(request.Id);

            customer.Email     = request.Email;
            customer.FirstName = request.FirstName;
            customer.LastName  = request.LastName;

            var result = await _repository.Update(customer);

            await _dbContext.SaveChangesAsync(cancellationToken);

            // CustomerUpdatedEvent produce edilecek
            await _eventProducer.Publish(new UserUpdatedEvent
            {
                Id        = result.Id,
                Email     = result.Email,
                FirstName = result.FirstName,
                LastName  = result.LastName
            });

            return(result);
        }