﻿1
00:00:01,042 --> 00:00:02,080
‫Instructeur : Dans

2
00:00:02,080 --> 00:00:04,790
‫cette vidéo, nous allons implémenter la page mes réservations.

3
00:00:04,790 --> 00:00:07,200
‫Donc, en gros, nous allons créer une

4
00:00:07,200 --> 00:00:10,183
‫belle page contenant toutes les visites qu'un utilisateur a réservées.

5
00:00:11,950 --> 00:00:15,920
‫Et commençons par ajouter une nouvelle route à nos viewRoutes.

6
00:00:17,120 --> 00:00:21,320
‫D'accord, nous avons donc moi et créons

7
00:00:21,320 --> 00:00:23,253
‫ensuite les my-tours.

8
00:00:24,720 --> 00:00:29,720
‫Je duplique donc celui-ci, my-tours, alors aussi cet itinéraire doit être

9
00:00:29,740 --> 00:00:32,230
‫protégé afin que seuls les

10
00:00:32,230 --> 00:00:34,090
‫utilisateurs actuellement connectés

11
00:00:34,090 --> 00:00:37,150
‫puissent accéder à cette page, bien sûr.

12
00:00:37,150 --> 00:00:39,020
‫Et puis, dans notre

13
00:00:39,020 --> 00:00:41,723
‫viewsController, nous aurons un contrôleur appelé getMyTours.

14
00:00:44,029 --> 00:00:47,480
‫MyTours comme ça, d'accord ?

15
00:00:47,480 --> 00:00:49,943
‫Et c'est en fait tout pour

16
00:00:50,930 --> 00:00:54,123
‫l'instant, alors allons-y et créons ce contrôleur maintenant.

17
00:00:56,090 --> 00:00:59,030
‫D'accord, nous avons donc tout cela ici,

18
00:00:59,030 --> 00:01:02,790
‫obtenez une visite, obtenez un formulaire de connexion, obtenez un compte.

19
00:01:02,790 --> 00:01:04,853
‫Mettons donc celui-ci ici aussi.

20
00:01:12,559 --> 00:01:14,690
‫Et maintenant, ce que nous devons

21
00:01:14,690 --> 00:01:18,060
‫faire ici, c'est trouver toutes les visites que l'utilisateur a réservées.

22
00:01:18,060 --> 00:01:21,050
‫Donc, en gros, nous devons d'abord trouver toutes les réservations

23
00:01:21,050 --> 00:01:23,170
‫pour les utilisateurs actuellement connectés, ce

24
00:01:23,170 --> 00:01:25,620
‫qui nous donnera ensuite un tas d'identifiants de

25
00:01:25,620 --> 00:01:28,503
‫tournée, puis nous devons trouver les tournées avec ces identifiants.

26
00:01:29,400 --> 00:01:34,400
‫Donc, en gros, recherchez toutes les réservations, puis

27
00:01:39,790 --> 00:01:44,340
‫recherchez les visites avec les identifiants renvoyés.

28
00:01:44,340 --> 00:01:48,890
‫Donc, en gros, les identifiants des réservations pour l'utilisateur, n'est-ce pas ?

29
00:01:48,890 --> 00:01:50,720
‫Maintenant, à la place, nous pourrions

30
00:01:50,720 --> 00:01:53,440
‫également faire une population virtuelle sur les visites, et

31
00:01:53,440 --> 00:01:55,413
‫ce serait formidable si vous mettiez

32
00:01:55,413 --> 00:01:59,130
‫cela en œuvre vous-même exactement comme nous l'avons fait auparavant avec les visites

33
00:01:59,130 --> 00:02:01,240
‫et les critiques, mais ici, dans cette

34
00:02:01,240 --> 00:02:04,040
‫fonction, je voulais en fait pour vous montrer comment

35
00:02:04,040 --> 00:02:05,710
‫nous pouvons le faire

36
00:02:05,710 --> 00:02:08,290
‫manuellement, car je pense que c'est aussi assez important

37
00:02:08,290 --> 00:02:10,067
‫et qu'en fait, une population virtuelle

38
00:02:10,067 --> 00:02:13,550
‫devrait fonctionner de manière similaire à ce que nous allons faire ici.

39
00:02:13,550 --> 00:02:16,100
‫Et donc vous voyez qu'en fait nous avons besoin

