PMT-43: die Projekt Daten aktualisieren #16

Merged
SZUT-Dominik merged 7 commits from story/PMT-43-die-projektdaten-aktualisieren into trunk 2024-10-23 11:38:44 +00:00
2 changed files with 44 additions and 19 deletions
Showing only changes of commit 224561f038 - Show all commits

View file

@ -8,6 +8,7 @@ import de.hmmh.pmt.employee.ApiClientFactory;
import de.hmmh.pmt.employee.api.EmployeeControllerApi;
import de.hmmh.pmt.employee.dtos.EmployeeResponseDTO;
import de.hmmh.pmt.oas.DefaultApi;
import de.hmmh.pmt.util.ApiTools;
import de.hmmh.pmt.util.Mapper;
import de.hmmh.pmt.util.Validator;
import jakarta.servlet.http.HttpServletRequest;
@ -79,16 +80,9 @@ public class ApiController implements DefaultApi {
return new ResponseEntity<>(HttpStatus.CONFLICT);
}
try {
apiClientFactory.getEmployeeApi().findById(body.getAdministratorId());
} catch (HttpClientErrorException exception) {
return new ResponseEntity<>(
exception.getStatusCode().equals(HttpStatus.NOT_FOUND)
? HttpStatus.NOT_FOUND
: HttpStatus.SERVICE_UNAVAILABLE
);
} catch (RestClientException exception) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
HttpStatus status = apiTools.checkEmployeeExists(body.getAdministratorId()).status();
if (status != HttpStatus.OK) {
return new ResponseEntity<>(status);
}
Project project = mapper.map(body);
@ -109,16 +103,13 @@ public class ApiController implements DefaultApi {
}
Project project = optionalProject.get();
EmployeeResponseDTO employee;
try {
employee = apiClientFactory.getEmployeeApi().findById(body.getEmployeeId());
} catch (HttpClientErrorException exception) {
return new ResponseEntity<>(exception.getStatusCode().equals(HttpStatus.NOT_FOUND)
? HttpStatus.NOT_FOUND
: HttpStatus.SERVICE_UNAVAILABLE);
} catch (RestClientException exception) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
ApiTools.CheckEmployeeRecord employeeRecord = apiTools.checkEmployeeExists(body.getEmployeeId());
if (employeeRecord.status() != HttpStatus.OK) {
return new ResponseEntity<>(employeeRecord.status());
}
EmployeeResponseDTO employee = employeeRecord.employee();
if (employee.getSkillSet()
.stream()

View file

@ -0,0 +1,34 @@
package de.hmmh.pmt.util;
import de.hmmh.pmt.employee.ApiClientFactory;
import de.hmmh.pmt.employee.dtos.EmployeeResponseDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestClientException;
@Component
public class ApiTools {
@Autowired
private ApiClientFactory apiClientFactory;
public record CheckEmployeeRecord(EmployeeResponseDTO employee, HttpStatus status) {}
public CheckEmployeeRecord checkEmployeeExists(long id) {
EmployeeResponseDTO employee;
try {
employee =apiClientFactory.getEmployeeApi().findById(id);
} catch (HttpClientErrorException exception) {
return new CheckEmployeeRecord(
null,
exception.getStatusCode().equals(HttpStatus.NOT_FOUND)
? HttpStatus.NOT_FOUND
: HttpStatus.SERVICE_UNAVAILABLE
);
} catch (RestClientException exception) {
return new CheckEmployeeRecord(null, HttpStatus.INTERNAL_SERVER_ERROR);
}
return new CheckEmployeeRecord(employee, HttpStatus.OK);
}
}