public async Task <Response <UsuarioEscritorio> > Handle(CriarUsuarioInicialCommand request, CancellationToken cancellationToken) { var result = Response <UsuarioEscritorio> .WithResult(null); var existsUserWithSameUsername = await _context.UsuariosEscritorio.AnyAsync(u => u.Username == request.Usuario.Email); if (existsUserWithSameUsername) { result.AddError("Já existe um usuário com o mesmo e-mail, logue-se ou utilize outro e-mail"); return(result); } var resultadoCriacaoEscritorio = await CriarEscritorio(request.CriarEscritorioCommand()); if (resultadoCriacaoEscritorio.IsFailure) { result.AddErrors(resultadoCriacaoEscritorio.Errors); } if (result.IsFailure) { return(result); } CredenciaisAdvogado credenciais = new CredenciaisAdvogado(); Oab oabSaida = new Oab(); if (request.Usuario.NumeroOAB != null && request.Usuario.Estado != 0) { credenciais = new CredenciaisAdvogado( request.Usuario.NumeroOAB, EstadoBrasileiro.ObterPorCodigo(request.Usuario.Estado), null ); } UsuarioEscritorio user = new UsuarioEscritorio( resultadoCriacaoEscritorio.Result, request.Usuario.Email, _hashService.Hash(request.Usuario.Senha), new InformacoesPessoais(request.Usuario.Nome, request.Usuario.Sobrenome), new List <Permissao>() { new Permissao("EhAdministrador", "true") }, credenciais ); if (request.Usuario.NumeroOAB != null && request.Usuario.Estado != 0) { oabSaida = new Oab(user.Codigo, request.Usuario.NumeroOAB, EstadoBrasileiro.ObterPorCodigo(request.Usuario.Estado).UF, $"{request.Usuario.Nome} {request.Usuario.Sobrenome}"); // CriarUsuarioInicialCommandMessage.Publish(oabSaida); await _oabContext.Oab.AddAsync(oabSaida); await _oabContext.SaveChangesAsync(); } await _context.UsuariosEscritorio.AddAsync(user); await _context.SaveChangesAsync(); return(Response <UsuarioEscritorio> .WithResult(user)); }
public async Task <Response <UsuarioEscritorio> > Handle(CriarUsuarioNovoCommand request, CancellationToken cancellationToken) { var result = Response <UsuarioEscritorio> .WithResult(null); var existsUserWithSameUsername = await _context.UsuariosEscritorio.AnyAsync(u => u.Username == request.Usuario.Email); var escritorioAtual = await _context.Escritorios.FirstOrDefaultAsync(o => o.Informacoes.NomeFantasia == request.Escritorio.NomeFantasia); string ehAdministrador = "false"; if (request.Usuario.ehAdministrador != null && !request.Usuario.ehAdministrador.Equals("")) { ehAdministrador = request.Usuario.ehAdministrador; } if (escritorioAtual == null) { result.AddError("Escritorio não encontrado."); return(result); } if (existsUserWithSameUsername) { result.AddError("Já existe um usuário com o mesmo e-mail, logue-se ou utilize outro e-mail"); return(result); } CredenciaisAdvogado credenciais = new CredenciaisAdvogado(); Oab oabSaida = new Oab(); if (request.Usuario.NumeroOAB != null && request.Usuario.Estado != 0) { credenciais = new CredenciaisAdvogado( request.Usuario.NumeroOAB, EstadoBrasileiro.ObterPorCodigo(request.Usuario.Estado), null ); } UsuarioEscritorio user = new UsuarioEscritorio( escritorioAtual.Codigo, request.Usuario.Email, _hashService.Hash(request.Usuario.Senha), new InformacoesPessoais(request.Usuario.Nome, request.Usuario.Sobrenome), new List <Permissao>() { new Permissao("EhAdministrador", ehAdministrador) }, credenciais ); if (request.Usuario.NumeroOAB != null && request.Usuario.Estado != 0) { oabSaida = new Oab(user.Codigo, request.Usuario.NumeroOAB, EstadoBrasileiro.ObterPorCodigo(request.Usuario.Estado).UF, $"{request.Usuario.Nome} {request.Usuario.Sobrenome}"); //CriarUsuarioInicialCommandMessage.Publish(oabSaida); await _oabContext.Oab.AddAsync(oabSaida); await _oabContext.SaveChangesAsync(); } ; await _context.UsuariosEscritorio.AddAsync(user); await _context.SaveChangesAsync(); return(Response <UsuarioEscritorio> .WithResult(user)); }