﻿1
00:00:01,042 --> 00:00:02,080
‫Instructor: En

2
00:00:02,080 --> 00:00:04,790
‫este video, implementaremos la página de mis reservas.

3
00:00:04,790 --> 00:00:07,200
‫Entonces, básicamente, vamos a generar una bonita página

4
00:00:07,200 --> 00:00:10,183
‫que contenga todos los recorridos que un usuario ha reservado.

5
00:00:11,950 --> 00:00:15,920
‫Y comencemos agregando una nueva ruta a nuestras viewRoutes.

6
00:00:17,120 --> 00:00:21,320
‫Bien, entonces me tenemos a mí y luego vamos

7
00:00:21,320 --> 00:00:23,253
‫a crear los my-tours.

8
00:00:24,720 --> 00:00:29,720
‫Así que estoy duplicando este, my-tours, entonces también esta ruta debe estar

9
00:00:29,740 --> 00:00:32,230
‫protegida para que solo los usuarios

10
00:00:32,230 --> 00:00:34,090
‫que hayan iniciado

11
00:00:34,090 --> 00:00:37,150
‫sesión puedan acceder a esta página, por supuesto.

12
00:00:37,150 --> 00:00:39,020
‫Y luego, en nuestro

13
00:00:39,020 --> 00:00:41,723
‫viewsController, tendremos un controlador llamado getMyTours.

14
00:00:44,029 --> 00:00:47,480
‫MyTours como este, ¿de acuerdo?

15
00:00:47,480 --> 00:00:49,943
‫Y eso es todo por ahora,

16
00:00:50,930 --> 00:00:54,123
‫así que sigamos adelante y creemos este controlador ahora.

17
00:00:56,090 --> 00:00:59,030
‫Bien, tenemos todo esto aquí, haz un

18
00:00:59,030 --> 00:01:02,790
‫recorrido, obtén el formulario de inicio de sesión, obtén una cuenta.

19
00:01:02,790 --> 00:01:04,853
‫Pongamos este aquí también.

20
00:01:12,559 --> 00:01:14,690
‫Y ahora, lo que tenemos que

21
00:01:14,690 --> 00:01:18,060
‫hacer aquí es encontrar todos los tours que el usuario ha reservado.

22
00:01:18,060 --> 00:01:21,050
‫Entonces, básicamente, primero tenemos que encontrar todas las reservas para los

23
00:01:21,050 --> 00:01:23,170
‫usuarios que han iniciado sesión actualmente,

24
00:01:23,170 --> 00:01:25,620
‫que luego nos darán un montón de ID de

25
00:01:25,620 --> 00:01:28,503
‫tour, y luego tenemos que encontrar los tours con esos ID.

26
00:01:29,400 --> 00:01:34,400
‫Entonces, básicamente, busque todas las reservas y luego

27
00:01:39,790 --> 00:01:44,340
‫busque recorridos con las identificaciones devueltas.

28
00:01:44,340 --> 00:01:48,890
‫Entonces, básicamente, los ID de las reservas para el usuario, ¿verdad?

29
00:01:48,890 --> 00:01:50,720
‫Ahora, en cambio, también podríamos

30
00:01:50,720 --> 00:01:53,440
‫hacer un llenado virtual en los recorridos, y

31
00:01:53,440 --> 00:01:55,413
‫sería genial si implementara esto por

32
00:01:55,413 --> 00:01:59,130
‫su cuenta exactamente como lo hemos hecho antes con los recorridos

33
00:01:59,130 --> 00:02:01,240
‫y las reseñas, pero aquí, en

34
00:02:01,240 --> 00:02:04,040
‫esta función, realmente quería para mostrarte cómo podemos hacerlo

35
00:02:04,040 --> 00:02:05,710
‫manualmente porque creo

36
00:02:05,710 --> 00:02:08,290
‫que eso también es algo importante y, en

37
00:02:08,290 --> 00:02:10,067
‫realidad, una población virtual debería

38
00:02:10,067 --> 00:02:13,550
‫funcionar de manera similar a lo que vamos a hacer aquí.

39
00:02:13,550 --> 00:02:16,100
‫Y entonces ves que en realidad necesitamos dos

