113 lines
4.4 KiB
Java
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);
|
|
}
|
|
}
|