Merge pull request 'Mitarbeiter erstellen' (#66) from feature/create-employee into main

Reviewed-on: #66
This commit is contained in:
Jan Gleytenhoover 2025-01-15 13:06:06 +00:00
commit 4de394acb0
8 changed files with 94 additions and 2 deletions

View file

@ -5,6 +5,7 @@ import { EmployeeDetailComponent } from "./components/employee-detail/employee-d
import { QualifikatonBearbeitenViewComponent } from "./components/qualifikaton-bearbeiten-view/qualifikaton-bearbeiten-view.component";
import { MitarbeiterBearbeitenViewComponent } from "./components/mitarbeiter-bearbeiten-view/mitarbeiter-bearbeiten-view.component";
import { AuthGuard } from "./service/auth.service";
import { MitarbeiterErstellenComponent } from "./components/mitarbeiter-erstellen/mitarbeiter-erstellen.component";
export const routes: Routes = [
{
@ -16,6 +17,11 @@ export const routes: Routes = [
component: MitarbeiterverwaltungViewComponent,
canActivate: [AuthGuard],
},
{
path: "mitarbeitererstellen",
component: MitarbeiterErstellenComponent,
canActivate: [AuthGuard],
},
{
path: "mitarbeiterbearbeiten/:id",
component: MitarbeiterBearbeitenViewComponent,

View file

@ -0,0 +1 @@
<app-mitarbeiter-form [(mitarbeiter)]="mitarbeiter" (mitarbeiterChange)="submitted($event)"></app-mitarbeiter-form>

View file

@ -0,0 +1,23 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { MitarbeiterErstellenComponent } from './mitarbeiter-erstellen.component';
describe('MitarbeiterErstellenComponent', () => {
let component: MitarbeiterErstellenComponent;
let fixture: ComponentFixture<MitarbeiterErstellenComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [MitarbeiterErstellenComponent]
})
.compileComponents();
fixture = TestBed.createComponent(MitarbeiterErstellenComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View file

@ -0,0 +1,43 @@
import { Component } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { EmployeeResponseDTO } from '../../models/mitarbeiter';
import { EmployeeService } from '../../service/employee.service';
import { MitarbeiterFormComponent } from '../mitarbeiter-form/mitarbeiter-form.component';
@Component({
selector: 'app-mitarbeiter-erstellen',
standalone: true,
imports: [MitarbeiterFormComponent],
templateUrl: './mitarbeiter-erstellen.component.html',
styleUrl: './mitarbeiter-erstellen.component.css'
})
export class MitarbeiterErstellenComponent {
public mitarbeiter!: EmployeeResponseDTO;
constructor(private employeeService: EmployeeService, private route: ActivatedRoute, private router: Router) { }
submitted(mitarbeiter: EmployeeResponseDTO) {
this.employeeService.createEmployee(mitarbeiter);
this.returnToEmployeeOverview();
}
returnToEmployeeOverview() {
this.router.navigate(["mitarbeiter"]);
}
ngOnInit(): void {
this.mitarbeiter = {
id: 0,
firstName: '',
lastName: '',
street: '',
phone: '',
skillSet: [],
postcode: '',
city: '',
}
this.employeeService.getEmployeeById(this.route.snapshot.params['id']).subscribe(employee => {
this.mitarbeiter = employee;
});
}
}

View file

@ -20,7 +20,7 @@
</div>
<p class="text-body-tertiary">Search for a propertiy of an Employee. eg. First Name</p>
</form>
<button class="add-button">Add employee</button>
<button (click)="createEmployee()" class="add-button">Add employee</button>
</div>
<table class="employee-table">

View file

@ -46,6 +46,10 @@ export class MitarbeiterverwaltungViewComponent implements OnInit {
this.router.navigate([`/mitarbeiterbearbeiten/${id}`]);
}
createEmployee() {
this.router.navigate(['/mitarbeitererstellen']);
}
deleteEmployee(id: number) {
this.employeeService.deleteEmployee(id);
this.employees = this.employees.filter(employee => employee.id != id);

View file

@ -1,5 +1,5 @@
import { Injectable } from "@angular/core";
import { EmployeeRequestPutDTO, EmployeeResponseDTO } from "../models/mitarbeiter";
import { EmployeeRequestDTO, EmployeeRequestPutDTO, EmployeeResponseDTO } from "../models/mitarbeiter";
import { HttpClient } from "@angular/common/http";
import { Observable } from "rxjs";
import { SkillService } from "./skill.service";
@ -10,6 +10,17 @@ import { SkillService } from "./skill.service";
export class EmployeeService {
constructor(private http: HttpClient) { }
responseToRequestDto(employee: EmployeeResponseDTO): EmployeeRequestDTO {
return {
firstName: employee.firstName,
lastName: employee.lastName,
street: employee.street,
postcode: employee.postcode,
city: employee.city,
phone: employee.phone,
skillSet: employee.skillSet?.map(skill => skill.id) || [],
}
}
responseDtoToPutDto(employee: EmployeeResponseDTO): EmployeeRequestPutDTO {
return {
@ -23,6 +34,10 @@ export class EmployeeService {
}
}
createEmployee(employee: EmployeeResponseDTO) {
this.http.post(`${SkillService.BASE_URL}/employees`, this.responseToRequestDto(employee)).subscribe();
}
updateEmployee(employee: EmployeeResponseDTO) {
this.http.put(`${SkillService.BASE_URL}/employees/${employee.id}`, this.responseDtoToPutDto(employee)).subscribe();
}