40
00:02:16,100 --> 00:02:18,070
‫de deux requêtes pour vraiment

41
00:02:18,070 --> 00:02:20,487
‫trouver les circuits correspondant aux réservations de l'utilisateur.

42
00:02:20,487 --> 00:02:22,850
‫Quoi qu'il en soit, commençons maintenant,

43
00:02:22,850 --> 00:02:25,753
‫créons donc une variable pour toutes les réservations,

44
00:02:28,751 --> 00:02:33,513
‫attendez et maintenant je pense que nous n'avons pas encore les réservations ici, non.

45
00:02:37,840 --> 00:02:39,533
‫Donc Réservations ici, et bookingModel.

46
00:02:43,010 --> 00:02:47,890
‫Et ici, bien sûr, c'est juste la réservation, d'accord.

47
00:02:47,890 --> 00:02:52,890
‫Attendez donc Booking. trouvez, et rappelez-vous maintenant que

48
00:02:53,530 --> 00:02:58,380
‫chaque document de réservation a un identifiant d'utilisateur, n'est-ce pas ?

49
00:02:58,380 --> 00:03:00,160
‫Donc ici, dans le schéma, rappelez-vous

50
00:03:00,160 --> 00:03:02,331
‫que nous avons l'ID de la tournée,

51
00:03:02,331 --> 00:03:04,410
‫l'ID utilisateur, puis toutes ces autres données,

52
00:03:04,410 --> 00:03:05,870
‫et donc ce que

53
00:03:05,870 --> 00:03:09,400
‫nous allons faire maintenant, c'est interroger essentiellement par l'ID utilisateur, d'accord ?

54
00:03:09,400 --> 00:03:10,940
‫Et donc cela nous

55
00:03:10,940 --> 00:03:15,136
‫rendra toutes les visites qui appartiennent à l'utilisateur actuel, d'accord ?

56
00:03:15,136 --> 00:03:16,653
‫Donc pas celui-ci.

57
00:03:20,650 --> 00:03:23,900
‫Donc, la tournée devrait être égale à req. utilisateur. identifiant.

58
00:03:29,170 --> 00:03:33,790
‫Alors ici async, et comme toujours, catchAsync aussi.

59
00:03:37,000 --> 00:03:39,440
‫Ainsi, ces réservations contiennent désormais tous les documents

60
00:03:39,440 --> 00:03:41,810
‫de réservation pour l'utilisateur actuel, mais en

61
00:03:41,810 --> 00:03:44,690
‫réalité, cela ne nous donne que les identifiants de tournée.

62
00:03:44,690 --> 00:03:48,350
‫Et maintenant, nous voulons trouver les visites avec les identifiants retournés.

63
00:03:48,350 --> 00:03:50,500
‫Et donc, la prochaine étape consiste

64
00:03:50,500 --> 00:03:52,976
‫essentiellement à créer un tableau de tous

65
00:03:52,976 --> 00:03:55,430
‫les identifiants, puis après cette requête pour

66
00:03:55,430 --> 00:03:58,512
‫les visites qui ont l'un de ces identifiants, d'accord ?

67
00:03:58,512 --> 00:04:00,950
‫Et cela aura un peu plus de sens une

68
00:04:00,950 --> 00:04:03,973
‫fois que nous aurons réellement mis en œuvre ce que je viens d'expliquer.

69
00:04:04,830 --> 00:04:09,347
‫Donc tourIDs est égal aux réservations et maintenant nous allons utiliser

70
00:04:09,347 --> 00:04:11,240
‫une carte pour créer un

71
00:04:11,240 --> 00:04:14,630
‫nouveau tableau basé sur une fonction de rappel

72
00:04:15,700 --> 00:04:17,530
‫qui est celle-ci, donc

73
00:04:17,530 --> 00:04:22,300
‫le el actuel. tour. identifiant.

74
00:04:22,300 --> 00:04:25,200
‫Alors, qu'est-ce que cela va faire?

75
00:04:25,200 --> 00:04:28,630
‫Eh bien, en gros, cela parcourt tout le tableau des réservations et

76
00:04:28,630 --> 00:04:32,760
‫sur chaque élément, il saisira le el. tour.

77
00:04:32,760 --> 00:04:35,130
‫Et en fait, nous n'avons même pas besoin de

