﻿1
00:00:01,200 --> 00:00:04,530
‫-: Bentornati all'ultimo video della sezione.

2
00:00:04,530 --> 00:00:07,950
‫E in questa sezione abbiamo quasi finito il nostro

3
00:00:07,950 --> 00:00:11,350
‫progetto, sia l'API che il sito web renderizzato,

4
00:00:11,350 --> 00:00:12,910
‫almeno per ora.

5
00:00:12,910 --> 00:00:17,180
‫Quindi, ancora una volta, congratulazioni per essere arrivato a questo punto e

6
00:00:17,180 --> 00:00:20,970
‫per aver passato oltre 30 ore di video, ascoltando sempre

7
00:00:20,970 --> 00:00:22,573
‫la mia voce.

8
00:00:23,670 --> 00:00:25,840
‫Ad ogni modo, in quest'ultimo

9
00:00:25,840 --> 00:00:28,260
‫video, volevo affrontare rapidamente alcuni argomenti

10
00:00:28,260 --> 00:00:31,650
‫che avremmo potuto aggiungere all'API e al sito

11
00:00:31,650 --> 00:00:34,810
‫Web, e fondamentalmente lasciarli come sfide, se lo

12
00:00:34,810 --> 00:00:35,863
‫desideri.

13
00:00:37,350 --> 00:00:40,160
‫Quindi avremmo potuto aggiungere una logica di business

14
00:00:40,160 --> 00:00:42,500
‫in più al nostro progetto, ad esempio

15
00:00:42,500 --> 00:00:46,310
‫aggiungendo una restrizione per cui gli utenti possono rivedere solo un tour

16
00:00:46,310 --> 00:00:47,910
‫che hanno effettivamente prenotato.

17
00:00:47,910 --> 00:00:50,940
‫E questo avrebbe molto senso, no?

18
00:00:50,940 --> 00:00:53,510
‫Quindi voglio che tu lo provi da solo,

19
00:00:53,510 --> 00:00:55,320
‫se ne hai voglia.

20
00:00:55,320 --> 00:00:58,450
‫Ora queste sfide non le risolverò da solo, a

21
00:00:58,450 --> 00:01:02,620
‫meno che non ci sia davvero molta richiesta per una di esse.

22
00:01:02,620 --> 00:01:04,190
‫E in effetti

23
00:01:04,190 --> 00:01:06,650
‫ho lasciato questo tipo di sfide più

24
00:01:06,650 --> 00:01:09,950
‫complicate per gli studenti da fare da soli negli altri

25
00:01:09,950 --> 00:01:14,150
‫miei corsi, e ho visto davvero alcuni risultati creativi in molti casi.

26
00:01:14,150 --> 00:01:17,160
‫Quindi spero che anche tu ne provi qualcuna.

27
00:01:17,160 --> 00:01:19,170
‫Ora, comunque, in seguito,

28
00:01:19,170 --> 00:01:22,180
‫potresti anche implementare alcuni percorsi di prenotazione nidificati, ad

29
00:01:22,180 --> 00:01:25,130
‫esempio, ottenendo tutte le prenotazioni per un determinato tour

30
00:01:25,130 --> 00:01:27,940
‫e ottenendo tutte le prenotazioni per un determinato

31
00:01:27,940 --> 00:01:30,080
‫utente, quindi in base agli ID.

32
00:01:30,080 --> 00:01:33,690
‫Inoltre potresti migliorare notevolmente le date del tour, e ciò

33
00:01:33,690 --> 00:01:37,050
‫che intendo con questo è che potresti aggiungere un partecipante

34
00:01:37,050 --> 00:01:40,230
‫e un campo soldOut a ciascuna delle date.

35
00:01:40,230 --> 00:01:42,420
‫E la data diventa

36
00:01:42,420 --> 00:01:44,770
‫una specie di esempio del tour.

37
00:01:44,770 --> 00:01:47,300
‫Quindi, quando un utente prenota effettivamente un

38
00:01:47,300 --> 00:01:49,970
‫tour, deve selezionare una delle date disponibili, quindi

39
00:01:49,970 --> 00:01:51,860
‫la tua prenotazione in

40
00:01:51,860 --> 00:01:54,070
‫una delle date aumenterà il numero di

41
00:01:54,070 --> 00:01:56,910
‫partecipanti nella data fino a quando non sarà tutto