40
00:02:16,100 --> 00:02:18,070
‫consultas para encontrar realmente los

41
00:02:18,070 --> 00:02:20,487
‫recorridos correspondientes a las reservas del usuario.

42
00:02:20,487 --> 00:02:22,850
‫De todos modos, comencemos ahora,

43
00:02:22,850 --> 00:02:25,753
‫así que creemos una variable para todas las

44
00:02:28,751 --> 00:02:33,513
‫reservas, espere y ahora creo que todavía no tenemos las reservas aquí, no.

45
00:02:37,840 --> 00:02:39,533
‫Así que Bookings aquí y bookingModel.

46
00:02:43,010 --> 00:02:47,890
‫Y aquí, por supuesto, es solo una reserva, de acuerdo.

47
00:02:47,890 --> 00:02:52,890
‫Así que espera Booking. buscar, y ahora recuerde que

48
00:02:53,530 --> 00:02:58,380
‫cada documento de reserva tiene una identificación de usuario, ¿verdad?

49
00:02:58,380 --> 00:03:00,160
‫Entonces, aquí en el esquema, recuerde que

50
00:03:00,160 --> 00:03:02,331
‫tenemos la identificación del recorrido, la identificación del

51
00:03:02,331 --> 00:03:04,410
‫usuario y luego todos estos otros datos, así

52
00:03:04,410 --> 00:03:05,870
‫que lo que vamos

53
00:03:05,870 --> 00:03:09,400
‫a hacer ahora es básicamente consultar por la identificación del usuario, ¿de acuerdo?

54
00:03:09,400 --> 00:03:10,940
‫Y entonces eso nos

55
00:03:10,940 --> 00:03:15,136
‫devolverá todos los tours que pertenecen al usuario actual, ¿de acuerdo?

56
00:03:15,136 --> 00:03:16,653
‫Entonces, este no.

57
00:03:20,650 --> 00:03:23,900
‫Por lo tanto, el recorrido debe ser igual al req. usuario. identificación.

58
00:03:29,170 --> 00:03:33,790
‫Luego, aquí async y, como siempre, también catchAsync.

59
00:03:37,000 --> 00:03:39,440
‫Entonces, estas reservas ahora contienen todos los documentos

60
00:03:39,440 --> 00:03:41,810
‫de reserva para el usuario actual, pero

61
00:03:41,810 --> 00:03:44,690
‫en realidad eso solo nos da los ID del tour.

62
00:03:44,690 --> 00:03:48,350
‫Y ahora queremos encontrar los recorridos con los ID devueltos.

63
00:03:48,350 --> 00:03:50,500
‫Entonces, el siguiente paso es básicamente

64
00:03:50,500 --> 00:03:52,976
‫crear una matriz de todas las ID,

65
00:03:52,976 --> 00:03:55,430
‫y luego, después de esa consulta, para

66
00:03:55,430 --> 00:03:58,512
‫los recorridos que tienen una de estas ID, ¿de acuerdo?

67
00:03:58,512 --> 00:04:00,950
‫Y esto tendrá un poco más de

68
00:04:00,950 --> 00:04:03,973
‫sentido una vez que implementemos lo que acabo de explicar.

69
00:04:04,830 --> 00:04:09,347
‫Entonces, tourIDs es igual a reservas y ahora usaremos un mapa para

70
00:04:09,347 --> 00:04:11,240
‫crear una nueva matriz basada

71
00:04:11,240 --> 00:04:14,630
‫en una función de devolución de llamada que es

72
00:04:15,700 --> 00:04:17,530
‫esta, por lo que

73
00:04:17,530 --> 00:04:22,300
‫el actual el. excursión. identificación.

74
00:04:22,300 --> 00:04:25,200
‫Entonces, ¿qué va a hacer esto?

75
00:04:25,200 --> 00:04:28,630
‫Bueno, básicamente esto recorre toda la matriz de reservas y

76
00:04:28,630 --> 00:04:32,760
‫en cada elemento tomará el. excursión.

77
00:04:32,760 --> 00:04:35,130
‫Y de hecho, ni siquiera necesitamos la identificación

78
00:04:35,130 --> 00:04:39,210
‫aquí porque la gira en sí ya es la identificación de la gira, ¿verdad?

