Exemple #1
0
        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));;
            }
        }