From 99ce863850e988a317549655fa0cabeded8a0b6d Mon Sep 17 00:00:00 2001 From: FORESTIER Fabien <fabien.forestier@soprasteria.com> Date: Wed, 17 Oct 2018 17:40:06 +0200 Subject: [PATCH] Add email service and model --- .../components/contact/contact.component.html | 25 ++++--------------- .../components/contact/contact.component.ts | 23 +++++++++++------ src/app/core/models/email.model.ts | 25 +++++++++++++++++++ src/app/core/models/index.ts | 2 ++ src/app/core/services/email.service.ts | 16 ++++++++++++ src/app/core/services/index.ts | 4 ++- src/environments/environment.ts | 5 ++++ 7 files changed, 71 insertions(+), 29 deletions(-) create mode 100644 src/app/core/models/email.model.ts create mode 100644 src/app/core/services/email.service.ts diff --git a/src/app/core/components/contact/contact.component.html b/src/app/core/components/contact/contact.component.html index 1c0316f4..a1b63b4a 100644 --- a/src/app/core/components/contact/contact.component.html +++ b/src/app/core/components/contact/contact.component.html @@ -15,21 +15,6 @@ </div> --> <div class="column is-10-touch is-9"> <div class="fields-container"> - <div class="field"> - <label class="label">Civilité</label> - <div class="field"> - <p class="control"> - <label class="radio button is-outlined title-label" [ngClass]="{'is-danger': title === 'mr'}"> - <input class="is-hidden" type="radio" value="mr" formControlName="title"> - Monsieur - </label> - <label class="radio button is-outlined title-label" [ngClass]="{'is-danger': title === 'mrs'}"> - <input class="is-hidden" type="radio" value="mrs" formControlName="title"> - Madame - </label> - </p> - </div> - </div> <div class="field"> <label class="label">Nom</label> @@ -58,14 +43,15 @@ </div> </div> - <div class="field"> + <!-- <div class="field"> <label class="label">Confirmez l'adresse mail</label> <div class="field"> <p class="control"> <input class="input" type="email" formControlName="emailConfirmation"> </p> </div> - </div> + </div> --> + </div> </div> @@ -88,14 +74,13 @@ <label class="label">Message</label> <div class="field"> <p class="control"> - <input class="input" type="textarea" formControlName="message"> + <textarea class="input" type="textarea" formControlName="text"></textarea> </p> </div> </div> <div class="has-text-centered button-wrapper"> - <!-- [disabled]="form.invalid" --> - <button class="button is-primary" (click)="send()">Envoyer</button> + <button class="button is-primary" [disabled]="form.invalid" (click)="send()">Envoyer</button> </div> </div> </div> diff --git a/src/app/core/components/contact/contact.component.ts b/src/app/core/components/contact/contact.component.ts index d1cc620e..4ac23086 100644 --- a/src/app/core/components/contact/contact.component.ts +++ b/src/app/core/components/contact/contact.component.ts @@ -1,5 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { FormGroup, FormBuilder, Validators } from '@angular/forms'; +import { EmailService } from '../../services'; +import { Email } from '../../models'; @Component({ selector: 'app-contact', @@ -12,15 +14,15 @@ export class ContactComponent implements OnInit { constructor( private _fb: FormBuilder, + private emailService: EmailService, ) { this.form = this._fb.group({ - title: ['', Validators.required], firstname: ['', Validators.required], lastname: ['', Validators.required], email: ['', [Validators.required, Validators.email]], - emailConfirmation: ['', [Validators.required, Validators.email]], + // emailConfirmation: ['', [Validators.required, Validators.email]], subject: ['', Validators.required], - message: ['', Validators.required], + text: ['', Validators.required], }); } @@ -30,10 +32,15 @@ export class ContactComponent implements OnInit { send() { console.log(this.form.value); + const email = new Email(this.form.value); + console.log(email); + this.emailService.send(email).subscribe( + (res) => { + console.log(res); + }, + (err) => { + console.log(err); + }, + ); } - - get title() { - return this.form.get('title').value; - } - } diff --git a/src/app/core/models/email.model.ts b/src/app/core/models/email.model.ts new file mode 100644 index 00000000..603b4484 --- /dev/null +++ b/src/app/core/models/email.model.ts @@ -0,0 +1,25 @@ +import { environment } from '../../../environments/environment'; + +export interface IEmail { + to: string[]; + email: string; + subject: string; + text: string; + firstname: string; + lastname: string; +} + +export class Email { + to: string[]; + from: string; + subject: string; + text: string; + + constructor(email: IEmail) { + this.to = [environment.emailService.contact]; + this.subject = email.subject; + this.text = email.text; + + this.from = `${email.firstname} ${email.lastname} ${email.email}`; + } +} diff --git a/src/app/core/models/index.ts b/src/app/core/models/index.ts index 804ec59d..3465a263 100644 --- a/src/app/core/models/index.ts +++ b/src/app/core/models/index.ts @@ -1,5 +1,7 @@ import { Notification, INotification } from './notification.model'; import { IMatomoResponse } from './matomo.model'; +import { IEmail, Email } from './email.model'; export { Notification, INotification }; export { IMatomoResponse }; +export { IEmail, Email }; diff --git a/src/app/core/services/email.service.ts b/src/app/core/services/email.service.ts new file mode 100644 index 00000000..af75b19f --- /dev/null +++ b/src/app/core/services/email.service.ts @@ -0,0 +1,16 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { environment } from '../../../environments/environment'; +import { Email } from '../models'; + +@Injectable() +export class EmailService { + + constructor( + private _httpClient: HttpClient, + ) {} + + send(email: Email) { + return this._httpClient.post(environment.emailService.url + '/send', email); + } +} diff --git a/src/app/core/services/index.ts b/src/app/core/services/index.ts index ed90907e..15ae6b27 100644 --- a/src/app/core/services/index.ts +++ b/src/app/core/services/index.ts @@ -3,8 +3,9 @@ import { NotificationService } from './notification.service'; import { MatomoService } from './matomo.service'; import { NavigationHistoryService } from './navigation-history.service'; import { StorageService } from './storage.service'; +import { EmailService } from './email.service'; -export { ErrorService, NotificationService, MatomoService, NavigationHistoryService }; +export { ErrorService, NotificationService, MatomoService, NavigationHistoryService, EmailService }; // tslint:disable-next-line:variable-name export const CoreServices = [ @@ -13,4 +14,5 @@ export const CoreServices = [ MatomoService, NavigationHistoryService, StorageService, + EmailService, ]; diff --git a/src/environments/environment.ts b/src/environments/environment.ts index 29775bc4..4ad3bf6a 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -23,6 +23,11 @@ export const environment = { url: 'http://localhost:3000/api', }, + emailService: { + url: 'https://kong.alpha.grandlyon.com/email', + contact: 'fab.forestier42@gmail.com', + }, + // Path to the built app in a particular language angularAppHost: { fr: '/fr', -- GitLab