79
00:04:39,210 --> 00:04:41,460
‫Luego, al final, tenemos una buena matriz

80
00:04:41,460 --> 00:04:44,330
‫con todos los ID de recorrido aquí y eso

81
00:04:44,330 --> 00:04:45,980
‫es porque usamos un mapa.

82
00:04:49,640 --> 00:04:52,500
‫De acuerdo, teniendo todas las identificaciones de

83
00:04:52,500 --> 00:04:56,233
‫los recorridos, podemos obtener los recorridos correspondientes a esos identificadores.

84
00:04:58,640 --> 00:05:03,640
‫Así que aguarda Tour. find y realmente queremos buscar por ID, pero

85
00:05:07,380 --> 00:05:09,953
‫no podemos usar el. findbyid porque

86
00:05:10,900 --> 00:05:14,120
‫aquí realmente necesitaremos un nuevo operador.

87
00:05:14,120 --> 00:05:15,470
‫Y se llama a

88
00:05:15,470 --> 00:05:17,630
‫dicho operador, que no estoy seguro si

89
00:05:17,630 --> 00:05:18,713
‫hayamos usado antes.

90
00:05:20,370 --> 00:05:21,810
‫Entonces, en tourIDs.

91
00:05:24,320 --> 00:05:26,330
‫Entonces, básicamente, lo que va

92
00:05:26,330 --> 00:05:28,370
‫a hacer esto es que seleccionará

93
00:05:28,370 --> 00:05:33,370
‫todos los recorridos que tienen una ID que está en la matriz tourIDs, ¿de acuerdo?

94
00:05:33,520 --> 00:05:35,277
‫Así que eso es

95
00:05:35,277 --> 00:05:37,618
‫bastante sencillo, pero es muy bueno

96
00:05:37,618 --> 00:05:41,720
‫saber que podemos usar este operador muy útil aquí, ¿de acuerdo?

97
00:05:41,720 --> 00:05:43,770
‫Y esa es en realidad una de las

98
00:05:43,770 --> 00:05:45,620
‫razones por las que quería hacer

99
00:05:45,620 --> 00:05:49,200
‫esto manualmente en lugar de simplemente hacer un poblado virtual como lo hicimos antes.

100
00:05:49,200 --> 00:05:51,760
‫Pero, de nuevo, sería bueno que siguiera adelante

101
00:05:51,760 --> 00:05:53,760
‫e implementara eso también solo

102
00:05:53,760 --> 00:05:55,823
‫por el gusto de hacerlo, ya sabe.

103
00:05:57,060 --> 00:05:58,860
‫De acuerdo, y con esto

104
00:05:58,860 --> 00:06:01,593
‫ya tenemos nuestros recorridos listos para ser renderizados.

105
00:06:03,330 --> 00:06:07,385
‫Entonces, res. estado como

106
00:06:07,385 --> 00:06:11,230
‫siempre, y luego renderizarlos, ¿de acuerdo?

107
00:06:11,230 --> 00:06:14,100
‫Y de hecho, ni siquiera necesitamos una nueva plantilla para esto.

108
00:06:14,100 --> 00:06:17,383
‫Simplemente vamos a reutilizar la descripción general, ¿de acuerdo?

109
00:06:19,670 --> 00:06:21,300
‫Así que vamos a terminar

110
00:06:21,300 --> 00:06:23,530
‫con una página que se parece mucho a

111
00:06:23,530 --> 00:06:26,923
‫la descripción general, pero solo con los recorridos que el usuario ha reservado.

112
00:06:27,820 --> 00:06:30,456
‫Entonces, aquí arriba y para tener

113
00:06:30,456 --> 00:06:34,180
‫una visión general, pasamos todos los recorridos, ¿de acuerdo?

114
00:06:34,180 --> 00:06:36,510
‫Así que básicamente todos ellos.

115
00:06:36,510 --> 00:06:38,960
‫Y ahora, vamos a tener algo muy

116
00:06:38,960 --> 00:06:42,113
‫similar pero, por supuesto, solo pasaremos en las giras reservadas.

117
00:06:42,113 --> 00:06:43,653
‫Entonces, ¿dónde está eso?

