diff --git a/customer/app/src/app/_helpers/fake-backend.ts b/customer/app/src/app/_helpers/fake-backend.ts index 6213d55..00d1b45 100644 --- a/customer/app/src/app/_helpers/fake-backend.ts +++ b/customer/app/src/app/_helpers/fake-backend.ts @@ -10,6 +10,7 @@ import { import {Observable, of, throwError} from 'rxjs'; import {delay, mergeMap, materialize, dematerialize} from 'rxjs/operators'; import {Event, EventType, Trainer} from "../services/event.service"; +import {identifierModuleUrl} from "@angular/compiler"; ; @@ -162,7 +163,7 @@ export class FakeBackendInterceptor implements HttpInterceptor { } - if (request.url.indexOf('/events&id_event_type') && request.method === 'GET') { + if (request.url.indexOf('/events') >= 0 && request.method === 'GET') { // check for a fake jwt token. If valid JWT token found, return the list of users, else throw error if (request.headers.get('Authorization') === 'Bearer 0000-fake-jwt-token-0000') { @@ -177,6 +178,41 @@ export class FakeBackendInterceptor implements HttpInterceptor { } } + const GET_EVENT = 'event&id_event='; + if (request.url.indexOf(GET_EVENT) && request.method === 'GET') { + // check for a fake jwt token. If valid JWT token found, return the list of users, else throw error + if (request.headers.get('Authorization') === 'Bearer 0000-fake-jwt-token-0000') { + let pos = request.url.indexOf(GET_EVENT); + const length = GET_EVENT.length; + pos = pos + length; + let idEvent = request.url.substr(pos); + let event = events.find(value => value.id == +idEvent ); + return of(new HttpResponse({status: 200, body: event }) ); + } else { + // invalid JWT token found in request header + return throwError({ + error: { + message: 'Unauthorized' + } + }); + } + } + + + if (request.headers.get('Authorization') === 'Bearer 0000-fake-jwt-token-0000') { + if (request.url.indexOf('event/register&id_event=') && request.method === 'POST') { + return of(new HttpResponse({status: 200, body: {} }) ); + }else if (request.url.indexOf('event/cancel&id_event=') && request.method === 'POST') { + return of(new HttpResponse({status: 200, body: {} }) ); + } + } else { + // invalid JWT token found in request header + return throwError({ + error: { + message: 'Unauthorized' + } + }); + } // Pass any other requests left (unhandled return next.handle(request); @@ -184,7 +220,7 @@ export class FakeBackendInterceptor implements HttpInterceptor { ) // call materialize and dematerialize to ensure delay even if an error is thrown .pipe(materialize()) - .pipe(delay(500)) + .pipe(delay(100)) .pipe(dematerialize()); } diff --git a/customer/app/src/app/pages/events/events.component.html b/customer/app/src/app/pages/events/events.component.html index e4088a4..21950e1 100644 --- a/customer/app/src/app/pages/events/events.component.html +++ b/customer/app/src/app/pages/events/events.component.html @@ -1,48 +1,87 @@
-
-
- -
-
- +
-

{{eventDay.date | date }}

+
Edzés típusa
+
{{event.eventType.name}}
- -
-
-

{{eventHour.hour | date:'HH:mm'}}

-
+
+
Edző
+
{{event.trainer.name}}
+
+
+
Edzés kezdési időpontja
+
{{event.start | date:'yyyy.MM.dd HH:mm'}}
+
+
+
Edzés vége
+
{{event.end | date:'yyyy.MM.dd HH:mm'}}
+
+
+
Férőhelyek száma
+
{{event.seatCount }}
+
+
+
Szabad helyek száma
+
{{event.seatCount - event.reservationCount }}
+
+ +
+
+
+
+ +
+
+ +
+

{{eventDay.date | date }}

+
+ +
+
+

{{eventHour.hour | date:'HH:mm'}}

+
+
- -
-
-
+ +
+
+
{{event.start | date:'HH:mm' }} - {{event.end | date:'HH:mm' }} -
-
+
+
{{event.eventType.name }} ( {{event.reservationCount}}/{{event.seatCount}} -
-
+
+
{{event.trainer.name}} +
+ +
-
- Jelentkezem - Leiratkozom - Nincs szabad hely -
-
+
-
- +
diff --git a/customer/app/src/app/pages/events/events.component.scss b/customer/app/src/app/pages/events/events.component.scss index 52ae6e2..4023902 100644 --- a/customer/app/src/app/pages/events/events.component.scss +++ b/customer/app/src/app/pages/events/events.component.scss @@ -20,3 +20,6 @@ .event-item:hover { background: orange; cursor: pointer; } +.title{ + color: #e5ce48; +} diff --git a/customer/app/src/app/pages/events/events.component.ts b/customer/app/src/app/pages/events/events.component.ts index a3b4abd..621c700 100644 --- a/customer/app/src/app/pages/events/events.component.ts +++ b/customer/app/src/app/pages/events/events.component.ts @@ -1,10 +1,8 @@ import {Component, OnInit} from '@angular/core'; import {Event, EventService, EventType} from "../../services/event.service"; import {FormBuilder, FormGroup, Validators} from "@angular/forms"; -import {of, pipe} from "rxjs"; -import {flatMap} from "rxjs/operators"; -import {findAll} from "@angular/compiler-cli/ngcc/src/utils"; - +import {of, pipe, EMPTY} from "rxjs"; +import {flatMap, mergeMap} from "rxjs/operators"; @Component({ selector: 'app-events', templateUrl: './events.component.html', @@ -22,6 +20,7 @@ export class EventsComponent implements OnInit { selectedEventType: number = null; + event: Event; constructor(private eventService: EventService, private formBuilder: FormBuilder,) { @@ -52,6 +51,7 @@ export class EventsComponent implements OnInit { ngOnInit() { + this.event = null; of(null).pipe( flatMap(() => this.eventService.findAllEventTypes()), flatMap(value => { @@ -144,6 +144,24 @@ export class EventsComponent implements OnInit { } } + open(event: Event) { + of(null).pipe( + mergeMap(() => this.eventService.findEvent(event.id) ), + mergeMap(event => {this.event = event; return of(null)} ) + ).subscribe(); + } + + closeEvent(event: Event) { + this.event = null; + } + + cancel(event: Event) { + + } + + register(event: Event) { + + } } diff --git a/customer/app/src/app/services/endpoints.ts b/customer/app/src/app/services/endpoints.ts index 37aacdb..99ae14a 100644 --- a/customer/app/src/app/services/endpoints.ts +++ b/customer/app/src/app/services/endpoints.ts @@ -2,15 +2,27 @@ import {Observable} from "rxjs"; import {EventType} from "./event.service"; export class Endpoints { - private static contextPath = "/api"; - private static baseUrl: string = Endpoints.contextPath + "/rest"; + private static contextPath = "http://localhost/api"; + private static baseUrl: string = Endpoints.contextPath + "/rest/web/index.php?r="; public static POST_USERS_AUTHENTICATE(){ return `${this.baseUrl}/users/authenticate`; } - public static GET_EVENTS(eventType: number){ - return `${this.baseUrl}/events&id_event_type=${eventType}`; + public static GET_EVENTS( ){ + return `${this.baseUrl}/events`; + } + + public static GET_EVENT( id: number){ + return `${this.baseUrl}/event&id_event=${id}`; + } + + public static POST_EVENT_REGISTER( id: number){ + return `${this.baseUrl}/event/register&id_event=${id}`; + } + + public static POST_EVENT_CANCEL( id: number){ + return `${this.baseUrl}/event/cancel&id_event=${id}`; } public static GET_EVENT_TYPES(){ diff --git a/customer/app/src/app/services/event.service.ts b/customer/app/src/app/services/event.service.ts index 1e4c210..6222ede 100644 --- a/customer/app/src/app/services/event.service.ts +++ b/customer/app/src/app/services/event.service.ts @@ -14,8 +14,21 @@ export class EventService { return this.http.get(Endpoints.GET_EVENT_TYPES()) as Observable; } - findEvents(idEventType?:number): Observable { - return this.http.get(Endpoints.GET_EVENTS(idEventType)) as Observable; + findEvents( ): Observable { + return this.http.get(Endpoints.GET_EVENTS( )) as Observable; + } + + findEvent(idEvent: number ): Observable { + console.info(Endpoints.GET_EVENT( idEvent )); + return this.http.get(Endpoints.GET_EVENT( idEvent )) as Observable; + } + + register(idEvent: number ): Observable { + return this.http.post(Endpoints.POST_EVENT_REGISTER( idEvent ),{}) as Observable; + } + + cancel(idEvent: number ): Observable { + return this.http.post(Endpoints.POST_EVENT_CANCEL( idEvent ),{}) as Observable; } }