Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
__pycache__/
*.pyc
*.pyo
*.pyd
*.db
*.sqlite3
.git
.gitignore
resources/
venv/
.venv/
.idea/
.vscode/
target/
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,10 @@ public ResponseEntity<ServiceResponse> updateService(
public void deleteService(@PathVariable UUID id) {
serviceService.delete(id);
}

@GetMapping("/structure/{structureId}")
public ResponseEntity<List<ServiceResponse>> getServicesByStructure(@PathVariable UUID structureId) {
List<ServiceResponse> list = serviceService.getByStructureId(structureId);
return ResponseEntity.ok(list);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@ public interface ServiceEntityService {
List<ServiceResponse> getAll();
ServiceResponse update(UUID id, UpdateServiceRequest request);
void delete(UUID id);
List<ServiceResponse> getByStructureId(UUID structureId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.grey.rdv_manager_api.domain.enums.ReservationStatus;
import com.grey.rdv_manager_api.domain.model.Reservation;
import com.grey.rdv_manager_api.domain.model.Slot;
import com.grey.rdv_manager_api.mapper.ReservationMapper;
import com.grey.rdv_manager_api.payload.request.CreateReservationRequest;
import com.grey.rdv_manager_api.payload.request.UpdateReservationRequest;
import com.grey.rdv_manager_api.payload.response.ReservationResponse;
import com.grey.rdv_manager_api.repository.ReservationRepository;
import com.grey.rdv_manager_api.repository.SlotRepository;
import com.grey.rdv_manager_api.service.ReservationService;

import java.util.List;
Expand All @@ -18,18 +21,34 @@
public class ReservationServiceImpl implements ReservationService {

private final ReservationRepository repository;
private final SlotRepository slotRepository;
private final ReservationMapper mapper;

public ReservationServiceImpl(ReservationRepository repository, ReservationMapper mapper) {
public ReservationServiceImpl(ReservationRepository repository, ReservationMapper mapper, SlotRepository slotRepository) {
this.repository = repository;
this.mapper = mapper;
this.slotRepository = slotRepository;
}

@Override
@Transactional
public ReservationResponse create(CreateReservationRequest request) {
// Check slot availability
Slot slot = slotRepository.findById(request.slotId())
.orElseThrow(() -> new RuntimeException("Slot not found: " + request.slotId()));
if (slot.getAvailable() <= 0) {
throw new RuntimeException("No available places for this slot.");
}

// Proceed with reservation
Reservation entity = mapper.toEntity(request);
entity.setId(UUID.randomUUID());
entity.setStatus(ReservationStatus.PENDING);

// Decrement slot availability
slot.setAvailable(slot.getAvailable() - 1);
slotRepository.save(slot);

Reservation saved = repository.save(entity);
return mapper.toResponse(saved);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,9 @@ public ServiceResponse update(UUID id, UpdateServiceRequest request) {
public void delete(UUID id) {
repository.deleteById(id);
}

@Override
public List<ServiceResponse> getByStructureId(UUID structureId) {
return mapper.toResponseList(repository.findByStructureId(structureId));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public SlotServiceImpl(SlotRepository repository, SlotMapper mapper) {
public SlotResponse create(CreateSlotRequest request) {
Slot entity = mapper.toEntity(request);
entity.setId(UUID.randomUUID());
entity.setAvailable(request.capacity());
Slot saved = repository.save(entity);
return mapper.toResponse(saved);
}
Expand Down