No Description

ver_oficina.dart 8.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. import 'package:flutter/material.dart';
  2. import '../widgets/DataTableMySqlDemo/Oficina.dart';
  3. import '../widgets/DataTableMySqlDemo/Horario.dart';
  4. import '../widgets/DataTableMySqlDemo/Especialista.dart';
  5. import '../widgets/DataTableMySqlDemo/Services.dart';
  6. import 'dart:async';
  7. import '../widgets/functions.dart';
  8. class VerOficina extends StatefulWidget{
  9. VerOficina() : super();
  10. final String title = 'Oficina';
  11. @override
  12. State<StatefulWidget> viewOficina() {
  13. //no se que hago, quizas no lo necesite
  14. return null;
  15. }
  16. _VerOficinaState createState() => _VerOficinaState();
  17. }
  18. class _VerOficinaState extends State<VerOficina>{
  19. Map post = {};
  20. List<Oficina> _oficina;
  21. List<Horario> _horario;
  22. List<Especialista> _especialista;
  23. @override
  24. void initState() {
  25. super.initState();
  26. _oficina = [];
  27. _getOficina();
  28. _horario = [];
  29. _getHorario();
  30. _especialista = [];
  31. _getEspecialista();
  32. }
  33. _getOficina() {
  34. return _oficina;
  35. }
  36. _getHorario() {
  37. return _horario;
  38. }
  39. _getEspecialista() {
  40. return _especialista;
  41. }
  42. //funcion
  43. //recibe Horario para regresar la horas de entrada y salida
  44. String getHoras(Horario horario) {
  45. var open_time = horario.open_time;
  46. var close_time = horario.close_time;
  47. if (open_time == close_time
  48. && open_time == '00:00:00'){
  49. return 'Cerrado';
  50. }
  51. var open_hour = int.parse(open_time.substring(0,2));
  52. var open_minutes = open_time.substring(3,5);
  53. //var open_minutes;
  54. var close_hour = int.parse(close_time.substring(0,2));
  55. var close_minutes = open_time.substring(3,5);
  56. // ver si la hora de abrir es AM o PM
  57. if (open_hour==12){
  58. open_time = open_time.substring(0,5) + ' PM';
  59. }else if (open_hour>12){
  60. open_time = (open_hour % 12).toString() + ':' + open_minutes + ' PM';
  61. }else{
  62. open_time = (open_hour % 12).toString() + ':' + open_minutes + ' AM';
  63. }
  64. // ver si la hora de cerrar es AM o PM
  65. if (close_hour==12){
  66. close_time = close_time.substring(0,5) + ' PM';
  67. }else if (close_hour>12){
  68. close_time = (close_hour % 12).toString() + ':' + close_minutes + ' PM';
  69. }else{
  70. close_time = (close_hour % 12).toString() + ':' + close_minutes + ' AM';
  71. }
  72. return open_time + ' - ' + close_time;
  73. }
  74. String getEspecialistas(List especialistas) {
  75. if(especialistas.length > 0 && especialistas[0].specialty.toString() != 'null'){
  76. var str = "";
  77. especialistas.forEach((especialista){
  78. str = str + especialista.specialty.toString() + '\n';
  79. });
  80. return str;
  81. }
  82. return "No hay especialistas";
  83. }
  84. @override
  85. Widget build(BuildContext context){
  86. post = ModalRoute.of(context).settings.arguments;
  87. Services.getOficina(post['id']).then((Oficina) {
  88. setState(() {
  89. _oficina = Oficina;
  90. });
  91. });
  92. Services.getHorario(post['id']).then((Horario) {
  93. setState(() {
  94. _horario = Horario;
  95. });
  96. });
  97. Services.getEspecialista(post['id']).then((Especialista) {
  98. setState(() {
  99. _especialista = Especialista;
  100. });
  101. });
  102. List<Oficina> lista = _oficina;
  103. var name = 'Cargando...';
  104. var telephone = 'Cargando...';
  105. var address = 'Cargando...';
  106. var email = 'Cargando...';
  107. if (lista.length > 0){
  108. name = lista[0].name;
  109. telephone = lista[0].telephone;
  110. address = lista[0].address;
  111. email = lista[0].email;
  112. }
  113. List<Horario> horario = _horario;
  114. var domingo_horario = 'Cargando...';
  115. var lunes_horario = 'Cargando...';
  116. var martes_horario = 'Cargando...';
  117. var miercoles_horario = 'Cargando...';
  118. var jueves_horario = 'Cargando...';
  119. var viernes_horario = 'Cargando...';
  120. var sabado_horario = 'Cargando...';
  121. if(horario.length == 7){
  122. domingo_horario = getHoras(horario[0]);
  123. lunes_horario = getHoras(horario[1]);
  124. martes_horario = getHoras(horario[2]);
  125. miercoles_horario = getHoras(horario[3]);
  126. jueves_horario = getHoras(horario[4]);
  127. viernes_horario = getHoras(horario[5]);
  128. sabado_horario = getHoras(horario[6]);
  129. }else{
  130. domingo_horario = 'Error';
  131. lunes_horario = 'Error';
  132. martes_horario = 'Error';
  133. miercoles_horario = 'Error';
  134. jueves_horario = 'Error';
  135. viernes_horario = 'Error';
  136. sabado_horario = 'Error';
  137. }
  138. List<Especialista> especialista = _especialista;
  139. var especialistas = getEspecialistas(especialista);
  140. return Scaffold(
  141. appBar: AppBar(
  142. title: Text(name),
  143. centerTitle: true,
  144. ),
  145. body: Center(
  146. child: ListView(
  147. //mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  148. children: [
  149. new Card(
  150. color: Colors.red[300],
  151. child: Column(
  152. mainAxisSize: MainAxisSize.min,
  153. children: <Widget>[
  154. ListTile(
  155. // leading: Icon(Icons.album),
  156. title: Text('Horario',style: TextStyle(fontWeight: FontWeight.bold,height: 2, fontSize: 36),textAlign: TextAlign.center),
  157. subtitle: Text(
  158. 'Domingo: ' + '$domingo_horario'
  159. '\nLunes: ' + '$lunes_horario'
  160. '\nMartes: ' + '$martes_horario'
  161. '\nMiercoles: ' + '$miercoles_horario'
  162. '\nJueves: ' + '$jueves_horario'
  163. '\nViernes: ' + '$viernes_horario'
  164. '\nSabado: ' + '$sabado_horario',
  165. style: TextStyle(fontWeight: FontWeight.bold,height: 2, fontSize: 12),
  166. textAlign: TextAlign.center),
  167. ),
  168. Row(
  169. mainAxisAlignment: MainAxisAlignment.end,
  170. children: <Widget>[
  171. TextButton(
  172. child: const Text('Buscar Disponibilidad'),
  173. onPressed: () { /* ... */ },
  174. ),
  175. const SizedBox(width: 8),
  176. ],
  177. ),
  178. ],
  179. ),
  180. ),
  181. new Card(
  182. color: Colors.red[300],
  183. child: Column(
  184. mainAxisSize: MainAxisSize.min,
  185. children: <Widget>[
  186. Row(
  187. mainAxisAlignment: MainAxisAlignment.center,
  188. children: <Widget>[
  189. TextButton(
  190. child: const Text('Especialidades \ndisponibles',
  191. style: TextStyle(fontWeight: FontWeight.bold,height: 1.5, fontSize: 36),
  192. textAlign: TextAlign.center),
  193. onPressed: () { /* ... */ },
  194. ),
  195. const SizedBox(width: 8),
  196. ],
  197. ),
  198. ListTile(
  199. subtitle: Text(
  200. '$especialistas',
  201. style: TextStyle(fontWeight: FontWeight.bold,height: 2, fontSize: 12),
  202. textAlign: TextAlign.center),
  203. ),
  204. ],
  205. ),
  206. ),
  207. new Card(
  208. color: Colors.red[300],
  209. child: Column(
  210. mainAxisSize: MainAxisSize.min,
  211. children: <Widget>[
  212. ListTile(
  213. title: Text('Direccion',style: TextStyle(fontWeight: FontWeight.bold,height: 2, fontSize: 36),textAlign: TextAlign.center),
  214. subtitle: Text('$address',
  215. style: TextStyle(fontWeight: FontWeight.bold,height: 2, fontSize: 12),
  216. textAlign: TextAlign.center),
  217. ),
  218. Row(
  219. mainAxisAlignment: MainAxisAlignment.end,
  220. children: <Widget>[
  221. TextButton(
  222. child: const Text('Buscar en el mapa'),
  223. onPressed: () { /* ... */ },
  224. ),
  225. const SizedBox(width: 8),
  226. ],
  227. ),
  228. ],
  229. ),
  230. ),
  231. new Card(
  232. color: Colors.red[300],
  233. child: Column(
  234. mainAxisSize: MainAxisSize.min,
  235. children: <Widget>[
  236. ListTile(
  237. title: Text('Contacto',style: TextStyle(fontWeight: FontWeight.bold,height: 2, fontSize: 36),textAlign: TextAlign.center),
  238. subtitle: Text("Telefono: \n "
  239. "$telephone \n "
  240. "\n"
  241. "Email: \n "
  242. "$email",
  243. style: TextStyle(fontWeight: FontWeight.bold,height: 2, fontSize: 12),
  244. textAlign: TextAlign.center),
  245. ),
  246. ],
  247. ),
  248. ),
  249. ],
  250. ),
  251. ),
  252. );
  253. }
  254. }