This commit is contained in:
parent
9d821b9bb1
commit
5197187cf7
@ -14,6 +14,7 @@ import com.triz.util.UtilContext;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import javax.annotation.PostConstruct;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
@ -60,7 +61,8 @@ public class FormGroupBean {
|
||||
}
|
||||
if (groupe != null) {
|
||||
System.out.println("hello 1");
|
||||
groupeSelected = service.getGroupsById(groupe);
|
||||
UUID id = UUID.fromString(groupe);
|
||||
groupeSelected = service.getGroupsById(id);
|
||||
} else {
|
||||
System.out.println("hello 2");
|
||||
if (canEdit) {
|
||||
@ -95,32 +97,39 @@ public class FormGroupBean {
|
||||
}
|
||||
|
||||
public void ajouterFonctionnalitesAuGroupe() {
|
||||
System.out.println("target " + Target.size());
|
||||
if (Target != null && !Target.isEmpty()) {
|
||||
|
||||
if (listeFonctionnalite == null) {
|
||||
listeFonctionnalite = new ArrayList<>();
|
||||
}
|
||||
|
||||
for (ServiceFonctionnaliter f : Target) {
|
||||
boolean existe = false;
|
||||
|
||||
System.out.println("existe " + existe);
|
||||
for (ServiceFonctiongroupe fg : listeFonctionnalite) {
|
||||
if (fg.getFkFonctionnalite().getId().equals(f.getId())) {
|
||||
existe = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("existe 2 " + existe);
|
||||
if (!existe) {
|
||||
ServiceFonctiongroupe newFg = new ServiceFonctiongroupe();
|
||||
// newFg.setId(groupeSelected.getId() + f.getId());
|
||||
UUID id = UUID.randomUUID();
|
||||
while (service.getFonctiongroupeById(id) != null) {
|
||||
id = UUID.randomUUID();
|
||||
}
|
||||
newFg.setId(id);
|
||||
newFg.setFkFonctionnalite(f);
|
||||
newFg.setFkGroupe(groupeSelected);
|
||||
newFg.setCanSee(true);
|
||||
newFg.setCanCreate(true);
|
||||
newFg.setCanUpdate(true);
|
||||
newFg.setCanDelete(true);
|
||||
newFg.setCanUpdateDate(true);
|
||||
listeFonctionnalite.add(newFg);
|
||||
System.out.println("listeFonctionnalite " + listeFonctionnalite.size());
|
||||
}
|
||||
}
|
||||
|
||||
@ -145,25 +154,36 @@ public class FormGroupBean {
|
||||
public String saveGroupe() {
|
||||
if (isNew) {
|
||||
System.out.println("hello from save 1");
|
||||
UUID id = UUID.randomUUID();
|
||||
while (service.getGroupsById(id) != null) {
|
||||
id = UUID.randomUUID();
|
||||
}
|
||||
groupeSelected.setId(id);
|
||||
groupeSelected.setActif("true");
|
||||
service.save(groupeSelected);
|
||||
context.saveNewManipulation("Groupe", groupeSelected.getNomGroupe(), "Ajouter Groupe", new Date(), new Date(), user,"", "");
|
||||
}else{
|
||||
context.saveNewManipulation("Groupe", groupeSelected.getNomGroupe(), "Ajouter Groupe", new Date(), new Date(), user, "", "");
|
||||
} else {
|
||||
System.out.println("hello from save 2");
|
||||
service.save(groupeSelected);
|
||||
context.saveNewManipulation("Groupe", groupeSelected.getNomGroupe(), "Modifier Groupe", new Date(), new Date(), user, "", "");
|
||||
}
|
||||
|
||||
// Sauvegarde des fonctionnalités (ajoutées ou modifiées)
|
||||
if (listeFonctionnalite != null) {
|
||||
for (ServiceFonctiongroupe fg : listeFonctionnalite) {
|
||||
System.out.println("ID FG = " + fg.getId());
|
||||
System.out.println("EXISTE = " + service.getFonctiongroupeById(fg.getId()));
|
||||
service.saveFonctionsGroupes(fg);
|
||||
context.saveNewManipulation("Groupe", groupeSelected.getNomGroupe(), "Ajouter Fonction groupe", new Date(), new Date(), user, "", fg.getFkFonctionnalite().getNom());
|
||||
}
|
||||
}
|
||||
|
||||
// Suppression des fonctionnalités supprimées
|
||||
if (listeFonctionsASupprimer != null) {
|
||||
for (ServiceFonctiongroupe fg : listeFonctionsASupprimer) {
|
||||
System.out.println("DELETE : " + fg.getId());
|
||||
service.removeFonctionsGroupes(fg);
|
||||
context.saveNewManipulation("Groupe", groupeSelected.getNomGroupe(), "Supprimer Fonction groupe", new Date(), new Date(), user, fg.getFkFonctionnalite().getNom(), "");
|
||||
}
|
||||
listeFonctionsASupprimer.clear(); // Nettoyage
|
||||
}
|
||||
|
||||
@ -20,10 +20,10 @@ import org.springframework.stereotype.Component;
|
||||
*
|
||||
* @author Asma
|
||||
*/
|
||||
|
||||
@Component("groupBean")
|
||||
@Scope("view")
|
||||
public class GroupBean {
|
||||
|
||||
private ServiceUser user;
|
||||
private ServiceGroupe groupeSelected;
|
||||
private List<ServiceFonctionnaliter> listeFonctionnalite;
|
||||
@ -82,4 +82,15 @@ public class GroupBean {
|
||||
public void setListeGroupe(List<ServiceGroupe> listeGroupe) {
|
||||
this.listeGroupe = listeGroupe;
|
||||
}
|
||||
|
||||
public int getNbrUtilisateur(ServiceGroupe groupe) {
|
||||
int nbrUtilisateur = service.getNbrUtilisateurParGroupe(groupe);
|
||||
return nbrUtilisateur;
|
||||
}
|
||||
|
||||
public int getNbrFonctionnalite(ServiceGroupe groupe) {
|
||||
int nbrFonctionnalite = service.getNbrFonctionnaliteParGroupe(groupe);
|
||||
return nbrFonctionnalite;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ package com.triz.trizservice.bean.converter;
|
||||
|
||||
import com.triz.trizservice.modeles.ServiceGroupe;
|
||||
import com.triz.trizservice.service.TransactionService;
|
||||
import java.util.UUID;
|
||||
import javax.faces.application.FacesMessage;
|
||||
import javax.faces.component.UIComponent;
|
||||
import javax.faces.context.FacesContext;
|
||||
@ -28,7 +29,8 @@ public class GroupeConverter implements Converter{
|
||||
public Object getAsObject(FacesContext fc, UIComponent uic, String value) {
|
||||
try {
|
||||
System.out.println("service "+ service);
|
||||
return service.getGroupsById(value);
|
||||
UUID id = UUID.fromString(value);
|
||||
return service.getGroupsById(id);
|
||||
} catch (NumberFormatException e) {
|
||||
new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Entreprise n'existe pas.");
|
||||
}
|
||||
|
||||
@ -41,6 +41,8 @@ public class ServiceFonctiongroupe implements Serializable {
|
||||
|
||||
@Column(name = "can_create")
|
||||
private Boolean canCreate;
|
||||
@Column(name = "can_see")
|
||||
private Boolean canSee;
|
||||
@Column(name = "can_update")
|
||||
private Boolean canUpdate;
|
||||
@Column(name = "can_update_date")
|
||||
@ -55,7 +57,6 @@ public class ServiceFonctiongroupe implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Basic(optional = false)
|
||||
@Column(name = "id")
|
||||
private UUID id;
|
||||
@ -163,6 +164,14 @@ public class ServiceFonctiongroupe implements Serializable {
|
||||
this.fkFonctionnalite = fkFonctionnalite;
|
||||
}
|
||||
|
||||
public Boolean getCanSee() {
|
||||
return canSee;
|
||||
}
|
||||
|
||||
public void setCanSee(Boolean canSee) {
|
||||
this.canSee = canSee;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -6,9 +6,11 @@ package com.triz.trizservice.modeles;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
import javax.persistence.Basic;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.ManyToOne;
|
||||
@ -33,9 +35,7 @@ import javax.xml.bind.annotation.XmlRootElement;
|
||||
@NamedQuery(name = "ServiceHistoriqueManipulation.findById", query = "SELECT s FROM ServiceHistoriqueManipulation s WHERE s.id = :id"),
|
||||
@NamedQuery(name = "ServiceHistoriqueManipulation.findByNomTable", query = "SELECT s FROM ServiceHistoriqueManipulation s WHERE s.nomTable = :nomTable"),
|
||||
@NamedQuery(name = "ServiceHistoriqueManipulation.findByIdLigne", query = "SELECT s FROM ServiceHistoriqueManipulation s WHERE s.idLigne = :idLigne"),
|
||||
@NamedQuery(name = "ServiceHistoriqueManipulation.findByTypeManipumation", query = "SELECT s FROM ServiceHistoriqueManipulation s WHERE s.typeManipumation = :typeManipumation"),
|
||||
@NamedQuery(name = "ServiceHistoriqueManipulation.findByDateManipulation", query = "SELECT s FROM ServiceHistoriqueManipulation s WHERE s.dateManipulation = :dateManipulation"),
|
||||
@NamedQuery(name = "ServiceHistoriqueManipulation.findByHeurManipulation", query = "SELECT s FROM ServiceHistoriqueManipulation s WHERE s.heurManipulation = :heurManipulation"),
|
||||
@NamedQuery(name = "ServiceHistoriqueManipulation.findByOldValeur", query = "SELECT s FROM ServiceHistoriqueManipulation s WHERE s.oldValeur = :oldValeur"),
|
||||
@NamedQuery(name = "ServiceHistoriqueManipulation.findByNewValeur", query = "SELECT s FROM ServiceHistoriqueManipulation s WHERE s.newValeur = :newValeur")})
|
||||
public class ServiceHistoriqueManipulation implements Serializable {
|
||||
@ -66,33 +66,29 @@ public class ServiceHistoriqueManipulation implements Serializable {
|
||||
@Id
|
||||
@Basic(optional = false)
|
||||
@NotNull
|
||||
@GeneratedValue
|
||||
@Column(name = "id")
|
||||
private Long id;
|
||||
@Size(max = 2147483647)
|
||||
@Column(name = "type_manipumation")
|
||||
private String typeManipumation;
|
||||
private UUID id;
|
||||
|
||||
@Column(name = "date_manipulation")
|
||||
@Temporal(TemporalType.DATE)
|
||||
private Date dateManipulation;
|
||||
@Column(name = "heur_manipulation")
|
||||
@Temporal(TemporalType.TIME)
|
||||
private Date heurManipulation;
|
||||
@JoinColumn(name = "fk_manipulateur", referencedColumnName = "userid")
|
||||
@ManyToOne
|
||||
private ServiceUser fkManipulateur;
|
||||
|
||||
|
||||
|
||||
|
||||
public ServiceHistoriqueManipulation() {
|
||||
}
|
||||
|
||||
public ServiceHistoriqueManipulation(Long id) {
|
||||
public ServiceHistoriqueManipulation(UUID id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
public void setId(UUID id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@ -112,13 +108,6 @@ public class ServiceHistoriqueManipulation implements Serializable {
|
||||
this.idLigne = idLigne;
|
||||
}
|
||||
|
||||
public String getTypeManipumation() {
|
||||
return typeManipumation;
|
||||
}
|
||||
|
||||
public void setTypeManipumation(String typeManipumation) {
|
||||
this.typeManipumation = typeManipumation;
|
||||
}
|
||||
|
||||
public Date getDateManipulation() {
|
||||
return dateManipulation;
|
||||
@ -128,21 +117,6 @@ public class ServiceHistoriqueManipulation implements Serializable {
|
||||
this.dateManipulation = dateManipulation;
|
||||
}
|
||||
|
||||
public Date getHeurManipulation() {
|
||||
return heurManipulation;
|
||||
}
|
||||
|
||||
public void setHeurManipulation(Date heurManipulation) {
|
||||
this.heurManipulation = heurManipulation;
|
||||
}
|
||||
|
||||
public ServiceUser getFkManipulateur() {
|
||||
return fkManipulateur;
|
||||
}
|
||||
|
||||
public void setFkManipulateur(ServiceUser fkManipulateur) {
|
||||
this.fkManipulateur = fkManipulateur;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
@ -169,7 +143,6 @@ public class ServiceHistoriqueManipulation implements Serializable {
|
||||
return "com.triz.trizservice.modeles.ServiceHistoriqueManipulation[ id=" + id + " ]";
|
||||
}
|
||||
|
||||
|
||||
public String getNewValeur() {
|
||||
return newValeur;
|
||||
}
|
||||
@ -210,6 +183,4 @@ public class ServiceHistoriqueManipulation implements Serializable {
|
||||
this.fkUser = fkUser;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -65,7 +65,7 @@ public class ServiceUser implements Serializable {
|
||||
@Size(max = 2147483647)
|
||||
@Column(name = "user_pw")
|
||||
private String userpw;
|
||||
@OneToMany(mappedBy = "fkManipulateur")
|
||||
@OneToMany(mappedBy = "fkUser")
|
||||
private List<ServiceHistoriqueManipulation> serviceHistoriqueManipulationList;
|
||||
|
||||
@OneToMany(mappedBy = "fkUser")
|
||||
|
||||
@ -18,6 +18,7 @@ import com.triz.trizservice.modeles.ServiceHistoriqueManipulation;
|
||||
import com.triz.trizservice.modeles.ServiceUserCentre;
|
||||
import com.triz.trizservice.modeles.Wilaya;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -39,7 +40,7 @@ public interface DaoService {
|
||||
|
||||
public void saveUser(ServiceUser object);
|
||||
|
||||
public ServiceGroupe getGroupsById(String id);
|
||||
public ServiceGroupe getGroupsById(UUID id);
|
||||
|
||||
public void saveGroup(ServiceGroupe object);
|
||||
|
||||
@ -109,4 +110,10 @@ public interface DaoService {
|
||||
|
||||
public List<Wilaya> getAllWilaya();
|
||||
|
||||
public int getNbrUtilisateurParGroupe(ServiceGroupe groupe);
|
||||
|
||||
public int getNbrFonctionnaliteParGroupe(ServiceGroupe groupe);
|
||||
|
||||
public ServiceFonctiongroupe getFonctiongroupeById(UUID id);
|
||||
|
||||
}
|
||||
|
||||
@ -20,6 +20,7 @@ import com.triz.trizservice.modeles.ServiceHistoriqueManipulation;
|
||||
import com.triz.trizservice.modeles.ServiceUserCentre;
|
||||
import com.triz.trizservice.modeles.Wilaya;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -41,7 +42,7 @@ public interface TransactionService {
|
||||
|
||||
public void saveUser(ServiceUser object);
|
||||
|
||||
public ServiceGroupe getGroupsById(String id);
|
||||
public ServiceGroupe getGroupsById(UUID id);
|
||||
|
||||
public void saveGroup(ServiceGroupe object);
|
||||
|
||||
@ -110,4 +111,10 @@ public interface TransactionService {
|
||||
public ServicehistoriqueConnection getLastStockHistoriqueConnectionByUsers(ServiceUser user);
|
||||
|
||||
public List<Wilaya> getAllWilaya();
|
||||
|
||||
public int getNbrUtilisateurParGroupe(ServiceGroupe groupe);
|
||||
|
||||
public int getNbrFonctionnaliteParGroupe(ServiceGroupe groupe);
|
||||
|
||||
public ServiceFonctiongroupe getFonctiongroupeById(UUID id);
|
||||
}
|
||||
|
||||
@ -19,6 +19,7 @@ import com.triz.trizservice.modeles.ServiceUserCentre;
|
||||
import com.triz.trizservice.modeles.Wilaya;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import javax.annotation.Resource;
|
||||
import javax.persistence.NoResultException;
|
||||
import javax.persistence.criteria.CriteriaBuilder;
|
||||
@ -95,7 +96,7 @@ public class DaoServiceImpl implements DaoService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServiceGroupe getGroupsById(String id) {
|
||||
public ServiceGroupe getGroupsById(UUID id) {
|
||||
return (ServiceGroupe) getCurrentSession().createCriteria(ServiceGroupe.class).add(Restrictions.eq("id", id)).setMaxResults(1).uniqueResult();
|
||||
}
|
||||
|
||||
@ -268,7 +269,7 @@ public class DaoServiceImpl implements DaoService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServiceUserCentre getAllUserCentreByCentreByUser(Centre etablissement,ServiceUser user) {
|
||||
public ServiceUserCentre getAllUserCentreByCentreByUser(Centre etablissement, ServiceUser user) {
|
||||
return (ServiceUserCentre) getCurrentSession().createCriteria(ServiceUserCentre.class).add(Restrictions.eq("fkCentre", etablissement)).add(Restrictions.eq("fkUser", user)).setMaxResults(1).uniqueResult();
|
||||
}
|
||||
|
||||
@ -282,9 +283,25 @@ public class DaoServiceImpl implements DaoService {
|
||||
return (ServicehistoriqueConnection) getCurrentSession().createCriteria(ServicehistoriqueConnection.class).add(Restrictions.eq("fkUser", user)).addOrder(Order.desc("id")).setMaxResults(1).uniqueResult();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<Wilaya> getAllWilaya() {
|
||||
return getCurrentSession().createQuery("select m from Wilaya m ").list();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNbrUtilisateurParGroupe(ServiceGroupe groupe) {
|
||||
Long count = (Long) getCurrentSession().createQuery("select count(m) from ServiceGroupe m, ServiceMember f where m.id=f.fkGroupe.id and m.id=:groupe ").setParameter("groupe", groupe.getId()).uniqueResult();
|
||||
return count.intValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNbrFonctionnaliteParGroupe(ServiceGroupe groupe) {
|
||||
Long count = (Long) getCurrentSession().createQuery("select count(m) from ServiceGroupe m, ServiceFonctiongroupe f where m.id=f.fkGroupe.id and m.id=:groupe ").setParameter("groupe", groupe.getId()).uniqueResult();
|
||||
return count.intValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServiceFonctiongroupe getFonctiongroupeById(UUID id) {
|
||||
return (ServiceFonctiongroupe)getCurrentSession().createQuery("select m from ServiceFonctiongroupe m where m.id=:id ").setParameter("id", id).setMaxResults(1).uniqueResult();
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,6 +20,7 @@ import com.triz.trizservice.modeles.Wilaya;
|
||||
import com.triz.trizservice.service.DaoService;
|
||||
import com.triz.trizservice.service.TransactionService;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -66,7 +67,7 @@ public class TransactionServiceImpl implements TransactionService {
|
||||
|
||||
@Transactional("transactionManager")
|
||||
@Override
|
||||
public ServiceGroupe getGroupsById(String id) {
|
||||
public ServiceGroupe getGroupsById(UUID id) {
|
||||
return daoService.getGroupsById(id);
|
||||
}
|
||||
|
||||
@ -285,4 +286,22 @@ public class TransactionServiceImpl implements TransactionService {
|
||||
public List<Wilaya> getAllWilaya() {
|
||||
return daoService.getAllWilaya();
|
||||
}
|
||||
|
||||
@Transactional("transactionManager")
|
||||
@Override
|
||||
public int getNbrUtilisateurParGroupe(ServiceGroupe groupe) {
|
||||
return daoService.getNbrUtilisateurParGroupe(groupe);
|
||||
}
|
||||
|
||||
@Transactional("transactionManager")
|
||||
@Override
|
||||
public int getNbrFonctionnaliteParGroupe(ServiceGroupe groupe) {
|
||||
return daoService.getNbrFonctionnaliteParGroupe(groupe);
|
||||
}
|
||||
|
||||
@Transactional("transactionManager")
|
||||
@Override
|
||||
public ServiceFonctiongroupe getFonctiongroupeById(UUID id) {
|
||||
return daoService.getFonctiongroupeById(id);
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,6 +27,7 @@ import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
@ -100,7 +101,6 @@ public class UtilContext {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static ServiceIncrementation remiseAZeroIncr(ServiceIncrementation incr) {
|
||||
System.out.println(" remiseAZeroIncr ");
|
||||
Date date = new Date();
|
||||
@ -323,7 +323,7 @@ public class UtilContext {
|
||||
}
|
||||
|
||||
public String createZipFile(String bakFile, String bakFileName, String folder_name_origine) throws IOException {
|
||||
System.out.println("createZipFile"+ bakFile);
|
||||
System.out.println("createZipFile" + bakFile);
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMddHHmm");
|
||||
String fileOutput_name = bakFileName + ".zip";
|
||||
|
||||
@ -352,6 +352,7 @@ public class UtilContext {
|
||||
|
||||
String typeContenentBAK = "application/bak";
|
||||
String typeContenentZip = "application/zip";
|
||||
|
||||
public StreamedContent getFileContent(String typeContenent, String pathGet) throws IOException {
|
||||
|
||||
System.out.println("get file content --starts");
|
||||
@ -422,14 +423,15 @@ public class UtilContext {
|
||||
|
||||
public void saveNewManipulation(String nomTable, String idLigne, String typeManipulation, Date date, Date heur, ServiceUser user, String oldValour, String newValeur) {
|
||||
historiqueManipulation = new ServiceHistoriqueManipulation();
|
||||
historiqueManipulation.setFkManipulateur(user);
|
||||
|
||||
historiqueManipulation.setFkUser(user);
|
||||
historiqueManipulation.setIdLigne(idLigne);
|
||||
historiqueManipulation.setNomTable(nomTable);
|
||||
historiqueManipulation.setTypeManipumation(typeManipulation);
|
||||
historiqueManipulation.setTypeManipulation(typeManipulation);
|
||||
historiqueManipulation.setOldValeur(oldValour);
|
||||
historiqueManipulation.setNewValeur(newValeur);
|
||||
historiqueManipulation.setDateManipulation(new Date());
|
||||
historiqueManipulation.setHeurManipulation(new Date());
|
||||
historiqueManipulation.setHeureManipulation(new Date());
|
||||
service.save(historiqueManipulation);
|
||||
}
|
||||
|
||||
@ -452,8 +454,6 @@ public class UtilContext {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public boolean canChangeEtablissement() {
|
||||
ServiceUser user = getCurrentUser();
|
||||
List<Centre> listeEtablissement = service.getAllStockEtablissementFromUsersEtablissementByUser(user);
|
||||
|
||||
@ -620,3 +620,6 @@ INSERT INTO service_fonctionnaliter (id, nom) VALUES
|
||||
('medecins', 'Médecins'),
|
||||
('groupes', 'Groupes et fonctionnalités');
|
||||
|
||||
|
||||
ALTER TABLE service_fonctiongroupe
|
||||
ADD COLUMN can_see boolean;
|
||||
|
||||
@ -4305,3 +4305,5 @@ service.page.Telephone.ajouter = Ajouter Telephone
|
||||
service.page.Telephone.liste.message.non=Pas de telephone enregistr\u00e9 !
|
||||
distribution.buttons.changerEtablissement=changer Centre
|
||||
distribution.page.etablissement.selectionner=Veuillez s\u00e9l\u00e9ctionner un centre
|
||||
distribution.page.fonctionGroup.voir=Voir
|
||||
distribution.page.fonctionGroup.modifierCeJour=modifier le jour meme
|
||||
@ -81,103 +81,91 @@
|
||||
|
||||
<pu:menu widgetVar="layoutMenuWidget">
|
||||
|
||||
<!-- ========================================================= -->
|
||||
<!-- DASHBOARD -->
|
||||
<!-- ========================================================= -->
|
||||
|
||||
<p:submenu id="m_dashboard"
|
||||
label=""
|
||||
rendered="#{utilControleAccess.isshow1('dashboard')}">
|
||||
rendered="#{utilControleAccess.isshow1('accueil')}">
|
||||
|
||||
<p:menuitem id="m_dashboardsales"
|
||||
value="Statistique"
|
||||
icon="pi pi-chart-bar"
|
||||
url="#{request.contextPath}/favorites/dashboard.xhtml"
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('dashboard')}" />
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('accueil')}" />
|
||||
|
||||
</p:submenu>
|
||||
|
||||
|
||||
<!-- ========================================================= -->
|
||||
<!-- FLUX PATIENT -->
|
||||
<!-- ========================================================= -->
|
||||
|
||||
<p:submenu id="m_donnee"
|
||||
label="Flux Patient"
|
||||
icon="pi pi-fw pi-database"
|
||||
rendered="#{utilControleAccess.isshow1('rendez_vous')
|
||||
or utilControleAccess.isshow1('file_attente')
|
||||
or utilControleAccess.isshow1('examens')
|
||||
or utilControleAccess.isshow1('dossier_patients')}">
|
||||
rendered="#{utilControleAccess.isshow1('rdv')
|
||||
or utilControleAccess.isshow1('attente')
|
||||
or utilControleAccess.isshow1('exam')
|
||||
or utilControleAccess.isshow1('dossier')}">
|
||||
|
||||
<p:menuitem id="m_rendez_vous"
|
||||
value="Rendez-vous"
|
||||
icon="pi pi-calendar"
|
||||
url="#{request.contextPath}/views/client/listeClient.xhtml?idpage=Suivis_flotte"
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('rendez_vous')}" />
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('rdv')}" />
|
||||
|
||||
<p:menuitem id="m_file_attente"
|
||||
value="File d’attente"
|
||||
icon="pi pi-users"
|
||||
url="#{request.contextPath}/views/secteur/list.xhtml?idpage=Suivis_flotte"
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('file_attente')}" />
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('attente')}" />
|
||||
|
||||
<p:menuitem id="m_examen"
|
||||
value="Examens"
|
||||
icon="pi pi-heart"
|
||||
url="#{request.contextPath}/views/secteur/list.xhtml?idpage=Suivis_flotte"
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('examens')}" />
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('exam')}" />
|
||||
|
||||
<p:menuitem id="m_dossier_patients"
|
||||
value="Dossier patients"
|
||||
icon="pi pi-id-card"
|
||||
url="#{request.contextPath}/views/client/listeClient.xhtml?idpage=Suivis_flotte"
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('dossier_patients')}" />
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('dossier')}" />
|
||||
|
||||
</p:submenu>
|
||||
|
||||
|
||||
<!-- ========================================================= -->
|
||||
<!-- SYSTEME -->
|
||||
<!-- ========================================================= -->
|
||||
|
||||
<p:submenu id="m_Traitement"
|
||||
label="Système"
|
||||
icon="pi pi-arrow-right-arrow-left"
|
||||
rendered="#{utilControleAccess.isshow1('dicom')
|
||||
or utilControleAccess.isshow1('parametres')}">
|
||||
rendered="#{utilControleAccess.isshow1('pacs')
|
||||
or utilControleAccess.isshow1('param')}">
|
||||
|
||||
<p:menuitem id="m_Tiersmouvement"
|
||||
value="DICOM / PACS"
|
||||
icon="pi pi-database"
|
||||
url="#{request.contextPath}/views/client/listeClient.xhtml?idpage=Suivis_flotte"
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('dicom')}" />
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('pacs')}" />
|
||||
|
||||
<p:menuitem id="m_Tiersletterage"
|
||||
value="Paramètres"
|
||||
icon="pi pi-cog"
|
||||
url="#{request.contextPath}/views/client/listeClient.xhtml?idpage=Suivis_flotte"
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('parametres')}" />
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('param')}" />
|
||||
|
||||
</p:submenu>
|
||||
|
||||
|
||||
<!-- ========================================================= -->
|
||||
<!-- ADMINISTRATION -->
|
||||
<!-- ========================================================= -->
|
||||
|
||||
<p:submenu id="m_admin"
|
||||
label="Administration"
|
||||
icon="pi pi-cog"
|
||||
rendered="#{utilControleAccess.isshow1('user')
|
||||
rendered="#{utilControleAccess.isshow1('users')
|
||||
or utilControleAccess.isshow1('medecins')
|
||||
or utilControleAccess.isshow1('groupe')}">
|
||||
or utilControleAccess.isshow1('groupes')}">
|
||||
|
||||
<p:menuitem id="m_utilisateurs"
|
||||
value="Utilisateurs & Audit"
|
||||
icon="pi pi-shield"
|
||||
url="#{request.contextPath}/views/user/list.xhtml?idpage=Suivis_flotte"
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('user')}" />
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('users')}" />
|
||||
|
||||
<p:menuitem id="m_medecins"
|
||||
value="Médecins"
|
||||
@ -189,10 +177,9 @@
|
||||
value="Groupes et fonctionnalités"
|
||||
icon="pi pi-lock"
|
||||
url="#{request.contextPath}/views/groupe/list.xhtml?idpage=Suivis_flotte"
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('groupe')}" />
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('groupes')}" />
|
||||
|
||||
</p:submenu>
|
||||
|
||||
</pu:menu>
|
||||
<ui:fragment rendered="#{app.isBottomInlineMenu() or app.isBothInlineMenu()}">
|
||||
<ui:include src="inlinemenu.xhtml" />
|
||||
|
||||
@ -15,179 +15,276 @@
|
||||
<ui:define name="content">
|
||||
#{formGroupBean.init()}
|
||||
<h:form id="form">
|
||||
<div class="card">
|
||||
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 2rem;">
|
||||
<style>
|
||||
.groupe-card {
|
||||
border-radius: 8px;
|
||||
border: 0.5px solid #B4B2A9;
|
||||
box-shadow: none;
|
||||
}
|
||||
.groupe-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
.groupe-header .retour-btn.ui-button {
|
||||
border-radius: 8px;
|
||||
background: #FFFFFF;
|
||||
color: #333333;
|
||||
border: 0.5px solid #B4B2A9;
|
||||
}
|
||||
.groupe-header .retour-btn.ui-button:hover {
|
||||
background: #F1EFE8;
|
||||
}
|
||||
.groupe-nom-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
.groupe-nom-row label {
|
||||
font-weight: bold;
|
||||
min-width: 140px;
|
||||
}
|
||||
.groupe-nom-row .ui-inputtext {
|
||||
width: 300px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
<div style="width: 150px;">
|
||||
/* Bouton Ajouter (au-dessus du tableau) */
|
||||
#form\:dataTable .ajouter-btn.ui-button {
|
||||
background-color: #0D9488;
|
||||
border-color: #0D9488;
|
||||
border-radius: 20px;
|
||||
}
|
||||
#form\:dataTable .ajouter-btn.ui-button:hover {
|
||||
background-color: rgba(13, 148, 136, 0.85);
|
||||
border-color: rgba(13, 148, 136, 0.85);
|
||||
}
|
||||
|
||||
/* Bouton Supprimer par ligne */
|
||||
.delete-row-btn.ui-button {
|
||||
background-color: #E74C3C;
|
||||
border-color: #E74C3C;
|
||||
border-radius: 8px;
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
}
|
||||
.delete-row-btn.ui-button:hover {
|
||||
background-color: #c0392b;
|
||||
border-color: #c0392b;
|
||||
}
|
||||
|
||||
/* Bouton Modifier (header) */
|
||||
.groupe-header .modifier-btn.ui-button {
|
||||
background-color: #0D9488 !important;
|
||||
border-color: #0D9488 !important;
|
||||
}
|
||||
.groupe-header .modifier-btn.ui-button:hover {
|
||||
background-color: rgba(13, 148, 136, 0.85) !important;
|
||||
border-color: rgba(13, 148, 136, 0.85) !important;
|
||||
}
|
||||
|
||||
/* Checkboxes cochées (mode édition) */
|
||||
#form\:dataTable .ui-chkbox-box.ui-state-active {
|
||||
background-color: #0D9488 !important;
|
||||
border-color: #0D9488 !important;
|
||||
}
|
||||
#form\:dataTable .ui-chkbox-box.ui-state-active .ui-chkbox-icon {
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
#form\:dataTable .ui-chkbox-box:not(.ui-state-disabled):hover {
|
||||
border-color: #0D9488;
|
||||
}
|
||||
|
||||
/* Checkboxes cochées ET désactivées (mode lecture) - même vert plein */
|
||||
#form\:dataTable .ui-chkbox-box.ui-state-active.ui-state-disabled {
|
||||
background-color: #0D9488 !important;
|
||||
border-color: #0D9488 !important;
|
||||
opacity: 1 !important;
|
||||
}
|
||||
#form\:dataTable .ui-chkbox-box.ui-state-active.ui-state-disabled .ui-chkbox-icon {
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
.groupe-header .modifier-btn.ui-button:hover {
|
||||
background-color: rgba(13, 148, 136, 0.85);
|
||||
border-color: rgba(13, 148, 136, 0.85);
|
||||
}
|
||||
/* Boutons verts : teal */
|
||||
.btn-teal.ui-button {
|
||||
background: #0D9488 !important;
|
||||
border-color: #0D9488 !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
.btn-teal.ui-button:hover {
|
||||
background: #0B7F74 !important;
|
||||
border-color: #0B7F74 !important;
|
||||
}
|
||||
|
||||
/* Bouton loupe : radius réduit, pas circulaire */
|
||||
.btn-teal-round.ui-button {
|
||||
background: #0D9488 !important;
|
||||
border-color: #0D9488 !important;
|
||||
color: #FFFFFF !important;
|
||||
border-radius: 6px !important;
|
||||
width: 34px !important;
|
||||
height: 34px !important;
|
||||
}
|
||||
.btn-teal-round.ui-button:hover {
|
||||
background: #0B7F74 !important;
|
||||
border-color: #0B7F74 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="card groupe-card">
|
||||
|
||||
<div class="groupe-header">
|
||||
<p:commandButton value="#{msg['distribution.page.etatVGlobal.retour']}" icon="pi pi-arrow-left"
|
||||
action="#{formGroupBean.voirGroupe()}" ajax="false"
|
||||
styleClass="ui-button-primary" />
|
||||
</div>
|
||||
<div style="flex-grow: 1; text-align: center; font-size: 1.3rem; font-weight: bold; color: #333;">
|
||||
<h:outputText value="Groupe : #{formGroupBean.groupeSelected.nomGroupe}" />
|
||||
</div>
|
||||
<div style=" text-align: right; display: flex; gap: 5px;">
|
||||
|
||||
styleClass="retour-btn" />
|
||||
|
||||
<div style="display: flex; gap: 5px;">
|
||||
<p:commandButton value="#{msg['distribution.page.supprimer']}" icon="pi pi-trash"
|
||||
rendered="#{ formGroupBean.canEdit and !formGroupBean.isNew}"
|
||||
rendered="#{formGroupBean.canEdit and !formGroupBean.isNew}"
|
||||
action="#{formGroupBean.supprimeGroupe()}" ajax="false"
|
||||
styleClass="ui-button-danger" />
|
||||
styleClass="ui-button-danger"
|
||||
rendered="#{utilControleAccess.isshowPrivilegeRemove('groupes')}"/>
|
||||
|
||||
<p:commandButton value="#{msg['distribution.page.enregistrer']}" icon="pi pi-save"
|
||||
rendered="#{ formGroupBean.canEdit}"
|
||||
rendered="#{formGroupBean.canEdit}"
|
||||
action="#{formGroupBean.saveGroupe()}"
|
||||
styleClass="ui-button-success" />
|
||||
|
||||
<p:commandButton value="#{msg['distribution.page.modifier']}" icon="pi pi-pencil"
|
||||
rendered="#{ !formGroupBean.canEdit}"
|
||||
rendered="#{!formGroupBean.canEdit}"
|
||||
action="#{formGroupBean.editGroupe()}"
|
||||
styleClass="ui-button-primary" />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div style="width: 100%; height: 100%; display: flex; margin-bottom: 1px;" >
|
||||
<p:card id="card" style="width: 35%; height: 750px; text-align: center; max-height: 100%" rendered="#{!formGroupBean.canEdit}">
|
||||
<div style="flex-grow: 1; text-align: center; font-size: 1.3rem; font-weight: bold; color: #333; color: #3F51B5;">
|
||||
<h:outputText value="#{formGroupBean.groupeSelected.nomGroupe}" />
|
||||
</div>
|
||||
<p:panelGrid columns="2" style="margin-top: 30px; text-align:left">
|
||||
<p:column>
|
||||
<i class="pi pi-id-card" style="margin-right: 5px"></i>
|
||||
<p:outputLabel value="#{msg['distribution.page.groupe.nom']}" style="color: #3F51B5; font-weight: bold" />
|
||||
</p:column>
|
||||
<p:column>
|
||||
<p:outputLabel id="id" value="#{formGroupBean.groupeSelected.nomGroupe}" />
|
||||
</p:column>
|
||||
</p:panelGrid>
|
||||
|
||||
</p:card>
|
||||
<div style="width: 75%; height: 100%; margin-left: 1%;">
|
||||
<p:card style=" width: 100%; min-height: 750px; top: 160px; height: 100% " rendered="#{!formGroupBean.canEdit}" >
|
||||
<p:tabView scrollable="true">
|
||||
<p:tab title="#{msg['distribution.page.groupe.listeDeFonctionaliteGroupe']}" >
|
||||
<p:dataTable id="dataTable" var="fonctionGroup"
|
||||
rows="30" paginator="true" draggableColumns="true"
|
||||
value="#{formGroupBean.listeFonctionnalite}"
|
||||
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
|
||||
rowsPerPageTemplate="20,30,40,60,80,100"
|
||||
selectionMode="single"
|
||||
rowKey="#{fonctionGroup.id}">
|
||||
|
||||
<p:column style=" text-align: center;" headerText="#{msg['distribution.page.fonctionalite.nom']}"
|
||||
sortBy="#{fonctionGroup.fkFonction.fonction}" >
|
||||
<h:outputText value="#{fonctionGroup.fkFonction.nom}" />
|
||||
</p:column>
|
||||
|
||||
<p:column style=" text-align: center;" headerText="#{msg['distribution.page.fonctionGroup.add']}"
|
||||
>
|
||||
<h:outputText value="#{fonctionGroup.canCreate=='true'? 'Oui' : 'Non'}" rendered="#{!formGroupBean.canEdit}"/>
|
||||
</p:column>
|
||||
<p:column style=" text-align: center;" headerText="#{msg['distribution.page.fonctionGroup.modifier']}"
|
||||
>
|
||||
<h:outputText value="#{fonctionGroup.canUpdate=='true'? 'Oui' : 'Non'}" rendered="#{!formGroupBean.canEdit}"/>
|
||||
</p:column>
|
||||
|
||||
<p:column style=" text-align: center;" headerText="#{msg['distribution.page.fonctionGroup.canChangePrice']}"
|
||||
>
|
||||
<h:outputText value="#{fonctionGroup.canDelete=='true'? 'Oui' : 'Non'}" rendered="#{!formGroupBean.canEdit}"/>
|
||||
</p:column>
|
||||
<p:column style=" text-align: center;" headerText="#{msg['distribution.page.fonctionGroup.canChangeDate']}"
|
||||
>
|
||||
<h:outputText value="#{fonctionGroup.canUpdateDate=='true'? 'Oui' : 'Non'}" rendered="#{!formGroupBean.canEdit}"/>
|
||||
</p:column>
|
||||
|
||||
</p:dataTable>
|
||||
</p:tab>
|
||||
</p:tabView>
|
||||
</p:card>
|
||||
styleClass="modifier-btn"
|
||||
rendered="#{utilControleAccess.isshowPrivilegeUpdate('groupes')}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 100%; display: flex; flex-direction: column; margin-bottom: 1px; border: none; box-shadow: none;">
|
||||
<p:card id="cardModif" style="width: 100%; border: none; box-shadow: none;" rendered="#{formGroupBean.canEdit}">
|
||||
<p:panelGrid columns="2" style="margin-bottom: 30px; text-align: left;" columnClasses="ui-grid-col-3,ui-grid-col-9">
|
||||
<p:outputLabel for="idMod" styleClass="ui-outputlabel"
|
||||
style="font-weight: bold; font-size: 1.3rem;">
|
||||
#{msg['distribution.page.groupe.nom']}
|
||||
</p:outputLabel>
|
||||
|
||||
<div class="groupe-nom-row">
|
||||
<p:outputLabel for="idMod" value="#{msg['distribution.page.groupe.nom']} " />
|
||||
<p:inputText id="idMod"
|
||||
value="#{formGroupBean.groupeSelected.nomGroupe}"
|
||||
disabled="#{!formGroupBean.canEdit}"
|
||||
required="true"
|
||||
requiredMessage="Le nom du groupe est obligatoire." />
|
||||
</p:panelGrid>
|
||||
</div>
|
||||
|
||||
<p:divider/>
|
||||
<div class="groupe-nom-row">
|
||||
<p:outputLabel for="actif" value="#{msg['distribution.page.user.actf']} " />
|
||||
|
||||
<p:selectOneMenu
|
||||
id="actif"
|
||||
value="#{formGroupBean.groupeSelected.actif}"
|
||||
disabled="#{!formGroupBean.canEdit}"
|
||||
requiredMessage="veuillez definir le statut de ce groupe"
|
||||
required="true">
|
||||
<f:selectItem itemLabel="Oui" itemValue="true" />
|
||||
<f:selectItem itemLabel="Non" itemValue="false" />
|
||||
|
||||
<p:ajax event="change" />
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
|
||||
<p:tabView>
|
||||
<p:tab title="#{msg['distribution.page.groupe.listeDeFonctionaliteGroupe']}">
|
||||
<p:dataTable id="dataTable"
|
||||
var="fonctionGroup"
|
||||
value="#{formGroupBean.listeFonctionnalite}"
|
||||
selection="#{formGroupBean.fonctionSelected}"
|
||||
rowKey="#{fonctionGroup.id}"
|
||||
selectionMode="single"
|
||||
rows="30" paginator="true" draggableColumns="true"
|
||||
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
|
||||
rowsPerPageTemplate="20,30,40,60,80,100"
|
||||
styleClass="ui-datatable-striped">
|
||||
|
||||
<f:facet name="header">
|
||||
<div class="flex justify-content-between align-items-center">
|
||||
<div>
|
||||
</div>
|
||||
<div>
|
||||
<p:commandButton title="#{msg['service.page.Service.ajouter.fonction']}" icon="pi pi-plus" styleClass="ui-button-success mr-2" oncomplete="PF('dlg2').show()" />
|
||||
</div>
|
||||
<div class="flex justify-content-end align-items-center">
|
||||
<p:commandButton value="#{msg['distribution.page.inventaire.facture.ajouter']}"
|
||||
icon="pi pi-plus"
|
||||
rendered="#{formGroupBean.canEdit}"
|
||||
styleClass="btn-teal"
|
||||
oncomplete="PF('dlg2').show()" />
|
||||
</div>
|
||||
</f:facet>
|
||||
|
||||
<p:column style="text-align: center; width: 30px;">
|
||||
<p:commandButton class="ui-button-warning rounded-button" icon="pi pi-trash"
|
||||
<p:column style="text-align: center; width: 40px;" rendered="#{formGroupBean.canEdit}">
|
||||
<p:commandButton icon="pi pi-trash"
|
||||
styleClass="delete-row-btn rounded-button"
|
||||
process="@this"
|
||||
oncomplete="PF('deleteProductDialog').show()">
|
||||
<f:setPropertyActionListener value="#{fonctionGroup}" target="#{formGroupBean.fonctionSelected}" />
|
||||
</p:commandButton>
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="#{msg['distribution.page.fonctionalite.nom']}" sortBy="#{fonctionGroup.fkFonction.fonction}" style="text-align: center;">
|
||||
<h:outputText value="#{fonctionGroup.fkFonction.nom}" />
|
||||
<p:column headerText="#{msg['distribution.page.fonctionalite.nom']}"
|
||||
sortBy="#{fonctionGroup.fkFonctionnalite.nom}"
|
||||
filterBy="#{fonctionGroup.fkFonctionnalite.nom}" filterMatchMode="contains"
|
||||
style="text-align: center;">
|
||||
<h:outputText value="#{fonctionGroup.fkFonctionnalite.nom}" />
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="#{msg['distribution.page.fonctionGroup.add']}" style="text-align: center;">
|
||||
<p:selectBooleanCheckbox value="#{fonctionGroup.canCreate}" rendered="#{formGroupBean.canEdit}">
|
||||
<p:column headerText="#{msg['distribution.page.fonctionGroup.voir']}"
|
||||
style="text-align: center;" sortBy="#{fonctionGroup.canSee}">
|
||||
<p:selectBooleanCheckbox value="#{fonctionGroup.canSee}" disabled="#{!formGroupBean.canEdit}">
|
||||
<p:ajax />
|
||||
</p:selectBooleanCheckbox>
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="#{msg['distribution.page.fonctionGroup.modifier']}" style="text-align: center;">
|
||||
<p:selectBooleanCheckbox value="#{fonctionGroup.canUpdate}" rendered="#{formGroupBean.canEdit}">
|
||||
<p:column headerText="#{msg['distribution.page.fonctionGroup.modifier']}"
|
||||
sortBy="#{fonctionGroup.canUpdate}" style="text-align: center;">
|
||||
<p:selectBooleanCheckbox value="#{fonctionGroup.canUpdate}" disabled="#{!formGroupBean.canEdit}">
|
||||
<p:ajax />
|
||||
</p:selectBooleanCheckbox>
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="#{msg['distribution.page.supprimer']}" style="text-align: center;">
|
||||
<p:selectBooleanCheckbox value="#{fonctionGroup.canDelete}" rendered="#{formGroupBean.canEdit}">
|
||||
<p:column headerText="#{msg['distribution.page.fonctionGroup.add']}"
|
||||
sortBy="#{fonctionGroup.canCreate}" style="text-align: center;">
|
||||
<p:selectBooleanCheckbox value="#{fonctionGroup.canCreate}" disabled="#{!formGroupBean.canEdit}">
|
||||
<p:ajax />
|
||||
</p:selectBooleanCheckbox>
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="#{msg['distribution.page.fonctionGroup.canChangeDate']}" style="text-align: center;">
|
||||
<p:selectBooleanCheckbox value="#{fonctionGroup.canUpdateDate}" rendered="#{formGroupBean.canEdit}">
|
||||
<p:column headerText="#{msg['distribution.page.supprimer']}"
|
||||
sortBy="#{fonctionGroup.canDelete}" style="text-align: center;">
|
||||
<p:selectBooleanCheckbox value="#{fonctionGroup.canDelete}" disabled="#{!formGroupBean.canEdit}">
|
||||
<p:ajax />
|
||||
</p:selectBooleanCheckbox>
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="#{msg['distribution.page.fonctionGroup.modifierCeJour']}"
|
||||
sortBy="#{fonctionGroup.modifierCeJour}" style="text-align: center;">
|
||||
<p:selectBooleanCheckbox value="#{fonctionGroup.modifierCeJour}" disabled="#{!formGroupBean.canEdit}">
|
||||
<p:ajax />
|
||||
</p:selectBooleanCheckbox>
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="#{msg['distribution.page.fonctionGroup.canChangeDate']}"
|
||||
sortBy="#{fonctionGroup.canUpdateDate}" style="text-align: center;">
|
||||
<p:selectBooleanCheckbox value="#{fonctionGroup.canUpdateDate}" disabled="#{!formGroupBean.canEdit}">
|
||||
<p:ajax />
|
||||
</p:selectBooleanCheckbox>
|
||||
</p:column>
|
||||
|
||||
</p:dataTable>
|
||||
</p:tab>
|
||||
</p:tabView>
|
||||
</p:card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p:confirmDialog widgetVar="deleteProductDialog" showEffect="fade" width="400"
|
||||
message="#{msg['distribution.page.supprimer.confirmation']}" header="Confirm" severity="warn">
|
||||
<p:commandButton value="#{msg['distribution.page.oui']}" icon="pi pi-check" actionListener="#{formGroupBean.deletefonction}"
|
||||
process="@this" update=":form:cardModif"
|
||||
process="@this" update=":form:dataTable"
|
||||
oncomplete="PF('deleteProductDialog').hide()" />
|
||||
<p:commandButton value="#{msg['distribution.page.non']}" type="button" styleClass="ui-button-secondary" icon="pi pi-times"
|
||||
onclick="PF('deleteProductDialog').hide()" />
|
||||
</p:confirmDialog>
|
||||
<p:dialog header="Ajouter des fonctionnalité" widgetVar="dlg2" position="center,top" width="1100" height="550" >
|
||||
|
||||
|
||||
</h:form>
|
||||
|
||||
|
||||
<h:form id="dg">
|
||||
<p:dialog header="Ajouter des fonctionnalité" widgetVar="dlg2" position="center,top" width="1100" height="550">
|
||||
<p:dataTable id="dataTableNonVisite" var="fonction"
|
||||
value="#{formGroupBean.source}"
|
||||
selection="#{formGroupBean.target}"
|
||||
@ -195,18 +292,15 @@
|
||||
paginator="true" rows="20"
|
||||
rowKey="#{fonction.id}">
|
||||
<f:facet name="header">
|
||||
<div class="flex justify-content-between align-items-center">
|
||||
<div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="flex justify-content-end align-items-center">
|
||||
<p:commandButton value="#{msg['distribution.page.inventaire.facture.ajouter']}"
|
||||
icon="pi pi-check"
|
||||
action="#{formGroupBean.ajouterFonctionnalitesAuGroupe}"
|
||||
action="#{formGroupBean.ajouterFonctionnalitesAuGroupe()}"
|
||||
process="@form"
|
||||
update=":form:cardModif"
|
||||
update=":form:dataTable"
|
||||
styleClass="btn-teal"
|
||||
oncomplete="PF('dlg2').hide()" />
|
||||
</div>
|
||||
</div>
|
||||
</f:facet>
|
||||
<p:column selectionMode="multiple" style="text-align:center;width: 16px;"/>
|
||||
|
||||
|
||||
@ -14,11 +14,136 @@
|
||||
<f:viewParam name="value" value="Groupes et Fonctionnalités" />
|
||||
</f:metadata>
|
||||
</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<h:form>
|
||||
|
||||
<style type="text/css">
|
||||
/* --- Wrapper pour centrage vertical --- */
|
||||
.tabview-vcenter-wrapper {
|
||||
display: flex !important;
|
||||
flex-direction: column !important;
|
||||
justify-content: center !important;
|
||||
min-height: calc(100vh - 350px) !important; /* ajuste selon hauteur topbar+breadcrumb */
|
||||
}
|
||||
|
||||
/* Conteneur tabview */
|
||||
.transparent-tabview.ui-tabs {
|
||||
background: transparent !important;
|
||||
border: none !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
/* Barre de navigation des onglets */
|
||||
.transparent-tabview .ui-tabs-nav {
|
||||
background: transparent !important;
|
||||
border: none !important;
|
||||
border-bottom: 1px solid #E5E3DB !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
/* Chaque onglet : li devient le conteneur du hover */
|
||||
.transparent-tabview .ui-tabs-nav li {
|
||||
background: transparent !important;
|
||||
border: none !important;
|
||||
margin: 0 4px 0 0 !important;
|
||||
border-radius: 6px 6px 0 0 !important;
|
||||
overflow: hidden !important;
|
||||
transition: background-color 0.2s ease !important;
|
||||
}
|
||||
|
||||
/* Hover appliqué sur le li entier, opacité réduite */
|
||||
.transparent-tabview .ui-tabs-nav li:not(.ui-state-active):hover {
|
||||
background-color: rgba(13, 148, 136, 0.08) !important;
|
||||
}
|
||||
|
||||
.transparent-tabview .ui-tabs-nav li .ui-tabs-anchor {
|
||||
background: transparent !important;
|
||||
border: none !important;
|
||||
color: #6B7280 !important;
|
||||
padding: 0.85rem 1.25rem !important;
|
||||
font-weight: 500 !important;
|
||||
display: block !important;
|
||||
transition: color 0.2s ease !important;
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
/* Texte/icône passent en teal au survol, sans re-déclencher de fond sur l'anchor */
|
||||
.transparent-tabview .ui-tabs-nav li:not(.ui-state-active):hover .ui-tabs-anchor,
|
||||
.transparent-tabview .ui-tabs-nav li:not(.ui-state-active):hover .ui-tabs-anchor i {
|
||||
color: #0D9488 !important;
|
||||
}
|
||||
|
||||
/* Onglet actif : figé sur le style hover (fond + texte + icône) */
|
||||
.transparent-tabview .ui-tabs-nav li.ui-state-active {
|
||||
background-color: rgba(13, 148, 136, 0.08) !important;
|
||||
border: none !important;
|
||||
border-radius: 6px 6px 0 0 !important;
|
||||
}
|
||||
|
||||
.transparent-tabview .ui-tabs-nav li.ui-state-active .ui-tabs-anchor,
|
||||
.transparent-tabview .ui-tabs-nav li.ui-state-active .ui-tabs-anchor span,
|
||||
.transparent-tabview .ui-tabs-nav li.ui-state-active .ui-tabs-anchor i,
|
||||
.transparent-tabview .ui-tabs-nav li.ui-state-active a,
|
||||
.transparent-tabview .ui-tabs-nav li.ui-state-active a i,
|
||||
.transparent-tabview .ui-tabs-nav li.ui-state-active a span {
|
||||
color: #0D9488 !important;
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
.transparent-tabview .ui-tabs-nav li.ui-state-active .ui-tabs-anchor {
|
||||
box-shadow: inset 0 -2px 0 0 #0D9488 !important;
|
||||
}
|
||||
|
||||
/* Panneaux */
|
||||
.transparent-tabview .ui-tabs-panel {
|
||||
background: transparent !important;
|
||||
border: none !important;
|
||||
padding: 1rem 0 0 0 !important;
|
||||
}
|
||||
|
||||
.transparent-tabview .ui-tabs-panels {
|
||||
background: transparent !important;
|
||||
border: none !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
/* Boutons verts : teal */
|
||||
.btn-teal.ui-button {
|
||||
background: #0D9488 !important;
|
||||
border-color: #0D9488 !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
.btn-teal.ui-button:hover {
|
||||
background: #0B7F74 !important;
|
||||
border-color: #0B7F74 !important;
|
||||
}
|
||||
|
||||
/* Bouton loupe : radius réduit, pas circulaire */
|
||||
.btn-teal-round.ui-button {
|
||||
background: #0D9488 !important;
|
||||
border-color: #0D9488 !important;
|
||||
color: #FFFFFF !important;
|
||||
border-radius: 6px !important;
|
||||
width: 34px !important;
|
||||
height: 34px !important;
|
||||
}
|
||||
.btn-teal-round.ui-button:hover {
|
||||
background: #0B7F74 !important;
|
||||
border-color: #0B7F74 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="tabview-vcenter-wrapper">
|
||||
<p:tabView id="tabview" scrollable="true" styleClass="transparent-tabview">
|
||||
|
||||
<p:tab>
|
||||
<f:facet name="title">
|
||||
<i class="pi pi-users mr-2" />
|
||||
#{msg['distribution.page.groupes']}
|
||||
</f:facet>
|
||||
|
||||
<div class="card">
|
||||
<p:tabView id="tabview" scrollable="true">
|
||||
<p:tab title="#{msg['distribution.page.groupes']}">
|
||||
<p:dataTable id="dataTable" var="groupe"
|
||||
rows="30" paginator="true" draggableColumns="true"
|
||||
value="#{groupBean.listeGroupe}"
|
||||
@ -28,29 +153,65 @@
|
||||
emptyMessage="#{msg['distribution.page.groupe.liste.message.non'] }"
|
||||
selectionMode="single"
|
||||
rowKey="#{groupe.id}" >
|
||||
|
||||
<f:facet name="header">
|
||||
<div class="flex justify-content-between align-items-center">
|
||||
<div></div>
|
||||
<div>
|
||||
</div>
|
||||
<div>
|
||||
<p:commandButton title="#{msg['distribution.page.groupe.ajoutergroupe']}" icon="pi pi-plus" styleClass="ui-button-success mr-2" action="#{groupBean.ajouterGroupe()}" />
|
||||
<p:commandButton icon="pi pi-file-excel"
|
||||
styleClass="btn-teal" style="margin-right: 5px"
|
||||
ajax="false">
|
||||
<p:dataExporter type="xls" target="dataTable" fileName="groupes" />
|
||||
</p:commandButton>
|
||||
|
||||
<p:commandButton icon="pi pi-file-pdf"
|
||||
styleClass="ui-button-danger mr-2"
|
||||
ajax="false">
|
||||
<p:dataExporter type="pdf" target="dataTable" fileName="groupes" />
|
||||
</p:commandButton>
|
||||
|
||||
<p:commandButton value="#{msg['distribution.page.groupe.ajoutergroupe']}"
|
||||
icon="pi pi-plus"
|
||||
styleClass="btn-teal"
|
||||
action="#{groupBean.ajouterGroupe()}"
|
||||
rendered="#{utilControleAccess.isshowPrivilegeAdd('groupes')}"/>
|
||||
</div>
|
||||
</div>
|
||||
</f:facet>
|
||||
|
||||
<p:column style=" text-align: center;" headerText="#{msg['distribution.page.groupe.nom']}" filterBy="#{groupe.nomGroupe}" filterMatchMode="contains" sortBy="#{groupe.nomGroupe}" >
|
||||
<p:column style="text-align: center;" headerText="#{msg['distribution.page.groupe.nom']}"
|
||||
filterBy="#{groupe.nomGroupe}" filterMatchMode="contains" sortBy="#{groupe.nomGroupe}">
|
||||
<h:outputText value="#{groupe.nomGroupe}" />
|
||||
</p:column>
|
||||
|
||||
<p:column style="width:130px; text-align: center;" exportable="false" visible="true" draggable="false" toggleable="false">
|
||||
|
||||
<p:commandButton id="buttonSelect" style="height:30px; text-align: center" action="#{groupBean.voirGroupe(groupe)}" icon="pi pi-search" title="#{msg['distribution.page.consulter']}">
|
||||
</p:commandButton>
|
||||
|
||||
<p:column style="text-align: center;" headerText="#{msg['distribution.page.Utilisateurs']}"
|
||||
filterMatchMode="contains" >
|
||||
<h:outputText value="#{groupBean.getNbrUtilisateur(groupe)}" />
|
||||
</p:column>
|
||||
|
||||
<p:column style="text-align: center;" headerText="#{msg['distribution.page.fonctionnalite']}"
|
||||
filterMatchMode="contains" >
|
||||
<h:outputText value="#{groupBean.getNbrFonctionnalite(groupe)}"/>
|
||||
</p:column>
|
||||
|
||||
<p:column style="width:80px; text-align: center;" exportable="false" visible="true" draggable="false" toggleable="false">
|
||||
<p:commandButton id="buttonSelect" style="height:34px;" styleClass="btn-teal-round"
|
||||
action="#{groupBean.voirGroupe(groupe)}"
|
||||
icon="pi pi-search"
|
||||
title="#{msg['distribution.page.consulter']}" />
|
||||
</p:column>
|
||||
|
||||
</p:dataTable>
|
||||
</div>
|
||||
</p:tab>
|
||||
<p:tab title="#{msg['distribution.page.fonctionnalite']}">
|
||||
|
||||
<p:tab>
|
||||
<f:facet name="title">
|
||||
<i class="pi pi-cog mr-2" />
|
||||
#{msg['distribution.page.fonctionnalite']}
|
||||
</f:facet>
|
||||
|
||||
<div class="card">
|
||||
<p:dataTable id="dataTable1" var="fonction"
|
||||
rows="30" paginator="true" draggableColumns="true"
|
||||
value="#{groupBean.listeFonctionnalite}"
|
||||
@ -60,11 +221,45 @@
|
||||
selectionMode="single"
|
||||
rowKey="#{fonction.id}" >
|
||||
|
||||
<p:column style=" text-align: center;" headerText="#{msg['distribution.page.fonctionalite.nom']}" filterBy="#{fonction.nom}" filterMatchMode="contains" sortBy="#{fonction.nom}" >
|
||||
<f:facet name="header">
|
||||
<div class="flex justify-content-between align-items-center">
|
||||
<div></div>
|
||||
<div>
|
||||
<p:commandButton icon="pi pi-file-excel"
|
||||
styleClass="btn-teal" style="margin-right: 5px"
|
||||
ajax="false">
|
||||
<p:dataExporter type="xls" target="dataTable" fileName="groupes" />
|
||||
</p:commandButton>
|
||||
|
||||
<p:commandButton icon="pi pi-file-pdf"
|
||||
styleClass="ui-button-danger mr-2"
|
||||
ajax="false">
|
||||
<p:dataExporter type="pdf" target="dataTable" fileName="groupes" />
|
||||
</p:commandButton>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</f:facet>
|
||||
|
||||
<p:column style="text-align: center;" headerText="#{msg['distribution.page.fonctionalite.nom']}"
|
||||
filterBy="#{fonction.nom}" filterMatchMode="contains" sortBy="#{fonction.nom}">
|
||||
<h:outputText value="#{fonction.nom}" />
|
||||
</p:column>
|
||||
|
||||
<p:column style="text-align: center;" headerText="#{msg['distribution.page.Utilisateurs']}"
|
||||
filterBy="#{fonction.nom}" filterMatchMode="contains" sortBy="#{fonction.nom}">
|
||||
<h:outputText value="#{fonction.nom}" />
|
||||
</p:column>
|
||||
|
||||
<p:column style="text-align: center;" headerText="#{msg['distribution.page.fonctionnalite']}"
|
||||
filterBy="#{fonction.nom}" filterMatchMode="contains" sortBy="#{fonction.nom}">
|
||||
<h:outputText value="#{fonction.nom}" />
|
||||
</p:column>
|
||||
</p:dataTable>
|
||||
</div>
|
||||
</p:tab>
|
||||
|
||||
</p:tabView>
|
||||
</div>
|
||||
</h:form>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user