package com.pmu.betengine.service; import com.pmu.betengine.model.Agent; import com.pmu.betengine.repository.AgentRepository; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; @Service public class AgentService { private final AgentRepository agentRepository; public AgentService(AgentRepository agentRepository) { this.agentRepository = agentRepository; } // Create public Agent createAgent(Agent agent) { if (agentRepository.existsByCode(agent.getCode())) { throw new RuntimeException("Un agent avec ce code existe déjà: " + agent.getCode()); } agent.setCreatedAt(LocalDateTime.now()); return agentRepository.save(agent); } // Get all public List getAllAgents() { return agentRepository.findAll(); } // Get by ID public Agent getAgentById(Long id) { return agentRepository.findById(id) .orElseThrow(() -> new RuntimeException("Agent non trouvé avec l'id: " + id)); } // Update public Agent updateAgent(Long id, Agent updatedAgent) { Agent existing = getAgentById(id); existing.setCode(updatedAgent.getCode()); existing.setProfile(updatedAgent.getProfile()); existing.setPrincipalCode(updatedAgent.getPrincipalCode()); existing.setCaisseProfile(updatedAgent.getCaisseProfile()); existing.setStatut(updatedAgent.getStatut()); existing.setZone(updatedAgent.getZone()); existing.setKiosk(updatedAgent.getKiosk()); existing.setFonction(updatedAgent.getFonction()); existing.setDateEmbauche(updatedAgent.getDateEmbauche()); existing.setNom(updatedAgent.getNom()); existing.setPrenom(updatedAgent.getPrenom()); existing.setAutresNoms(updatedAgent.getAutresNoms()); existing.setDateNaissance(updatedAgent.getDateNaissance()); existing.setLieuNaissance(updatedAgent.getLieuNaissance()); existing.setVille(updatedAgent.getVille()); existing.setAdresse(updatedAgent.getAdresse()); existing.setAutoriserAides(updatedAgent.getAutoriserAides()); existing.setPhone(updatedAgent.getPhone()); existing.setPin(updatedAgent.getPin()); existing.setLimiteInferieure(updatedAgent.getLimiteInferieure()); existing.setLimiteSuperieure(updatedAgent.getLimiteSuperieure()); existing.setLimiteParTransaction(updatedAgent.getLimiteParTransaction()); existing.setLimiteMinAirtime(updatedAgent.getLimiteMinAirtime()); existing.setLimiteMaxAirtime(updatedAgent.getLimiteMaxAirtime()); existing.setMaxPeripheriques(updatedAgent.getMaxPeripheriques()); existing.setLimitId(updatedAgent.getLimitId()); existing.setNationalite(updatedAgent.getNationalite()); existing.setCni(updatedAgent.getCni()); existing.setCniDelivreeLe(updatedAgent.getCniDelivreeLe()); existing.setCniDelivreeA(updatedAgent.getCniDelivreeA()); existing.setResidence(updatedAgent.getResidence()); existing.setAutreAdresse1(updatedAgent.getAutreAdresse1()); existing.setStatutMarital(updatedAgent.getStatutMarital()); existing.setEpoux(updatedAgent.getEpoux()); existing.setAutreTelephone(updatedAgent.getAutreTelephone()); existing.setUpdatedAt(LocalDateTime.now()); return agentRepository.save(existing); } // Delete public String deleteAgent(Long id) { if (!agentRepository.existsById(id)) { throw new RuntimeException("Agent non trouvé avec l'id: " + id); } agentRepository.deleteById(id); return "Agent avec l'ID " + id + " supprimé avec succès."; } // Find by code public Agent getAgentByCode(String code) { return agentRepository.findByCode(code) .orElseThrow(() -> new RuntimeException("Agent non trouvé avec le code: " + code)); } // Find by statut public List getAgentsByStatut(String statut) { return agentRepository.findByStatut(statut); } // Find by ville public List getAgentsByVille(String ville) { return agentRepository.findByVille(ville); } // Search by name public List searchAgentsByName(String query) { return agentRepository.findByNomContainingIgnoreCaseOrPrenomContainingIgnoreCase(query, query); } }