main #8

Closed
student-18211 wants to merge 22 commits from student-18211/NTO-2025-Backend-TeamTask:main into main
Showing only changes of commit f83af98397 - Show all commits

View File

@@ -5,6 +5,7 @@ import com.example.nto.entity.Employee;
import com.example.nto.entity.Place; import com.example.nto.entity.Place;
import com.example.nto.excepation.EmployeeNotFoundException; import com.example.nto.excepation.EmployeeNotFoundException;
import com.example.nto.repository.BookingRepository; import com.example.nto.repository.BookingRepository;
import com.example.nto.repository.EmployeeRepository;
import com.example.nto.repository.PlaceRepository; import com.example.nto.repository.PlaceRepository;
import com.example.nto.service.BookingService; import com.example.nto.service.BookingService;
import com.example.nto.service.EmployeeService; import com.example.nto.service.EmployeeService;
@@ -25,6 +26,8 @@ public class BookingServiceImpl implements BookingService {
@Autowired @Autowired
private EmployeeService employeeService; private EmployeeService employeeService;
@Autowired
private EmployeeRepository employeeRepository;
@Override @Override
public Map<String, Object> findAvailableBookings(String employeeCode) { public Map<String, Object> findAvailableBookings(String employeeCode) {
@@ -57,7 +60,49 @@ public class BookingServiceImpl implements BookingService {
} }
return Collections.unmodifiableMap(result); return Collections.unmodifiableMap(result);
} }
public Map<String, Object> createBooking(String code, Long placeId, String date) {
if (code == null || code.isBlank()) {
throw new IllegalArgumentException("Employee code is empty");
}
if (placeId == null || date == null || date.isBlank()) {
throw new IllegalArgumentException("Place ID and date must be provided");
}
Employee employee = employeeRepository.findByCode(code)
.orElseThrow(() -> new EmployeeNotFoundException("Employee not found"));
Place place = placeRepository.findById(placeId)
.orElseThrow(() -> new IllegalArgumentException("Place not found"));
LocalDate bookingDate;
try {
bookingDate = LocalDate.parse(date);
} catch (Exception e) {
throw new IllegalArgumentException("Invalid date format. Use yyyy-MM-dd");
}
boolean exists = bookingRepository.findByDateBetween(bookingDate, bookingDate)
.stream()
.anyMatch(b -> b.getPlace().getId() == placeId);
if (exists) {
throw new IllegalArgumentException("Place already booked for this date");
}
Booking booking = new Booking();
booking.setEmployee((Map<String, Object>) employee);
booking.setPlace(place);
booking.setDate(bookingDate);
bookingRepository.save(booking);
Map<String, Object> result = new LinkedHashMap<>();
result.put("id", booking.getId());
result.put("date", booking.getDate());
result.put("placeId", place.getId());
result.put("employeeId", employee.getId());
return result;
}
} }