recordEvent(new EtablissementCree( establishmentId: $establishment->id, tenantId: $establishment->tenantId, name: $name, subdomain: $subdomain, adminEmail: $adminEmail, occurredOn: $createdAt, )); return $establishment; } public function activer(): void { $this->status = EstablishmentStatus::ACTIF; } public function desactiver(DateTimeImmutable $at): void { if ($this->status !== EstablishmentStatus::ACTIF) { throw EstablishmentDejaInactifException::pour($this->id); } $this->status = EstablishmentStatus::INACTIF; $this->recordEvent(new EtablissementDesactive( establishmentId: $this->id, occurredOn: $at, )); } public function enregistrerActivite(DateTimeImmutable $at): void { $this->lastActivityAt = $at; } /** * @internal For Infrastructure use only */ public static function reconstitute( EstablishmentId $id, TenantId $tenantId, string $name, string $subdomain, string $databaseName, EstablishmentStatus $status, DateTimeImmutable $createdAt, ?SuperAdminId $createdBy = null, ?DateTimeImmutable $lastActivityAt = null, ): self { $establishment = new self( id: $id, tenantId: $tenantId, name: $name, subdomain: $subdomain, databaseName: $databaseName, status: $status, createdAt: $createdAt, createdBy: $createdBy, ); $establishment->lastActivityAt = $lastActivityAt; return $establishment; } }