Base solide de la page calendar, commit avant refacto
This commit is contained in:
@ -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();
|
||||
|
Reference in New Issue
Block a user