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"); } } } }
public void CreateUser(string email, string name, out string password, out RegisterUserStatus status) { throw new NotImplementedException(); }