feat(loans): confirm declared material state changes

This commit is contained in:
SaidSoighiri94
2026-07-24 13:41:40 +02:00
parent 3739e9b0a0
commit a562b3248f
26 changed files with 1832 additions and 282 deletions
@@ -7,7 +7,6 @@ import "../models/materiel_item.dart";
import "../widgets/ensup_top_bar.dart";
import "../widgets/brand_corners.dart";
/// Écran de succès clôturant l'emprunt : confirmation + récapitulatif.
class ConfirmationScreen extends StatelessWidget {
const ConfirmationScreen({super.key, required this.emprunt, this.note});
@@ -15,6 +14,7 @@ class ConfirmationScreen extends StatelessWidget {
final String? note;
MaterielItem get item => emprunt.materiel;
bool get _enAttente => emprunt.statut == "EN_ATTENTE_VALIDATION_DEPART";
static String _deuxChiffres(int valeur) => valeur.toString().padLeft(2, "0");
@@ -127,15 +127,23 @@ class ConfirmationScreen extends StatelessWidget {
}
Widget _boiteSucces() {
final couleur = _enAttente
? const Color(0xFFD97706)
: const Color(0xFF15803D);
return Container(
width: double.infinity,
padding: const EdgeInsets.all(36),
decoration: BoxDecoration(
gradient: const LinearGradient(
colors: [Color(0xFFF0FDF4), Color(0xFFECFDF5)],
gradient: LinearGradient(
colors: _enAttente
? const [Color(0xFFFFF7ED), Color(0xFFFFFBEB)]
: const [Color(0xFFF0FDF4), Color(0xFFECFDF5)],
),
borderRadius: BorderRadius.circular(16),
border: Border.all(color: const Color(0xFFBBF7D0), width: 2),
border: Border.all(
color: _enAttente ? const Color(0xFFFED7AA) : const Color(0xFFBBF7D0),
width: 2,
),
),
child: Column(
children: [
@@ -144,12 +152,14 @@ class ConfirmationScreen extends StatelessWidget {
height: 72,
decoration: BoxDecoration(
shape: BoxShape.circle,
gradient: const LinearGradient(
colors: [Color(0xFF16A34A), Color(0xFF22C55E)],
gradient: LinearGradient(
colors: _enAttente
? const [Color(0xFFD97706), Color(0xFFF59E0B)]
: const [Color(0xFF16A34A), Color(0xFF22C55E)],
),
boxShadow: [
BoxShadow(
color: const Color(0xFF16A34A).withValues(alpha: 0.3),
color: couleur.withValues(alpha: 0.3),
blurRadius: 20,
offset: const Offset(0, 6),
),
@@ -159,20 +169,24 @@ class ConfirmationScreen extends StatelessWidget {
),
const SizedBox(height: 18),
Text(
"Emprunt enregistré !",
_enAttente ? "Écart transmis" : "Emprunt enregistré !",
style: GoogleFonts.darkerGrotesque(
fontSize: 28,
fontWeight: FontWeight.w900,
color: const Color(0xFF15803D),
color: couleur,
),
),
const SizedBox(height: 8),
Text(
"Votre emprunt a bien été enregistré. Vous pouvez récupérer le matériel.",
_enAttente
? "Le matériel est réservé. Attendez la confirmation du responsable avant de le récupérer."
: "Votre emprunt est actif. Vous pouvez récupérer le matériel.",
textAlign: TextAlign.center,
style: GoogleFonts.titilliumWeb(
fontSize: 14,
color: const Color(0xFF166534),
color: _enAttente
? const Color(0xFF9A3412)
: const Color(0xFF166534),
),
),
],
@@ -211,6 +225,11 @@ class ConfirmationScreen extends StatelessWidget {
_rrow("Date d'emprunt", date),
_rrow("Heure", heure),
_rrow("Campus", item.campus),
_rrow(
"Statut",
_enAttente ? "En attente de confirmation" : "En cours",
valueColor: _enAttente ? const Color(0xFFD97706) : null,
),
if (note != null)
_rrow("Note", note, valueColor: const Color(0xFFD97706)),
],