118
00:06:47,450 --> 00:06:51,813
‫Muy bien, entonces el título será Mis recorridos, y

119
00:06:56,050 --> 00:06:59,640
‫de nuevo pasará la variable de recorridos.

120
00:06:59,640 --> 00:07:01,680
‫Está bien y eso debería ser todo.

121
00:07:01,680 --> 00:07:03,810
‫Ahora, por supuesto, también podríamos haber creado

122
00:07:03,810 --> 00:07:06,550
‫una tarjeta completamente nueva para estas librerías con

123
00:07:06,550 --> 00:07:08,250
‫información más relevante sobre

124
00:07:08,250 --> 00:07:10,080
‫cada una de las reservas,

125
00:07:10,080 --> 00:07:12,830
‫pero en este caso eso no es realmente importante.

126
00:07:12,830 --> 00:07:14,290
‫¿Ahora a la derecha?

127
00:07:14,290 --> 00:07:16,480
‫Entonces, estamos listos para

128
00:07:16,480 --> 00:07:20,040
‫probar esto porque ya implementamos la ruta aquí antes.

129
00:07:20,040 --> 00:07:22,620
‫Y así son mis recorridos.

130
00:07:22,620 --> 00:07:25,750
‫Oh, pero en realidad establezcamos este enlace aquí en

131
00:07:25,750 --> 00:07:28,240
‫la página de la cuenta de usuario.

132
00:07:28,240 --> 00:07:31,380
‫Por lo tanto, estos my-tours deberían

133
00:07:31,380 --> 00:07:35,066
‫tener su propio enlace aquí mismo en la cuenta.

134
00:07:35,066 --> 00:07:36,633
‫Entonces, en esa columna

135
00:07:37,860 --> 00:07:40,777
‫de la izquierda, está justo aquí en Mis reservas,

136
00:07:40,777 --> 00:07:42,560
‫así que tenemos esta primera

137
00:07:42,560 --> 00:07:44,949
‫aquí que es para el enlace, recuerde.

138
00:07:44,949 --> 00:07:48,800
‫Y ahora mismo, básicamente, todos apuntan a ninguna parte, pero ahora

139
00:07:48,800 --> 00:07:51,453
‫para las reservas tenemos un enlace.

140
00:07:51,453 --> 00:07:56,453
‫Y así son mis recorridos.

141
00:07:57,000 --> 00:07:59,570
‫Y podríamos haberlo llamado reservas también, pero eso

142
00:07:59,570 --> 00:08:02,053
‫no es realmente importante de todos modos.

143
00:08:03,210 --> 00:08:05,630
‫Entonces, ahora estamos listos para probar esto.

144
00:08:05,630 --> 00:08:07,990
‫De hecho, cierre la sesión de

145
00:08:07,990 --> 00:08:11,363
‫este usuario y luego inicie sesión como nuestro otro usuario, Laura.

146
00:08:17,860 --> 00:08:22,380
‫Muy bien, y veamos qué obtenemos aquí y eso está

147
00:08:24,111 --> 00:08:26,476
‫tomando demasiado tiempo, así que

148
00:08:26,476 --> 00:08:31,014
‫echemos un vistazo a nuestro código, editemos nuestra terminal aquí.

149
00:08:31,014 --> 00:08:34,810
‫De acuerdo, no hay ningún error aquí, pero también

150
00:08:34,810 --> 00:08:38,390
‫parece que no está sucediendo nada aquí.

151
00:08:38,390 --> 00:08:42,683
‫Así que la ruta my-tours aquí ni siquiera aparece, de acuerdo.

152
00:08:43,780 --> 00:08:45,550
‫Ahora, para encontrar este

153
00:08:45,550 --> 00:08:48,600
‫error, tuve que depurar un poco fuera de

154
00:08:48,600 --> 00:08:52,304
‫este video porque era realmente difícil de encontrar, de acuerdo.

155
00:08:52,304 --> 00:08:55,330
‫Primero, hay un pequeño error aquí.

156
00:08:55,330 --> 00:08:58,690
‫Así que aquí debería ser usuario y no recorrido.

157
00:08:58,690 --> 00:09:00,800
‫Entonces lo expliqué correctamente en ese

