diff --git a/src/app/core/auth/auth.service.ts b/src/app/core/auth/auth.service.ts index e7c506f92a021ccc02772f55aaef1367b4bca067..b628cdcc86a34b627289b8c1cd5a80382b161c9d 100644 --- a/src/app/core/auth/auth.service.ts +++ b/src/app/core/auth/auth.service.ts @@ -7,6 +7,7 @@ import { environment } from 'environments/environment'; import { User } from './models'; import { ObjectStoredItem, SimpleStoredItem } from '../storage'; import { UserAdapter } from './adapters'; +import { HttpParams } from '@angular/common/http'; class StoredUser extends ObjectStoredItem<User> { key = 'oser-cs-user-info'; } @@ -18,9 +19,12 @@ class StoredToken extends SimpleStoredItem { key = 'oser-cs-user-token'; } }) export class AuthService { - private loginUrl = environment.apiUrl + 'auth/get-token/'; + private loginUrl = environment.apiUrl + 'auth/get-token/'; private resetUrl = environment.apiUrl + 'rest-auth/password/reset/'; private resetConfirmUrl = environment.apiUrl + 'rest-auth/password/reset/confirm/'; + private mandatorySignatureUrl = environment.apiUrl + 'charter/'; + //add the corresponding path in backend interface + fromGuard: boolean; redirectUrl: string; @@ -81,7 +85,14 @@ export class AuthService { getAuthorizationHeaders(): HttpHeaders { return new HttpHeaders({ Authorization: 'Token ' + this.getToken() }); } - + + checkSignatureCharter(email: any) : Observable<Boolean> { + const parm = new HttpParams({fromString: 'email='+ email}) + return this.http.get<Boolean>( this.mandatorySignatureUrl, { params: parm}).pipe( + map((data: any) => { + return data}), + ); + } get isLoggedIn(): boolean { if (this.user.get()) { return true; @@ -89,6 +100,13 @@ export class AuthService { return false; } + sendSignatureCharter(email: any) : Observable<Boolean> { + return this.http.post<Boolean>( this.mandatorySignatureUrl+'?email=' +email,{}).pipe( + map((data: any) => { + return data}), + ); + } + logout() { this.user.destroy(); this.token.destroy(); diff --git a/src/app/login/login.component.ts b/src/app/login/login.component.ts index 5070b7c97539b16b023d027162da709e04c7cd01..6a6b64e3867f375a51f6562d0bb87224a5bba804 100644 --- a/src/app/login/login.component.ts +++ b/src/app/login/login.component.ts @@ -4,7 +4,7 @@ import { FormGroup, FormBuilder } from '@angular/forms'; import { MatSnackBar } from '@angular/material'; import { AuthService, MessageService } from 'app/core'; import { of } from 'rxjs'; -import { filter, map, tap, catchError } from 'rxjs/operators'; +import { filter, map, tap, catchError, subscribeOn } from 'rxjs/operators'; @Component({ selector: 'app-login', @@ -14,8 +14,11 @@ import { filter, map, tap, catchError } from 'rxjs/operators'; export class LoginComponent implements OnInit { loading: boolean = false; + hassignedCharter = true; defaultRedirectUrl: string = '/membres'; + charterUrl: string = 'inscription/student-charter'; formGroup: FormGroup; + loginSuccess: boolean = false; constructor( private router: Router, @@ -42,23 +45,58 @@ export class LoginComponent implements OnInit { }); } - login() { + async login() { + var toto = false; this.loading = true; const { email, password } = this.formGroup.value; this.messageService.clear(); - this.auth.login(email, password).pipe( + await this.auth.login(email, password).pipe( + + map(() => this.loginSuccess = true), catchError(() => { this.messageService.error("L'identifiant ou le mot de passe est incorrect."); + this.loginSuccess = false; return of(false); }), tap(() => this.loading = false), + + // Only continue if no error filter(Boolean), // Get redirect URL from the auth service, provided by the auth guard. - map(() =>this.auth.redirectUrl ? this.auth.redirectUrl : this.defaultRedirectUrl), - tap(() => this.snackBar.open('Connexion réussie !', 'OK', { duration: 2000 })), - tap((redirectUrl: string) => this.router.navigate([redirectUrl])), - ).subscribe(); - } + ).subscribe({ + complete() { + console.log("login unsuccess"); + }, + }); + + + if(this.loginSuccess == true){ + + this.auth.checkSignatureCharter(email).pipe( + catchError(() => { + this.hassignedCharter = false; + + this.messageService.error("Vous n'avez pas signé le(s) charte(s)."); + map(() => this.auth.redirectUrl ? this.auth.redirectUrl : this.defaultRedirectUrl), + tap((redirectUrl: string) => this.router.navigate([redirectUrl])); + return of(false); + }), + map(() => this.auth.redirectUrl ? this.auth.redirectUrl : this.defaultRedirectUrl), + tap(() => this.snackBar.open('Connexion réussie !', 'OK', { duration: 2000 })), + ).subscribe().add(() => + { + if(this.hassignedCharter == false) + { + this.router.navigate([this.charterUrl]); + } + else + { + this.router.navigate([this.defaultRedirectUrl]); + } + }); +} + } +} \ No newline at end of file diff --git a/src/app/members/account/edit-data/edit-data.component.html b/src/app/members/account/edit-data/edit-data.component.html index aa2bd44a880eab16d719f9e015898e85649802f6..a6c2a1fe51d0eb0f35ec12f0daec630778dbd393 100644 --- a/src/app/members/account/edit-data/edit-data.component.html +++ b/src/app/members/account/edit-data/edit-data.component.html @@ -18,8 +18,12 @@ <mat-option value="Autre">Autre</mat-option> </mat-select> </mat-form-field> + <mat-form-field class="horizontal-display" > - <input matInput type="text" formControlName="nationality" placeholder="Nationalité" required> + <mat-label>Nationalité</mat-label> + <mat-select formControlName="nationality" required> + <mat-option *ngFor="let nationality of possibleNationalities" [value]="nationality.name"> {{ nationality.name }}</mat-option> + </mat-select> </mat-form-field> </div> @@ -82,7 +86,7 @@ <mat-form-field class="horizontal-display horizontal-center"> <mat-label>Voie</mat-label> - <mat-select formControlName="classType" required> + <mat-select formControlName="classType" [(value)]="classType" required> <mat-option value="General">General</mat-option> <mat-option value="Technologique">Technologique</mat-option> <mat-option value="Professionnelle">Professionnelle</mat-option> @@ -97,13 +101,21 @@ </mat-form-field> </div> + + + <mat-form-field class="full-width" > + <mat-label>Enseignements de spécialité (entrer 'aucun' si jamais vous n'etes pas concerné) </mat-label> + <mat-select formControlName="specialTeaching" required > + <mat-option *ngFor="let specialTeaching of setSpeciality()" [value]="specialTeaching.id">{{ specialTeaching.name }}</mat-option> + </mat-select> + </mat-form-field> <p class="text-center">Informations parentales</p> <div class="form-group"> <mat-form-field class="horizontal-display"> - <mat-label>Activité de la mère </mat-label> + <mat-label>Activité de la mère </mat-label> <mat-select formControlName="motherActivity" required> <mat-option *ngFor="let activity of possibleParentsActivities" [value]="activity.id">{{ activity.name }}</mat-option> </mat-select> @@ -113,7 +125,7 @@ <mat-label>Activité du père </mat-label> <mat-select formControlName="fatherActivity" required> <mat-option *ngFor="let activity of possibleParentsActivities" [value]="activity.id">{{ activity.name }}</mat-option> - </mat-select> + </mat-select> </mat-form-field> </div> diff --git a/src/app/members/account/edit-data/edit-data.component.ts b/src/app/members/account/edit-data/edit-data.component.ts index 05a7a47a838a549673300c0227fd0c77f785edd6..c2f796b8d88c646e548d318886d6a5a95588c1c9 100644 --- a/src/app/members/account/edit-data/edit-data.component.ts +++ b/src/app/members/account/edit-data/edit-data.component.ts @@ -1,30 +1,48 @@ import { Component, OnInit } from '@angular/core'; -import { FormGroup, FormBuilder, Validators } from '@angular/forms'; +import { FormGroup, FormBuilder, Validators, ReactiveFormsModule, FormControlName, FormControl } from '@angular/forms'; import { Router } from '@angular/router'; import { MatSnackBar } from '@angular/material'; import {ActivatedRoute} from '@angular/router' import { PersonalData,PersonalDataService } from '../core'; import { tap, mergeMap } from 'rxjs/operators'; import { AuthService } from 'app/core'; -import {User} from 'app/core' +import {User} from 'app/core'; +import {Observable} from 'rxjs'; +import {map, startWith} from 'rxjs/operators'; +export interface Nationality { + id : string; + name: string; +} + + @Component({ selector: 'app-edit-data', templateUrl: './edit-data.component.html', styleUrls: ['./edit-data.component.scss'] }) + + + export class EditDataComponent implements OnInit { personalData: PersonalData; formGroup : FormGroup; loading = false; public error : String = ""; public postEditMessage : String = "" ; + classType=""; + + myControl = new FormControl(); + + + public possibleParentsStatus = [ {id:"maried",name:"Vos parents vivent ensemble"}, - {id:"cohabitation",name:"Vos parents vivent séparément"}, - {id:"monoparental",name:"Vous avez un seul parent"} + {id:"separated",name:"Vos parents vivent séparément"}, + {id:"monoparental",name:"Vous avez un seul parent"}, + {id:"noparents",name:"Vous ne dépendez pas de vos parents"}, ] public possibleParentsActivities = [ @@ -40,6 +58,104 @@ export class EditDataComponent implements OnInit { {id:"Autre",name:"Autre"} ] + + + public possibleNationalities: Nationality[] = [ + {id:"AFG", name:"Afghane"}, + {id:"ALB", name:"Albanaise"}, + {id:"DZA", name:"Algérienne"}, + {id:"DEU", name:"Allemande"}, + {id:"USA", name:"Americaine"}, + {id:"AND", name:"Andorrane"}, + {id:"AGO", name:"Angolaise"}, + {id:"ATG", name:"Antiguaise-et-Barbudienne"}, + {id:"ARG", name:"Argentine"}, + {id:"ARM", name:"Armenienne"}, + {id:"AUS", name:"Australienne"}, + {id:"AUT", name:"Autrichienne"}, + {id:"AZE", name:"Azerbaïdjanaise"}, + {id:"BHS", name:"Bahamienne"}, + {id:"BHR", name:"Bahreinienne"}, + {id:"BGD", name:"Bangladaise"}, + {id:"BRB", name:"Barbadienne"}, + {id:"BEL", name:"Belge"}, + {id:"BLZ", name:"Belizienne"}, + {id:"BEN", name:"Béninoise"}, + {id:"BTN", name:"Bhoutanaise"}, + {id:"BLR", name:"Biélorusse"}, + {id:"MMR", name:"Birmane"}, + {id:"GNB", name:"Bissau-Guinéenne"}, + {id:"BOL", name:"Bolivienne"}, + {id:"BIH", name:"Bosnienne"}, + {id:"BWA", name:"Botswanaise"}, + {id:"BRA", name:"Brésilienne"}, + {id:"GBR", name:"Britannique"}, + {id:"BRN", name:"Brunéienne"}, + {id:"BGR", name:"Bulgare"}, + {id:"BFA", name:"Burkinabée"}, + {id:"BDI", name:"Burundaise"}, + {id:"KHM", name:"Cambodgienne"}, + {id:"CMR", name:"Camerounaise"}, + {id:"CAN", name:"Canadienne"}, + {id:"CPV", name:"Cap-verdienne"}, + {id:"CAF", name:"Centrafricaine"}, + {id:"CHL", name:"Chilienne"}, + {id:"CHN", name:"Chinoise"}, + {id:"CYP", name:"Chypriote"}, + {id:"COL", name:"Colombienne"}, + {id:"COM", name:"Comorienne"}, + {id:"COG", name:"Congolaise"}, + {id:"COD", name:"Congolaise"}, + {id:"COK", name:"Cookienne"}, + {id:"CRI", name:"Costaricaine"}, + {id:"HRV", name:"Croate"}, + {id:"CUB", name:"Cubaine"}, + {id:"DNK", name:"Danoise"}, + {id:"DJI", name:"Djiboutienne"}, + {id:"DOM", name:"Dominicaine"}, + {id:"DMA", name:"Dominiquaise"}, + {id:"EGY", name:"Égyptienne"}, + {id:"ARE", name:"Émirienne"}, + {id:"GNQ", name:"Équato-guineenne"}, + {id:"ECU", name:"Équatorienne"}, + {id:"ERI", name:"Érythréenne"}, + {id:"ESP", name:"Espagnole"}, + {id:"TLS", name:"Est-timoraise"}, + {id:"EST", name:"Estonienne"}, + {id:"ETH", name:"Éthiopienne"}, + {id:"FJI", name:"Fidjienne"}, + {id:"FIN", name:"Finlandaise"}, + {id:"FRA", name:"Française"}, + {id:"GAB", name:"Gabonaise"}, + {id:"GMB", name:"Gambienne"}, + {id:"GEO", name:"Georgienne"}, + {id:"GHA", name:"Ghanéenne"}, + {id:"GRD", name:"Grenadienne"}, + {id:"GTM", name:"Guatémaltèque"}, + {id:"GIN", name:"Guinéenne"}, + {id:"GUY", name:"Guyanienne"}, + {id:"HTI", name:"Haïtienne"}, + {id:"GRC", name:"Hellénique"}, + {id:"HND", name:"Hondurienne"}, + {id:"HUN", name:"Hongroise"}, + {id:"IND", name:"Indienne"}, + {id:"IDN", name:"Indonésienne"}, + {id:"IRQ", name:"Irakienne"}, + {id:"IRN", name:"Iranienne"},{id:"IRL", name:"Irlandaise"}, + {id:"ISL", name:"Islandaise"}, + {id:"ISR", name:"Israélienne"}, + {id:"ITA", name:"Italienne"}, + {id:"CIV", name:"Ivoirienne"}, + {id:"JAM", name:"Jamaïcaine"}, + {id:"JPN", name:"Japonaise"}, + {id:"JOR", name:"Jordanienne"}, + {id:"KAZ", name:"Kazakhstanaise"}, + {id:"KEN", name:"Kenyane"}, + {id:"KGZ", name:"Kirghize"}, + {id:"KIR", name:"Kiribatienne"},{id:"KNA", name:"Kittitienne"},{id:"KWT", name:"Koweïtienne"},{id:"LAO", name:"Laotienne"},{id:"LSO", name:"Lesothane"},{id:"LVA", name:"Lettone"},{id:"LBN", name:"Libanaise"},{id:"LBR", name:"Libérienne"},{id:"LBY", name:"Libyenne"},{id:"LIE", name:"Liechtensteinoise"},{id:"LTU", name:"Lituanienne"},{id:"LUX", name:"Luxembourgeoise"},{id:"MKD", name:"Macédonienne"},{id:"MYS", name:"Malaisienne"},{id:"MWI", name:"Malawienne"},{id:"MDV", name:"Maldivienne"},{id:"MDG", name:"Malgache"},{id:"MLI", name:"Maliennes"},{id:"MLT", name:"Maltaise"},{id:"MAR", name:"Marocaine"},{id:"MHL", name:"Marshallaise"},{id:"MUS", name:"Mauricienne"},{id:"MRT", name:"Mauritanienne"},{id:"MEX", name:"Mexicaine"},{id:"FSM", name:"Micronésienne"},{id:"MDA", name:"Moldave"},{id:"MCO", name:"Monegasque"},{id:"MNG", name:"Mongole"},{id:"MNE", name:"Monténégrine"},{id:"MOZ", name:"Mozambicaine"},{id:"NAM", name:"Namibienne"},{id:"NRU", name:"Nauruane"},{id:"NLD", name:"Néerlandaise"},{id:"NZL", name:"Néo-Zélandaise"}, + {id:"NPL", name:"Népalaise"},{id:"NIC", name:"Nicaraguayenne"},{id:"NGA", name:"Nigériane"},{id:"NER", name:"Nigérienne"},{id:"NIU", name:"Niuéenne"},{id:"PRK", name:"Nord-coréenne"},{id:"NOR", name:"Norvégienne"},{id:"OMN", name:"Omanaise"},{id:"UGA", name:"Ougandaise"},{id:"UZB", name:"Ouzbéke"},{id:"PAK", name:"Pakistanaise"},{id:"PLW", name:"Palaosienne"},{id:"PSE", name:"Palestinienne"},{id:"PAN", name:"Panaméenne"},{id:"PNG", name:"Papouane-Néo-Guinéenne"},{id:"PRY", name:"Paraguayenne"},{id:"PER", name:"Péruvienne"},{id:"PHL", name:"Philippine"},{id:"POL", name:"Polonaise"},{id:"PRT", name:"Portugaise"},{id:"QAT", name:"Qatarienne"},{id:"ROU", name:"Roumaine"},{id:"RUS", name:"Russe"},{id:"RWA", name:"Rwandaise"},{id:"LCA", name:"Saint-Lucienne"},{id:"SMR", name:"Saint-Marinaise"},{id:"VCT", name:"Saint-Vincentaise"},{id:"SLB", name:"Salomonaise"},{id:"SLV", name:"Salvadorienne"},{id:"WSM", name:"Samoane"},{id:"STP", name:"Santoméenne"},{id:"SAU", name:"Saoudienne"},{id:"SEN", name:"Sénégalaise"},{id:"SRB", name:"Serbe"},{id:"SYC", name:"Seychelloise"},{id:"SLE", name:"Sierra-Léonaise"},{id:"SGP", name:"Singapourienne"},{id:"SVK", name:"Slovaque"},{id:"SVN", name:"Slovène"},{id:"SOM", name:"Somalienne"},{id:"SDN", name:"Soudanaise"},{id:"LKA", name:"Sri-Lankaise"},{id:"ZAF", name:"Sud-Africaine"},{id:"KOR", name:"Sud-Coréenne"},{id:"SSD", name:"Sud-Soudanaise"},{id:"SWE", name:"Suédoise"},{id:"CHE", name:"Suisse"},{id:"SUR", name:"Surinamaise"},{id:"SWZ", name:"Swazie"},{id:"SYR", name:"Syrienne"},{id:"TJK", name:"Tadjike"},{id:"TZA", name:"Tanzanienne"},{id:"TCD", name:"Tchadienne"},{id:"CZE", name:"Tchèque"},{id:"THA", name:"Thaïlandaise"},{id:"TGO", name:"Togolaise"},{id:"TON", name:"Tonguienne"},{id:"TTO", name:"Trinidadienne"},{id:"TUN", name:"Tunisienne"},{id:"TKM", name:"Turkmène"},{id:"TUR", name:"Turque"},{id:"TUV", name:"Tuvaluane"},{id:"UKR", name:"Ukrainienne"},{id:"URY", name:"Uruguayenne"},{id:"VUT", name:"Vanuatuane"},{id:"VAT", name:"Vaticane"},{id:"VEN", name:"Vénézuélienne"},{id:"VNM", name:"Vietnamienne"},{id:"YEM", name:"Yéménite"},{id:"ZMB", name:"Zambienne"},{id:"ZWE", name:"Zimbabwéenne"} +] + public possibleSchools = [ {id:"Jean Perrin (Longjumeau)", name:"Jean Perrin (Longjumeau)"}, {id:"Robert Doisneau (Corbeil-Essonnes)",name:"Robert Doisneau (Corbeil-Essonnes)"}, @@ -48,8 +164,7 @@ export class EditDataComponent implements OnInit { {id:"Charles Péguy (Bobigny)",name:"Charles Péguy (Bobigny)"}, {id:"Jean Jaurès (Chatenay-Malabry)",name:"Jean Jaurès (Chatenay-Malabry)"}, {id:"Parc des Loges (Evry)",name:"Parc des Loges (Evry)"}, - {id:"Jean-Baptiste Corot (Savigny-sur-Orge)",name:"Jean-Baptiste Corot (Savigny-sur-Orge)"}, - {id:"Gaspard Monge (Savigny-sur-Orge)",name:"Gaspard Monge (Savigny-sur-Orge)"}, + {id:"Jean Jaurès (Argenteuil)",name:"Jean Jaurès (Argenteuil)"}, ] public possibleScholarships = [ @@ -62,8 +177,114 @@ export class EditDataComponent implements OnInit { {id:"no",name:"Non"}, ] + + public possibleSpecialitiesTechno = [ + {id:"Aucun",name:"Aucun"}, + {id:"STI2D",name:"Sciences et technologies de l’industrie et du développement durable"}, + {id:"STD2A",name:"Sciences et technologies du design et des arts appliqués"}, + {id:"STMG",name:"Sciences et technologies du management et de la gestion"}, + {id:"ST2S",name:"Sciences et technologies de la santé et du social"}, + {id:"STL",name:"Sciences et technologies de laboratoire"}, + {id:"S2TMD",name:"Sciences et techniques du théâtre, de la musique et de la danse"}, + {id:"STHR",name:"Sciences et technologies de l'hôtellerie et de la restauration"}, + {id:"STAV",name:"Sciences et technologies de l'agronomie et du vivant"}, + + ] + + public possibleSpecialitiesGeneral = [ + {id:"Aucun",name:"Tu es dans une filière générale, tu n'as pas besoin de remplir cette case."}, + ] + + public possibleSpecialitiesPro = [ + {id:"Aucun",name:"Aucun"}, + {id:"Accompagnement soins et services à la personne",name:"Accompagnement soins et services à la personne"}, + {id:"Aéronautique",name:"Aéronautique"}, + {id:"Aménagement et finition du bâtiment",name:"Aménagement et finition du bâtiment"}, + {id:"Animation - enfance et personnes âgées",name:"Animation - enfance et personnes âgées"}, + {id:"Artisanat et métiers d'art",name:"Artisanat et métiers d'art"}, + {id:"Assistance à la gestion des organisations et de leurs activités",name:"Assistance à la gestion des organisations et de leurs activités"}, + {id:"Aviation générale",name:"Aviation générale"}, + {id:"Bio-industries de transformation",name:"Bio-industries de transformation"}, + {id:"Boucher charcutier traiteur",name:"Boucher charcutier traiteur"}, + {id:"Boulanger - pâtissier",name:"Boulanger - pâtissier"}, + {id:"Commerce",name:"Commerce"}, + {id:"Commercialisation et services en restauration",name:"Commercialisation et services en restauration"}, + {id:"Conducteur transport routier marchandises",name:"Conducteur transport routier marchandises"}, + {id:"Construction des carrosseries",name:"Construction des carrosseries"}, + {id:"Cuisine",name:"Cuisine"}, + {id:"Esthétique cosmétique parfumerie",name:"Esthétique cosmétique parfumerie"}, + {id:"Étude et définition de produits industriels",name:"Étude et définition de produits industriels"}, + {id:"Etude et réalisation d'agencement",name:"Etude et réalisation d'agencement"}, + {id:"Façonnage de produits imprimés, routage",name:"Façonnage de produits imprimés, routage"}, + {id:"Fonderie",name:"Fonderie"}, + {id:"Gestion administration",name:"Gestion administration"}, + {id:"Gestion des pollutions et protection de l'environnement",name:"Gestion des pollutions et protection de l'environnement"}, + {id:"Hygiène, propreté et stérilisation",name:"Hygiène, propreté et stérilisation"}, + {id:"Installateur en chauffage, climatisation et énergies renouvelables ",name:"Installateur en chauffage, climatisation et énergies renouvelables "}, + {id:"Interventions sur le patrimoine bâti",name:"Interventions sur le patrimoine bâti"}, + {id:"Logistique",name:"Logistique"}, + {id:"Maintenance des équipements industriels",name:"Maintenance des équipements industriels"}, + {id:"Maintenance des matériels",name:"Maintenance des matériels"}, + {id:"Maintenance des systèmes de production connectés",name:"Maintenance des systèmes de production connectés"}, + {id:"Maintenance des véhicules",name:"Maintenance des véhicules"}, + {id:"Maintenance et Efficacité Energétique",name:"Maintenance et Efficacité Energétique"}, + {id:"Maintenance nautique",name:"Maintenance nautique"}, + {id:"Menuiserie Aluminium-Verre",name:"Menuiserie Aluminium-Verre"}, + {id:"Métiers de l'accueil",name:"Métiers de l'accueil"}, + {id:"Métiers de l'électricité et de ses environnements connectés",name:"Métiers de l'électricité et de ses environnements connectés"}, + {id:"Métiers de la coiffure",name:"Métiers de la coiffure"}, + {id:"Métiers de la mode - vêtements",name:"Logistique"}, + {id:"Métiers de la sécurité",name:"Métiers de la sécurité"}, + {id:"Métiers du commerce et de la vente",name:"Métiers du commerce et de la vente"}, + {id:"Métiers du cuir",name:"Métiers du cuir"}, + {id:"Métiers du Froid et des Énergies Renouvelables",name:"Métiers du Froid et des Énergies Renouvelables"}, + {id:"Métiers du pressing et de la blanchisserie",name:"Métiers du pressing et de la blanchisserie"}, + {id:"Métiers et arts de la pierre",name:"Métiers et arts de la pierre"}, + {id:"Microtechniques",name:"Microtechniques"}, + {id:"Modélisation et prototypage 3D",name:"Modélisation et prototypage 3D"}, + {id:"Optique lunetterie",name:"Optique lunetterie"}, + {id:"Organisation de transport de marchandises",name:"Organisation de transport de marchandises"}, + {id:"Ouvrage du bâtiment : métallerie",name:"Ouvrage du bâtiment : métallerie"}, + {id:"Perruquier posticheur",name:"Perruquier posticheur"}, + {id:"Photographie",name:"Photographie"}, + {id:"Pilote de ligne de production",name:"Pilote de ligne de production"}, + {id:"Plastiques et composites",name:"Plastiques et composites"}, + {id:"Poissonnier écailler traiteur",name:"Poissonnier écailler traiteur"}, + {id:"Procédés de la chimie, de l'eau et des papiers-cartons",name:"Procédés de la chimie, de l'eau et des papiers-cartons"}, + {id:"Productique mécanique",name:"Productique mécanique"}, + {id:"Prothèse dentaire",name:"Prothèse dentaire"}, + {id:"Réalisation de produits imprimés et plurimédia",name:"Réalisation de produits imprimés et plurimédia"}, + {id:"Réparation des carrosseries",name:"Réparation des carrosseries"}, + {id:"Services de proximité et vie locale",name:"Services de proximité et vie locale"}, + {id:"Systèmes numériques",name:"Systèmes numériques"}, + {id:"Technicien Gaz",name:"Technicien Gaz"}, + {id:"Technicien constructeur bois",name:"Technicien constructeur bois"}, + {id:"Technicien de maintenance de systèmes énergétiques et climatiques",name:"Technicien de maintenance de systèmes énergétiques et climatiques"}, + {id:"Technicien d'études du bâtiment",name:"Technicien d'études du bâtiment"}, + {id:"Technicien du froid et du conditionnement de l'air",name:"Technicien du froid et du conditionnement de l'air"}, + {id:"Technicien d'usinage",name:"Technicien d'usinage"}, + {id:"Technicien de fabrication bois et matériaux associés",name:"Technicien de fabrication bois et matériaux associés"}, + {id:"Technicien de maintenance de systèmes énergétiques et climatiques",name:"Technicien de maintenance de systèmes énergétiques et climatiques"}, + {id:"Technicien du bâtiment : organisation et réalisation du gros oeuvre",name:"Technicien du bâtiment : organisation et réalisation du gros oeuvre"}, + {id:"Technicien en appareillage orthopédique",name:"Technicien en appareillage orthopédique"}, + {id:"Technicien en chaudronnerie industrielle",name:"Technicien en chaudronnerie industrielle"}, + {id:"Technicien en installation des systèmes énergétiques et climatiques",name:"Technicien en installation des systèmes énergétiques et climatiques"}, + {id:"Technicien en prothèse dentaire",name:"Technicien en prothèse dentaire"}, + {id:"Technicien en réalisation de produits mécaniques",name:"Technicien en réalisation de produits mécaniques"}, + {id:"Technicien géomètre topographe",name:"Technicien géomètre topographe"}, + {id:"Technicien menuisier agenceur",name:"Technicien menuisier agenceur"}, + {id:"Technicien modeleur",name:"Technicien modeleur"}, + {id:"Technicien outilleur",name:"Technicien outilleur"}, + {id:"Techniques d'interventions sur installations nucléaires",name:"Techniques d'interventions sur installations nucléaires"}, + {id:"Traitements des matériaux",name:"Traitements des matériaux"}, + {id:"Transport",name:"Transport"}, + {id:"Transport fluvial",name:"Transport fluvial"}, + {id:"Travaux publics",name:"Travaux publics"}, + {id:"Vente",name:"Vente"}, + + ] constructor( private route: ActivatedRoute, private personalDataService : PersonalDataService, @@ -72,12 +293,24 @@ export class EditDataComponent implements OnInit { private auth: AuthService, private snackBar: MatSnackBar, - ) { } - + ) { } + filteredOptions: Observable<Nationality[]>; ngOnInit() { this.personalData = this.route.snapshot.data['personalData']; - this.createForm() + this.createForm(); + this.classType=this.personalData.classType; + + } + + public _filter(value: string): string[] { + const filterValue = value.toLowerCase(); + let entryNatList : Array<string>; + for (let nationality of this.possibleNationalities) + { + entryNatList.push(nationality.name); + } + return entryNatList.filter(option => option.toLowerCase().includes(filterValue)); } @@ -111,6 +344,21 @@ export class EditDataComponent implements OnInit { } + setSpeciality(){ + if (this.classType=="Technologique") + { + return this.possibleSpecialitiesTechno; + } + else if (this.classType=="Professionnelle") + { + return this.possibleSpecialitiesPro; + } + else (this.classType=="General") + { + return this.possibleSpecialitiesGeneral; + } + } + submit(){ this.loading = true; const {firstName,lastName,gender,nationality,classType,addressNumber,street,zipCode,city,personalPhone,parentsPhone,parentsEmail,school,grade,specialTeaching,scholarship,fatherActivity,motherActivity,parentsStatus,dependantsNumber} = this.formGroup.value; diff --git a/src/app/signup/core/registration.model.ts b/src/app/signup/core/registration.model.ts index 66ec0669fa892235a549a7df8340671b849e54da..0473dc82961b8b62306c277ac87e4910a2da6b2a 100644 --- a/src/app/signup/core/registration.model.ts +++ b/src/app/signup/core/registration.model.ts @@ -5,7 +5,8 @@ class RegistrationSchema { email: string; firstName: string; lastName: string; - phoneNumber: string; + dateOfBirth : Date; + phoneNumber : string; } export class Registration extends RegistrationSchema { @@ -28,7 +29,8 @@ export class RegistrationAdapter { email: obj.email, first_name: obj.firstName, last_name: obj.lastName, - phone_number: obj.phoneNumber, + dateOfBirth : obj.dateOfBirth, + phone_number : obj.phoneNumber, } } } diff --git a/src/app/signup/parents-charter/parents-charter.component.html b/src/app/signup/parents-charter/parents-charter.component.html new file mode 100644 index 0000000000000000000000000000000000000000..b38f6a5dfb08392676f53d57d891db00c5a02e94 --- /dev/null +++ b/src/app/signup/parents-charter/parents-charter.component.html @@ -0,0 +1,94 @@ +<app-form-page > + <h1> + Signature de l'accord des parents + </h1> + <a> + Cette partie de l'inscription est à destination de tes parents. + </a> + <h2> + Qu'est-ce que OSER ? + </h2> + <p> + OSER est une association étudiante de CentraleSupélec affiliée au programme national des <a>Cordées de la Réussite</a>. + Elle propose à des collégien·ne·s et des lycéen·ne·s des <strong class=important>séances de tutorat</strong> d’ouverture culturelle et scientifique, + des <strong class=important>sorties</strong> en Île-de-France, ainsi que de nombreux projets incluant des voyages et des stages leur permettant de vivre + de nombreuses expériences enrichissantes. <a>L’objectif ?</a> Permettre à nos tutoré·e·s de développer leur aisance à l’oral, + leur esprit critique, le travail d’équipe ainsi qu’enrichir leur culture générale. Enfin, les tutoré·e·s peuvent compter + sur leurs tuteurs et tutrices pour les guider dans leur orientation. + </p> + <p> + Pour plus d’informations, vous pouvez nous contacter par mail : <a href="mailto:contact@oser-cs.fr" >contact@oser-cs.fr</a>. + </p> + + + + <a> + <mat-checkbox class="text-center" [checked]="$state_general" (click)="toggleGeneral()">J'autorise mon enfant à participer à OSER.</mat-checkbox> + </a> + <p> + <mat-hint> + Cette signature est obligatoire. + </mat-hint> + </p> + <h2> + Quelles sont les données récupérées par OSER ? + </h2> + <p> + Dans le cadre de la récente mise en place du <a>RGPD</a> (Règlement Général sur la Protection des Données), nous aimerions attirer + votre attention sur les collectes d’informations qu’OSER effectue. Les données que nous récoltons sont les coordonnées de votre enfant, + celles des personnes à contacter en cas d’urgence, ainsi que des données sociales qui nous sont indispensables pour justifier + nos activités auprès des <strong class=important>organismes de subventions publics</strong> (région, département et rectorat). + La collecte de ces données se fait lors de l’inscription à OSER via un formulaire sur notre site internet en début d’année + et peut aussi se faire lors des inscriptions aux divers projets proposés par l’association. + Le <strong class=important>stockage de ces informations</strong> se fait en partie dans un Google Drive accessible aux membres du bureau de l’association, + sur notre site internet et en partie au format papier. Les documents papiers sont conservés sous clés. <a>Nous nous engageons + à ce que seuls les tuteurs et tutrices de l’association aient accès aux informations collectées et à ce qu’ells soient exclusivement utilisées + dans le cadre des actions d’OSER.</a> + </p> + <p> + De plus, nous vous informons que la communication avec les lycéen·ne·s se fait via l’application <strong class=important>WhatsApp</strong>. + Cet outil nous permet de leur rappeler les dates des prochaines séances, de leur communiquer des informations sur nos + projets et de répondre à leurs questions. + </p> + <p> + Les données récoltées peuvent être modifiées à tout moment via l'onglet "Mon compte" sur le site. Vous pouvez également demander à tout moment + la supression des données par mail : <a href="mailto:contact@oser-cs.fr" >contact@oser-cs.fr</a> + </p> + + <a> + <mat-checkbox class="text-center" [checked]="$state_data" (click)="toggleData()">J'autorise OSER à récupérer les données de mon enfant.</mat-checkbox> + </a> + <p> + <mat-hint> + Cette signature est obligatoire. + </mat-hint> + </p> + + <h2> + Autorisation de droit à l'image + </h2> + <p> + En cochant la case ci-dessous, vous autorisez les tuteurs et tutrices d’OSER à prendre des <strong class=important>photos</strong> et des <strong class=important>vidéos</strong> représentant votre enfant, + lors de sa présence en séance de tutorat et lors des activités organisées par l'association (sorties ou projets). + Ces films et/ou photos peuvent être utilisées par <a>OSER</a> ainsi que <a>CentraleSupélec</a> sur des outils de communication internes et + externes (site internet, réseaux sociaux, présentation en séance) afin de présenter nos activités aux financeurs et de faire + de la publicité auprès des tutoré·e·s pour les projets pour les années à venir. + + </p> + + + <mat-checkbox class="text-center" [checked]="$state_image" (click)="toggleImage()">J'autorise OSER à prendre en photo/vidéo mon enfant.</mat-checkbox> + <p> + <mat-hint> + Cette signature n'est pas obligatoire. + </mat-hint> + </p> + + <div class="text-center"> + <button mat-raised-button color="primary" (click)="signChart()" [disabled]="!toggleSuivant()" routerLink='/membres/compte/modifier_donnees'> + Terminer l'inscription + </button> + </div> + + +</app-form-page> \ No newline at end of file diff --git a/src/app/signup/parents-charter/parents-charter.component.scss b/src/app/signup/parents-charter/parents-charter.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e5976436baf8cd5980b0d80f3a3fba336a13c82b --- /dev/null +++ b/src/app/signup/parents-charter/parents-charter.component.scss @@ -0,0 +1,4 @@ + +.important{ + color: rgb(17, 180, 185); + } \ No newline at end of file diff --git a/src/app/signup/parents-charter/parents-charter.component.ts b/src/app/signup/parents-charter/parents-charter.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..378046e127ff157db75f32638068f43ecf48d360 --- /dev/null +++ b/src/app/signup/parents-charter/parents-charter.component.ts @@ -0,0 +1,54 @@ +import { Component, OnInit } from '@angular/core'; +import { AuthService } from 'app/core'; + +import { Registration, RegistrationService, PasswordErrorStateMatcher,PersonnalData,PersonnalDataService } from '../core'; +import { StudentSignupComponent } from '../student-signup/student-signup.component'; + +@Component({ + selector: 'app-parents-charter', + templateUrl: './parents-charter.component.html', + styleUrls: ['./parents-charter.component.scss'] +}) +export class ParentsCharterComponent implements OnInit { + + state_general:boolean; + state_data:boolean; + state_image:boolean; + state_button:boolean; + + + constructor( + private auth: AuthService, + ) { } + + ngOnInit() { + + } + + toggleGeneral(){ + this.state_general=!this.state_general; + } + toggleData(){ + this.state_data=!this.state_data; + } + + toggleImage(){ + this.state_image=!this.state_image; + } + + toggleSuivant(){ + this.state_button = !this.state_general || !this.state_data; + return !this.state_button; + } + + submit(){ + + + } + // send post to url + signChart() + { + console.log("signChart"); + this.auth.sendSignatureCharter(this.auth.getUserSnapshot().email).subscribe(); + } +} diff --git a/src/app/signup/signup-routing.module.ts b/src/app/signup/signup-routing.module.ts index d378be52437b82248776985325ee48fa50940b0c..8cf197f901017acdec105abcdae8274ec8d4fc58 100644 --- a/src/app/signup/signup-routing.module.ts +++ b/src/app/signup/signup-routing.module.ts @@ -1,6 +1,10 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; +import { StudentCharterComponent } from './student-charter/student-charter.component'; import { StudentSignupComponent } from './student-signup/student-signup.component'; +import { ValidEmailComponent } from './valid-email/valid-email.component'; +import { WaitingEmailVerificationComponent } from './waiting-email-verification/waiting-email-verification.component'; +import { ParentsCharterComponent } from './parents-charter/parents-charter.component'; const routes: Routes = [ @@ -8,6 +12,23 @@ const routes: Routes = [ path: '', component: StudentSignupComponent }, + { + path:'waiting', + component : WaitingEmailVerificationComponent + }, + { + path:'valid-email', + component : ValidEmailComponent + }, + { + path:'student-charter', + component : StudentCharterComponent + }, + { + path:'parents-charter', + component : ParentsCharterComponent + } + ]; @NgModule({ diff --git a/src/app/signup/signup.module.ts b/src/app/signup/signup.module.ts index 245b3c29f1ab39ba7c6324f80c88bac1bf9fdaa2..59ca4f11f7040d90ae78a5a114683f4299d5e424 100644 --- a/src/app/signup/signup.module.ts +++ b/src/app/signup/signup.module.ts @@ -18,10 +18,18 @@ import { import { SharedModule } from 'app/shared'; import { SignupRoutingModule } from './signup-routing.module'; import { StudentSignupComponent } from './student-signup/student-signup.component'; +import { WaitingEmailVerificationComponent } from './waiting-email-verification/waiting-email-verification.component'; +import { ValidEmailComponent } from './valid-email/valid-email.component'; +import { StudentCharterComponent } from './student-charter/student-charter.component'; +import { ParentsCharterComponent } from './parents-charter/parents-charter.component'; @NgModule({ declarations: [ StudentSignupComponent, + WaitingEmailVerificationComponent, + ValidEmailComponent, + StudentCharterComponent, + ParentsCharterComponent, ], imports: [ CommonModule, diff --git a/src/app/signup/student-charter/student-charter.component.html b/src/app/signup/student-charter/student-charter.component.html new file mode 100644 index 0000000000000000000000000000000000000000..7ec23eb9456e9c5658f2276f32e7de64703c3dc7 --- /dev/null +++ b/src/app/signup/student-charter/student-charter.component.html @@ -0,0 +1,62 @@ +<app-form-page> + <h1> + Signature charte du tutoré + </h1> + <p> + Nous allons te présenter la charte du tutoré. + </p> + <p> + Tu vas devoir la lire <b>attentivement</b> et la signer pour continuer ton inscription. + </p> + <h2> + Charte du tutoré + </h2> + <p> + Tu t’es inscrit·e à OSER, <strong class=important>bienvenue à toi</strong> ! + Afin de passer une année formidable, nous te demandons de t’engager sur <a>trois</a> points + concernant les différentes activités d’OSER. De notre côté, + nous nous engageons à t’accueillir à chaque séance et à te proposer des <strong class=important>séances de tutorat</strong>, + des <strong class=important>sorties</strong> et des <strong class=important>projets</strong> enrichissants et passionnants. +Voici donc ces trois points : + </p> + <p> + • Tu t’engages à être présent·e, à l’heure, aux séances de tutorat, et à nous prévenir + lorsque tu as un empêchement. Il en va de même pour les sorties et les projets : + il est <a>capital</a> que tu préviennes un membre de l’association si tu ne peux plus venir. + </p> + <p> + • Tu t’engages à <strong class=important>respecter</strong> les autres tutoré·e·s ainsi que les tuteurs et tutrices pendant les séances, + les sorties et les projets. + </p> + <p> + • Tu t’engages à suivre les <a>consignes de sécurité</a> et d’encadrement des tuteurs et des tutrices, + notamment lors des sorties et des projets. + </p> + <p> + Enfin, pour que les activités d’OSER soient vraiment intéressantes pour toi, + nous pensons qu’il est important que tu <strong class=important>participes activement</strong> aux séances, + aux sorties et aux projets. + </p> + + + + <a> + <mat-checkbox class="text-center" [checked]="$state" (click)="toggle()">J'ai lu la charte du tutoré et + je m'engage à la respecter.</mat-checkbox> + </a> + <p> + <mat-hint> + Cette signature est obligatoire. + </mat-hint> + </p> + + + <div class="text-center"> + <button mat-raised-button color="primary" [disabled]="!state" routerLink='/inscription/parents-charter'> + Suivant + </button> + </div> + + + +</app-form-page> \ No newline at end of file diff --git a/src/app/signup/student-charter/student-charter.component.scss b/src/app/signup/student-charter/student-charter.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..2876d8f87f3be02e7888a79273b99d8a69c048b8 --- /dev/null +++ b/src/app/signup/student-charter/student-charter.component.scss @@ -0,0 +1,23 @@ +.checkbox-field { + display: block; + margin: .5em 0; + } + .form-group{ + display:flex; + flex-direction: row; + justify-content: space-between; + } + .horizontal-display{ + width:45%; + } + .adress-input{ + margin:5px; + } + + .quarter-display{ + width:25%; + } + + .important{ + color: rgb(17, 180, 185); + } \ No newline at end of file diff --git a/src/app/signup/student-charter/student-charter.component.ts b/src/app/signup/student-charter/student-charter.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..c06c0a4269439a4a98c63402fdf29c96fd8ae240 --- /dev/null +++ b/src/app/signup/student-charter/student-charter.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit } from '@angular/core'; +import { StaticInjector } from '@angular/core/src/di/injector'; +import { Observable, BehaviorSubject } from 'rxjs'; +import { HttpClient } from '@angular/common/http'; + + +@Component({ + selector: 'app-student-charter', + templateUrl: './student-charter.component.html', + styleUrls: ['./student-charter.component.scss'] +}) +export class StudentCharterComponent implements OnInit { + + + state:boolean; + // private studentCharterUrl = environment.apiUrl + ''; + + + constructor() { } + + ngOnInit() { + + } + + toggle(){ + this.state=!this.state; + } + + // sendStudentSignatureCharter(email: string, state:boolean) : Observable<boolean> { + // return this.http.post<any>(this.studentCharterUrl, { params: email, state }).pipe( + // map(() => true + // )); + // } + +} diff --git a/src/app/signup/student-signup/student-signup.component.html b/src/app/signup/student-signup/student-signup.component.html index 31e460d98d2eb944c214c92d8d263b7074be2824..6a522586b8876e9c937dd7978a91045576b207a2 100644 --- a/src/app/signup/student-signup/student-signup.component.html +++ b/src/app/signup/student-signup/student-signup.component.html @@ -18,20 +18,27 @@ <input matInput type="text" formControlName="lastName" placeholder="Nom" required> </mat-form-field> + <!--Date of birth--> + <mat-form-field class="full-width"> + <input matInput type="date" formControlName="dateOfBirth" placeholder="Date de naissance" required> + </mat-form-field> + <!-- Email --> <mat-form-field class="full-width"> - <input matInput type="email" formControlName="email" placeholder="Adresse email" required> + <input matInput type="email" formControlName="email" placeholder="Adresse email" onkeyup="this.value = this.value.toLowerCase();" required> <mat-hint> Elle te servira d'identifiant de connexion. </mat-hint> </mat-form-field> - <mat-form-field class="full-width"> - <input matInput type="tel" formControlName="phoneNumber" placeholder="Numéro de téléphone" required> + + + <!-- <mat-form-field class="full-width"> + <input matInput type="tel" minlength="10" maxlength="10" formControlName="phoneNumber" placeholder="Numéro de téléphone" required> <mat-hint> Il nous permettra de te contacter en cas de nécessité. </mat-hint> - </mat-form-field> + </mat-form-field> --> <p> @@ -54,7 +61,7 @@ <div class="text-center"> <button mat-raised-button color="primary" [disabled]="!formGroup.valid || loading"> - M'inscrire + Suivant <app-load-spinner *ngIf="loading" [block]="false"></app-load-spinner> </button> </div> diff --git a/src/app/signup/student-signup/student-signup.component.ts b/src/app/signup/student-signup/student-signup.component.ts index 5f04fc109e6b3325e95958f359deb7c840f079f2..319ea5b2173c337e30e0c959f00468691977e26c 100644 --- a/src/app/signup/student-signup/student-signup.component.ts +++ b/src/app/signup/student-signup/student-signup.component.ts @@ -73,6 +73,7 @@ export class StudentSignupComponent implements OnInit { firstName: '', lastName: '', email: ['', Validators.email], + dateOfBirth:'', phoneNumber: '', gender:'', adressNumber:'', @@ -108,32 +109,60 @@ export class StudentSignupComponent implements OnInit { toggleShowPersonnalDataForm(){ this.showPersonnalDataForm = !this.showPersonnalDataForm; } + submit() { this.loading = true; - const {email,firstName,lastName,phoneNumber} = this.formGroup.value + const {email,firstName,lastName,dateOfBirth,phoneNumber} = this.formGroup.value //const {gender,adressNumber,street,zipCode,city,personnalPhone,parentsPhone,parentsEmail,school,grade,section,specialTeaching,scholarship,fatherActivity,motherActivity,parentsStatus,dependantsNumber} = this.formGroup.value; - const registration: Registration = {email,firstName,lastName,phoneNumber}; + const registration: Registration = {email,firstName,lastName,dateOfBirth,phoneNumber}; // const personnalData: PersonnalData = {gender,adressNumber,street,zipCode,city,personnalPhone,parentsPhone,parentsEmail,school,grade,section,specialTeaching,scholarship,fatherActivity,motherActivity,parentsStatus,dependantsNumber}; const password: string = this.formGroup.controls.password.value; - this.registrationService.create(registration, password).pipe( - mergeMap(() => this.auth.login(registration.email, password)), - tap(() => this.snackBar.open( - `Ton compte a été créé ! Tu es maintenant connecté.`, - 'OK', - { duration: 3000 }, + + // this.registrationService.create(registration, password).pipe( + // mergeMap(() => this.auth.login(registration.email, password)), + // tap(() => this.snackBar.open( + // `Ton compte a été créé ! Tu es maintenant connecté.`, + // 'OK', + // { duration: 3000 }, + // )), + // tap(()=> this.error = ""), + // tap(() => this.loading = false), + // tap(() => { + // setTimeout(()=>{ + // this.router.navigate(['inscription/waiting']) + + // },3000)}) + + // ).subscribe( + // () => {}, + // (error) => { + + + // this.loading=false + + // if(error.error.email){ + // this.error = "Erreur, cet email est déjà utilisé !" + // } + // } + // ); + + + this.registrationService.create(registration, password).pipe(tap(() => this.snackBar.open( + `Les informations sont valides ! Nous allons t'envoyer un mail d'activation.`,'OK', + { duration: 2000 }, )), tap(()=> this.error = ""), tap(() => this.loading = false), tap(() => { - setTimeout(()=>{ - this.router.navigate(['./membres/compte/donnees']) + setTimeout(()=>{ + this.router.navigate(['inscription/waiting']) - },3000)}) - - ).subscribe( - () => {}, - (error) => { + },2000)}) + + ).subscribe( + () => {}, + (error) => { this.loading=false @@ -151,4 +180,5 @@ export class StudentSignupComponent implements OnInit { // (error) => this.loading = false, // ); } + } diff --git a/src/app/signup/valid-email/valid-email.component.html b/src/app/signup/valid-email/valid-email.component.html new file mode 100644 index 0000000000000000000000000000000000000000..a126e50a24ac480910cc9d387736abd0619920c3 --- /dev/null +++ b/src/app/signup/valid-email/valid-email.component.html @@ -0,0 +1,14 @@ +<app-form-page> + <h2> + Adresse email validée ! + </h2> + <p> + Tu viens de valider ton adresse email ! Il ne reste plus que quelques étapes avant la fin de l'inscription. + </p> + + <div class="text-center"> + <button mat-raised-button color="primary" routerLink='/inscription/student-charter' > + Suivant + </button> + </div> +</app-form-page> diff --git a/src/app/signup/valid-email/valid-email.component.scss b/src/app/signup/valid-email/valid-email.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..dfbe271ae99bd553d6ca059e4c6c01ef988dc191 --- /dev/null +++ b/src/app/signup/valid-email/valid-email.component.scss @@ -0,0 +1,19 @@ +.checkbox-field { + display: block; + margin: .5em 0; + } + .form-group{ + display:flex; + flex-direction: row; + justify-content: space-between; + } + .horizontal-display{ + width:45%; + } + .adress-input{ + margin:5px; + } + + .quarter-display{ + width:25%; + } \ No newline at end of file diff --git a/src/app/signup/valid-email/valid-email.component.ts b/src/app/signup/valid-email/valid-email.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..1c65e341938f0bb9fc7898660b08912cc24ecad1 --- /dev/null +++ b/src/app/signup/valid-email/valid-email.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-valid-email', + templateUrl: './valid-email.component.html', + styleUrls: ['./valid-email.component.scss'] +}) +export class ValidEmailComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/signup/waiting-email-verification/waiting-email-verification.component.html b/src/app/signup/waiting-email-verification/waiting-email-verification.component.html new file mode 100644 index 0000000000000000000000000000000000000000..5eb8bafbb366c69098fa31e258b00e1a7270e3f7 --- /dev/null +++ b/src/app/signup/waiting-email-verification/waiting-email-verification.component.html @@ -0,0 +1,12 @@ +<app-form-page> + <h1> + Vérification de l'adresse email + </h1> + <p> + Nous venons de t'envoyer un mail sur l'adresse renseignée. + </p> + <p> + Pour continuer ton inscription, il faut cliquer sur le lien de d'activation. + </p> + +</app-form-page> \ No newline at end of file diff --git a/src/app/signup/waiting-email-verification/waiting-email-verification.component.scss b/src/app/signup/waiting-email-verification/waiting-email-verification.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..dfbe271ae99bd553d6ca059e4c6c01ef988dc191 --- /dev/null +++ b/src/app/signup/waiting-email-verification/waiting-email-verification.component.scss @@ -0,0 +1,19 @@ +.checkbox-field { + display: block; + margin: .5em 0; + } + .form-group{ + display:flex; + flex-direction: row; + justify-content: space-between; + } + .horizontal-display{ + width:45%; + } + .adress-input{ + margin:5px; + } + + .quarter-display{ + width:25%; + } \ No newline at end of file diff --git a/src/app/signup/waiting-email-verification/waiting-email-verification.component.ts b/src/app/signup/waiting-email-verification/waiting-email-verification.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..c3b04c3433f96e03421c0bcbd235ee2bb0640b03 --- /dev/null +++ b/src/app/signup/waiting-email-verification/waiting-email-verification.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-waiting-email-verification', + templateUrl: './waiting-email-verification.component.html', + styleUrls: ['./waiting-email-verification.component.scss'] +}) +export class WaitingEmailVerificationComponent implements OnInit { + constructor() { + } + + ngOnInit() { + } + +} diff --git a/src/environments/environment.local.ts b/src/environments/environment.local.ts index 198da5d5c8700a770762c7e14e5ce56e5d913fa0..316ece061698e1f01912d6757c609e0ff7900ee3 100644 --- a/src/environments/environment.local.ts +++ b/src/environments/environment.local.ts @@ -1,7 +1,7 @@ // For use when you have a local backend server running export const environment = { production: false, - showcaseApiUrl: 'https://oser-site-vitrine.herokuapp.com/api/', + showcaseApiUrl: 'https://oser-cs.fr/api/', apiUrl: 'http://localhost:8000/api/', numArticles: 3, donateUrl: "https://www.donnerenligne.fr/ouverture-sociale-pour-l-egalite-et-la-reussite/faire-un-don", diff --git a/src/environments/environment.ts b/src/environments/environment.ts index 549e327c75d5d5d4d166c26ccf803a24d23db2d3..c92a014b311df945038fddbfc0ae3fbd5bb72dd5 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -2,7 +2,7 @@ export const environment = { production: false, showcaseApiUrl: 'https://oser-site-vitrine.herokuapp.com/api/', - apiUrl: 'https://oser-backend-dev.herokuapp.com/api/', + apiUrl: 'http://localhost:8000/api/', numArticles: 3, donateUrl: "https://www.donnerenligne.fr/ouverture-sociale-pour-l-egalite-et-la-reussite/faire-un-don", currentCampaignUrl: "", diff --git a/src/environments/tes-environment.ts b/src/environments/tes-environment.ts new file mode 100644 index 0000000000000000000000000000000000000000..2e3edf4aacab5f663e5a292b88bc018b1eaab8de --- /dev/null +++ b/src/environments/tes-environment.ts @@ -0,0 +1,9 @@ +// Development environment (the default) +export const environment = { + production: false, + showcaseApiUrl: 'https://oser-site-vitrine.herokuapp.com/api/', + apiUrl: 'http://oser-backend:8000/api/', + numArticles: 3, + donateUrl: "https://www.donnerenligne.fr/ouverture-sociale-pour-l-egalite-et-la-reussite/faire-un-don", + currentCampaignUrl: "", +};