public IActionResult Post([FromBody] ProjectCreateModel model) { var command = new CreateProjectCommand(model.Title, model.Description, new Guid(User.GetClaim("id"))); _bus.PublishCommand(command); return(Ok()); }
public IActionResult Join(Guid id, [FromBody] Guid userId) { var query = new GetProjectQuery(id); var project = _bus.PublishQuery(query); // validation if (project == null) { return(NotFound()); } var command = new JoinTeamCommand(userId, id); _bus.PublishCommand(command); return(Ok()); }
public void Handle(ProjectCreatedEvent domainEvent) { Console.WriteLine(domainEvent.AggregateId + " " + domainEvent.Type + " " + domainEvent.JsonPayload); dynamic eventData = JsonConvert.DeserializeObject(domainEvent.JsonPayload); var projectOwner = new User((Guid)eventData.OwnerId); var newTeam = new Team(); newTeam.Create( domainEvent.AggregateId, projectOwner); _teamRepository.Add(newTeam); // the creator is by default part of the team. var joinCommand = new JoinTeamCommand(projectOwner.Id, domainEvent.AggregateId); var approveCommand = new ApproveTeamUserCommand(projectOwner.Id, domainEvent.AggregateId); _bus.PublishCommand(joinCommand); _bus.PublishCommand(approveCommand); }