mejora de class horario

This commit is contained in:
Juan Felipe Duarte
2023-06-20 22:22:24 -05:00
parent f80d0a0f30
commit 56724bd2fd
2 changed files with 45 additions and 49 deletions
+45 -47
View File
@@ -1,7 +1,6 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:prosappco/src/components/primary_btn.dart';
typedef TimeCallback = void Function(TimeOfDay? pickedTime);
@@ -132,54 +131,43 @@ class _SchedulePickerState extends State<SchedulePicker> {
class Schedule {
bool habilitado;
bool jornadaContinua;
TimeOfDay? range1Hour1 = TimeOfDay.now();
TimeOfDay? range1Hour2 = TimeOfDay.now();
TimeOfDay? range2Hour1 = TimeOfDay.now();
TimeOfDay? range2Hour2 = TimeOfDay.now();
TimeOfDay? range1Hour1;
TimeOfDay? range1Hour2;
TimeOfDay? range2Hour1;
TimeOfDay? range2Hour2;
Schedule(this.habilitado, this.jornadaContinua, this.range1Hour1,
this.range1Hour2, this.range2Hour1, this.range2Hour2);
Schedule(
this.habilitado,
this.jornadaContinua,
this.range1Hour1,
this.range1Hour2,
this.range2Hour1,
this.range2Hour2,
);
static Future<Map<String, Schedule>> fromJson(
Map<String, dynamic>? json) async {
try {
if (json == null) {
return {
"Lunes": Schedule(false, false, null, null, null, null),
"Martes": Schedule(false, false, null, null, null, null),
"Miercoles": Schedule(false, false, null, null, null, null),
"Jueves": Schedule(false, false, null, null, null, null),
"Viernes": Schedule(false, false, null, null, null, null),
"Sabado": Schedule(false, false, null, null, null, null),
"Domingo": Schedule(false, false, null, null, null, null),
};
}
Map<String, dynamic> horarios = json['horario'];
horarios.entries;
print('Entrada ${horarios.entries}');
var hora = horarios.map((key, value) => MapEntry(
key,
Schedule(
value['habilitado'],
value['jornadaContinua'],
stringToTimeOfDay(value['range1Hour1']),
stringToTimeOfDay(value['range1Hour2']),
stringToTimeOfDay(value['range2Hour1']),
stringToTimeOfDay(value['range2Hour2']))));
static Schedule fromJson(Map<String, dynamic> json) {
return Schedule(
json['habilitado'],
json['jornadaContinua'],
_parseTime(json['range1Hour1']),
_parseTime(json['range1Hour2']),
_parseTime(json['range2Hour1']),
_parseTime(json['range2Hour2']),
);
}
print('Entradas ${hora}');
return hora;
} catch (e) {
return {
"Lunes": Schedule(false, false, null, null, null, null),
"Martes": Schedule(false, false, null, null, null, null),
"Miercoles": Schedule(false, false, null, null, null, null),
"Jueves": Schedule(false, false, null, null, null, null),
"Viernes": Schedule(false, false, null, null, null, null),
"Sabado": Schedule(false, false, null, null, null, null),
"Domingo": Schedule(false, false, null, null, null, null),
};
static TimeOfDay? _parseTime(String? time) {
if (time == null) return null;
final components = time.split(' ');
final hourMinutes = components[0].split(':');
final hour = int.parse(hourMinutes[0]);
final minutes = int.parse(hourMinutes[1]);
if (components[1] == 'PM' && hour < 12) {
return TimeOfDay(hour: hour + 12, minute: minutes);
} else if (components[1] == 'AM' && hour == 12) {
return TimeOfDay(hour: 0, minute: minutes);
}
return TimeOfDay(hour: hour, minute: minutes);
}
static TimeOfDay stringToTimeOfDay(String? tod) {
@@ -190,14 +178,24 @@ class Schedule {
return TimeOfDay.fromDateTime(format.parse(tod));
}
@override
String toString() {
return 'Schedule(habilitado: $habilitado, jornadaContinua: $jornadaContinua, '
'range1Hour1: $range1Hour1, range1Hour2: $range1Hour2, '
'range2Hour1: $range2Hour1, range2Hour2: $range2Hour2)';
}
static Future<Map<String, Schedule>> getHorarios(String uid) async {
try {
final snapshot =
await FirebaseFirestore.instance.collection('users').doc(uid).get();
final Map<String, dynamic>? data = snapshot.data();
final Map<String, dynamic>? horarioData = data?['horario'];
print('hola ${fromJson(data)}');
return fromJson(horarioData);
final horarios = <String, Schedule>{};
horarioData?.forEach((key, value) {
horarios[key] = Schedule.fromJson(value);
});
return horarios;
} catch (e) {
print('Error getting user: $e');
return {
-2
View File
@@ -2,7 +2,6 @@ import 'dart:io';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_animate/flutter_animate.dart';
@@ -16,7 +15,6 @@ import 'package:prosappco/src/models/setting_model.dart';
import 'package:prosappco/src/screens/horario.dart';
import 'package:prosappco/src/screens/professional.dart';
import 'package:prosappco/src/screens/professional_direccion.dart';
import 'package:prosappco/src/screens/ubicacion.dart';
import 'package:prosappco/src/services/select_image_profile.dart';
class ProfileProScreen extends StatefulWidget {