SIM-Karten: Checkbox "eSIM" zwischen Hauptkarte und Multisim
Hardware-Plastikkarte vs. eSIM-Profil ist eigene Eigenschaft – eSIM kann sowohl Hauptkarte als auch Multisim sein, deshalb dritter Toggle statt entweder/oder. - Schema: SimCard.isEsim Boolean default false, Migration mit IF NOT EXISTS. - Backend: vier SimCard-Schreibpfade in contract.service.ts (Create, Update, Follow-Up, Renewal). - UI: dritte Checkbox in ContractForm zwischen Hauptkarte und Multisim. ContractDetail zeigt blauen eSIM-Badge.
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
-- SIM-Karte bekommt ein optionales `isEsim`-Flag – Hardware-Plastikkarte
|
||||
-- vs. eSIM-Profil. UI-Position: zwischen "Hauptkarte" und "Multisim".
|
||||
--
|
||||
-- IF NOT EXISTS macht den Re-Deploy auf Prod sicher, falls jemand schon
|
||||
-- `prisma db push` gefahren hat.
|
||||
|
||||
ALTER TABLE `SimCard`
|
||||
ADD COLUMN IF NOT EXISTS `isEsim` BOOLEAN NOT NULL DEFAULT false;
|
||||
@@ -934,6 +934,7 @@ model SimCard {
|
||||
puk String? // PUK (verschlüsselt gespeichert)
|
||||
isMultisim Boolean @default(false) // Ist dies eine Multisim-Karte?
|
||||
isMain Boolean @default(false) // Ist dies die Hauptkarte?
|
||||
isEsim Boolean @default(false) // Ist dies eine eSIM?
|
||||
// Tatsächlicher Nutzer der SIM-Karte (z.B. Mitarbeiter bei Firmenverträgen,
|
||||
// Kind bei Eltern-Vertrag) – kann vom Vertragsinhaber abweichen.
|
||||
cardUser String?
|
||||
|
||||
@@ -276,6 +276,7 @@ interface ContractCreateData {
|
||||
puk?: string;
|
||||
isMultisim?: boolean;
|
||||
isMain?: boolean;
|
||||
isEsim?: boolean;
|
||||
cardUser?: string;
|
||||
}[];
|
||||
};
|
||||
@@ -381,6 +382,7 @@ export async function createContract(data: ContractCreateData) {
|
||||
puk: sc.puk ? encrypt(sc.puk) : undefined,
|
||||
isMultisim: sc.isMultisim ?? false,
|
||||
isMain: sc.isMain ?? false,
|
||||
isEsim: sc.isEsim ?? false,
|
||||
cardUser: sc.cardUser,
|
||||
})),
|
||||
}
|
||||
@@ -620,6 +622,7 @@ export async function updateContract(
|
||||
puk: sc.puk ? encrypt(sc.puk) : (existingSc?.puk ?? undefined),
|
||||
isMultisim: sc.isMultisim ?? false,
|
||||
isMain: sc.isMain ?? false,
|
||||
isEsim: sc.isEsim ?? false,
|
||||
cardUser: sc.cardUser,
|
||||
};
|
||||
}),
|
||||
@@ -639,6 +642,7 @@ export async function updateContract(
|
||||
puk: sc.puk ? encrypt(sc.puk) : undefined,
|
||||
isMultisim: sc.isMultisim ?? false,
|
||||
isMain: sc.isMain ?? false,
|
||||
isEsim: sc.isEsim ?? false,
|
||||
cardUser: sc.cardUser,
|
||||
})),
|
||||
}
|
||||
@@ -766,6 +770,7 @@ export async function createFollowUpContract(previousContractId: number) {
|
||||
simCardNumber: sc.simCardNumber ?? undefined,
|
||||
isMultisim: sc.isMultisim,
|
||||
isMain: sc.isMain,
|
||||
isEsim: sc.isEsim,
|
||||
})),
|
||||
};
|
||||
}
|
||||
@@ -990,6 +995,7 @@ export async function createRenewalContract(previousContractId: number) {
|
||||
simCardNumber: sc.simCardNumber,
|
||||
isMultisim: sc.isMultisim,
|
||||
isMain: sc.isMain,
|
||||
isEsim: sc.isEsim,
|
||||
pin: sc.pin,
|
||||
puk: sc.puk,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user