Created
June 20, 2017 12:09
-
-
Save ItemME/001b2186163c3b692c9ebc5a91d2e10c to your computer and use it in GitHub Desktop.
Système de sauvegarde de QSE Planner (PARRA Quentin - Stage RUVALOR)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
using System.Threading.Tasks; | |
using QSE_Planner.Classes.StaffPackage; | |
using Newtonsoft.Json; | |
using System.IO; | |
using System.Windows.Forms; | |
using QSE_Planner.Classes.EventPlanner; | |
using QSE_Planner.Classes.Component; | |
using QSE_Planner.Classes.Signal; | |
using System.Threading; | |
namespace QSE_Planner.Classes | |
{ | |
public sealed class SaveSystem | |
{ | |
// INSTANCE DE SAVESYSTEM ET SON LOCK POUR SÉCURISER L'ACCES MÉMOIRE | |
private static SaveSystem _instance = null; | |
private static readonly object _lock = new object(); | |
// UTILISATEUR ACTUEL | |
private Employee CurrentUser = null; | |
// LISTE DE TOUS LES UTILISATEURS | |
private List<Employee> AllUsers = new List<Employee>(); | |
// LISTE DE TOUS LES MATÉRIELS | |
private List<Material> MaterialList = new List<Material>(); | |
// LISTE DES EVENTS PLANNIFIÉS | |
private List<Event> EventsList = new List<Event>(); | |
// LISTE DES FOURNISSEURS | |
private List<Fournisseur> FournisseurList = new List<Fournisseur>(); | |
// LISTE DES CATEGORIES FOURNISSEUR | |
private List<Categorie> FournisseurCategoryList = new List<Categorie>(); | |
// LISTE DES CRITERES | |
private List<CriteriaFournisseur> CritereList = new List<CriteriaFournisseur>(); | |
// LISTE DES SIGNALEMENTS MATIERE | |
private List<MatiereSignal> MatiereSignalList = new List<MatiereSignal>(); | |
// LISTE DES SIGNALEMENTS NORMAUX | |
private List<NormalSignal> NormalSignalList = new List<NormalSignal>(); | |
// CONSTRUCTEUR | |
SaveSystem() | |
{ | |
AllUsers = GetAllUsers(); | |
MaterialList = GetAllMaterials(); | |
EventsList = GetAllEvents(); | |
FournisseurList = GetAllFournisseurs(); | |
FournisseurCategoryList = GetAllCategory(); | |
CritereList = GetAllCriteres(); | |
MatiereSignalList = GetAllMatiereSignal(); | |
NormalSignalList = GetAllNormalSignal(); | |
} | |
#region ACCESSEURS | |
// GETTER DE L'INSTANCE | |
public static SaveSystem Instance | |
{ | |
get | |
{ | |
lock (_lock) | |
{ | |
if (_instance == null) | |
{ | |
_instance = new SaveSystem(); | |
} | |
return _instance; | |
} | |
} | |
} | |
// MISE A JOUR DE L'UTILISATEUR ACTUEL | |
public void setCurrentUser(Employee e) | |
{ | |
CurrentUser = e; | |
} | |
// GETTER DE L'UTILISATEUR ACTUEL | |
public Employee getCurrentUser() | |
{ | |
return CurrentUser; | |
} | |
// MISE A JOUR DE LA LISTE DE TOUS LES UTILISATEURS | |
public void setAllUsers(List<Employee> e) | |
{ | |
AllUsers = e; | |
} | |
// GETTER DE LA LISTE DE TOUS LES UTILISATEURS | |
public List<Employee> getAllUsers() | |
{ | |
return AllUsers; | |
} | |
// MISE A JOUR DE LA LISTE DES MATERIELS | |
public void setMaterialList(List<Material> e) | |
{ | |
MaterialList = e; | |
} | |
// GETTER DE LA LISTE DES MATERIELS | |
public List<Material> getMaterialList() | |
{ | |
return MaterialList; | |
} | |
// MISE A JOUR DE LA LISTE DE TOUS LES EVENTS | |
public void setEventsList(List<Event> e) | |
{ | |
EventsList = e; | |
} | |
// GETTER DE LA LISTE DE TOUS LES EVENTS | |
public List<Event> getEventsLists() | |
{ | |
return EventsList; | |
} | |
// MISE A JOUR DE LA LISTE DES FOURNISSEURS | |
public void setFournisseurList(List<Fournisseur> e) | |
{ | |
FournisseurList = e; | |
} | |
// GETTER DE LA LISTE DES FOURNISSEURS | |
public List<Fournisseur> getFournisseurList() | |
{ | |
return FournisseurList; | |
} | |
// MISE A JOUR DE LA LISTE DES CATEGORIES | |
public void setFournisseurCategoryList(List<Categorie> e) | |
{ | |
FournisseurCategoryList = e; | |
} | |
// GETTER DE LA LISTE DES CATEGORIES | |
public List<Categorie> getFournisseurCategoryList() | |
{ | |
return FournisseurCategoryList; | |
} | |
// MISE A JOUR DE LA LISTE DES CRITERES FOURNISSEUR | |
public void setCritereList(List<CriteriaFournisseur> e) | |
{ | |
CritereList = e; | |
} | |
// GETTER DE LA LISTE DES CRITERES FOURNISSEURS | |
public List<CriteriaFournisseur> getCritereList() | |
{ | |
return CritereList; | |
} | |
// MISE A JOUR DE LA LISTE DE TOUS LES SIGNALEMENTS MATIERE | |
public void setMatiereSignalList(List<MatiereSignal> e) | |
{ | |
MatiereSignalList = e; | |
} | |
// GETTER DE LA LISTE DE TOUS LES SIGNALEMENTS MATIERE | |
public List<MatiereSignal> getMatiereSignalList() | |
{ | |
return MatiereSignalList; | |
} | |
// MISE A JOUR DE LA LISTE DE TOUS LES SIGNALEMENTS NORMAUX | |
public void setNormalSignalList(List<NormalSignal> e) | |
{ | |
NormalSignalList = e; | |
} | |
// GETTER DE LA LISTE DE TOUS LES SIGNALEMENTS NORMAUX | |
public List<NormalSignal> getNormalSignalList() | |
{ | |
return NormalSignalList; | |
} | |
#endregion | |
#region SAUVEGARDE/RÉCUPÉRATION UTILISATEUR | |
/// SAUVEGARDE/RÉCUPÉRATION UTILISATEUR | |
/// | |
/// Concerne le partie du système de sauvegarde qui sauvegarde et récupère les utilisateurs | |
/// - SaveUser() : void | |
/// - GetAllUsers() : List<Employee> | |
/// - GetUserByUsername() : Employee | |
/// - GetUserByLastname() : List<Employee> | |
/// - GetUserByFirstname() : List<Employee> | |
/// - GetUserByFullname() : List<Employee> | |
// SAUVEGARDE UTILISATEUR | |
public static void SaveUser(Employee e) | |
{ | |
try | |
{ | |
// VALEUR A CRYPTER | |
string output = JsonConvert.SerializeObject(e); | |
// RÉCUPÉRATION DES DIFFÉRENTS DOSSIERS | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
string FileName = CurrentFolder + "/data/users/" + e.getUsername() + "-" + e.getLastName() + "_" + e.getFirstName(); | |
// CRYPTAGE DES DONNÉES + SAUVEGARDE | |
Obfuscate(FileName, output); | |
} | |
catch (Exception ex) | |
{ | |
// EN CAS D'ERREUR | |
MessageBox.Show(ex.ToString()); | |
} | |
} | |
// RÉCUPÉRATION DE TOUS LES UTILISATEURS | |
public static List<Employee> GetAllUsers() | |
{ | |
List<Employee> toReturn = new List<Employee>(); | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/users/"); | |
// POUR CHAQUE UTILISATEUR.. | |
foreach (var file in di.GetFiles()) | |
{ | |
Employee e = JsonConvert.DeserializeObject<Employee>(Deobfuscate((CurrentFolder + "/data/users/" + file.Name))); | |
toReturn.Add(e); | |
} | |
return toReturn; | |
} | |
catch | |
{ | |
// SI L'UTILISATEUR N'EXISTE PAS | |
return null; | |
} | |
} | |
// RÉCUPÉRATION UTILISATEUR PAR USERNAME (NOM D'UTILISATEUR) | |
public static Employee GetUserByUsername(string Username) | |
{ | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/users/"); | |
// POUR CHAQUE UTILISATEUR.. | |
foreach (var file in di.GetFiles()) | |
{ | |
string[] sub = file.Name.Split('-'); // Nom d'utilisateur en [0] et Nom_Prénom en [1] | |
if (sub[0] == Username) | |
{ | |
// RÉCUPÉRATION DE L'OBJET | |
return JsonConvert.DeserializeObject<Employee>(Deobfuscate((CurrentFolder + "/data/users/" + file.Name))); | |
} | |
} | |
// SI AUCUN UTILISATEUR | |
return null; | |
} | |
catch | |
{ | |
// SI L'UTILISATEUR N'EXISTE PAS | |
return null; | |
} | |
} | |
// RÉCUPÉRATION UTILISATEUR PAR NOM DE FAMILLE | |
public static List<Employee> GetUserByLastname(string Lastname) | |
{ | |
List<Employee> toReturn = new List<Employee>(); | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/users/"); | |
// POUR CHAQUE UTILISATEUR.. | |
foreach (var file in di.GetFiles()) | |
{ | |
string[] s = file.Name.Split('-'); // Nom d'utilisateur en [0] et Nom_Prénom en [1] | |
string[] sub = s[1].Split('_'); // Nom d'utilisateur en [0] et Nom_Prénom en [1] | |
if (sub[0] == Lastname) | |
{ | |
// RÉCUPÉRATION DES DONNÉES | |
Employee e = JsonConvert.DeserializeObject<Employee>(Deobfuscate((CurrentFolder + "/data/users/" + file.Name))); | |
toReturn.Add(e); | |
} | |
} | |
return toReturn; | |
} | |
catch | |
{ | |
// SI L'UTILISATEUR N'EXISTE PAS | |
return null; | |
} | |
} | |
// RÉCUPÉRATION UTILISATEUR PAR PRÉNOM | |
public static List<Employee> GetUserByFirstname(string Firstname) | |
{ | |
List<Employee> toReturn = new List<Employee>(); | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/users/"); | |
// POUR CHAQUE UTILISATEUR.. | |
foreach (var file in di.GetFiles()) | |
{ | |
string[] s = file.Name.Split('-'); // Nom d'utilisateur en [0] et Nom_Prénom en [1] | |
string[] sub = s[1].Split('_'); // Nom d'utilisateur en [0] et Nom_Prénom en [1] | |
if (sub[1] == Firstname) | |
{ | |
// RÉCUPÉRATION DES DONNÉES | |
Employee e = JsonConvert.DeserializeObject<Employee>(Deobfuscate((CurrentFolder + "/data/users/" + file.Name))); | |
toReturn.Add(e); | |
} | |
} | |
return toReturn; | |
} | |
catch | |
{ | |
// SI L'UTILISATEUR N'EXISTE PAS | |
return null; | |
} | |
} | |
// RÉCUPÉRATION UTILISATEUR PAR NOM COMPLET | |
public static List<Employee> GetUserByFullname(string Lastname, string Firstname) | |
{ | |
List<Employee> toReturn = new List<Employee>(); | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/users/"); | |
// POUR CHAQUE UTILISATEUR.. | |
foreach (var file in di.GetFiles()) | |
{ | |
string[] s = file.Name.Split('-'); // Nom d'utilisateur en [0] et Nom_Prénom en [1] | |
string[] sub = s[1].Split('_'); // Nom d'utilisateur en [0] et Nom_Prénom en [1] | |
if (sub[0] == Lastname) | |
{ | |
if (sub[1] == Firstname) | |
{ | |
// RÉCUPÉRATION DES DONNÉES | |
Employee e = JsonConvert.DeserializeObject<Employee>(Deobfuscate((CurrentFolder + "/data/users/" + file.Name))); | |
toReturn.Add(e); | |
} | |
} | |
} | |
return toReturn; | |
} | |
catch | |
{ | |
// SI L'UTILISATEUR N'EXISTE PAS | |
return null; | |
} | |
} | |
#endregion | |
#region SAUVEGARDE/RÉCUPÉRATION MATÉRIEL | |
/// SAUVEGARDE/RÉCUPÉRATION MATÉRIEL | |
/// | |
/// Concerne le partie du système de sauvegarde qui sauvegarde et récupère les matériels | |
/// - SaveMaterial() : void | |
/// - GetAllMaterials() : List<Material> | |
/// - GetMaterialByImmat() : Material | |
public static void SaveMaterial(Material m) | |
{ | |
try | |
{ | |
// VALEUR A CRYPTER | |
string output = JsonConvert.SerializeObject(m); | |
// RÉCUPÉRATION DES DIFFÉRENTS DOSSIERS | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
string FileName = CurrentFolder + "/data/materials/" + m.Immatriculation; | |
// CRYPTAGE DES DONNÉES + SAUVEGARDE | |
Obfuscate(FileName, output); | |
} | |
catch (Exception ex) | |
{ | |
// EN CAS D'ERREUR | |
MessageBox.Show(ex.ToString()); | |
} | |
} | |
// RÉCUPÉRATION DE TOUS LES MATÉRIELS | |
public static List<Material> GetAllMaterials() | |
{ | |
List<Material> toReturn = new List<Material>(); | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/materials/"); | |
// POUR CHAQUE MATERIEL.. | |
foreach (var file in di.GetFiles()) | |
{ | |
Material m = JsonConvert.DeserializeObject<Material>(Deobfuscate((CurrentFolder + "/data/materials/" + file.Name))); | |
toReturn.Add(m); | |
} | |
return toReturn; | |
} | |
catch | |
{ | |
// SI AUCUN MATERIEL | |
return null; | |
} | |
} | |
// RÉCUPÉRATION UTILISATEUR PAR USERNAME (NOM D'UTILISATEUR) | |
public static Material GetMaterialByImmat(string Immat) | |
{ | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/materials/"); | |
// POUR CHAQUE UTILISATEUR.. | |
foreach (var file in di.GetFiles()) | |
{ | |
if (file.Name == Immat) | |
{ | |
// RÉCUPÉRATION DE L'OBJET | |
return JsonConvert.DeserializeObject<Material>(Deobfuscate((CurrentFolder + "/data/materials/" + file.Name))); | |
} | |
} | |
// SI AUCUN UTILISATEUR | |
return null; | |
} | |
catch | |
{ | |
// SI L'UTILISATEUR N'EXISTE PAS | |
return null; | |
} | |
} | |
#endregion | |
#region SAUVEGARDE/RÉCUPÉRATION EVENT | |
/// SAUVEGARDE/RÉCUPÉRATION EVENT | |
/// | |
/// Concerne le partie du système de sauvegarde qui sauvegarde et récupère les évènements | |
/// - SaveEvent() : void | |
/// - GetAllEvents() : List<Event> | |
/// - GetEvent() : Event | |
public static void SaveEvent(Event e) | |
{ | |
try | |
{ | |
// VALEUR A CRYPTER | |
string output = JsonConvert.SerializeObject(e); | |
// RÉCUPÉRATION DES DIFFÉRENTS DOSSIERS | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// VÉRIFICATION DE L'EXISTENCE DU CHEMIN | |
if (!Directory.Exists(CurrentFolder + "/data/events/" + e.Date.Year + "/" + e.Date.Month + "/" + e.Date.Day)) | |
Directory.CreateDirectory(CurrentFolder + "/data/events/" + e.Date.Year + "/" + e.Date.Month + "/" + e.Date.Day); | |
string FileName = CurrentFolder + "/data/events/" + e.Date.Year + "/" + e.Date.Month + "/" + e.Date.Day + "/" + "event"; | |
// CRYPTAGE DES DONNÉES | |
Obfuscate(FileName, output); | |
} | |
catch(Exception ex) | |
{ | |
// EN CAS D'ERREUR | |
MessageBox.Show(ex.ToString()); | |
} | |
} | |
public static List<Event> GetAllEvents() | |
{ | |
List<Event> toReturn = new List<Event>(); | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/events/"); | |
// POUR CHAQUE EVENT.. | |
foreach (var year in di.GetDirectories()) | |
{ | |
foreach (var month in year.GetDirectories()) | |
{ | |
foreach (var day in month.GetDirectories()) | |
{ | |
string y, m, d; | |
y = year.Name; | |
m = month.Name; | |
d = day.Name; | |
Event ev = JsonConvert.DeserializeObject<Event>(Deobfuscate((CurrentFolder + "/data/events/" + y + "/" + m + "/" + d + "/event"))); | |
toReturn.Add(ev); | |
} | |
} | |
} | |
return toReturn; | |
} | |
catch | |
{ | |
// SI AUCUN EVENT | |
return null; | |
} | |
} | |
public static Event GetEvent(DateTime d) | |
{ | |
try | |
{ | |
// RÉCUPÉRATION DES DIFFÉRENTS DOSSIERS | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
string FileName = CurrentFolder + "/data/events/" + d.Year + "/" + d.Month + "/" + d.Day + "/" + "event"; | |
// RÉCUPÉRATION DE L'OBJET | |
return JsonConvert.DeserializeObject<Event>(Deobfuscate(FileName)); | |
} | |
catch | |
{ | |
// SI L'EVENT N'EXISTE PAS | |
return null; | |
} | |
} | |
public static List<Event> GetEventsYearMonth(int y, int m) | |
{ | |
List<Event> toReturn = new List<Event>(); | |
try | |
{ | |
// RÉCUPÉRATION DES DIFFÉRENTS DOSSIERS | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/events/" + y + "/" + m + "/"); | |
foreach (var d in di.GetDirectories()) | |
{ | |
foreach (var f in d.GetFiles()) | |
{ | |
toReturn.Add(JsonConvert.DeserializeObject<Event>(Deobfuscate((CurrentFolder + "/data/events/" + y + "/" + m + "/" + d.Name + "/" + f.Name)))); | |
} | |
} | |
// RÉCUPÉRATION DE L'OBJET | |
return toReturn; | |
} | |
catch | |
{ | |
return toReturn; | |
} | |
} | |
#endregion | |
#region SAUVEGARDE/RÉCUPÉRATION/SUPPRESSION FOURNISSEUR + CATEGORIE | |
/// SAUVEGARDE/RÉCUPÉRATION/SUPPRESSION FOURNISSEUR + CATEGORIE | |
/// | |
/// Concerne le partie du système de sauvegarde qui sauvegarde, récupère et supprime les fournisseurs & catégories | |
/// - SaveFournisseur() : void | |
/// - SaveCategory() : void | |
/// - GetAllFournisseurs() : List<Fournisseur> | |
/// - GetAllCategory() : List<Categorie> | |
/// - GetFournisseur() : Fournisseur | |
/// - GetCategory() : Categorie | |
/// - DeleteAllCategory() : void | |
/// - DeleteFournisseur() : void | |
public static void SaveFournisseur(Fournisseur e) | |
{ | |
try | |
{ | |
// VALEUR A CRYPTER | |
string output = JsonConvert.SerializeObject(e); | |
// RÉCUPÉRATION DES DIFFÉRENTS DOSSIERS | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
string FileName = CurrentFolder + "/data/providers/" + e.Nom; | |
// CRYPTAGE DES DONNÉES | |
Obfuscate(FileName, output); | |
} | |
catch (Exception ex) | |
{ | |
// EN CAS D'ERREUR | |
MessageBox.Show("Impossible de sauvegarder, le fournisseur existe déjà."); | |
} | |
} | |
public static void SaveCategory(Categorie e) | |
{ | |
try | |
{ | |
// VALEUR A CRYPTER | |
string output = JsonConvert.SerializeObject(e); | |
// RÉCUPÉRATION DES DIFFÉRENTS DOSSIERS | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
string FileName = CurrentFolder + "/data/providers/category/" + e.Nom; | |
// CRYPTAGE DES DONNÉES | |
Obfuscate(FileName, output); | |
} | |
catch (Exception ex) | |
{ | |
// EN CAS D'ERREUR | |
MessageBox.Show("Impossible de sauvegarder, la catégorie existe déjà."); | |
} | |
} | |
public static List<Fournisseur> GetAllFournisseurs() | |
{ | |
List<Fournisseur> toReturn = new List<Fournisseur>(); | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/providers/"); | |
// POUR CHAQUE FOURNISSEUR.. | |
foreach (var file in di.GetFiles()) | |
{ | |
Fournisseur cr = JsonConvert.DeserializeObject<Fournisseur>(Deobfuscate((CurrentFolder + "/data/providers/" + file.Name))); | |
toReturn.Add(cr); | |
} | |
return toReturn; | |
} | |
catch | |
// SI AUCUN FOURNISSEUR | |
{ | |
return null; | |
} | |
} | |
public static List<Categorie> GetAllCategory() | |
{ | |
List<Categorie> toReturn = new List<Categorie>(); | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/providers/category/"); | |
// POUR CHAQUE CATEGORIE.. | |
foreach (var file in di.GetFiles()) | |
{ | |
Categorie cr = JsonConvert.DeserializeObject<Categorie>(Deobfuscate((CurrentFolder + "/data/providers/category/" + file.Name))); | |
toReturn.Add(cr); | |
} | |
return toReturn; | |
} | |
catch | |
// SI AUCUNE CATEGORIE | |
{ | |
return null; | |
} | |
} | |
public static Categorie GetCategory(string d) | |
{ | |
try | |
{ | |
// RÉCUPÉRATION DES DIFFÉRENTS DOSSIERS | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
string FileName = CurrentFolder + "/data/providers/category/" + d; | |
// RÉCUPÉRATION DE L'OBJET | |
return JsonConvert.DeserializeObject<Categorie>(Deobfuscate(FileName)); | |
} | |
catch | |
{ | |
// SI L'EVENT N'EXISTE PAS | |
return null; | |
} | |
} | |
public static Fournisseur GetFournisseur(string d) | |
{ | |
try | |
{ | |
// RÉCUPÉRATION DES DIFFÉRENTS DOSSIERS | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
string FileName = CurrentFolder + "/data/providers/" + d; | |
// RÉCUPÉRATION DE L'OBJET | |
return JsonConvert.DeserializeObject<Fournisseur>(Deobfuscate(FileName)); | |
} | |
catch | |
{ | |
// SI L'EVENT N'EXISTE PAS | |
return null; | |
} | |
} | |
public static void DeleteAllCategory() | |
{ | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/providers/category/"); | |
// SUPPRESSION | |
foreach (var file in di.GetFiles()) | |
file.Delete(); | |
} | |
catch (Exception ex) | |
{ | |
// ERROR | |
MessageBox.Show(ex.ToString()); | |
} | |
} | |
public static void DeleteFournisseur(Fournisseur f) | |
{ | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/providers/"); | |
DirectoryInfo di_doc = new DirectoryInfo(CurrentFolder + "/data/providers/documents/"); | |
if (File.Exists(CurrentFolder + "/data/providers/" + f.Nom)) | |
File.Delete(CurrentFolder + "/data/providers/" + f.Nom); | |
foreach (var file in di_doc.GetFiles()) | |
{ | |
// RÉCUPÉRATION DE L'EXTENSION | |
string[] sp = file.Name.Split('\\'); // sp1[sp1.Lenght-1] == nom du fichier | |
string[] sp1 = sp[sp.Length -1].Split('-'); | |
if (sp1[0] == f.Nom) | |
file.Delete(); | |
} | |
} | |
catch (Exception ex) | |
{ | |
// ERROR | |
MessageBox.Show(ex.ToString()); | |
} | |
} | |
#endregion | |
#region SAUVEGARDE/RÉCUPÉRATION CRITERE | |
/// SAUVEGARDE/RÉCUPÉRATION CRITERE | |
/// | |
/// Concerne le partie du système de sauvegarde qui sauvegarde et récupère les critères fournisseur | |
/// - SaveCritere() : void | |
/// - GetAllCriteres() : List<CriteriaFournisseur> | |
/// - DeleteAllCriteres() : void | |
public static void SaveCritere(CriteriaFournisseur e) | |
{ | |
try | |
{ | |
// VALEUR A CRYPTER | |
string output = JsonConvert.SerializeObject(e); | |
// RÉCUPÉRATION DES DIFFÉRENTS DOSSIERS | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/criteria/"); | |
string FileName = CurrentFolder + "/data/criteria/" + di.GetFiles().Length; | |
// CRYPTAGE DES DONNÉES | |
Obfuscate(FileName, output); | |
} | |
catch (Exception ex) | |
{ | |
// EN CAS D'ERREUR | |
MessageBox.Show(ex.ToString()); | |
} | |
} | |
public static List<CriteriaFournisseur> GetAllCriteres() | |
{ | |
List<CriteriaFournisseur> toReturn = new List<CriteriaFournisseur>(); | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/criteria/"); | |
// POUR CHAQUE CRITERE.. | |
foreach (var file in di.GetFiles()) | |
{ | |
CriteriaFournisseur cr = JsonConvert.DeserializeObject<CriteriaFournisseur>(Deobfuscate((CurrentFolder + "/data/criteria/" + file.Name))); | |
toReturn.Add(cr); | |
} | |
return toReturn; | |
} | |
catch | |
{ | |
// SI AUCUN CRITERE | |
return null; | |
} | |
} | |
public static void DeleteAllCriteres() | |
{ | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/criteria/"); | |
// SUPPRESSION | |
foreach (var file in di.GetFiles()) | |
file.Delete(); | |
} | |
catch (Exception ex) | |
{ | |
// ERROR | |
MessageBox.Show(ex.ToString()); | |
} | |
} | |
#endregion | |
#region SAUVEGARDE/RÉCUPÉRATION SIGNALEMENTS | |
/// SAUVEGARDE/RÉCUPÉRATION SIGNALEMENTS | |
/// | |
/// Concerne le partie du système de sauvegarde qui sauvegarde et récupère les signalements (normaux et matières) | |
/// - SaveNormalSignal() : void | |
/// - SaveMatiereSignal() : void | |
/// - GetAllNormalSignal() : List<NormalSignal> | |
/// - GetAllMatiereSignal() : List<MatiereSignal> | |
/// - GetNormalSignalByChrono() : NormalSignal | |
/// - GetMatiereSignalByChrono() : MatiereSignal | |
public static void SaveNormalSignal(NormalSignal e) | |
{ | |
try | |
{ | |
// VALEUR A CRYPTER | |
string output = JsonConvert.SerializeObject(e); | |
// RÉCUPÉRATION DES DIFFÉRENTS DOSSIERS | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
string oldchrono = File.ReadAllText(CurrentFolder + "/data/signals/lastchrono"); | |
int newchrono = (Convert.ToInt32(oldchrono)); | |
if (newchrono < e.Chrono) | |
File.WriteAllText(CurrentFolder + "/data/signals/lastchrono", e.Chrono.ToString(), Encoding.ASCII); | |
string FileName = CurrentFolder + "/data/signals/normal/" + e.Chrono; | |
// CRYPTAGE DES DONNÉES | |
Obfuscate(FileName, output); | |
} | |
catch (Exception ex) | |
{ | |
// EN CAS D'ERREUR | |
MessageBox.Show(ex.ToString()); | |
} | |
} | |
public static void SaveMatiereSignal(MatiereSignal e) | |
{ | |
try | |
{ | |
// VALEUR A CRYPTER | |
string output = JsonConvert.SerializeObject(e); | |
// RÉCUPÉRATION DES DIFFÉRENTS DOSSIERS | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
string oldchrono = File.ReadAllText(CurrentFolder + "/data/signals/lastchrono"); | |
int newchrono = (Convert.ToInt32(oldchrono)); | |
if (newchrono < e.Chrono) | |
File.WriteAllText(CurrentFolder + "/data/signals/lastchrono", e.Chrono.ToString(), Encoding.ASCII); | |
string FileName = CurrentFolder + "/data/signals/material/" + e.Chrono; | |
// CRYPTAGE DES DONNÉES | |
Obfuscate(FileName, output); | |
} | |
catch (Exception ex) | |
{ | |
// EN CAS D'ERREUR | |
MessageBox.Show(ex.ToString()); | |
} | |
} | |
public static List<NormalSignal> GetAllNormalSignal() | |
{ | |
List<NormalSignal> toReturn = new List<NormalSignal>(); | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/signals/normal/"); | |
// POUR CHAQUE CRITERE.. | |
foreach (var file in di.GetFiles()) | |
{ | |
NormalSignal ns = JsonConvert.DeserializeObject<NormalSignal>(Deobfuscate((CurrentFolder + "/data/signals/normal/" + file.Name))); | |
toReturn.Add(ns); | |
} | |
return toReturn; | |
} | |
catch | |
{ | |
// SI AUCUN CRITERE | |
return null; | |
} | |
} | |
public static List<MatiereSignal> GetAllMatiereSignal() | |
{ | |
List<MatiereSignal> toReturn = new List<MatiereSignal>(); | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/signals/material/"); | |
// POUR CHAQUE CRITERE.. | |
foreach (var file in di.GetFiles()) | |
{ | |
MatiereSignal ms = JsonConvert.DeserializeObject<MatiereSignal>(Deobfuscate((CurrentFolder + "/data/signals/material/" + file.Name))); | |
toReturn.Add(ms); | |
} | |
return toReturn; | |
} | |
catch | |
{ | |
// SI AUCUN CRITERE | |
return null; | |
} | |
} | |
public static NormalSignal GetNormalSignalByChrono(string s) | |
{ | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/signals/normal/"); | |
// POUR CHAQUE CRITERE.. | |
foreach (var file in di.GetFiles()) | |
{ | |
if (file.Name == s) | |
return JsonConvert.DeserializeObject<NormalSignal>(Deobfuscate((CurrentFolder + "/data/signals/normal/" + file.Name))); | |
} | |
return null; | |
} | |
catch | |
{ | |
// SI AUCUN CRITERE | |
return null; | |
} | |
} | |
public static MatiereSignal GetMatiereSignalByChrono(string s) | |
{ | |
try | |
{ | |
// RÉCUPÉRATION DU DOSSIER | |
string CurrentFolder = Path.GetDirectoryName(Application.ExecutablePath); | |
// INFORMATIONS DU DOSSIER | |
DirectoryInfo di = new DirectoryInfo(CurrentFolder + "/data/signals/material/"); | |
// POUR CHAQUE CRITERE.. | |
foreach (var file in di.GetFiles()) | |
{ | |
if (file.Name == s) | |
return JsonConvert.DeserializeObject<MatiereSignal>(Deobfuscate((CurrentFolder + "/data/signals/material/" + file.Name))); | |
} | |
return null; | |
} | |
catch | |
{ | |
// SI AUCUN CRITERE | |
return null; | |
} | |
} | |
public static object SearchSignalByChrono(string s) | |
{ | |
foreach(NormalSignal ns in Instance.NormalSignalList) | |
{ | |
if (ns.Chrono.ToString() == s) | |
return ns; | |
} | |
foreach (MatiereSignal ms in Instance.MatiereSignalList) | |
{ | |
if (ms.Chrono.ToString() == s) | |
return ms; | |
} | |
return null; | |
} | |
public static List<NormalSignal> SearchNormalSignalByTypeAndMore(Material m, Fournisseur f, string VISA) | |
{ | |
List<NormalSignal> toReturn = new List<NormalSignal>(); | |
// MATERIEL = TRUE ; FOURNISSEUR = TRUE | |
if (m != null && f != null) | |
{ | |
if (VISA == "Validé") | |
{ | |
foreach (NormalSignal ns in Instance.NormalSignalList) | |
{ | |
if (ns.Fournisseur != null && ns.Materiel != null) | |
if (ns.Materiel.Immatriculation == m.Immatriculation && ns.Fournisseur.Nom == f.Nom && ns.VISA == true) | |
toReturn.Add(ns); | |
} | |
} | |
else if (VISA == "Non-Validé") | |
{ | |
foreach (NormalSignal ns in Instance.NormalSignalList) | |
{ | |
if (ns.Fournisseur != null && ns.Materiel != null) | |
if (ns.Materiel.Immatriculation == m.Immatriculation && ns.Fournisseur.Nom == f.Nom && ns.VISA == false) | |
toReturn.Add(ns); | |
} | |
} | |
else | |
{ | |
foreach (NormalSignal ns in Instance.NormalSignalList) | |
{ | |
if (ns.Fournisseur != null && ns.Materiel != null) | |
if (ns.Materiel.Immatriculation == m.Immatriculation && ns.Fournisseur.Nom == f.Nom) | |
toReturn.Add(ns); | |
} | |
} | |
} | |
// MATERIEL = FALSE ; FOURNISSEUR = TRUE | |
else if (m == null && f != null) | |
{ | |
if (VISA == "Validé") | |
{ | |
foreach (NormalSignal ns in Instance.NormalSignalList) | |
{ | |
if (ns.Fournisseur != null) | |
if (ns.Fournisseur.Nom == f.Nom && ns.VISA == true) | |
toReturn.Add(ns); | |
} | |
} | |
else if (VISA == "Non-Validé") | |
{ | |
foreach (NormalSignal ns in Instance.NormalSignalList) | |
{ | |
if (ns.Fournisseur != null) | |
if (ns.Fournisseur.Nom == f.Nom && ns.VISA == false) | |
toReturn.Add(ns); | |
} | |
} | |
else | |
{ | |
foreach (NormalSignal ns in Instance.NormalSignalList) | |
{ | |
if (ns.Fournisseur != null) | |
if (ns.Fournisseur.Nom == f.Nom) | |
toReturn.Add(ns); | |
} | |
} | |
} | |
// MATERIEL = TRUE ; FOURNISSEUR = FALSE | |
else if (m != null && f == null) | |
{ | |
if (VISA == "Validé") | |
{ | |
foreach (NormalSignal ns in Instance.NormalSignalList) | |
{ | |
if (ns.Materiel != null) | |
if (ns.Materiel.Immatriculation == m.Immatriculation && ns.VISA == true) | |
toReturn.Add(ns); | |
} | |
} | |
else if (VISA == "Non-Validé") | |
{ | |
foreach (NormalSignal ns in Instance.NormalSignalList) | |
{ | |
if (ns.Materiel != null) | |
if (ns.Materiel.Immatriculation == m.Immatriculation && ns.VISA == false) | |
toReturn.Add(ns); | |
} | |
} | |
else | |
{ | |
foreach (NormalSignal ns in Instance.NormalSignalList) | |
{ | |
if (ns.Materiel != null) | |
if (ns.Materiel.Immatriculation == m.Immatriculation) | |
toReturn.Add(ns); | |
} | |
} | |
} | |
// MATERIEL = FALSE ; FOURNISSEUR = FALSE | |
else if (m == null && f == null) | |
{ | |
if (VISA == "Validé") | |
{ | |
foreach (NormalSignal ns in Instance.NormalSignalList) | |
{ | |
if (ns.VISA == true) | |
toReturn.Add(ns); | |
} | |
} | |
else if (VISA == "Non-Validé") | |
{ | |
foreach (NormalSignal ns in Instance.NormalSignalList) | |
{ | |
if (ns.VISA == false) | |
toReturn.Add(ns); | |
} | |
} | |
else | |
return Instance.NormalSignalList; | |
} | |
return toReturn; | |
} | |
public static List<MatiereSignal> SearchMatiereSignalByTypeAndMore(Fournisseur f, string VISA) | |
{ | |
List<MatiereSignal> toReturn = new List<MatiereSignal>(); | |
// FOURNISSEUR = TRUE | |
if (f != null) | |
{ | |
if (VISA == "Validé") | |
{ | |
foreach (MatiereSignal ms in Instance.MatiereSignalList) | |
{ | |
if (ms.Fournisseur != null) | |
if (ms.Fournisseur.Nom == f.Nom && ms.VISA == true) | |
toReturn.Add(ms); | |
} | |
} | |
else if (VISA == "Non-Validé") | |
{ | |
foreach (MatiereSignal ms in Instance.MatiereSignalList) | |
{ | |
if (ms.Fournisseur != null) | |
if (ms.Fournisseur.Nom == f.Nom && ms.VISA == false) | |
toReturn.Add(ms); | |
} | |
} | |
else | |
{ | |
foreach (MatiereSignal ms in Instance.MatiereSignalList) | |
{ | |
if (ms.Fournisseur != null) | |
if (ms.Fournisseur.Nom == f.Nom) | |
toReturn.Add(ms); | |
} | |
} | |
} | |
// FOURNISSEUR = FALSE | |
else if (f == null) | |
{ | |
if (VISA == "Validé") | |
{ | |
foreach (MatiereSignal ms in Instance.MatiereSignalList) | |
{ | |
if (ms.VISA == true) | |
toReturn.Add(ms); | |
} | |
} | |
else if (VISA == "Non-Validé") | |
{ | |
foreach (MatiereSignal ms in Instance.MatiereSignalList) | |
{ | |
if (ms.VISA == false) | |
toReturn.Add(ms); | |
} | |
} | |
else | |
return Instance.MatiereSignalList; | |
} | |
return toReturn; | |
} | |
#endregion | |
#region SÉCURITÉ DE LA SAUVEGARDE (ILLISIBLE) | |
// ECRITURE DU FICHIER ILLISIBLE | |
private static void Obfuscate(string fileName, string data) | |
{ | |
var bytes = Encoding.UTF8.GetBytes(data); | |
for (int i = 0; i < bytes.Length; i++) bytes[i] ^= 0x5a; | |
File.WriteAllText(fileName, Convert.ToBase64String(bytes)); | |
} | |
// RÉCUPÉRATION DU FICHIER ILLISIBLE | |
private static string Deobfuscate(string fileName) | |
{ | |
var bytes = Convert.FromBase64String(File.ReadAllText(fileName)); | |
for (int i = 0; i < bytes.Length; i++) bytes[i] ^= 0x5a; | |
return Encoding.UTF8.GetString(bytes); | |
} | |
#endregion | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment