Exemplo n.º 1
0
        public void CreateUser(string email, string name, out string password, out RegisterUserStatus status)
        {
            password = string.Empty;

            using (SqlConnection conn = SqlHelper.GetOpenConnection())
            {
                //check if user already exists
                int id = conn.Query <int>("SELECT Id FROM [User] WHERE Email = @Email", new { Email = email.Trim() }).FirstOrDefault();

                //if user does not exists
                if (id > 0)
                {
                    status = RegisterUserStatus.AlreadyExists;
                    log.Warning("Cannot create user, email: '" + email.Trim() + "' already exists", false);
                    //throw new Exception("Cannot create user, a user with email: '" + email.Trim() + "' already exists");
                }
                else
                {
                    //check if the email is external
                    var isInternalQuery = @"
	                        SELECT TOP (1)
                            CASE WHEN o.Domain IS NULL THEN 0 ELSE 1 END as [OrganizationState]
                            FROM Organization o
                            WHERE o.Domain = SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, len(@Email))";

                    int isInternal = conn.Query <int>(isInternalQuery, new { Email = email.Trim() }).FirstOrDefault();

                    if (isInternal > 0)
                    {
                        try
                        {
                            var par = new Dapper.DynamicParameters();
                            par.Add("@Name", name.Trim());
                            par.Add("@Email", email.Trim());

                            password = conn.Query <string>("[CreateUser]", par, commandType: CommandType.StoredProcedure).FirstOrDefault();
                            status   = RegisterUserStatus.Ok;

                            log.Info("Created user: '******' with email: '" + email.Trim() + "'", false);
                        }
                        catch (Exception ex)
                        {
                            log.Error("Cannot create user with email: '" + email.Trim() + "' Message: " + ex.Message, false);
                            status = RegisterUserStatus.Error;
                        }
                    }
                    else
                    {
                        status = RegisterUserStatus.NoDomainMatch;
                        log.Warning("Cannot create user, the email domain does not match any domain in the database");
                    }
                }
            }
        }
Exemplo n.º 2
0
 public void CreateUser(string email, string name, out string password, out RegisterUserStatus status)
 {
     throw new NotImplementedException();
 }