Skip to content
Snippets Groups Projects
Commit 419a20c8 authored by Verin Antoine's avatar Verin Antoine
Browse files

Merge branch 'master' into 20-integration-menudepenses

parents 26ba3e01 a8129413
Branches
1 merge request!38Resolve "Intégration MenuDepenses"
using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.Data;
using System.Data.OleDb;
using System.Globalization;
using System.Linq;
using System.Windows.Forms;
namespace Mango
{
/// <summary>
/// ConnectionManager sert d'interface avec la base de données
/// ConnectionManager sert d'interface avec la base de données
/// </summary>
class ConnectionManager
internal class ConnectionManager
{
private static readonly ConnectionManager instance = new ConnectionManager();
public static ConnectionManager GetInstance()
private ConnectionManager()
{
return instance;
Connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\..\bdEvents.mdb");
Connection.Open();
}
public OleDbConnection Connection { get; }
public DataSet DataSet { get; } = new DataSet();
private ConnectionManager()
public static ConnectionManager GetInstance()
{
Connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\..\bdEvents.mdb");
Connection.Open();
return instance;
}
/// <summary>
/// Met à jour la base de donnée local pour une utilisation offline.
/// Met à jour la base de donnée local pour une utilisation offline.
/// </summary>
public void FetchOffline()
{
DataSet.Clear();
DataTable tables = Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
var tables =
Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {null, null, null, "TABLE"});
for(int i = 0; i < tables.Rows.Count; i++)
for (var i = 0; i < tables.Rows.Count; i++)
{
string name = tables.Rows[i][2].ToString();
string sql = "SELECT * FROM " + name;
if (name == "Participants")
{
sql = "select *, prenomPart + ' ' + nomPart as nomComp from Participants";
}
OleDbCommand command = CreateCommand(sql);
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
var name = tables.Rows[i][2].ToString();
var sql = "SELECT * FROM " + name;
if (name == "Participants") sql = "select *, prenomPart + ' ' + nomPart as nomComp from Participants";
var command = CreateCommand(sql);
var adapter = new OleDbDataAdapter(command);
adapter.Fill(DataSet, name);
}
}
/// <summary>
/// Filtre les données local du DataSet dans la table spécifié
/// Filtre les données local du DataSet dans la table spécifié
/// </summary>
/// <param name="table">La table où filtrer</param>
/// <param name="filter">Le filtre</param>
......@@ -63,7 +57,7 @@ namespace Mango
/// <exception cref="ArgumentException">Si il n'y a aucun résultat trouvé</exception>
public DataTable Filter(string table, string filter)
{
DataRow[] rows = DataSet.Tables[table].Select(filter);
var rows = DataSet.Tables[table].Select(filter);
if (rows.Length == 0)
{
//throw new ArgumentException("Aucun résultat");
......@@ -73,16 +67,16 @@ namespace Mango
}
/// <summary>
/// Crée une commande d'inssertion pour les valeurs données dans la table
/// Crée une commande d'inssertion pour les valeurs données dans la table
/// </summary>
/// <param name="table">La table ou inssérer</param>
/// <param name="values">La paire identifiant / valeur</param>
/// <returns>La commande créée</returns>
public OleDbCommand InsertInto(string table, Dictionary<string, object> values)
{
bool first = true;
string sql = "INSERT INTO " + table + "(";
foreach (string key in values.Keys)
var first = true;
var sql = "INSERT INTO " + table + "(";
foreach (var key in values.Keys)
{
if (!first) sql += ", ";
else first = false;
......@@ -91,7 +85,7 @@ namespace Mango
first = true;
sql += ") VALUES (";
foreach (object value in values.Values)
foreach (var value in values.Values)
{
if (!first) sql += ", ";
else first = false;
......@@ -111,7 +105,7 @@ namespace Mango
}
/// <summary>
/// Crée une commande avec la requête et la connection active.
/// Crée une commande avec la requête et la connection active.
/// </summary>
/// <param name="sql">Requête SQL</param>
/// <returns>Commande</returns>
......@@ -120,5 +114,46 @@ namespace Mango
return new OleDbCommand(sql, Connection);
}
/// <summary>
/// Retourne tous les participants d'une événement
/// </summary>
/// <param name="eventId">L'id de l'événement</param>
/// <returns>Les participants</returns>
public DataTable GetParticipants(int eventId)
{
DataTable table = Filter("Invites", "codeEvent = " + eventId);
var first = true;
var users = "";
foreach (DataRow row in table.Rows)
{
if (!first) users += ", ";
else first = false;
users += row["codePart"];
}
return Filter("Participants", "codeParticipant IN (" + users + ")");
}
/// <summary>
/// Retourne toutes les dépenses dont l'utilisateur à bénéficier sur un événenement
/// </summary>
/// <param name="eventId">L'id de l'événement</param>
/// <param name="userId">L'id de l'utilisateur</param>
/// <returns>Toutes les dépenses bénéficiaires</returns>
public DataTable GetDepensesBeneficiaire(int eventId, int userId)
{
DataTable codeDettes = Filter("Beneficiaires", "codePart = " + userId);
bool first = true;
string codes = "";
foreach (DataRow row in codeDettes.Rows)
{
if (!first) codes += ", ";
else first = false;
codes += row["numDepense"];
}
return Filter("Depenses", "numDepense IN (" + codes + ") AND codeEvent = " + eventId);
}
}
}
}
\ No newline at end of file
......@@ -37,7 +37,7 @@ namespace Mango.Controls.Menu
/// <param name="eventId">L'id de l'événement</param>
private void UpdateEvent(int eventId)
{
DataTable participants = GetParticipants(eventId);
DataTable participants = _connection.GetParticipants(eventId);
cboParticipant.DataSource = participants;
cboParticipant.DisplayMember = "nomComp";
......@@ -86,7 +86,7 @@ namespace Mango.Controls.Menu
try
{
DataTable dettes = GetDepensesBeneficiaire(eventId, userId);
DataTable dettes = _connection.GetDepensesBeneficiaire(eventId, userId);
foreach (DataRow row in dettes.Rows)
{
long partsTotal = GetNbParts((int) row["numDepense"]);
......@@ -134,47 +134,5 @@ namespace Mango.Controls.Menu
return (long) _connection.DataSet.Tables["Participants"]
.Compute("Sum(nbParts)", "codeParticipant IN (" + codes + ")");;
}
/// <summary>
/// Retourne toutes les dépenses dont l'utilisateur à bénéficier sur un événenement
/// </summary>
/// <param name="eventId">L'id de l'événement</param>
/// <param name="userId">L'id de l'utilisateur</param>
/// <returns>Toutes les dépenses bénéficiaires</returns>
private DataTable GetDepensesBeneficiaire(int eventId, int userId)
{
DataTable codeDettes = _connection.Filter("Beneficiaires", "codePart = " + userId);
bool first = true;
string codes = "";
foreach (DataRow row in codeDettes.Rows)
{
if (!first) codes += ", ";
else first = false;
codes += row["numDepense"];
}
return _connection.Filter("Depenses", "numDepense IN (" + codes + ") AND codeEvent = " + eventId);
}
/// <summary>
/// Retourne tous les participants d'une événement
/// </summary>
/// <param name="eventId">L'id de l'événement</param>
/// <returns>Les participants</returns>
private DataTable GetParticipants(int eventId)
{
DataTable table = _connection.Filter("Invites", "codeEvent = " + eventId);
bool first = true;
string users = "";
foreach (DataRow row in table.Rows)
{
if (!first) users += ", ";
else first = false;
users += row["codePart"];
}
return _connection.Filter("Participants", "codeParticipant IN (" + users + ")");
}
}
}
......@@ -111,7 +111,7 @@ namespace Mango
try
{
DataTable benefices = GetDepensesBeneficiaires(eventId, userId);
DataTable benefices = _connection.GetDepensesBeneficiaire(eventId, userId);
foreach (DataRow row in benefices.Rows)
{
table.AddCell(new Cell().Add(new Paragraph(row["description"] as string)));
......@@ -195,27 +195,6 @@ namespace Mango
.SetBackgroundColor(ColorConstants.ORANGE));
return table;
}
/// <summary>
/// Retourne toutes les dépenses dont à bénéficié un utilisateur lors d'un événement
/// </summary>
/// <param name="eventId">L'id de l'événement</param>
/// <param name="userId">L'id de l'utilisateur</param>
/// <returns>Les dépenses bénéficiaires</returns>
private static DataTable GetDepensesBeneficiaires(int eventId, int userId)
{
DataTable codeDettes = _connection.Filter("Beneficiaires", "codePart = " + userId);
bool first = true;
string codes = "";
foreach (DataRow row in codeDettes.Rows)
{
if (!first) codes += ", ";
else first = false;
codes += row["numDepense"];
}
return _connection.Filter("Depenses", "numDepense IN (" + codes + ") AND codeEvent = " + eventId);
}
/// <summary>
/// Retourne les participants d'un événement
......
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