42
00:01:56,910 --> 00:01:59,950
‫esaurito, quindi in pratica quando i partecipanti sono maggiori

43
00:01:59,950 --> 00:02:02,000
‫rispetto alla dimensione massima del gruppo.

44
00:02:02,000 --> 00:02:04,300
‫Ora, finalmente, quando l'utente desidera prenotare

45
00:02:04,300 --> 00:02:06,760
‫un determinato tour in una certa data,

46
00:02:06,760 --> 00:02:09,800
‫è necessario verificare se il tour è ancora disponibile

47
00:02:09,800 --> 00:02:11,450
‫in quella data selezionata.

48
00:02:11,450 --> 00:02:12,290
‫Va bene?

49
00:02:12,290 --> 00:02:15,480
‫Quindi questa è in realtà una sfida piuttosto

50
00:02:15,480 --> 00:02:18,180
‫sofisticata ma anche molto divertente da

51
00:02:18,180 --> 00:02:21,480
‫implementare e aggiungerebbe davvero una logica aziendale significativa

52
00:02:21,480 --> 00:02:22,883
‫a questo progetto.

53
00:02:24,100 --> 00:02:26,040
‫Infine, potresti anche implementare alcune

54
00:02:26,040 --> 00:02:28,140
‫delle funzionalità di autenticazione avanzate di

55
00:02:28,140 --> 00:02:30,480
‫cui abbiamo già parlato un po' prima

56
00:02:30,480 --> 00:02:32,150
‫nella sezione sicurezza.

57
00:02:32,150 --> 00:02:35,480
‫Ad esempio, potresti confermare l'indirizzo e-mail di un utente

58
00:02:35,480 --> 00:02:38,360
‫fondamentalmente inviandogli un'e-mail con un collegamento su

59
00:02:38,360 --> 00:02:39,570
‫cui deve

60
00:02:39,570 --> 00:02:41,160
‫fare clic e solo

61
00:02:41,160 --> 00:02:44,540
‫dopo il clic l'utente è realmente registrato nell'applicazione e

62
00:02:44,540 --> 00:02:47,450
‫può fare cose come l'acquisto di tour.

63
00:02:47,450 --> 00:02:49,690
‫Inoltre potresti mantenere gli utenti

64
00:02:49,690 --> 00:02:52,400
‫registrati con qualcosa chiamato token di aggiornamento.

65
00:02:52,400 --> 00:02:55,130
‫E anche questo è un po' complicato da

66
00:02:55,130 --> 00:02:57,900
‫implementare, ma se cerchi su Google come funziona,

67
00:02:57,900 --> 00:03:00,330
‫allora sono sicuro che puoi trovare

68
00:03:00,330 --> 00:03:03,770
‫una buona soluzione o puoi anche inventarne una da solo.

69
00:03:03,770 --> 00:03:07,070
‫Infine, potresti anche implementare l'autenticazione a due fattori, ma

70
00:03:07,070 --> 00:03:10,360
‫questa sta facendo un ulteriore passo avanti.

71
00:03:10,360 --> 00:03:12,360
‫Quindi, in pratica, quando un

72
00:03:12,360 --> 00:03:15,200
‫utente accede, riceve qualcosa come un messaggio

73
00:03:15,200 --> 00:03:17,920
‫di testo sul proprio telefono con un

74
00:03:17,920 --> 00:03:19,670
‫codice che deve

75
00:03:19,670 --> 00:03:23,370
‫inserire nell'applicazione per essere autenticato dopo quel secondo passaggio.

76
00:03:23,370 --> 00:03:25,210
‫Quindi queste sono alcune belle

77
00:03:25,210 --> 00:03:28,140
‫sfide che potresti davvero implementare sul sito API,

78
00:03:28,140 --> 00:03:29,463
‫fondamentalmente del progetto.

79
00:03:30,400 --> 00:03:34,000
‫Ma ci sono anche cose che puoi fare sul sito web.

80
00:03:34,000 --> 00:03:37,270
‫Ad esempio, potresti implementare il modulo di registrazione, che

81
00:03:37,270 --> 00:03:40,380
‫dovrebbe essere molto simile al modulo di accesso.

82
00:03:40,380 --> 00:03:43,720
‫Quindi non l'ho fatto davvero perché è così simile

