clock->now(); $existing = $this->customers->find_by_email( $email ); foreach ( $existing as $row ) { if ( $row->is_email_verified() ) { // Verified identity: always create a new pending row — never mutate. $pending = new Customer( null, Uuid::generate(), null, $first_name, $last_name, $email, null, $phone, null, null, null, null, false, null, CustomerStatus::Pending, null, $now, $now, ); $this->customers->save( $pending ); return $pending; } } foreach ( $existing as $row ) { if ( CustomerStatus::Pending === $row->status() || CustomerStatus::Active === $row->status() ) { return $row; } } $customer = new Customer( null, Uuid::generate(), null, $first_name, $last_name, $email, null, $phone, null, null, null, null, false, null, CustomerStatus::Active, null, $now, $now, ); $this->customers->save( $customer ); return $customer; } }