From 1a0bb96f69088fc0897896b9349d1da71004b44d Mon Sep 17 00:00:00 2001 From: Artur Savitskiy Date: Sat, 22 Apr 2023 23:53:42 +0200 Subject: [PATCH] Add feature for adding students on-the-fly --- .../student-edit/student-edit.component.html | 42 ++++++++++--------- .../student-edit/student-edit.component.ts | 21 +++++++++- .../components/visits/visits.component.html | 7 +++- .../components/visits/visits.component.scss | 9 ++++ src/app/components/visits/visits.component.ts | 27 +++++++++++- src/app/services/enroll/enroll.service.ts | 1 - 6 files changed, 81 insertions(+), 26 deletions(-) diff --git a/src/app/components/students/student-edit/student-edit.component.html b/src/app/components/students/student-edit/student-edit.component.html index 7166535..596abbb 100644 --- a/src/app/components/students/student-edit/student-edit.component.html +++ b/src/app/components/students/student-edit/student-edit.component.html @@ -7,34 +7,36 @@ - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + +
diff --git a/src/app/components/students/student-edit/student-edit.component.ts b/src/app/components/students/student-edit/student-edit.component.ts index 61f4695..bda456f 100644 --- a/src/app/components/students/student-edit/student-edit.component.ts +++ b/src/app/components/students/student-edit/student-edit.component.ts @@ -12,6 +12,9 @@ export class StudentEditComponent implements OnInit { @Input() public student?: Student = undefined; + @Input() + public simple: boolean = false; + @Output() public closing = new EventEmitter(); @@ -36,7 +39,7 @@ export class StudentEditComponent implements OnInit { public save(): void { if(this.student){ - this.studentsService.set(this.model).subscribe(_ => this.closing.emit()); + this.studentsService.set(this.sanitize(this.model)).subscribe(_ => this.closing.emit()); } else { this.closing.emit(); } @@ -46,4 +49,20 @@ export class StudentEditComponent implements OnInit { return this.student ? 'show' : 'hidden'; } + private sanitize(student: Student): Student { + if(student){ + student.firstname ??= ''; + student.lastname ??= ''; + student.gender ??= 0; + student.street ??= ''; + student.house ??= 0; + student.house_suffix ??= ''; + student.zip ??= ''; + student.city ??= ''; + student.phone ??= ''; + student.email ??= ''; + } + + return student; + } } diff --git a/src/app/components/visits/visits.component.html b/src/app/components/visits/visits.component.html index d92f205..f97e283 100644 --- a/src/app/components/visits/visits.component.html +++ b/src/app/components/visits/visits.component.html @@ -6,6 +6,7 @@

{{courseVisit?.name}}

{{courseVisit?.date | date: 'dd.MM.yyyy'}}, {{courseVisit?.begin}} - {{courseVisit?.end}}

+
@@ -13,7 +14,7 @@
- + @@ -34,4 +35,6 @@
- \ No newline at end of file + + + \ No newline at end of file diff --git a/src/app/components/visits/visits.component.scss b/src/app/components/visits/visits.component.scss index a5e5c9e..e67d05d 100644 --- a/src/app/components/visits/visits.component.scss +++ b/src/app/components/visits/visits.component.scss @@ -21,6 +21,15 @@ table { margin: auto; } +button { + color: white; + font-size: 1.5em; +} + +button.button-add { + background-color: #411ccc; +} + a:link, a:visited, a:active { diff --git a/src/app/components/visits/visits.component.ts b/src/app/components/visits/visits.component.ts index 7baa20b..cc4e77e 100644 --- a/src/app/components/visits/visits.component.ts +++ b/src/app/components/visits/visits.component.ts @@ -1,8 +1,12 @@ +import { formatDate } from '@angular/common'; import { Component, OnInit } from '@angular/core'; import { MatTableDataSource } from '@angular/material/table'; import { CourseVisit } from 'src/app/models/course-visit'; +import { Student } from 'src/app/models/student'; +import { StudentEnrollment } from 'src/app/models/student-enrollment'; import { StudentVisit } from 'src/app/models/student-visit'; import { Visit } from 'src/app/models/visit'; +import { EnrollService } from 'src/app/services/enroll/enroll.service'; import { VisitsService } from 'src/app/services/visits/visits.service'; @Component({ @@ -16,7 +20,10 @@ export class VisitsComponent implements OnInit { public courseVisit?: CourseVisit; public dataSource = new MatTableDataSource(); - public constructor(private visitsService: VisitsService) { } + public addedStudent?: Student; + + + public constructor(private visitsService: VisitsService, private enrollService: EnrollService) { } public ngOnInit() { this.getData(); @@ -37,7 +44,7 @@ export class VisitsComponent implements OnInit { } private getData(): void { - //const now = new Date('2022-11-03 19:17:00'); + //const now = new Date('2023-04-24 16:01:01'); const now = new Date(); this.visitsService.get(now) @@ -52,4 +59,20 @@ export class VisitsComponent implements OnInit { }); } + public add(): void { + this.addedStudent = {}; + } + + public commit(): void { + this.enrollService.set( + -1, + [{ + cid: this.courseVisit?.cid, + begin: formatDate(new Date(), 'yyyy-MM-dd', 'en-US'), + end: formatDate(new Date('2100-01-01'), 'yyyy-MM-dd', 'en-US') + }]).subscribe(_ => { + this.addedStudent = undefined; + this.getData(); + }); + } } diff --git a/src/app/services/enroll/enroll.service.ts b/src/app/services/enroll/enroll.service.ts index d7bf5a1..cdb0646 100644 --- a/src/app/services/enroll/enroll.service.ts +++ b/src/app/services/enroll/enroll.service.ts @@ -3,7 +3,6 @@ import { HttpClient, HttpParams } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { Enrollment } from 'src/app/models/enrollment'; -import { Student } from 'src/app/models/student'; import { StudentEnrollment } from 'src/app/models/student-enrollment'; import { environment } from 'src/environments/environment';