78
00:04:35,130 --> 00:04:39,210
‫l'ID ici parce que la tournée elle-même est déjà l'ID de la tournée, n'est-ce pas ?

79
00:04:39,210 --> 00:04:41,460
‫Au final, nous avons un joli tableau avec

80
00:04:41,460 --> 00:04:44,330
‫tous les identifiants de tournée ici et c'est parce que

81
00:04:44,330 --> 00:04:45,980
‫nous avons utilisé une carte.

82
00:04:49,640 --> 00:04:52,500
‫D'accord, alors en ayant tous les identifiants de

83
00:04:52,500 --> 00:04:56,233
‫tournée, nous pouvons en fait obtenir les tournées correspondant à ces identifiants.

84
00:04:58,640 --> 00:05:03,640
‫Attendez donc Tour. find et nous voulons réellement rechercher par ID, mais nous ne pouvons

85
00:05:07,380 --> 00:05:09,953
‫pas utiliser le fichier . findbyid car ici,

86
00:05:10,900 --> 00:05:14,120
‫nous aurons en fait besoin d'un nouvel opérateur.

87
00:05:14,120 --> 00:05:15,470
‫Et cet opérateur, que je

88
00:05:15,470 --> 00:05:17,630
‫ne sais pas si nous avons déjà utilisé

89
00:05:17,630 --> 00:05:18,713
‫auparavant, est appelé.

90
00:05:20,370 --> 00:05:21,810
‫Donc, dans tourIDs.

91
00:05:24,320 --> 00:05:26,330
‫Donc, en gros, ce que

92
00:05:26,330 --> 00:05:28,370
‫cela va faire à la place, il

93
00:05:28,370 --> 00:05:33,370
‫sélectionnera toutes les visites qui ont un ID qui se trouve dans le tableau tourIDs, d'accord ?

94
00:05:33,520 --> 00:05:35,277
‫C'est donc assez simple,

95
00:05:35,277 --> 00:05:37,618
‫mais c'est très bien de savoir

96
00:05:37,618 --> 00:05:41,720
‫que nous pouvons utiliser cet opérateur très pratique ici, d'accord ?

97
00:05:41,720 --> 00:05:43,770
‫Et c'est en fait l'une des raisons pour

98
00:05:43,770 --> 00:05:45,620
‫lesquelles je voulais le faire manuellement

99
00:05:45,620 --> 00:05:49,200
‫au lieu de simplement faire une population virtuelle comme nous le faisions auparavant.

100
00:05:49,200 --> 00:05:51,760
‫Mais encore une fois, ce serait bien si vous

101
00:05:51,760 --> 00:05:53,760
‫pouviez aller de l'avant et implémenter

102
00:05:53,760 --> 00:05:55,823
‫cela aussi juste pour le plaisir, vous savez.

103
00:05:57,060 --> 00:05:58,860
‫D'accord, et avec cela,

104
00:05:58,860 --> 00:06:01,593
‫nos tournées sont prêtes à être rendues.

105
00:06:03,330 --> 00:06:07,385
‫Donc, rés. statut comme

106
00:06:07,385 --> 00:06:11,230
‫toujours, puis les rendre, d'accord ?

107
00:06:11,230 --> 00:06:14,100
‫Et en fait, nous n'avons même pas besoin d'un nouveau modèle pour cela.

108
00:06:14,100 --> 00:06:17,383
‫Nous allons simplement réutiliser l'aperçu, d'accord ?

109
00:06:19,670 --> 00:06:21,300
‫Nous allons donc nous

110
00:06:21,300 --> 00:06:23,530
‫retrouver avec une page qui ressemble beaucoup

111
00:06:23,530 --> 00:06:26,923
‫à l'aperçu, mais uniquement avec les visites que l'utilisateur a réservées.

112
00:06:27,820 --> 00:06:30,456
‫Donc, ici et pour avoir une vue

113
00:06:30,456 --> 00:06:34,180
‫d'ensemble, nous avons ensuite fait toutes les tournées, d'accord ?

114
00:06:34,180 --> 00:06:36,510
‫Donc en gros tous.

115
00:06:36,510 --> 00:06:38,960
‫Et donc maintenant, nous allons avoir quelque chose de

116
00:06:38,960 --> 00:06:42,113
‫très similaire mais bien sûr ne passant que dans les visites réservées.

117
00:06:42,113 --> 00:06:43,653
‫Alors, c'est où ?

