Skip to content
Open
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
15 changes: 15 additions & 0 deletions client.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
-- Script DDL pour l'entité Client
CREATE TABLE Client (
id INT PRIMARY KEY AUTO_INCREMENT,
nom VARCHAR(100) NOT NULL,
prenoms VARCHAR(100) NOT NULL,
telephone VARCHAR(20) NOT NULL,
email VARCHAR(100) NOT NULL,
date_enregistrement TIMESTAMP NOT NULL,
adresse VARCHAR(255)
);

-- Script DML exemple pour Client
INSERT INTO Client (nom, prenoms, telephone, email, date_enregistrement, adresse) VALUES
('Dupont', 'Jean', '+22501020304', 'jean.dupont@email.com', NOW(), 'Abidjan'),
('Doe', 'Jane', '+22505060708', 'jane.doe@email.com', NOW(), 'Yamoussoukro');
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package com.esgis.jee.model.admin.controller;

import com.esgis.jee.model.admin.entity.Client;
import com.esgis.jee.model.admin.service.IClientService;
import jakarta.annotation.PostConstruct;
import jakarta.enterprise.context.SessionScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Named
@SessionScoped
public class ClientController implements Serializable {
private Client client;
private List<Client> clients;

@Inject
private IClientService clientService;

@PostConstruct
public void init() {
client = new Client();
clients = clientService.findAll();
}

public void createClient() {
client.setDateEnregistrement(new Date());
clientService.create(client);
clients = clientService.findAll();
client = new Client();
}

public void updateClient() {
clientService.update(client);
clients = clientService.findAll();
}

public void deleteClient(Client clientToDelete) {
clientService.delete(clientToDelete);
clients = clientService.findAll();
}

public List<Client> getClients() {
return clients;
}

public Client getClient() {
return client;
}

public void setClient(Client client) {
this.client = client;
}

// Vérifie si l'utilisateur connecté a le rôle ADMIN
public boolean isAdmin() {
return jakarta.faces.context.FacesContext.getCurrentInstance()
.getExternalContext().isUserInRole("ADMIN");
}
}
33 changes: 33 additions & 0 deletions src/main/java/com/esgis/jee/model/admin/dao/ClientDao.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.esgis.jee.model.admin.dao;

import com.esgis.jee.model.admin.entity.Client;
import jakarta.ejb.Stateless;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import java.util.List;

@Stateless
public class ClientDao implements IClientDao {
@PersistenceContext(unitName = "transportPU")
private EntityManager em;

public void create(Client client) {
em.persist(client);
}

public Client find(Integer id) {
return em.find(Client.class, id);
}

public void update(Client client) {
em.merge(client);
}

public void delete(Client client) {
em.remove(em.merge(client));
}

public List<Client> findAll() {
return em.createQuery("SELECT c FROM Client c", Client.class).getResultList();
}
}
12 changes: 12 additions & 0 deletions src/main/java/com/esgis/jee/model/admin/dao/IClientDao.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.esgis.jee.model.admin.dao;

import com.esgis.jee.model.admin.entity.Client;
import java.util.List;

public interface IClientDao {
void create(Client client);
Client find(Integer id);
void update(Client client);
void delete(Client client);
List<Client> findAll();
}
60 changes: 60 additions & 0 deletions src/main/java/com/esgis/jee/model/admin/entity/Client.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.esgis.jee.model.admin.entity;

import jakarta.persistence.*;
import java.io.Serializable;
import java.util.Date;

@Entity
@Table(name = "Client")
public class Client implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

@Column(name = "nom", length = 100, nullable = false)
private String nom;

@Column(name = "prenoms", length = 100, nullable = false)
private String prenoms;

@Column(name = "telephone", length = 20, nullable = false)
private String telephone;

@Column(name = "email", length = 100, nullable = false)
private String email;

