import { ChangeRequestStatus, CompanyChangeRequest, DocumentChangeIntent, LicenseChangeIntent, } from "../entities/company-change-request.entity"; /** * A staged profile change request. Used both by the portal (to lock the settings * page, show the reviewer note, and prefill the proposed values) and by the * backoffice review screen (to render the proposed-vs-current diff). */ export class ChangeRequestResponseDto { id: string; companyId: string; status: ChangeRequestStatus; /** Proposed field values (Partial) — the diff payload. */ snapshot: Record; documentFileIds: string[]; /** Staged business-license add/remove intents attached to this request. */ licenseChanges: LicenseChangeIntent[]; /** Staged company-document add/remove intents (e.g. the PoA letter). */ documentChanges: DocumentChangeIntent[]; note: string | null; submittedBy: string | null; submittedAt: Date | null; reviewedBy: string | null; reviewedAt: Date | null; createdAt: Date; updatedAt: Date; constructor(req: CompanyChangeRequest) { this.id = req.id; this.companyId = req.companyId; this.status = req.status; this.snapshot = req.snapshot ?? {}; this.documentFileIds = req.documents?.documentFileIds ?? []; this.licenseChanges = req.documents?.licenseChanges ?? []; this.documentChanges = req.documents?.documentChanges ?? []; this.note = req.note ?? null; this.submittedBy = req.submittedBy ?? null; this.submittedAt = req.submittedAt ?? null; this.reviewedBy = req.reviewedBy ?? null; this.reviewedAt = req.reviewedAt ?? null; this.createdAt = req.createdAt; this.updatedAt = req.updatedAt; } }