118
00:06:47,450 --> 00:06:51,813
‫D'accord, donc le titre sera My Tours, et encore

119
00:06:56,050 --> 00:06:59,640
‫une fois en passant la variable tours.

120
00:06:59,640 --> 00:07:01,680
‫D'accord et ça devrait être ça.

121
00:07:01,680 --> 00:07:03,810
‫Maintenant, bien sûr, nous aurions également pu

122
00:07:03,810 --> 00:07:06,550
‫créer une toute nouvelle carte pour ces librairies

123
00:07:06,550 --> 00:07:08,250
‫avec des informations plus

124
00:07:08,250 --> 00:07:10,080
‫pertinentes sur chacune des réservations,

125
00:07:10,080 --> 00:07:12,830
‫mais dans ce cas, ce n'est pas vraiment important.

126
00:07:12,830 --> 00:07:14,290
‫Maintenant, n'est-ce pas ?

127
00:07:14,290 --> 00:07:16,480
‫Donc, nous sommes en fait prêts

128
00:07:16,480 --> 00:07:20,040
‫à tester cela car nous avons déjà implémenté la route ici auparavant.

129
00:07:20,040 --> 00:07:22,620
‫Et c'est donc mes tournées.

130
00:07:22,620 --> 00:07:25,750
‫Oh, mais en fait, définissons ce lien ici, directement

131
00:07:25,750 --> 00:07:28,240
‫sur la page du compte utilisateur.

132
00:07:28,240 --> 00:07:31,380
‫Donc, ce my-tours devrait bien sûr

133
00:07:31,380 --> 00:07:35,066
‫avoir son propre lien ici même dans le compte.

134
00:07:35,066 --> 00:07:36,633
‫Donc dans cette

135
00:07:37,860 --> 00:07:40,777
‫colonne de gauche, c'est donc ici dans Mes réservations,

136
00:07:40,777 --> 00:07:42,560
‫donc nous avons ce premier

137
00:07:42,560 --> 00:07:44,949
‫ici qui est pour le lien, souvenez-vous.

138
00:07:44,949 --> 00:07:48,800
‫Et donc en ce moment, pratiquement tous ne pointent nulle part, mais maintenant pour

139
00:07:48,800 --> 00:07:51,453
‫les réservations, nous avons en fait un lien.

140
00:07:51,453 --> 00:07:56,453
‫Et c'est donc mes-tours.

141
00:07:57,000 --> 00:07:59,570
‫Et nous aurions pu appeler cela des réservations aussi, mais

142
00:07:59,570 --> 00:08:02,053
‫ce n'est pas vraiment important de toute façon.

143
00:08:03,210 --> 00:08:05,630
‫Donc, maintenant nous sommes prêts à tester cela.

144
00:08:05,630 --> 00:08:07,990
‫Déconnectons-nous en fait de cet utilisateur,

145
00:08:07,990 --> 00:08:11,363
‫puis connectons-nous en tant que notre autre utilisateur, Laura.

146
00:08:17,860 --> 00:08:22,380
‫Très bien, et voyons ce que nous obtenons ici et cela

147
00:08:24,111 --> 00:08:26,476
‫prend beaucoup trop de temps,

148
00:08:26,476 --> 00:08:31,014
‫alors jetons un coup d'œil à notre code, éditons notre terminal ici.

149
00:08:31,014 --> 00:08:34,810
‫D'accord, il n'y a donc pas d'erreur ici, mais il

150
00:08:34,810 --> 00:08:38,390
‫semble également que rien ne se passe vraiment ici.

151
00:08:38,390 --> 00:08:42,683
‫Donc l'itinéraire my-tours ici n'apparaît même pas, d'accord.

152
00:08:43,780 --> 00:08:45,550
‫Maintenant, pour trouver ce

153
00:08:45,550 --> 00:08:48,600
‫bogue, j'ai dû faire du débogage en dehors

154
00:08:48,600 --> 00:08:52,304
‫de cette vidéo car c'était vraiment difficile à trouver, d'accord.

155
00:08:52,304 --> 00:08:55,330
‫Tout d'abord, il y a une petite erreur ici.

156
00:08:55,330 --> 00:08:58,690
‫Donc, ceci ici devrait en fait être utilisateur et non tour.

