Files
pmu-bet-engine/src/main/java/com/pmu/betengine/service/AgentService.java
2025-11-21 15:08:53 +00:00

113 lines
4.4 KiB
Java

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<Agent> 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<Agent> getAgentsByStatut(String statut) {
return agentRepository.findByStatut(statut);
}
// Find by ville
public List<Agent> getAgentsByVille(String ville) {
return agentRepository.findByVille(ville);
}
// Search by name
public List<Agent> searchAgentsByName(String query) {
return agentRepository.findByNomContainingIgnoreCaseOrPrenomContainingIgnoreCase(query, query);
}
}