private async Task <ApplicationUser> GenerarUsuarioAsync(string userName, string email, string firstName, string lastName, string referidoId)
        {
            var fechaActual = DateTime.UtcNow;

            var codigo = _repository.GenerarCodigoCliente();

            var user = new ApplicationUser
            {
                Id                 = "user-" + Formato.GenerarGuid(),
                LastName           = lastName,
                Email              = email,
                FirstName          = firstName,
                FechaRegistro      = fechaActual,
                FechaActualizacion = fechaActual,
                Codigo             = codigo,
                DescripcionCodigo  = Formato.ConvertirDecimalAlfanumerico(codigo, 36, 6),
                UserName           = userName
            };

            ApplicationUser usuarioPatrocindor = null;

            if (!string.IsNullOrWhiteSpace(referidoId) && referidoId != codigoPrincipal)
            {
                usuarioPatrocindor = await _repository.ConsultarUsuarioAsync(referidoId);

                if (usuarioPatrocindor != null)
                {
                    user.Patrocinador = new Patrocinador
                    {
                        UserId         = usuarioPatrocindor.Id,
                        Imagen         = usuarioPatrocindor.Imagen,
                        NombreCompleto = usuarioPatrocindor.NombreCompleto
                    };

                    user.Nivel = usuarioPatrocindor.Nivel + 1;
                }
            }
            else
            {
                user.Patrocinador = new Patrocinador {
                    UserId = codigoPrincipal
                };
                user.Nivel = 1;
            }

            return(user);
        }