Skip to content
Snippets Groups Projects
Commit f9d0b8b7 authored by FOECHTERLE MELISSA's avatar FOECHTERLE MELISSA
Browse files

Remplissage de BilanPart (je vais avoir besoin d'un psy après ça)

parent b9698a1c
Branches
1 merge request!34Resolve "Remplir BilanPart"
......@@ -260,6 +260,7 @@ namespace Mango.Controls.Menu
this.btnSolder.TabIndex = 27;
this.btnSolder.Text = "Solder l\'événement et exporter en PDF";
this.btnSolder.UseVisualStyleBackColor = false;
this.btnSolder.Click += new System.EventHandler(this.btnSolder_Click);
//
// lblConclusion
//
......
......@@ -152,5 +152,10 @@ namespace Mango.Controls.Menu
return _connection.Filter("Participants", "codeParticipant IN (" + users + ")");
}
private void btnSolder_Click(object sender, EventArgs e)
{
FrmMain.GetInstance().ShowMenu(new MenuRecapitulatif((int)cboEvenement.SelectedValue));
}
}
}
......@@ -80,6 +80,7 @@ namespace Mango.Controls.Menu
this.btnRetour.TabIndex = 30;
this.btnRetour.Text = "Revenir au bilan";
this.btnRetour.UseVisualStyleBackColor = false;
this.btnRetour.Click += new System.EventHandler(this.btnRetour_Click);
//
// MenuRecapitulatif
//
......@@ -91,6 +92,7 @@ namespace Mango.Controls.Menu
this.Controls.Add(this.lblTitre);
this.Name = "MenuRecapitulatif";
this.Size = new System.Drawing.Size(812, 536);
this.Load += new System.EventHandler(this.MenuRecapitulatif_Load);
this.ResumeLayout(false);
this.PerformLayout();
......
......@@ -7,14 +7,267 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
namespace Mango.Controls.Menu
{
public partial class MenuRecapitulatif : UserControl
{
public MenuRecapitulatif()
private ConnectionManager _connection = ConnectionManager.GetInstance();
private int _eventId;
private DataTable dtBilan = new DataTable();
public MenuRecapitulatif(int eventId)
{
InitializeComponent();
_eventId = eventId;
}
private void MenuRecapitulatif_Load(object sender, EventArgs e)
{
lblEvenement.Text = "pour l'événement " + _connection.CreateCommand("select titreEvent from Evenements where codeEvent = " + _eventId).ExecuteScalar().ToString();
dtBilan.Columns.Add("codeParticipant", typeof(int));
dtBilan.Columns.Add("nomParticipant", typeof(string));
dtBilan.Columns.Add("Plus", typeof(double));
dtBilan.Columns.Add("Moins", typeof(double));
dtBilan.Columns.Add("Solde", typeof(double));
construireDtBilan();
quiDoitQuoiAQui();
genererLabels();
}
private void quiDoitQuoiAQui()
{
bool fini = false;
while (!fini)
{
string etatDtBilan = "";
DataRow donneur = dtBilan.Rows[0];
DataRow receveur = dtBilan.Rows[0];
for (int i = 0; i < dtBilan.Rows.Count; i++)
{
etatDtBilan += "Participant " + dtBilan.Rows[i]["codeParticipant"].ToString() + " solde " + dtBilan.Rows[i]["Solde"].ToString() + "\n";
if ((double)donneur["Solde"] > (double)dtBilan.Rows[i]["Solde"])
{
donneur = dtBilan.Rows[i];
}
if ((double)receveur["Solde"] < (double)dtBilan.Rows[i]["Solde"])
{
receveur = dtBilan.Rows[i];
}
}
MessageBox.Show(etatDtBilan);
if (Math.Round((double)donneur["Solde"]) == 0 && Math.Round((double)receveur["Solde"]) == 0)
{
fini = true;
}
else
{
if ((double)donneur["Solde"] * (-1) > (double)receveur["Solde"])
{
Dictionary<string, object> transaction = new Dictionary<string, object>();
transaction.Add("codeEvent", _eventId);
transaction.Add("codeDonneur", (int)donneur["codeParticipant"]);
transaction.Add("codeReceveur", (int)receveur["codeParticipant"]);
transaction.Add("montant", (double)receveur["Solde"]);
_connection.InsertInto("BilanPart", transaction);
double soldeMisA0 = (double)receveur["Solde"];
for (int i = 0; i < dtBilan.Rows.Count; i++)
{
if ((int)donneur["codeParticipant"] == (int)dtBilan.Rows[i]["codeParticipant"])
{
dtBilan.Rows[i]["Solde"] = (double)donneur["Solde"] + soldeMisA0;
}
else if ((int)receveur["codeParticipant"] == (int)dtBilan.Rows[i]["codeParticipant"])
{
dtBilan.Rows[i]["Solde"] = 0;
}
}
}
else if ((double)donneur["Solde"] * (-1) < (double)receveur["Solde"])
{
Dictionary<string, object> transaction = new Dictionary<string, object>();
transaction.Add("codeEvent", _eventId);
transaction.Add("codeDonneur", (int)donneur["codeParticipant"]);
transaction.Add("codeReceveur", (int)receveur["codeParticipant"]);
transaction.Add("montant", (double)donneur["Solde"] * (-1));
_connection.InsertInto("BilanPart", transaction);
double soldeMisA0 = (double)donneur["Solde"];
for (int i = 0; i < dtBilan.Rows.Count; i++)
{
if ((int)donneur["codeParticipant"] == (int)dtBilan.Rows[i]["codeParticipant"])
{
dtBilan.Rows[i]["Solde"] = 0;
}
else if ((int)receveur["codeParticipant"] == (int)dtBilan.Rows[i]["codeParticipant"])
{
dtBilan.Rows[i]["Solde"] = soldeMisA0 + (double)receveur["Solde"];
}
}
}
else // c'est égal
{
Dictionary<string, object> transaction = new Dictionary<string, object>();
transaction.Add("codeEvent", _eventId);
transaction.Add("codeDonneur", (int)donneur["codeParticipant"]);
transaction.Add("codeReceveur", (int)receveur["codeParticipant"]);
transaction.Add("montant", (double)donneur["Solde"] * (-1));
_connection.InsertInto("BilanPart", transaction);
for (int i = 0; i < dtBilan.Rows.Count; i++)
{
if ((int)donneur["codeParticipant"] == (int)dtBilan.Rows[i]["codeParticipant"])
{
dtBilan.Rows[i]["Solde"] = 0;
}
else if ((int)receveur["codeParticipant"] == (int)dtBilan.Rows[i]["codeParticipant"])
{
dtBilan.Rows[i]["Solde"] = 0;
}
}
}
}
}
}
private void construireDtBilan()
{
OleDbDataReader participants = _connection.CreateCommand("select p.codeParticipant, p.prenomPart + ' ' + p.nomPart from Participants p" +
" left join Invites i on p.codeParticipant = i.codePart where i.codeEvent = " + _eventId).ExecuteReader();
while (participants.Read())
{
DataRow nouvelleLigne = dtBilan.NewRow();
double plus = depensesCredit((int)participants[0]);
double moins = depensesDebit((int)participants[0]);
nouvelleLigne["codeParticipant"] = (int)participants[0];
nouvelleLigne["nomParticipant"] = participants[1].ToString();
nouvelleLigne["Plus"] = plus;
nouvelleLigne["Moins"] = moins;
nouvelleLigne["Solde"] = plus - moins;
dtBilan.Rows.Add(nouvelleLigne);
}
}
private double depensesCredit(int idParticipant)
{
// Création de la commande de la procédure stockée.
OleDbCommand commande = new OleDbCommand();
commande.Connection = _connection.Connection;
commande.CommandType = CommandType.StoredProcedure;
commande.CommandText = "MesDepenses";
// Paramètre pEvent
OleDbParameter evenement = new OleDbParameter();
evenement.ParameterName = "@pEvent";
evenement.OleDbType = OleDbType.Integer;
evenement.Direction = ParameterDirection.Input;
evenement.Value = _eventId;
commande.Parameters.Add(evenement);
// Paramètre pPart
OleDbParameter participant = new OleDbParameter();
participant.ParameterName = "@pPart";
participant.OleDbType = OleDbType.Integer;
participant.Direction = ParameterDirection.Input;
participant.Value = idParticipant;
commande.Parameters.Add(participant);
OleDbDataReader retour = commande.ExecuteReader();
double somme = 0;
while (retour.Read())
{
somme += double.Parse(retour[3].ToString());
}
return somme;
}
private double depensesDebit(int idParticipant)
{
// Création de la commande de la procédure stockée.
OleDbCommand commande = new OleDbCommand();
commande.Connection = _connection.Connection;
commande.CommandType = CommandType.StoredProcedure;
commande.CommandText = "DepensesQuiMeConcernent";
// Paramètre pEvent
OleDbParameter evenement = new OleDbParameter();
evenement.ParameterName = "@pEvent";
evenement.OleDbType = OleDbType.Integer;
evenement.Direction = ParameterDirection.Input;
evenement.Value = _eventId;
commande.Parameters.Add(evenement);
// Paramètre pPart
OleDbParameter participant = new OleDbParameter();
participant.ParameterName = "@pPart";
participant.OleDbType = OleDbType.Integer;
participant.Direction = ParameterDirection.Input;
participant.Value = idParticipant;
commande.Parameters.Add(participant);
OleDbDataReader retour = commande.ExecuteReader();
double somme = 0;
int nbParts = (int)_connection.CreateCommand("select nbParts from Participants where codeParticipant = " + idParticipant).ExecuteScalar();
while (retour.Read())
{
somme += Math.Round((double.Parse(retour[1].ToString())) * (nbParts*1.0 / int.Parse(retour[2].ToString())*1.0), 2);
}
return somme;
}
private void genererLabels()
{
OleDbDataReader participants = _connection.CreateCommand("select codeDonneur, codeReceveur, montant from BilanPart where codeEvent = " + _eventId).ExecuteReader();
int i = 0;
while (participants.Read())
{
Label remboursement = new Label();
remboursement.AutoSize = false;
remboursement.Size = new Size(761, 42);
remboursement.Location = new Point(18, 133 + 56 * i);
remboursement.Font = new Font("Bahnschrift", 11, GraphicsUnit.Point);
string nomDonneur = _connection.CreateCommand("select prenomPart + ' ' + nomPart from Participants where codeParticipant = " +
(int)participants[0]).ExecuteScalar().ToString();
string nomReceveur = _connection.CreateCommand("select prenomPart + ' ' + nomPart from Participants where codeParticipant = " +
(int)participants[1]).ExecuteScalar().ToString();
remboursement.Text = nomDonneur + " doit " + participants[2] + "€ à " + nomReceveur;
this.Controls.Add(remboursement);
i++;
}
}
private void btnRetour_Click(object sender, EventArgs e)
{
FrmMain.GetInstance().ShowMenu(new MenuBilan());
}
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment