public async Task <bool> HandleAsync(RegisterUserEventRequest message, IOutputPort <RegisterUserEventResponse> outputPort) { var response = await _eventRepository.PostRegisterUserEvent(message); outputPort.Handle(response.Success ? new RegisterUserEventResponse(response.IdRegister, true) : new RegisterUserEventResponse(response.Errors, false, response.Message)); return(response.Success); }
public async Task <RegisterUserEventResponse> PostRegisterUserEvent(RegisterUserEventRequest registerUserEventRequest) { Task <RegisterUserEventResponse> registerResponse = null; try { //Validar Evento no RDStation e como buscar o evento var currentEvent = DbContext.Events.FirstOrDefault(x => x.Id == registerUserEventRequest.Id); if (currentEvent != null && currentEvent.Id > 0) { var user = DbContext.Users.FirstOrDefault(x => x.Email.ToLower() == registerUserEventRequest.Email.ToLower()); if (user == null) { //Cria usuário user = DbContext.Users.Add(new Entities.Users { Email = registerUserEventRequest.Email.ToLower(), Name = null, Phone = null, Id = Guid.NewGuid() }).Entity; await DbContext.SaveChangesAsync(); } var idRegister = await DbContext.Registers.AddAsync(new Entities.Registers { Event = currentEvent, EventId = currentEvent.Id, User = user, UserId = user.Id, Id = Guid.NewGuid() }); await DbContext.SaveChangesAsync(); registerResponse = Task.FromResult(new RegisterUserEventResponse(idRegister.Entity.Id, true)); } else { registerResponse = Task.FromResult(new RegisterUserEventResponse(null, false, "Não existe evento cadastrado.")); } return(await registerResponse); } catch (Exception ex) { List <string> errors = new List <string>(); errors.Add(ex.Message); return(new RegisterUserEventResponse(errors, false, null));; } }