diff --git a/src/api/ormconfig.json b/src/api/ormconfig.json index 575ca15..18337ed 100644 --- a/src/api/ormconfig.json +++ b/src/api/ormconfig.json @@ -1,6 +1,6 @@ { "type": "mysql", - "host": "localhost", + "host": "mysql", "port": 3306, "username": "root", "password": "test", diff --git a/src/api/src/teams/teams.service.ts b/src/api/src/teams/teams.service.ts index e48cebb..c993cf6 100644 --- a/src/api/src/teams/teams.service.ts +++ b/src/api/src/teams/teams.service.ts @@ -1,4 +1,4 @@ -import { Injectable, Inject } from '@nestjs/common'; +import { Injectable, Inject, BadRequestException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { Team } from './team.entity'; @@ -52,8 +52,13 @@ export class TeamsService { where: [{ email: email }], }); - userToAdd.team = actionUser.team; - - return this.usersRepository.save(userToAdd); + if (!!userToAdd && !userToAdd.team) { + userToAdd.team = actionUser.team; + return this.usersRepository.save(userToAdd); + } else { + throw new BadRequestException( + "user isn't registered or already member of a team", + ); + } } } diff --git a/src/frontend/src/app/me/effects/me.effects.ts b/src/frontend/src/app/me/effects/me.effects.ts index 09c8222..89ac8f4 100644 --- a/src/frontend/src/app/me/effects/me.effects.ts +++ b/src/frontend/src/app/me/effects/me.effects.ts @@ -99,7 +99,7 @@ export class MeEffects { map(result => { return new AddEmailToTeamSucceededAction(result); }), - catchError(err => of(new AddEmailToTeamFailedAction(err.message))) + catchError(err => of(new AddEmailToTeamFailedAction(err.error))) ) ) ); diff --git a/src/frontend/src/app/me/overview/overview.component.html b/src/frontend/src/app/me/overview/overview.component.html index 71f45b8..2f1ece7 100644 --- a/src/frontend/src/app/me/overview/overview.component.html +++ b/src/frontend/src/app/me/overview/overview.component.html @@ -11,7 +11,13 @@

Teammitglied hinzufügen

- + +

Das Mitglied ist nicht registriert oder + spielt bereits in einem Team.

+

Ein + unbekannter Fehler ist aufgetreten: + {{ (addEmailToTeamError$ | async).message }}


Du hast gespielt?

diff --git a/src/frontend/src/app/me/overview/overview.component.scss b/src/frontend/src/app/me/overview/overview.component.scss index e69de29..bb0ec62 100644 --- a/src/frontend/src/app/me/overview/overview.component.scss +++ b/src/frontend/src/app/me/overview/overview.component.scss @@ -0,0 +1,5 @@ +@import '../../../scss/settings'; + +p.error { + color: $cl-error; +} diff --git a/src/frontend/src/app/me/overview/overview.component.ts b/src/frontend/src/app/me/overview/overview.component.ts index 6b1216c..e18825a 100644 --- a/src/frontend/src/app/me/overview/overview.component.ts +++ b/src/frontend/src/app/me/overview/overview.component.ts @@ -1,6 +1,12 @@ import { Component, OnInit } from '@angular/core'; import { Store } from '@ngrx/store'; -import { State, selectAuthUser, selectMeTeams } from 'src/app/reducers'; +import { + State, + selectAuthUser, + selectMeTeams, + selectAddByEmailToTeamInProgress, + selectAddByEmailToTeamError, +} from 'src/app/reducers'; import { LoadTeamsAction, AddEmailToTeamAction } from '../actions/team.actions'; import { FormGroup, FormControl, Validators } from '@angular/forms'; @@ -12,6 +18,8 @@ import { FormGroup, FormControl, Validators } from '@angular/forms'; export class OverviewComponent implements OnInit { user$; teams$; + addEmailToTeamInProgress$; + addEmailToTeamError$; addMemberForm = new FormGroup({ email: new FormControl('', [Validators.email]), @@ -22,6 +30,10 @@ export class OverviewComponent implements OnInit { ngOnInit() { this.user$ = this._store.select(selectAuthUser); this.teams$ = this._store.select(selectMeTeams); + this.addEmailToTeamInProgress$ = this._store.select( + selectAddByEmailToTeamInProgress + ); + this.addEmailToTeamError$ = this._store.select(selectAddByEmailToTeamError); this._store.dispatch(new LoadTeamsAction()); } diff --git a/src/frontend/src/app/reducers/index.ts b/src/frontend/src/app/reducers/index.ts index 29f684c..dda12ce 100644 --- a/src/frontend/src/app/reducers/index.ts +++ b/src/frontend/src/app/reducers/index.ts @@ -117,3 +117,13 @@ export const selectSaveResultsError = createSelector( selectResults, (state: ResultsState) => state.saveResultsError ); + +export const selectAddByEmailToTeamInProgress = createSelector( + selectMe, + (state: MeState) => state.addByEmailToTeamInProgress +); + +export const selectAddByEmailToTeamError = createSelector( + selectMe, + (state: MeState) => state.addByEmailToTeamError +);