public Task Handle(RegisterNewPalestraCommand message, CancellationToken cancellationToken) { if (!message.IsValid()) { NotifyValidationErrors(message); return(Task.CompletedTask); } var palestra = new Palestra(Guid.NewGuid(), message.Titulo, message.Descricao, message.Data, message.PalestranteId); var existingPalestra = _palestraRepository.GetByTitulo(palestra.Titulo); if (existingPalestra != null && existingPalestra.Id != palestra.Id && existingPalestra.Data == palestra.Data) { Bus.RaiseEvent(new DomainNotification(message.MessageType, "Palestra já cadastrada!")); return(Task.CompletedTask); } var existingConflictPalestras = _palestraRepository.GetConflitctPalestranteDate(message.Data, message.PalestranteId); if (existingConflictPalestras != null) { Bus.RaiseEvent(new DomainNotification(message.MessageType, "Palestrante já possui palestra para essa data!")); return(Task.CompletedTask); } _palestraRepository.Add(palestra); if (Commit()) { Bus.RaiseEvent(new PalestraRegisteredEvent(palestra.Id, palestra.Titulo, palestra.Descricao, palestra.Data, palestra.PalestranteId)); } return(Task.CompletedTask); }
public IActionResult Create([FromBody] Palestra palestra) { if (palestra == null) { return(BadRequest()); } _palestraRepositorio.Add(palestra); return(CreatedAtRoute("GetPalestra", new { id = palestra.IdPalestra }, palestra)); }
public async Task <PalestraDto> Handle(CriarPalestraCommand request, CancellationToken cancellationToken) { var palestra = new Palestra(request.Tema, request.Titulo, request.DataInicial, request.Duracao, request.Local, request.OrganizadorEmail, _colisaoLocalChecker); await _repository.Add(palestra); await _unitOfWork.Commit(cancellationToken); // Seria dataInicial - 7 dias ou algo assim, mas coloquei daqui a 2 minutos p/ testes _lembreteOrganizadorScheduler.Schedule(palestra.Id, DateTimeOffset.Now + TimeSpan.FromMinutes(2)); return(new PalestraDto(palestra.Id.Value)); }