@Column(name = "date_enregistrement", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date dateEnregistrement;

@Column(name = "adresse", length = 255)
private String adresse;

// Constructeurs
public Client() {}

public Client(String nom, String prenoms, String telephone, String email, Date dateEnregistrement, String adresse) {
this.nom = nom;
this.prenoms = prenoms;
this.telephone = telephone;
this.email = email;
this.dateEnregistrement = dateEnregistrement;
this.adresse = adresse;
}

// Getters et Setters
public Integer getId() { return id; }
public void setId(Integer id) { this.id = id; }
public String getNom() { return nom; }
public void setNom(String nom) { this.nom = nom; }
public String getPrenoms() { return prenoms; }
public void setPrenoms(String prenoms) { this.prenoms = prenoms; }
public String getTelephone() { return telephone; }
public void setTelephone(String telephone) { this.telephone = telephone; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public Date getDateEnregistrement() { return dateEnregistrement; }
public void setDateEnregistrement(Date dateEnregistrement) { this.dateEnregistrement = dateEnregistrement; }
public String getAdresse() { return adresse; }
public void setAdresse(String adresse) { this.adresse = adresse; }
}
33 changes: 33 additions & 0 deletions src/main/java/com/esgis/jee/model/admin/service/ClientService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.esgis.jee.model.admin.service;

import com.esgis.jee.model.admin.dao.ClientDao;
import com.esgis.jee.model.admin.entity.Client;
import jakarta.ejb.Stateless;
import jakarta.inject.Inject;
import java.util.List;

@Stateless
public class ClientService implements IClientService {
@Inject
private ClientDao clientDao;

public void create(Client client) {
clientDao.create(client);
}

public Client find(Integer id) {
return clientDao.find(id);
}

public void update(Client client) {
clientDao.update(client);
}

public void delete(Client client) {
clientDao.delete(client);
}

public List<Client> findAll() {
return clientDao.findAll();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.esgis.jee.model.admin.service;

import com.esgis.jee.model.admin.entity.Client;
import java.util.List;

public interface IClientService {
void create(Client client);
Client find(Integer id);
void update(Client client);
void delete(Client client);
List<Client> findAll();
}
66 changes: 66 additions & 0 deletions src/main/webapp/adminClientsView.xhtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<h:head>
<title>Gestion des Clients</title>
</h:head>
<h:body>
<h1>Gestion des Clients</h1>
<!-- Affichage de la liste des clients -->
<h:dataTable value="#{clientController.clients}" var="client" border="1">
<h:column>
<f:facet name="header">Nom</f:facet>
#{client.nom}
</h:column>
<h:column>
<f:facet name="header">Prénoms</f:facet>
#{client.prenoms}
</h:column>
<h:column>
<f:facet name="header">Téléphone</f:facet>
#{client.telephone}
</h:column>
<h:column>
<f:facet name="header">E-mail</f:facet>
#{client.email}
</h:column>
<h:column>
<f:facet name="header">Date d'enregistrement</f:facet>
#{client.dateEnregistrement}
</h:column>
<h:column>
<f:facet name="header">Adresse</f:facet>
#{client.adresse}
</h:column>
<h:column>
<f:facet name="header">Actions</f:facet>
<ui:fragment rendered="#{facesContext.externalContext.isUserInRole('ADMIN')}">
<h:commandButton value="Modifier" action="#{clientController.setClient(client)}"/>
<h:commandButton value="Supprimer" action="#{clientController.deleteClient(client)}"/>
</ui:fragment>
</h:column>
</h:dataTable>

<!-- Formulaire d'ajout/édition (réservé aux admins) -->
<ui:fragment rendered="#{facesContext.externalContext.isUserInRole('ADMIN')}">
<h:form>
<h:panelGrid columns="2">
<h:outputLabel value="Nom:"/>
<h:inputText value="#{clientController.client.nom}" required="true"/>
<h:outputLabel value="Prénoms:"/>
<h:inputText value="#{clientController.client.prenoms}" required="true"/>
<h:outputLabel value="Téléphone:"/>
<h:inputText value="#{clientController.client.telephone}" required="true"/>
<h:outputLabel value="E-mail:"/>
<h:inputText value="#{clientController.client.email}" required="true"/>
<h:outputLabel value="Adresse:"/>
<h:inputText value="#{clientController.client.adresse}"/>
</h:panelGrid>
<h:commandButton value="Enregistrer" action="#{clientController.createClient}"/>
<h:commandButton value="Modifier" action="#{clientController.updateClient}"/>
</h:form>
</ui:fragment>
</h:body>
</html>
2 changes: 1 addition & 1 deletion target/classes/maven.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#Properties
#Fri May 02 10:54:20 UTC 2025
#Sat May 10 19:51:30 GMT 2025
jakartaee=10.0.0
project.build.sourceEncoding=UTF-8
app.version=v1.0-SNAPSHOT (04/2024)
Loading