package dao.implementation.mysql.chauffeur;
import gui.MainWindow;
import gui.util.TaxiGuiUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import modele.chauffeur.Chauffeur;
import modele.chauffeur.FichePaie;
import modele.commun.Etat;
import dao.IDao;
import dao.implementation.mysql.AccessMySql;
/**
* Class MySqlFichePaieDao
* @author Kasandra
*
*/
public class MySqlFichePaieDao implements IDao<FichePaie>{
private static final String INSERT_FICHEPAIE = "insert into tfichesalairechauffeur ( datePaieSalChauf,nbreJrTravPresteChauf,nbrHrTravPresteChauf, recetteSalBrutChauf, brutOnssChauf, precompteProfChauf, indemniteRgptChauf,cotisationSecuChauf, chargePatronalChauf,reductionBasRevenuChauf, salaireNetChauf, avanceSalChauf, montantAPayer, idChauf, idEtat) values (?,?,?, ?,?,?,?,?,?, ?,?,?,?,?,?)";
private static final String UPDATE_FICHEPAIE = "update tfichesalairechauffeur set datePaieSalChauf = ? ,nbreJrTravPresteChauf = ? ,nbrHrTravPresteChauf = ? , recetteSalBrutChauf = ?, brutOnssChauf = ?, precompteProfChauf = ? , indemniteRgptChauf = ?,cotisationSecuChauf = ?, chargePatronalChauf = ? ,reductionBasRevenuChauf = ? , salaireNetChauf = ? , avanceSalChauf = ?, montantAPayer = ? , idChauf = ? , idEtat = ? where idFicheSalChauf = ?";
private static final String DELETE_FICHEPAIE = "delete from tfichesalairechauffeur where idFicheSalChauf = ?";
private static final String GET_ALL_FICHEPAIE = "select idFicheSalChauf,datePaieSalChauf,nbreJrTravPresteChauf,nbrHrTravPresteChauf, recetteSalBrutChauf, brutOnssChauf, precompteProfChauf, indemniteRgptChauf,cotisationSecuChauf, chargePatronalChauf,reductionBasRevenuChauf, salaireNetChauf, avanceSalChauf, montantAPayer, tchauffeurs.idChauf, tchauffeurs.nomChauf, TEtat.idEtat,TEtat.descripEtat from tfichesalairechauffeur, tchauffeurs, TEtat where tchauffeurs.idChauf = tfichesalairechauffeur.idChauf and tfichesalairechauffeur.idEtat = TEtat.idEtat";
private static final String GET_FICHEPAIE_BY_ID = GET_ALL_FICHEPAIE + " and idFicheSalChauf = ?";
public void delete(final FichePaie fichePaie) {
AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
public void runWithconnection(Connection connection) {
try {
PreparedStatement smt = null;
try {
smt = connection.prepareStatement(DELETE_FICHEPAIE);
smt.setInt(1, fichePaie.getId());
smt.executeUpdate();
} finally {
if (smt != null) {
smt.close();
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
});
}
public FichePaie find(final int id) {
final FichePaie[] result = new FichePaie[1];
AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
public void runWithconnection(Connection connection) {
try {
PreparedStatement smt = null;
ResultSet res = null;
try {
smt = connection.prepareStatement(GET_FICHEPAIE_BY_ID);
smt.setInt(1, id);
res = smt.executeQuery();
if (res.next()) {
result[0] = new FichePaie(res.getInt(1));
Date datePaiement = new Date(res.getDate(2).getTime());
result[0].setDatePaie(datePaiement);
result[0].setNbrJourTravailPreste(res.getInt(3));
result[0].setNbrHrTravailPreste(res.getDouble(4));
result[0].setRecetteSalaireVrut(res.getDouble(5));
result[0].setBrutOnss(res.getDouble(6));
result[0].setPrecompteProfessionel(res.getDouble(7));
result[0].setIndemnite(res.getDouble(8));
result[0].setCotisationSecu(res.getDouble(9));
result[0].setChargePatronal(res.getDouble(10));
result[0].setReductionBasRevenu(res.getDouble(11));
result[0].setSalaireNet(res.getDouble(12));
result[0].setAvanceSalaire(res.getDouble(13));
result[0].setMontantAPayer(res.getDouble(14));
Chauffeur chauffeur = new Chauffeur(res.getInt(15));
chauffeur.setNom(res.getString(16));
result[0].setChauffeur(chauffeur);
Etat etat = new Etat(res.getInt(17));
etat.setDescrip(res.getString(18));
result[0].setEtat(etat);
}
} finally {
try {
if (res != null) {
res.close();
}
} finally {
if (smt != null) {
smt.close();
}
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
});
return result[0];
}
public ArrayList<FichePaie> findAll() {
final ArrayList<FichePaie> listeFichePaie = new ArrayList<FichePaie>();
AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
public void runWithconnection(Connection connection) {
try {
PreparedStatement smt = null;
ResultSet res = null;
try {
smt = connection.prepareStatement(GET_ALL_FICHEPAIE);
res = smt.executeQuery();
while (res.next()) {
FichePaie fichePaie = new FichePaie(res.getInt(1));
Date datePaie = new Date(res.getDate(2).getTime());
fichePaie.setDatePaie(datePaie);
fichePaie.setNbrJourTravailPreste(res.getInt(3));
fichePaie.setNbrHrTravailPreste(res.getDouble(4));
fichePaie.setRecetteSalaireVrut(res.getDouble(5));
fichePaie.setBrutOnss(res.getDouble(6));
fichePaie.setPrecompteProfessionel(res.getDouble(7));
fichePaie.setIndemnite(res.getDouble(8));
fichePaie.setCotisationSecu(res.getDouble(9));
fichePaie.setChargePatronal(res.getDouble(10));
fichePaie.setReductionBasRevenu(res.getDouble(11));
fichePaie.setSalaireNet(res.getDouble(12));
fichePaie.setAvanceSalaire(res.getDouble(13));
fichePaie.setMontantAPayer(res.getDouble(14));
Chauffeur chauffeur = new Chauffeur(res.getInt(15));
chauffeur.setNom(res.getString(16));
fichePaie.setChauffeur(chauffeur);
Etat etat = new Etat(res.getInt(17));
etat.setDescrip(res.getString(18));
fichePaie.setEtat(etat);
listeFichePaie.add(fichePaie);
}
} finally {
try {
if (res != null) {
res.close();
}
} finally {
if (smt != null) {
smt.close();
}
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
});
return listeFichePaie;
}
public FichePaie insert(final FichePaie fichePaie) {
final FichePaie[] result = new FichePaie[1];
result[0] = null;
AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
public void runWithconnection(Connection connection) {
try {
PreparedStatement psmt = null;
try {
psmt = connection.prepareStatement(INSERT_FICHEPAIE);
psmt.setDate(1,new java.sql.Date(fichePaie.getDatePaie().getTime()));
psmt.setInt(2,fichePaie.getNbrJourTravailPreste());
psmt.setDouble(3,fichePaie.getNbrHrTravailPreste());
psmt.setDouble(4,fichePaie.getRecetteSalaireBrut());
psmt.setDouble(5,fichePaie.getBrutOnss());
psmt.setDouble(6,fichePaie.getPrecompteProfessionel());
psmt.setDouble(7,fichePaie.getIndemnite());
psmt.setDouble(8,fichePaie.getCotisationSecu());
psmt.setDouble(9,fichePaie.getChargePatronal());
psmt.setDouble(10,fichePaie.getReductionBasRevenu());
psmt.setDouble(11,fichePaie.getSalaireNet());
psmt.setDouble(12,fichePaie.getAvanceSalaire());
psmt.setDouble(13,fichePaie.getMontantAPayer());
psmt.setInt(14, fichePaie.getChauffeur().getId());
psmt.setInt(15,fichePaie.getEtat().getCdeEtat());
psmt.executeUpdate();
} finally {
if (psmt != null) {
psmt.close();
}
}
Statement smt = null;
ResultSet res = null;
try {
smt = connection.createStatement();
res = smt.executeQuery("select idFicheSalChauf, datePaieSalChauf,nbreJrTravPresteChauf,nbrHrTravPresteChauf, recetteSalBrutChauf, brutOnssChauf, precompteProfChauf, indemniteRgptChauf,cotisationSecuChauf, chargePatronalChauf,reductionBasRevenuChauf, salaireNetChauf, avanceSalChauf, montantAPayer, tchauffeurs.idChauf, tchauffeurs.nomChauf, TEtat.idEtat,TEtat.descripEtat from tfichesalairechauffeur, tchauffeurs, TEtat where tfichesalairechauffeur.idChauf = tchauffeurs.idChauf and tfichesalairechauffeur.idEtat = TEtat.idEtat and idFicheSalChauf = LAST_INSERT_ID()");
if (res.next()) {
result[0] = new FichePaie(res.getInt(1));
Date datePaiement = new Date(res.getDate(2).getTime());
result[0].setDatePaie(datePaiement);
result[0].setNbrJourTravailPreste(res.getInt(3));
result[0].setNbrHrTravailPreste(res.getDouble(4));
result[0].setRecetteSalaireVrut(res.getDouble(5));
result[0].setBrutOnss(res.getDouble(6));
result[0].setPrecompteProfessionel(res.getDouble(7));
result[0].setIndemnite(res.getDouble(8));
result[0].setCotisationSecu(res.getDouble(9));
result[0].setChargePatronal(res.getDouble(10));
result[0].setReductionBasRevenu(res.getDouble(11));
result[0].setSalaireNet(res.getDouble(12));
result[0].setAvanceSalaire(res.getDouble(13));
result[0].setMontantAPayer(res.getDouble(14));
Chauffeur chauffeur = new Chauffeur(res.getInt(15));
chauffeur.setNom(res.getString(16));
result[0].setChauffeur(chauffeur);
Etat etat = new Etat(res.getInt(5));
etat.setDescrip(res.getString(6));
result[0].setEtat(etat);
}
} finally {
try {
if (res != null) {
res.close();
}
} finally {
if (smt != null) {
smt.close();
}
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
});
return result[0];
}
public FichePaie update(final FichePaie fichePaie) {
AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
public void runWithconnection(Connection connection) {
try {
PreparedStatement smt = null;
try {
smt = connection.prepareStatement(UPDATE_FICHEPAIE);
smt.setDate(1, new java.sql.Date(fichePaie.getDatePaie().getTime()));
smt.setInt(2, fichePaie.getNbrJourTravailPreste());
smt.setDouble(3, fichePaie.getNbrHrTravailPreste());
smt.setDouble(4, fichePaie.getRecetteSalaireBrut());
smt.setDouble(5, fichePaie.getBrutOnss());
smt.setDouble(6, fichePaie.getPrecompteProfessionel());
smt.setDouble(7, fichePaie.getIndemnite());
smt.setDouble(8, fichePaie.getCotisationSecu());
smt.setDouble(9, fichePaie.getChargePatronal());
smt.setDouble(10, fichePaie.getReductionBasRevenu());
smt.setDouble(11, fichePaie.getSalaireNet());
smt.setDouble(12, fichePaie.getAvanceSalaire());
smt.setDouble(13, fichePaie.getMontantAPayer());
smt.setInt(14, fichePaie.getChauffeur().getId());
smt.setInt(15, fichePaie.getEtat().getCdeEtat());
smt.setInt(16, fichePaie.getId());
smt.executeUpdate();
}
finally {
if (smt != null) {
smt.close();
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
});
return fichePaie;
}
}