157
00:08:58,690 --> 00:09:00,800
‫Je l'ai donc expliqué correctement à

158
00:09:00,800 --> 00:09:03,373
‫l'époque, où j'ai dit que nous devions filtrer par

159
00:09:03,373 --> 00:09:05,811
‫utilisateur, donc des visites où l'utilisateur est

160
00:09:05,811 --> 00:09:08,250
‫égal à l'utilisateur issu de la demande, mais

161
00:09:08,250 --> 00:09:11,690
‫pour une raison quelconque, je me suis trompé ici, d'accord ?

162
00:09:11,690 --> 00:09:13,904
‫Mais ce n'est pas le bug principal en fait.

163
00:09:13,904 --> 00:09:17,267
‫Donc pas celui qui empêche la page de se charger réellement.

164
00:09:17,267 --> 00:09:19,552
‫L'erreur qui provoque cela se

165
00:09:19,552 --> 00:09:22,634
‫trouve ici en fait dans le modèle de réservation.

166
00:09:22,634 --> 00:09:26,810
‫Et c'est ici dans ce middleware de pré-recherche.

167
00:09:26,810 --> 00:09:28,690
‫Et le problème est

168
00:09:28,690 --> 00:09:32,944
‫que nous n'appelons jamais le prochain middleware ici, n'est-ce pas ?

169
00:09:32,944 --> 00:09:36,120
‫Encore une fois, il s'agit d'un pré-middleware.

170
00:09:36,120 --> 00:09:38,490
‫Et tous les pré-middlewares ont accès à

171
00:09:38,490 --> 00:09:40,620
‫la fonction suivante et donc, à

172
00:09:40,620 --> 00:09:42,710
‫la fin de ces middlewares, nous

173
00:09:42,710 --> 00:09:44,370
‫devons toujours appeler next.

174
00:09:44,370 --> 00:09:48,634
‫Sinon, notre processus se bloque vraiment, d'accord ?

175
00:09:48,634 --> 00:09:52,110
‫Alors, faites une sauvegarde, cela peut en fait fermer celui-ci.

176
00:09:52,110 --> 00:09:54,800
‫Et maintenant, essayons à nouveau et

177
00:09:56,754 --> 00:09:59,532
‫maintenant nous avons effectivement mes visites, mais

178
00:09:59,532 --> 00:10:04,097
‫elles sont vides car cet utilisateur n'a jamais vraiment fait de réservation.

179
00:10:04,097 --> 00:10:06,803
‫Alors, essayons cela maintenant et

180
00:10:08,000 --> 00:10:10,203
‫réservons le randonneur forestier.

181
00:10:16,070 --> 00:10:18,480
‫Cela devrait donc toujours fonctionner,

182
00:10:18,480 --> 00:10:21,291
‫et en effet, c'est très bien.

183
00:10:21,291 --> 00:10:24,400
‫Nous avons l'adresse e-mail pré-formatée et

184
00:10:24,400 --> 00:10:26,763
‫maintenant, comme toujours 4242.

185
00:10:28,590 --> 00:10:31,841
‫Nous avons donc fait la réservation auparavant avec cet utilisateur,

186
00:10:31,841 --> 00:10:34,710
‫mais avant de mettre en œuvre le modèle de

187
00:10:35,870 --> 00:10:37,681
‫réservation, nous n'avons donc jamais

188
00:10:37,681 --> 00:10:39,893
‫vraiment créé de réservation dans notre système.

189
00:10:42,150 --> 00:10:44,590
‫Très bien, donc paiement

190
00:10:44,590 --> 00:10:49,590
‫accepté et maintenant voyons et c'est parti, super !

191
00:10:51,689 --> 00:10:55,200
‫Donc, cette logique que nous venons d'implémenter a réellement

192
00:10:55,200 --> 00:10:57,400
‫fonctionné et le seul problème

193
00:10:57,400 --> 00:11:00,020
‫était qu'il manquait ensuite dans le middleware.

194
00:11:00,020 --> 00:11:03,240
‫Et juste comme ça, nous avons terminé une autre

195
00:11:03,240 --> 00:11:05,470
‫page de notre site Web dynamique.

196
00:11:05,470 --> 00:11:09,230
‫Et donc ensuite, tout ce qu'il reste à faire à ce stade

197
00:11:09,230 --> 00:11:11,513
‫est de terminer l'API de réservation.