83
00:03:43,720 --> 00:03:44,790
‫al modulo

84
00:03:44,790 --> 00:03:48,540
‫di accesso, e quindi non volevo perdere tempo a farlo.

85
00:03:48,540 --> 00:03:50,930
‫Ma ovviamente puoi andare avanti e

86
00:03:50,930 --> 00:03:52,430
‫implementare anche quello.

87
00:03:52,430 --> 00:03:55,680
‫Quindi un'altra cosa carina che potresti fare sul sito Web è

88
00:03:55,680 --> 00:03:57,980
‫che nella pagina dei dettagli del tour,

89
00:03:57,980 --> 00:03:59,340
‫puoi consentire a

90
00:03:59,340 --> 00:04:01,890
‫un utente di aggiungere una recensione direttamente sul

91
00:04:01,890 --> 00:04:05,010
‫sito Web, ma solo se l'utente ha effettuato quel tour.

92
00:04:05,010 --> 00:04:07,760
‫Quindi dovresti controllare se l'utente attualmente connesso

93
00:04:07,760 --> 00:04:10,270
‫ha effettivamente prenotato il tour corrente

94
00:04:10,270 --> 00:04:13,690
‫e anche se il tempo del tour è già trascorso.

95
00:04:13,690 --> 00:04:16,650
‫E in tal caso, puoi aggiungere un modulo alla

96
00:04:16,650 --> 00:04:18,690
‫pagina in cui l'utente può aggiungere

97
00:04:18,690 --> 00:04:21,920
‫una nuova recensione, ad esempio utilizzando la nostra API di revisione.

98
00:04:21,920 --> 00:04:24,600
‫O anche, e questo è un po'

99
00:04:24,600 --> 00:04:26,990
‫correlato, puoi nascondere l'intera sezione di

100
00:04:26,990 --> 00:04:30,480
‫prenotazione nella stessa pagina dei dettagli del tour se l'utente

101
00:04:30,480 --> 00:04:32,620
‫corrente ha prenotato il tour.

102
00:04:32,620 --> 00:04:33,810
‫Va bene.

103
00:04:33,810 --> 00:04:36,250
‫Ciò impedirebbe quindi allo stesso utente di prenotare

104
00:04:36,250 --> 00:04:37,850
‫lo stesso tour due volte.

105
00:04:37,850 --> 00:04:40,990
‫E poi, poiché lo stai già facendo sul

106
00:04:40,990 --> 00:04:43,350
‫front-end, dovresti anche evitare prenotazioni

107
00:04:43,350 --> 00:04:45,981
‫duplicate sul back-end nel tuo modello.

108
00:04:45,981 --> 00:04:47,660
‫In realtà sarà

109
00:04:47,660 --> 00:04:51,380
‫molto simile a prevenire recensioni duplicate dallo stesso utente.

110
00:04:51,380 --> 00:04:52,860
‫Va bene.

111
00:04:52,860 --> 00:04:54,160
‫Inoltre, potresti

112
00:04:54,160 --> 00:04:57,250
‫implementare una funzionalità simile al tour molto carina.

113
00:04:57,250 --> 00:04:59,590
‫Quindi, dove hai qualcosa come un pulsante Mi

114
00:04:59,590 --> 00:05:01,720
‫piace o un cuore nel tour, e

115
00:05:01,720 --> 00:05:03,620
‫poi quando l'utente fa clic

116
00:05:03,620 --> 00:05:06,120
‫su di esso, viene aggiunto ai suoi preferiti.

117
00:05:06,120 --> 00:05:07,340
‫E poi sul

118
00:05:07,340 --> 00:05:11,940
‫sito web, potresti avere una pagina dei preferiti o solo un pannello dei preferiti in

119
00:05:11,940 --> 00:05:14,860
‫cui l'utente può vedere tutti i suoi tour preferiti.

120
00:05:14,860 --> 00:05:17,210
‫Quindi non è davvero difficile, ma

121
00:05:17,210 --> 00:05:19,713
‫penso che sia molto divertente da implementare.

122
00:05:20,900 --> 00:05:23,230
‫Successivamente, nella pagina dell'account utente, potresti implementare

123
00:05:23,230 --> 00:05:25,610
‫la pagina Le mie recensioni, che ha

124
00:05:25,610 --> 00:05:27,870
‫già un collegamento in questo

