154 lines
7.0 KiB
C#
154 lines
7.0 KiB
C#
using Microsoft.Data.Sqlite;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Hermes
|
|
{
|
|
public static class CitoyenDAO
|
|
{
|
|
private static Citoyen ReadCitoyen(SqliteDataReader reader) {
|
|
Citoyen citoyen = new Citoyen(reader.GetInt32(0), reader.GetString(1), reader.GetString(2), DateTime.Now, reader.GetString(4), reader.GetString(5), reader.GetInt32(6), reader.GetString(7), reader.GetString(8));
|
|
citoyen.DateNaissance = DateTime.ParseExact(reader.GetString(3), "yyyy", CultureInfo.InvariantCulture);
|
|
return citoyen;
|
|
}
|
|
|
|
private static List<Citoyen> ReadCitoyens(SqliteDataReader reader) {
|
|
List<Citoyen> citoyens = new List<Citoyen>();
|
|
|
|
while (reader.Read())
|
|
{
|
|
citoyens.Add(ReadCitoyen(reader));
|
|
}
|
|
|
|
return citoyens;
|
|
}
|
|
|
|
|
|
public static List<Citoyen> FetchAll() {
|
|
SqliteConnection db = DataAccess.GetConnection();
|
|
|
|
SqliteCommand selectCmd = new SqliteCommand("SELECT id, nom, prenom, date_naissance, adresse, profession, type_residence, mail, tel FROM citoyen", db);
|
|
SqliteDataReader reader = selectCmd.ExecuteReader();
|
|
|
|
return ReadCitoyens(reader);
|
|
}
|
|
|
|
public static List<Citoyen> FetchByAgeSup(int age) {
|
|
SqliteConnection db = DataAccess.GetConnection();
|
|
|
|
int year = DateTime.Now.Year - age;
|
|
|
|
SqliteCommand selectCmd = new SqliteCommand("SELECT id, nom, prenom, date_naissance, adresse, profession, type_residence, mail, tel FROM citoyen WHERE date_naissance < $year", db);
|
|
selectCmd.Parameters.AddWithValue("$year", year.ToString());
|
|
SqliteDataReader reader = selectCmd.ExecuteReader();
|
|
|
|
return ReadCitoyens(reader);
|
|
}
|
|
|
|
public static List<Citoyen> FetchByAgeEquals(int age)
|
|
{
|
|
SqliteConnection db = DataAccess.GetConnection();
|
|
|
|
int year = DateTime.Now.Year - age;
|
|
|
|
SqliteCommand selectCmd = new SqliteCommand("SELECT id, nom, prenom, date_naissance, adresse, profession, type_residence, mail, tel FROM citoyen WHERE date_naissance = $year", db);
|
|
selectCmd.Parameters.AddWithValue("$year", year.ToString());
|
|
SqliteDataReader reader = selectCmd.ExecuteReader();
|
|
|
|
return ReadCitoyens(reader);
|
|
}
|
|
|
|
public static List<Citoyen> FetchByAgeInf(int age)
|
|
{
|
|
SqliteConnection db = DataAccess.GetConnection();
|
|
|
|
int year = DateTime.Now.Year - age;
|
|
|
|
SqliteCommand selectCmd = new SqliteCommand("SELECT id, nom, prenom, date_naissance, adresse, profession, type_residence, mail, tel FROM citoyen WHERE date_naissance > $year", db);
|
|
selectCmd.Parameters.AddWithValue("$year", year.ToString());
|
|
SqliteDataReader reader = selectCmd.ExecuteReader();
|
|
|
|
return ReadCitoyens(reader);
|
|
}
|
|
|
|
public static List<Citoyen> FetchByProfession(string pattern)
|
|
{
|
|
SqliteConnection db = DataAccess.GetConnection();
|
|
|
|
SqliteCommand selectCmd = new SqliteCommand("SELECT id, nom, prenom, date_naissance, adresse, profession, type_residence, mail, tel FROM citoyen WHERE LOWER(date_naissance) LIKE $pattern", db);
|
|
selectCmd.Parameters.AddWithValue("$pattern", "%" + pattern.ToLower() + "%");
|
|
SqliteDataReader reader = selectCmd.ExecuteReader();
|
|
|
|
return ReadCitoyens(reader);
|
|
}
|
|
|
|
public static List<Citoyen> FetchByAdresse(string pattern)
|
|
{
|
|
SqliteConnection db = DataAccess.GetConnection();
|
|
|
|
SqliteCommand selectCmd = new SqliteCommand("SELECT id, nom, prenom, date_naissance, adresse, profession, type_residence, mail, tel FROM citoyen WHERE LOWER(adresse) LIKE $pattern", db);
|
|
selectCmd.Parameters.AddWithValue("$pattern", "%" + pattern.ToLower() + "%");
|
|
SqliteDataReader reader = selectCmd.ExecuteReader();
|
|
|
|
return ReadCitoyens(reader);
|
|
}
|
|
|
|
public static List<Citoyen> FetchByTypeResidence(int type)
|
|
{
|
|
SqliteConnection db = DataAccess.GetConnection();
|
|
|
|
SqliteCommand selectCmd = new SqliteCommand("SELECT id, nom, prenom, date_naissance, adresse, profession, type_residence, mail, tel FROM citoyen WHERE type_residence = $type", db);
|
|
selectCmd.Parameters.AddWithValue("$type", type);
|
|
SqliteDataReader reader = selectCmd.ExecuteReader();
|
|
|
|
return ReadCitoyens(reader);
|
|
}
|
|
|
|
public static void Add(Citoyen citoyen) {
|
|
SqliteConnection db = DataAccess.GetConnection();
|
|
|
|
SqliteCommand insertCmd = new SqliteCommand("INSERT INTO citoyen (nom, prenom, date_naissance, adresse, profession, type_residence, mail, tel) VALUES ($nom, $prenom, $date_naissance, $adresse, $profession, $type_residence, $mail, $tel)", db);
|
|
insertCmd.Parameters.AddWithValue("$nom", citoyen.Nom);
|
|
insertCmd.Parameters.AddWithValue("$prenom", citoyen.Prenom);
|
|
insertCmd.Parameters.AddWithValue("$date_naissance", citoyen.DateNaissance.ToString("yyyy"));
|
|
insertCmd.Parameters.AddWithValue("$adresse", citoyen.Adresse);
|
|
insertCmd.Parameters.AddWithValue("$profession", citoyen.Profession);
|
|
insertCmd.Parameters.AddWithValue("$type_residence", citoyen.TypeResidence);
|
|
insertCmd.Parameters.AddWithValue("$mail", citoyen.Mail);
|
|
insertCmd.Parameters.AddWithValue("$tel", citoyen.Tel);
|
|
|
|
insertCmd.ExecuteNonQuery();
|
|
}
|
|
|
|
public static void Update(Citoyen citoyen) {
|
|
SqliteConnection db = DataAccess.GetConnection();
|
|
|
|
SqliteCommand insertCmd = new SqliteCommand("UPDATE citoyen SET nom = $nom, prenom = $prenom, date_naissance = $date_naissance, adresse = $adresse, profession = $profession, type_residence = $type_residence, mail = $mail, tel = $tel WHERE id = $id", db);
|
|
insertCmd.Parameters.AddWithValue("$id", citoyen.Id);
|
|
insertCmd.Parameters.AddWithValue("$nom", citoyen.Nom);
|
|
insertCmd.Parameters.AddWithValue("$prenom", citoyen.Prenom);
|
|
insertCmd.Parameters.AddWithValue("$date_naissance", citoyen.DateNaissance.ToString("yyyyMMdd"));
|
|
insertCmd.Parameters.AddWithValue("$adresse", citoyen.Adresse);
|
|
insertCmd.Parameters.AddWithValue("$profession", citoyen.Profession);
|
|
insertCmd.Parameters.AddWithValue("$type_residence", citoyen.TypeResidence);
|
|
insertCmd.Parameters.AddWithValue("$mail", citoyen.Mail);
|
|
insertCmd.Parameters.AddWithValue("$tel", citoyen.Tel);
|
|
|
|
insertCmd.ExecuteNonQuery();
|
|
}
|
|
|
|
public static void Remove(Citoyen citoyen) {
|
|
SqliteConnection db = DataAccess.GetConnection();
|
|
|
|
SqliteCommand insertCmd = new SqliteCommand("DELETE FROM citoyen WHERE id = $id", db);
|
|
insertCmd.Parameters.AddWithValue("$id", citoyen.Id);
|
|
|
|
insertCmd.ExecuteNonQuery();
|
|
}
|
|
}
|
|
}
|