From 524aa879dec709fea3e3150754330f15b7432fab Mon Sep 17 00:00:00 2001 From: veenm Date: Fri, 18 Apr 2025 23:30:16 +0200 Subject: [PATCH] fix betreft afspraken --- .../components/details/details.component.ts | 10 +++++----- .../edit-item/edit-item.component.ts | 4 ++-- .../components/new-item/new-item.component.ts | 8 +++++--- src/app/models/appointment-dto.ts | 16 ++++++++++++++++ src/app/pages/agenda/agenda.component.ts | 16 ++++++++-------- src/app/pages/home/home.component.html | 2 +- src/app/pages/home/home.component.ts | 6 ++---- src/app/services/appointment.service.ts | 18 +++++++++--------- src/app/services/user.service.ts | 3 ++- 9 files changed, 50 insertions(+), 33 deletions(-) create mode 100644 src/app/models/appointment-dto.ts diff --git a/src/app/components/details/details.component.ts b/src/app/components/details/details.component.ts index a126356..34fa12b 100644 --- a/src/app/components/details/details.component.ts +++ b/src/app/components/details/details.component.ts @@ -1,5 +1,4 @@ import {Component, EventEmitter, inject, Input, OnInit, Output} from '@angular/core'; -import {Appointment} from '../../models/appointment'; import {DateFormatter} from '../../utils/date-formatter'; import {TuiAlertService, TuiButton, TuiGroup, TuiIcon} from '@taiga-ui/core'; import {TuiTextareaModule} from '@taiga-ui/legacy'; @@ -8,6 +7,7 @@ import {NgIf} from '@angular/common'; import {ModalComponent} from '../modal/modal.component'; import {EditItemComponent} from '../edit-item/edit-item.component'; import {AppointmentService} from '../../services/appointment.service'; +import {AppointmentDto} from '../../models/appointment-dto'; @Component({ selector: 'app-details', @@ -36,9 +36,9 @@ export class DetailsComponent implements OnInit { constructor(private appointmentService: AppointmentService) { } - @Input() appointment: Appointment; - @Output() appointmentDeleted = new EventEmitter(); - @Output() appointmentEdited = new EventEmitter(); + @Input() appointment: AppointmentDto; + @Output() appointmentDeleted = new EventEmitter(); + @Output() appointmentEdited = new EventEmitter(); open: boolean = true; readonly = true; showDeleteModal = false; @@ -66,7 +66,7 @@ export class DetailsComponent implements OnInit { updateAppointment($event: any) { this.showEditModal = false; - this.appointmentService.getAppointment($event).subscribe((appointment: Appointment) => { + this.appointmentService.getAppointment($event).subscribe((appointment: AppointmentDto) => { this.appointment = appointment this.appointmentEdited.emit(this.appointment); }) diff --git a/src/app/components/edit-item/edit-item.component.ts b/src/app/components/edit-item/edit-item.component.ts index bdcc5b4..861df5c 100644 --- a/src/app/components/edit-item/edit-item.component.ts +++ b/src/app/components/edit-item/edit-item.component.ts @@ -10,7 +10,6 @@ import { TuiTextareaModule, TuiTextfieldControllerModule } from "@taiga-ui/legacy"; -import {Appointment} from '../../models/appointment'; import {TuiDay, TuiTime} from '@taiga-ui/cdk'; import {AppointmentService} from '../../services/appointment.service'; import {TuiDataListWrapperComponent, TuiFilterByInputPipe, TuiStringifyContentPipe} from '@taiga-ui/kit'; @@ -18,6 +17,7 @@ import {Customer} from '../../models/customer'; import {CustomerService} from '../../services/customer.service'; import {ModalComponent} from '../modal/modal.component'; import {NewCustomerComponent} from '../new-customer/new-customer.component'; +import {AppointmentDto} from '../../models/appointment-dto'; @Component({ selector: 'app-edit-item', @@ -44,7 +44,7 @@ import {NewCustomerComponent} from '../new-customer/new-customer.component'; }) export class EditItemComponent implements OnInit { - @Input() appointment: Appointment; + @Input() appointment: AppointmentDto; testForm: FormGroup; quickActions = ['Knippen', 'Kleuren', 'Knippen + Kleuren'] waiting: boolean = false; diff --git a/src/app/components/new-item/new-item.component.ts b/src/app/components/new-item/new-item.component.ts index 36d186f..33f8ecf 100644 --- a/src/app/components/new-item/new-item.component.ts +++ b/src/app/components/new-item/new-item.component.ts @@ -19,6 +19,8 @@ import {CustomerService} from '../../services/customer.service'; import {ModalComponent} from '../modal/modal.component'; import {timeAfterStartValidator} from '../../models/validators/time-after-start-validator'; import {NewCustomerComponent} from '../new-customer/new-customer.component'; +import {UserService} from '../../services/user.service'; +import {AppointmentDto} from '../../models/appointment-dto'; @Component({ selector: 'app-new-item', @@ -48,7 +50,7 @@ import {NewCustomerComponent} from '../new-customer/new-customer.component'; export class NewItemComponent implements OnInit { @Input() appointmentForm: FormGroup; - @Input() appointments: Appointment[]; + @Input() appointments: AppointmentDto[]; quickActions = ['Knippen', 'Kleuren', 'Knippen + Kleuren'] waiting: boolean = false; protected value: TuiDay | null = null; @@ -59,7 +61,7 @@ export class NewItemComponent implements OnInit { timeError = new TuiValidationError('Begintijd moet voor de eindtijd liggen.'); - constructor(private appointmentService: AppointmentService, private customerService: CustomerService) { + constructor(private appointmentService: AppointmentService, private customerService: CustomerService, private userService: UserService,) { } ngOnInit(): void { @@ -89,7 +91,7 @@ export class NewItemComponent implements OnInit { const appointment = new Appointment(title, description, startTime.hours, startTime.minutes, endTime.hours, endTime.minutes, correctDate, customer) this.waiting = true - this.appointmentService.addAppointment(appointment).subscribe(() => { + this.appointmentService.addAppointment(appointment, this.userService.currentCompany.id).subscribe(() => { this.waiting = false this.appointmentAddedEvent.emit(title) }) diff --git a/src/app/models/appointment-dto.ts b/src/app/models/appointment-dto.ts new file mode 100644 index 0000000..17fdbf4 --- /dev/null +++ b/src/app/models/appointment-dto.ts @@ -0,0 +1,16 @@ +import {Customer} from './customer'; +import {CompanyDTO} from './app-user-dto'; + +export class AppointmentDto { + id: number; + title: string; + description: string; + startDate: Date; // ISO 8601 string (LocalDateTime in Java) + startHour: number; + startMinute: number; + endHour: number; + endMinute: number; + durationInMinutes: number; + customer: Customer; + company: CompanyDTO; +} diff --git a/src/app/pages/agenda/agenda.component.ts b/src/app/pages/agenda/agenda.component.ts index 17065a2..55eff34 100644 --- a/src/app/pages/agenda/agenda.component.ts +++ b/src/app/pages/agenda/agenda.component.ts @@ -1,7 +1,6 @@ import {Component, inject, OnInit} from '@angular/core'; import {CommonModule, NgFor, NgIf} from '@angular/common'; import {TuiAlertService, TuiButton, TuiCalendar, tuiDateFormatProvider, TuiIcon} from '@taiga-ui/core'; -import {Appointment} from '../../models/appointment'; import {ModalComponent} from '../../components/modal/modal.component'; import {FormControl, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms'; import { @@ -19,6 +18,7 @@ import {WeekDay} from '../../models/week-day'; import {NewItemComponent} from '../../components/new-item/new-item.component'; import {timeAfterStartValidator} from '../../models/validators/time-after-start-validator'; import {DropdownContentComponent} from '../../components/dropdown-content/dropdown-content.component'; +import {AppointmentDto} from '../../models/appointment-dto'; @Component({ selector: 'app-agenda', @@ -40,12 +40,12 @@ export class AgendaComponent implements OnInit { } timeSlots: number[] = Array.from({length: 24}, (_, i) => i); // 24 uren - appointments: Appointment[] = []; + appointments: AppointmentDto[] = []; showNewItem = false today = new Date() selectedDate = new Date() waiting: boolean = false; - selectedAppointment: Appointment; + selectedAppointment: AppointmentDto; protected value: TuiDay | null = null; showCalendar: boolean = false; open = false @@ -151,7 +151,7 @@ export class AgendaComponent implements OnInit { }) } - getInlineStyles(appointment: Appointment): { [key: string]: string } { + getInlineStyles(appointment: AppointmentDto): { [key: string]: string } { return { '--duration': `${appointment.durationInMinutes}`, '--start-minute': `${appointment.startMinute}`, @@ -164,13 +164,13 @@ export class AgendaComponent implements OnInit { return `${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}`; } - getAppointmentHeight(appointment: Appointment): number { + getAppointmentHeight(appointment: AppointmentDto): number { const startInMinutes = (appointment.startHour * 60) + appointment.startMinute; const endInMinutes = (appointment.endHour * 60) + appointment.endMinute; return (endInMinutes - startInMinutes); // 50px per uur } - selectAppointment(appointment: Appointment) { + selectAppointment(appointment: AppointmentDto) { this.selectedAppointment = appointment; } @@ -193,7 +193,7 @@ export class AgendaComponent implements OnInit { this.resetForms() } - appointmentIsDeleted(appointment: Appointment) { + appointmentIsDeleted(appointment: AppointmentDto) { this.selectedAppointment = undefined; this.alerts .open(`Afspraak ${appointment.title} is verwijderd.`) @@ -201,7 +201,7 @@ export class AgendaComponent implements OnInit { this.getAppointmentsByDate(this.selectedDate); } - appointmentIsEdited($event: Appointment) { + appointmentIsEdited($event: AppointmentDto) { this.getAppointmentsByDate(this.selectedDate); } diff --git a/src/app/pages/home/home.component.html b/src/app/pages/home/home.component.html index 5aaded3..eee53cd 100644 --- a/src/app/pages/home/home.component.html +++ b/src/app/pages/home/home.component.html @@ -28,7 +28,7 @@