125
00:05:27,870 --> 00:05:30,410
‫momento, e su quella pagina l'utente potrebbe

126
00:05:30,410 --> 00:05:34,730
‫quindi vedere e forse anche modificare ed eliminare tutte le proprie recensioni.

127
00:05:34,730 --> 00:05:36,660
‫Ora, se conosci React, questo

128
00:05:36,660 --> 00:05:38,900
‫sarebbe davvero un modo fantastico per

129
00:05:38,900 --> 00:05:42,580
‫utilizzare l'API Natours e allo stesso tempo allenare le tue

130
00:05:42,580 --> 00:05:43,940
‫abilità React.

131
00:05:43,940 --> 00:05:46,260
‫E una volta che lo fai

132
00:05:46,260 --> 00:05:49,140
‫con React, puoi effettivamente ricreare l'intera pagina come

133
00:05:49,140 --> 00:05:51,790
‫un'applicazione a pagina singola con React o

134
00:05:51,790 --> 00:05:53,290
‫qualcosa del genere.

135
00:05:53,290 --> 00:05:57,010
‫Quindi, come Angular o Vue, funzionerebbe anche per questo.

136
00:05:57,010 --> 00:05:57,843
‫Destra.

137
00:05:57,843 --> 00:06:00,626
‫Quindi sarebbe davvero fantastico se

138
00:06:00,626 --> 00:06:03,933
‫lo facessi, e mi piacerebbe davvero vederlo implementato.

139
00:06:04,770 --> 00:06:07,310
‫Infine, per gli amministratori, puoi implementare

140
00:06:07,310 --> 00:06:09,800
‫le pagine Gestisci, dove gli amministratori

141
00:06:09,800 --> 00:06:13,180
‫possono quindi creare, leggere, aggiornare ed eliminare tutte

142
00:06:13,180 --> 00:06:15,300
‫le risorse, quindi tutti

143
00:06:15,300 --> 00:06:18,923
‫i tour, gli utenti, le recensioni e le prenotazioni.

144
00:06:19,860 --> 00:06:23,130
‫Ancora una volta, React potrebbe essere adatto a

145
00:06:23,130 --> 00:06:25,770
‫questo, o in caso contrario,

146
00:06:25,770 --> 00:06:28,480
‫anche il normale Javascript sul front-end funzionerebbe

147
00:06:28,480 --> 00:06:33,270
‫molto bene, ad esempio, aggiornare tutte queste risorse utilizzando le chiamate Ajax.

148
00:06:33,270 --> 00:06:36,530
‫Quindi c'è davvero un sacco di cose che potresti implementare

149
00:06:36,530 --> 00:06:39,070
‫per migliorare ancora di più il nostro progetto

150
00:06:39,070 --> 00:06:41,030
‫e il nostro sito web.

151
00:06:41,030 --> 00:06:42,180
‫Destra?

152
00:06:42,180 --> 00:06:43,860
‫E sono sicuro che

153
00:06:43,860 --> 00:06:46,200
‫potresti anche inventare ancora altre cose qui.

154
00:06:46,200 --> 00:06:48,450
‫Quindi, di nuovo, sarebbe davvero

155
00:06:48,450 --> 00:06:52,120
‫fantastico vedere alcune di queste funzionalità effettivamente implementate da te.

156
00:06:52,120 --> 00:06:54,910
‫E se ne fai uno o anche di più,

157
00:06:54,910 --> 00:06:57,240
‫assicurati di condividere il tuo risultato nella sezione

158
00:06:57,240 --> 00:06:59,153
‫Domande e risposte del corso.

159
00:07:00,120 --> 00:07:04,190
‫Comunque, questo è tutto per questo video e per questa

160
00:07:04,190 --> 00:07:07,260
‫sezione e anche quasi per questo corso.

161
00:07:07,260 --> 00:07:10,750
‫Quindi un ottimo lavoro ancora una volta e ora il prossimo,

162
00:07:10,750 --> 00:07:13,620
‫tutto ciò che resta davvero da fare è

163
00:07:13,620 --> 00:07:15,460
‫preparare l'applicazione per la distribuzione

164
00:07:15,460 --> 00:07:19,500
‫e quindi distribuirla effettivamente su un server di produzione live per condividere davvero

165
00:07:19,500 --> 00:07:21,673
‫il nostro progetto con il mondo.

