From 56724bd2fdde460a65a41a47d1d871802e634b1d Mon Sep 17 00:00:00 2001 From: Juan Felipe Duarte <70235683+DuarteJFelipe@users.noreply.github.com> Date: Tue, 20 Jun 2023 22:22:24 -0500 Subject: [PATCH] mejora de class horario --- lib/src/components/schedule_picker.dart | 92 ++++++++++++------------- lib/src/screens/profile_pro.dart | 2 - 2 files changed, 45 insertions(+), 49 deletions(-) diff --git a/lib/src/components/schedule_picker.dart b/lib/src/components/schedule_picker.dart index b5a99f3..ba32513 100644 --- a/lib/src/components/schedule_picker.dart +++ b/lib/src/components/schedule_picker.dart @@ -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 { 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> fromJson( - Map? 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 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 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> getHorarios(String uid) async { try { final snapshot = await FirebaseFirestore.instance.collection('users').doc(uid).get(); final Map? data = snapshot.data(); final Map? horarioData = data?['horario']; - print('hola ${fromJson(data)}'); - return fromJson(horarioData); + final horarios = {}; + horarioData?.forEach((key, value) { + horarios[key] = Schedule.fromJson(value); + }); + return horarios; } catch (e) { print('Error getting user: $e'); return { diff --git a/lib/src/screens/profile_pro.dart b/lib/src/screens/profile_pro.dart index 099c4b5..10608fd 100644 --- a/lib/src/screens/profile_pro.dart +++ b/lib/src/screens/profile_pro.dart @@ -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 {