158
00:09:00,800 --> 00:09:03,373
‫entonces, donde dije que necesitamos filtrar por el

159
00:09:03,373 --> 00:09:05,811
‫usuario, entonces recorridos donde el usuario es

160
00:09:05,811 --> 00:09:08,250
‫igual al usuario que proviene de la solicitud,

161
00:09:08,250 --> 00:09:11,690
‫pero luego, por alguna razón, lo hice mal aquí, ¿de acuerdo?

162
00:09:11,690 --> 00:09:13,904
‫Pero ese no es el error principal en realidad.

163
00:09:13,904 --> 00:09:17,267
‫Así que no es el que impide que la página se cargue realmente.

164
00:09:17,267 --> 00:09:19,552
‫El error que hace que eso

165
00:09:19,552 --> 00:09:22,634
‫suceda está aquí, en realidad, en el modelo de reserva.

166
00:09:22,634 --> 00:09:26,810
‫Y está aquí en este middleware previo a la búsqueda.

167
00:09:26,810 --> 00:09:28,690
‫Y el problema

168
00:09:28,690 --> 00:09:32,944
‫es que nunca llamamos al próximo middleware aquí, ahora, ¿verdad?

169
00:09:32,944 --> 00:09:36,120
‫Entonces, nuevamente, este es un pre-middleware.

170
00:09:36,120 --> 00:09:38,490
‫Y todos los pre-middlewares tienen acceso a la

171
00:09:38,490 --> 00:09:40,620
‫siguiente función y, por lo tanto, al

172
00:09:40,620 --> 00:09:42,710
‫final de estos middlewares, siempre tenemos

173
00:09:42,710 --> 00:09:44,370
‫que llamar a next.

174
00:09:44,370 --> 00:09:48,634
‫De lo contrario, nuestro proceso realmente se atasca, ¿de acuerdo?

175
00:09:48,634 --> 00:09:52,110
‫Así que dale un guardado, realmente puede cerrar este.

176
00:09:52,110 --> 00:09:54,800
‫Y ahora intentemos eso de

177
00:09:56,754 --> 00:09:59,532
‫nuevo y ahora tenemos mis recorridos,

178
00:09:59,532 --> 00:10:04,097
‫pero está vacío ya que este usuario nunca hizo una reserva.

179
00:10:04,097 --> 00:10:06,803
‫Entonces, probemos eso ahora, y reservemos

180
00:10:08,000 --> 00:10:10,203
‫al excursionista del bosque.

181
00:10:16,070 --> 00:10:18,480
‫Así que eso debería seguir funcionando,

182
00:10:18,480 --> 00:10:21,291
‫y de hecho lo hace, muy bien.

183
00:10:21,291 --> 00:10:24,400
‫Tenemos la dirección de correo electrónico preformateada

184
00:10:24,400 --> 00:10:26,763
‫y ahora, como siempre, 4242.

185
00:10:28,590 --> 00:10:31,841
‫Así que hicimos la reserva antes en realidad con este

186
00:10:31,841 --> 00:10:34,710
‫usuario, pero antes implementamos el modelo de reserva y,

187
00:10:35,870 --> 00:10:37,681
‫por lo tanto, nunca

188
00:10:37,681 --> 00:10:39,893
‫creamos realmente una reserva en nuestro sistema.

189
00:10:42,150 --> 00:10:44,590
‫Muy bien, entonces el

190
00:10:44,590 --> 00:10:49,590
‫pago aceptado y ahora veamos y aquí vamos, ¡genial!

191
00:10:51,689 --> 00:10:55,200
‫Entonces, esa lógica que acabamos de implementar realmente funcionó y, por

192
00:10:55,200 --> 00:10:57,400
‫lo tanto, el único problema

193
00:10:57,400 --> 00:11:00,020
‫fue que faltaba el siguiente en el middleware.

194
00:11:00,020 --> 00:11:03,240
‫Y así, completamos otra página de

195
00:11:03,240 --> 00:11:05,470
‫nuestro sitio web dinámico.

196
00:11:05,470 --> 00:11:09,230
‫A continuación, todo lo que queda por hacer en este punto

197
00:11:09,230 --> 00:11:11,513
‫es finalizar la API de reservas.

