forked from tykayn/funky-framadate-front
send form in dev mode, fill title demo
This commit is contained in:
parent
74a928800e
commit
215178efa9
@ -9,7 +9,7 @@ export class Poll {
|
|||||||
constructor(
|
constructor(
|
||||||
public owner: User = new User(),
|
public owner: User = new User(),
|
||||||
public slug: string = '',
|
public slug: string = '',
|
||||||
public title: string = '',
|
public title: string = 'mon titre',
|
||||||
public description?: string,
|
public description?: string,
|
||||||
public creatorPseudo?: string,
|
public creatorPseudo?: string,
|
||||||
public creatorEmail?: string,
|
public creatorEmail?: string,
|
||||||
|
@ -19,10 +19,10 @@ const apiEndpoints = environment.api.endpoints;
|
|||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
})
|
})
|
||||||
export class ApiService {
|
export class ApiService {
|
||||||
|
private static loader: LoaderService;
|
||||||
private useDevLocalServer = true;
|
private useDevLocalServer = true;
|
||||||
private devLocalServerBaseHref = 'http://localhost:8000/';
|
private devLocalServerBaseHref = 'http://localhost:8000/';
|
||||||
private axiosInstance: AxiosInstance;
|
private axiosInstance: AxiosInstance;
|
||||||
|
|
||||||
private readonly pollsEndpoint = apiEndpoints.polls.name;
|
private readonly pollsEndpoint = apiEndpoints.polls.name;
|
||||||
private readonly answersEndpoint = apiEndpoints.polls.answers.name;
|
private readonly answersEndpoint = apiEndpoints.polls.answers.name;
|
||||||
private readonly commentsEndpoint = apiEndpoints.polls.comments.name;
|
private readonly commentsEndpoint = apiEndpoints.polls.comments.name;
|
||||||
@ -30,7 +30,6 @@ export class ApiService {
|
|||||||
private readonly usersEndpoint = apiEndpoints.users.name;
|
private readonly usersEndpoint = apiEndpoints.users.name;
|
||||||
private readonly usersPollsEndpoint = apiEndpoints.users.polls.name;
|
private readonly usersPollsEndpoint = apiEndpoints.users.polls.name;
|
||||||
private readonly usersPollsSendEmailEndpoint = apiEndpoints.users.polls.sendEmail.name;
|
private readonly usersPollsSendEmailEndpoint = apiEndpoints.users.polls.sendEmail.name;
|
||||||
private static loader: LoaderService;
|
|
||||||
|
|
||||||
constructor(private http: HttpClient, private loader: LoaderService, private toastService: ToastService) {
|
constructor(private http: HttpClient, private loader: LoaderService, private toastService: ToastService) {
|
||||||
this.axiosInstance = axios.create({ baseURL: apiBaseHref });
|
this.axiosInstance = axios.create({ baseURL: apiBaseHref });
|
||||||
@ -46,37 +45,72 @@ export class ApiService {
|
|||||||
// CREATE OR UPDATE //
|
// CREATE OR UPDATE //
|
||||||
//////////////////////
|
//////////////////////
|
||||||
|
|
||||||
|
/////////////////////
|
||||||
|
/**
|
||||||
|
* prepare headers like the charset and json type for any call to the backend
|
||||||
|
* @param bodyContent?
|
||||||
|
*/
|
||||||
|
static makeHeaders(bodyContent?: any) {
|
||||||
|
const headerDict = {
|
||||||
|
Charset: 'UTF-8',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
Accept: 'application/json',
|
||||||
|
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
|
||||||
|
'Access-Control-Allow-Headers': 'Accept,Accept-Language,Content-Language,Content-Type',
|
||||||
|
'Access-Control-Allow-Origin': '*',
|
||||||
|
};
|
||||||
|
|
||||||
|
const requestOptions = {
|
||||||
|
headers: new HttpHeaders(headerDict),
|
||||||
|
body: bodyContent,
|
||||||
|
};
|
||||||
|
|
||||||
|
return requestOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static handleError(error): void {
|
||||||
|
// this.loader.setStatus(true);
|
||||||
|
if (error.response) {
|
||||||
|
// The request was made and the server responded with a status code
|
||||||
|
// that falls out of the range of 2xx
|
||||||
|
console.log(error.response.data);
|
||||||
|
console.log(error.response.status);
|
||||||
|
console.log(error.response.headers);
|
||||||
|
} else if (error.request) {
|
||||||
|
// The request was made but no response was received
|
||||||
|
// `error.request` is an instance of XMLHttpRequest in the browser and an instance of
|
||||||
|
// http.ClientRequest in node.js
|
||||||
|
console.log(error.request);
|
||||||
|
} else {
|
||||||
|
// Something happened in setting up the request that triggered an Error
|
||||||
|
console.log('Error', error.message);
|
||||||
|
}
|
||||||
|
console.log(error.config);
|
||||||
|
}
|
||||||
|
|
||||||
public async createPoll(poll: Poll): Promise<Subscription> {
|
public async createPoll(poll: Poll): Promise<Subscription> {
|
||||||
// this.loader.setStatus(true);
|
// this.loader.setStatus(true);
|
||||||
console.log('createPoll config', poll);
|
console.log('createPoll config', poll);
|
||||||
// const baseHref = this.useDevLocalServer ? 'http://localhost:8000' : apiBaseHref;
|
const baseHref = this.useDevLocalServer ? 'http://localhost:8000' : apiBaseHref;
|
||||||
// return this.http
|
return this.axiosInstance.post(
|
||||||
// .post(`${baseHref}${currentApiRoutes['api_new_poll']}`, poll, ApiService.makeHeaders())
|
`${baseHref}${currentApiRoutes['api_new_poll']}`,
|
||||||
// .subscribe(
|
poll,
|
||||||
// (res: Observable<any>) => {
|
ApiService.makeHeaders()
|
||||||
// // redirect to the page to administrate the new poll
|
);
|
||||||
// this.toastService.display('Sondage Créé');
|
|
||||||
//
|
|
||||||
// console.log('res', res);
|
|
||||||
// // this.updateCurrentPollFromResponse(res);
|
|
||||||
//
|
|
||||||
// this.loader.setStatus(false);
|
|
||||||
// },
|
|
||||||
// (e) => {
|
|
||||||
// ApiService.handleError(e);
|
|
||||||
// }
|
|
||||||
// );
|
|
||||||
|
|
||||||
try {
|
// try {
|
||||||
console.log('currentApiRoutes', currentApiRoutes);
|
// console.log('currentApiRoutes', currentApiRoutes);
|
||||||
return await this.axiosInstance.post(`${apiBaseHref}${currentApiRoutes['api_new_poll']}`, {
|
// return await this.axiosInstance.post(`${apiBaseHref}${currentApiRoutes['api_new_poll']}`, {
|
||||||
data: poll,
|
// data: poll,
|
||||||
});
|
// });
|
||||||
} catch (error) {
|
// } catch (error) {
|
||||||
ApiService.handleError(error);
|
// ApiService.handleError(error);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//////////
|
||||||
|
// READ //
|
||||||
|
|
||||||
public async createParticipation(
|
public async createParticipation(
|
||||||
pollId: string,
|
pollId: string,
|
||||||
choiceLabel: string,
|
choiceLabel: string,
|
||||||
@ -102,8 +136,6 @@ export class ApiService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////
|
|
||||||
// READ //
|
|
||||||
//////////
|
//////////
|
||||||
public async getAllAvailablePolls(): Promise<Poll[]> {
|
public async getAllAvailablePolls(): Promise<Poll[]> {
|
||||||
// TODO: used for facilities in DEV, should be removed in production
|
// TODO: used for facilities in DEV, should be removed in production
|
||||||
@ -183,6 +215,9 @@ export class ApiService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////
|
||||||
|
// UPDATE //
|
||||||
|
|
||||||
public async sendEmailToUserOfItsPollsList(email: string): Promise<void> {
|
public async sendEmailToUserOfItsPollsList(email: string): Promise<void> {
|
||||||
// If user is not authenticated: the list of polls is send to user's email by the backend.
|
// If user is not authenticated: the list of polls is send to user's email by the backend.
|
||||||
try {
|
try {
|
||||||
@ -194,6 +229,9 @@ export class ApiService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////
|
||||||
|
// DELETE //
|
||||||
|
|
||||||
public async getPollsUrlsByUserEmail(email: string): Promise<Poll[]> {
|
public async getPollsUrlsByUserEmail(email: string): Promise<Poll[]> {
|
||||||
// If user is authenticated : retrieve polls & display directly in frontend.
|
// If user is authenticated : retrieve polls & display directly in frontend.
|
||||||
// TODO: Backend should handle this case. Actually the endpoint doesn't exist in backend.
|
// TODO: Backend should handle this case. Actually the endpoint doesn't exist in backend.
|
||||||
@ -208,8 +246,6 @@ export class ApiService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////
|
|
||||||
// UPDATE //
|
|
||||||
////////////
|
////////////
|
||||||
public async updateAnswer(slug: string, choiceLabel: string, pseudo: string, answer: Answer): Promise<string> {
|
public async updateAnswer(slug: string, choiceLabel: string, pseudo: string, answer: Answer): Promise<string> {
|
||||||
try {
|
try {
|
||||||
@ -223,8 +259,6 @@ export class ApiService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////
|
|
||||||
// DELETE //
|
|
||||||
////////////
|
////////////
|
||||||
public async deletePoll(slug: string): Promise<boolean> {
|
public async deletePoll(slug: string): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
@ -235,6 +269,9 @@ export class ApiService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/////////////////////
|
||||||
|
// PRIVATE METHODS //
|
||||||
|
|
||||||
public async deletePollAnswers(slug: string): Promise<boolean> {
|
public async deletePollAnswers(slug: string): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
const response: AxiosResponse = await this.axiosInstance.delete(
|
const response: AxiosResponse = await this.axiosInstance.delete(
|
||||||
@ -256,49 +293,4 @@ export class ApiService {
|
|||||||
ApiService.handleError(error);
|
ApiService.handleError(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////
|
|
||||||
// PRIVATE METHODS //
|
|
||||||
/////////////////////
|
|
||||||
/**
|
|
||||||
* prepare headers like the charset and json type for any call to the backend
|
|
||||||
* @param bodyContent?
|
|
||||||
*/
|
|
||||||
static makeHeaders(bodyContent?: any) {
|
|
||||||
const headerDict = {
|
|
||||||
Charset: 'UTF-8',
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
Accept: 'application/json',
|
|
||||||
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
|
|
||||||
'Access-Control-Allow-Headers': 'Accept,Accept-Language,Content-Language,Content-Type',
|
|
||||||
'Access-Control-Allow-Origin': '*',
|
|
||||||
};
|
|
||||||
|
|
||||||
const requestOptions = {
|
|
||||||
headers: new HttpHeaders(headerDict),
|
|
||||||
body: bodyContent,
|
|
||||||
};
|
|
||||||
|
|
||||||
return requestOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static handleError(error): void {
|
|
||||||
// this.loader.setStatus(true);
|
|
||||||
if (error.response) {
|
|
||||||
// The request was made and the server responded with a status code
|
|
||||||
// that falls out of the range of 2xx
|
|
||||||
console.log(error.response.data);
|
|
||||||
console.log(error.response.status);
|
|
||||||
console.log(error.response.headers);
|
|
||||||
} else if (error.request) {
|
|
||||||
// The request was made but no response was received
|
|
||||||
// `error.request` is an instance of XMLHttpRequest in the browser and an instance of
|
|
||||||
// http.ClientRequest in node.js
|
|
||||||
console.log(error.request);
|
|
||||||
} else {
|
|
||||||
// Something happened in setting up the request that triggered an Error
|
|
||||||
console.log('Error', error.message);
|
|
||||||
}
|
|
||||||
console.log(error.config);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { ChangeDetectorRef, Component, Inject, Input, OnInit } from '@angular/core';
|
import { ChangeDetectorRef, Component, Inject, Input } from '@angular/core';
|
||||||
import { ToastService } from '../../../../core/services/toast.service';
|
import { ToastService } from '../../../../core/services/toast.service';
|
||||||
import { FormBuilder, FormGroup } from '@angular/forms';
|
import { FormBuilder, FormGroup } from '@angular/forms';
|
||||||
import { UuidService } from '../../../../core/services/uuid.service';
|
import { UuidService } from '../../../../core/services/uuid.service';
|
||||||
@ -7,6 +7,7 @@ import { ApiService } from '../../../../core/services/api.service';
|
|||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { DOCUMENT } from '@angular/common';
|
import { DOCUMENT } from '@angular/common';
|
||||||
import { Poll } from '../../../../core/models/poll.model';
|
import { Poll } from '../../../../core/models/poll.model';
|
||||||
|
import { environment } from '../../../../../environments/environment';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-base-config',
|
selector: 'app-base-config',
|
||||||
@ -41,17 +42,25 @@ export class BaseConfigComponent {
|
|||||||
console.log('newpoll', newpoll);
|
console.log('newpoll', newpoll);
|
||||||
const router = this.router;
|
const router = this.router;
|
||||||
|
|
||||||
if (this.form.valid) {
|
if (!environment.production) {
|
||||||
console.log('Le sondage est correctement rempli, prêt à enregistrer.');
|
this.toastService.display('mode dev : envoi du form sans validation');
|
||||||
const newpoll = this.pollService.newPollFromForm(this.form);
|
|
||||||
// TODO : save the poll
|
|
||||||
|
|
||||||
this.apiService.createPoll(newpoll).then((resp) => {
|
this.apiService.createPoll(newpoll).then((resp) => {
|
||||||
console.log('resp', resp);
|
console.log('resp', resp);
|
||||||
router.navigate(['success']);
|
router.navigate(['success']);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.toastService.display('invalid form');
|
if (this.form.valid) {
|
||||||
|
console.log('Le sondage est correctement rempli, prêt à enregistrer.');
|
||||||
|
const newpoll = this.pollService.newPollFromForm(this.form);
|
||||||
|
// TODO : save the poll
|
||||||
|
|
||||||
|
this.apiService.createPoll(newpoll).then((resp) => {
|
||||||
|
console.log('resp', resp);
|
||||||
|
router.navigate(['success']);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.toastService.display('invalid form');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ export class FormComponent implements OnInit {
|
|||||||
*/
|
*/
|
||||||
setDemoValues(): void {
|
setDemoValues(): void {
|
||||||
this.form.patchValue({
|
this.form.patchValue({
|
||||||
title: '',
|
title: 'le titre de démo oh oh',
|
||||||
description: 'répondez SVP <3 ! *-* ',
|
description: 'répondez SVP <3 ! *-* ',
|
||||||
slug: this.uuidService.getUUID(),
|
slug: this.uuidService.getUUID(),
|
||||||
creatorPseudo: 'Chuck Norris',
|
creatorPseudo: 'Chuck Norris',
|
||||||
|
Loading…
Reference in New Issue
Block a user