Creation of appointment implemented

This commit is contained in:
Matthias Engelien
2024-09-15 12:22:31 +02:00
parent a2164a0eb3
commit c311564ecc
7 changed files with 157 additions and 18 deletions

View File

@@ -11,6 +11,7 @@ import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.Assert;
@@ -56,8 +57,8 @@ public class GarageApiController implements WerkstattApi {
long garageId = Long.parseLong(werkstattId);
Optional<Long> serviceId = NumberUtils.isParsable(leistungsId) ? Optional.of(Long.parseLong(leistungsId))
: Optional.empty();
Optional<Date> appointmentsFrom = Optional.ofNullable(parseLocalDateTime(von));
Optional<Date> appointmentsTill = Optional.ofNullable(parseLocalDateTime(bis));
Optional<Date> appointmentsFrom = Optional.ofNullable(parseDate(von));
Optional<Date> appointmentsTill = Optional.ofNullable(parseDate(bis));
log.info("Filter appointments by garage {}, serviceId {}, from {}, till {}", garageId, serviceId,
appointmentsFrom, appointmentsTill);
@@ -76,15 +77,31 @@ public class GarageApiController implements WerkstattApi {
@Override
public ResponseEntity<Termin> postTermin(String werkstattId, @Valid TerminRequest termin) {
// TODO Auto-generated method stub
return WerkstattApi.super.postTermin(werkstattId, termin);
// input validation
Assert.isTrue(NumberUtils.isParsable(werkstattId), "werkstattId ungültig");
Assert.isTrue(NumberUtils.isParsable(termin.getLeistungsId()), "leistungsId ungültig");
Assert.notNull(parseDate(termin.getVon()), "von ungültig");
Assert.notNull(parseDate(termin.getBis()), "bis ungültig");
long garageId = Long.parseLong(werkstattId);
long serviceId = Long.parseLong(termin.getLeistungsId());
Date appointmentFrom = parseDate(termin.getVon());
Date appointmentTill = parseDate(termin.getBis());
// create appointment if possible
Optional<Appointment> appointment = appointmentService.createAppointment(garageId, serviceId,
appointmentFrom, appointmentTill);
return appointment.map(a -> ResponseEntity.ok(AppointmentTerminMapper.toTermin(a)))
.orElse(ResponseEntity.status(HttpStatus.CONFLICT).build());
}
private Date parseLocalDateTime(String dateTimeString) {
private Date parseDate(String dateTimeString) {
if (StringUtils.isNotBlank(dateTimeString)) {
try {
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy hh:mm");
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm");
return format.parse(dateTimeString);
} catch (ParseException e) {