This repository has been archived on 2025-04-26. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
employeeService/src/app/service/employee.service.ts

76 lines
2.6 KiB
TypeScript

import { Injectable } from "@angular/core";
import { EmployeeRequestDTO, EmployeeRequestPutDTO, EmployeeResponseDTO } from "../models/mitarbeiter";
import { HttpClient } from "@angular/common/http";
import { Observable } from "rxjs";
import { SkillService } from "./skill.service";
@Injectable({
providedIn: 'root'
})
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 {
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) || [],
}
}
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();
}
getAllEmployees(): Observable<Array<EmployeeResponseDTO>> {
return this.http.get<Array<EmployeeResponseDTO>>(`${SkillService.BASE_URL}/employees`);
}
deleteEmployee(id: number) {
this.http.delete(`${SkillService.BASE_URL}/employees/${id}`).subscribe();
}
getEmployeeById(id: number): Observable<EmployeeResponseDTO> {
return this.http.get<EmployeeResponseDTO>(`${SkillService.BASE_URL}/employees/${id}`);
}
removeSkillFromEmployee(skillId: number, employeeId: number) {
this.getEmployeeById(employeeId).subscribe(employee => {
let employeePut = this.responseDtoToPutDto(employee);
if (employeePut.skillSet.indexOf(skillId) != 1) {
employeePut.skillSet = employeePut.skillSet.filter(skill => skill != skillId);
}
this.http.put(`${SkillService.BASE_URL}/employees/${employee.id}`, employeePut).subscribe();
});
}
addSkillToEmployee(skillId: number, employee: EmployeeResponseDTO) {
let employeePut = this.responseDtoToPutDto(employee);
if (employeePut.skillSet.indexOf(skillId) == -1) {
employeePut.skillSet.push(skillId);
}
this.http.put(`${SkillService.BASE_URL}/employees/${employee.id}`, employeePut).subscribe();
}
}