Base solide de la page calendar, commit avant refacto

This commit is contained in:
2025-05-18 20:01:26 +02:00
parent 8bd80dc7f3
commit 62c6125d8c
4 changed files with 176 additions and 52 deletions

View File

@ -1,14 +1,16 @@
import 'package:em2rp/providers/local_user_provider.dart';
import 'package:em2rp/providers/event_provider.dart';
import 'package:flutter/material.dart';
import 'package:em2rp/widgets/custom_app_bar.dart';
import 'package:em2rp/views/widgets/nav/main_drawer.dart';
import 'package:provider/provider.dart'; // Import Provider
import 'package:provider/provider.dart';
import 'package:em2rp/utils/colors.dart';
import 'package:table_calendar/table_calendar.dart';
import 'package:em2rp/models/event_model.dart';
import 'package:em2rp/widgets/event_details.dart';
import 'package:latlong2/latlong.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class CalendarPage extends StatefulWidget {
const CalendarPage({Key? key}) : super(key: key);
@ -27,37 +29,19 @@ class _CalendarPageState extends State<CalendarPage> {
void initState() {
super.initState();
initializeDateFormatting('fr_FR', null);
Future.microtask(() => _loadEvents());
}
// Événements de test
final List<EventModel> _testEvents = [
EventModel(
id: '1',
name: 'Bal a Grammond',
description: 'Lorem Ipsum',
startDateTime: DateTime(2025, 3, 28, 12, 30),
endDateTime: DateTime(2025, 3, 28, 23, 30),
price: 950.34,
installationTime: 3,
disassemblyTime: 2,
eventTypeId: '/eventTypes/Bal',
customerId: '/customers/DnjJ1HOPBLqEeExs0nDl',
address: const LatLng(45.566521035268224, 4.439601075086365),
),
EventModel(
id: '2',
name: 'Mariage à Lyon',
description: 'Cérémonie et réception',
startDateTime: DateTime(2025, 3, 28, 15, 0),
endDateTime: DateTime(2025, 3, 29, 4, 0),
price: 2500.00,
installationTime: 4,
disassemblyTime: 3,
eventTypeId: '/eventTypes/Mariage',
customerId: '/customers/Test123',
address: const LatLng(45.7578137, 4.8320114),
),
];
Future<void> _loadEvents() async {
final localAuthProvider =
Provider.of<LocalUserProvider>(context, listen: false);
final eventProvider = Provider.of<EventProvider>(context, listen: false);
final userId = localAuthProvider.uid;
if (userId != null) {
await eventProvider.loadUserEvents(userId);
}
}
void _changeWeek(int delta) {
setState(() {
@ -68,8 +52,17 @@ class _CalendarPageState extends State<CalendarPage> {
@override
Widget build(BuildContext context) {
final localAuthProvider = Provider.of<LocalUserProvider>(context);
final eventProvider = Provider.of<EventProvider>(context);
final isMobile = MediaQuery.of(context).size.width < 600;
if (eventProvider.isLoading) {
return const Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
);
}
return Scaffold(
appBar: const CustomAppBar(
title: 'Calendrier',
@ -452,7 +445,7 @@ class _CalendarPageState extends State<CalendarPage> {
// Préparer les événements par jour (en tenant compte des multi-jours)
List<List<_PositionedEvent>> eventsByDay = List.generate(7, (i) => []);
for (final event in _testEvents) {
for (final event in Provider.of<EventProvider>(context).events) {
// Pour chaque jour de la semaine
for (int i = 0; i < 7; i++) {
final day = weekStart.add(Duration(days: i));
@ -735,7 +728,7 @@ class _CalendarPageState extends State<CalendarPage> {
final dayStart = DateTime(day.year, day.month, day.day, 0, 0);
final dayEnd = DateTime(day.year, day.month, day.day, 23, 59, 59);
return _testEvents.where((event) {
return Provider.of<EventProvider>(context).events.where((event) {
return !(event.endDateTime.isBefore(dayStart) ||
event.startDateTime.isAfter(dayEnd));
}).toList();