using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Ionic.Utils.Zip; namespace Fuel01 { public partial class f_epreuve : Form { DataSet1.tb_epreuveDataTable tb_epr = new DataSet1.tb_epreuveDataTable(); private bool hasChanged = false; string key_new = ""; //initilalisé en création uniquement public f_epreuve(DataSet1.tb_epreuveDataTable tb_epr) { InitializeComponent(); this.tb_epr = tb_epr; } private void f_epreuve_Load(object sender, EventArgs e) { tb_epr.AcceptChanges(); tbepreuveBindingSource.DataSource = tb_epr; turn_txt(false); turn_bt(false); if (Program.key_ope != "" && Program.key_ope !=null ) { tbepreuveBindingSource.MoveFirst(); DataRowView myRow = tbepreuveBindingSource.Current as DataRowView; if ( myRow != null ) while (myRow.Row["key_epr"].ToString() != Program.key_ope) { int i = tbepreuveBindingSource.Position; tbepreuveBindingSource.MoveNext(); myRow = tbepreuveBindingSource.Current as DataRowView; if (i == tbepreuveBindingSource.Position) break; } } this.tbepreuveBindingSource.CurrentChanged += new System.EventHandler(this.tbepreuveBindingSource_CurrentItemChanged); this.tbepreuveBindingSource.CurrentItemChanged += new System.EventHandler(this.tbepreuveBindingSource_CurrentItemChanged); } #region affichage private void turn_txt(bool act) { text_nom_epr.Enabled = act; dt_deb_epr.Enabled = act; dt_fin_epr.Enabled = act; text_abrev_epr.Enabled = act; } private void turn_bt(bool act) { Bt_Abort.Enabled = act; bt_Valid.Enabled = act; bt_Mod.Enabled = !act; bt_Aj.Enabled = !act; bt_Sup.Enabled = !act; } #endregion #region Boutons private void bt_Mod_Click(object sender, EventArgs e) { turn_txt(true); turn_bt(true); } private void bt_Aj_Click(object sender, EventArgs e) { turn_txt(true); turn_bt(true); string key = findNewkey(); key_new = key; tb_epr.Addtb_epreuveRow(key, "", DateTime.Now, DateTime.Now, ""); tbepreuveBindingSource.MoveFirst(); DataRowView myRow = tbepreuveBindingSource.Current as DataRowView; while (myRow.Row["key_epr"].ToString() != key) { tbepreuveBindingSource.MoveNext(); myRow = tbepreuveBindingSource.Current as DataRowView; } //DirectoryInfo di = new DirectoryInfo(Program.folder); //di.CreateSubdirectory(key); Program.subfolder = Program.folder + @"\" + key; //File.Copy(Program.folder + @"\param\facture_carbu.xlsx", Program.subfolder + @"\facture_carbu.xlsx"); } private void bt_Sup_Click(object sender, EventArgs e) { DataRowView myRow = tbepreuveBindingSource.Current as DataRowView; if (myRow == null) return; string msg = string.Format("Opération {0}\nEtes-vous certain de vouloir supprimer \n{1}\n\rUne archive de sauvegarde sera créée.", myRow.Row["abrev_epr"].ToString(), myRow.Row["nom_epr"].ToString()); string caption = "Suppression définitive"; if (MessageBox.Show(msg, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { string key = myRow.Row["key_epr"].ToString(); DataSet1.tb_epreuveRow eprRow = tb_epr.FindBykey_epr(key); if (eprRow != null) { string path_epr= Program.folder + @"\" + key; string filename = Program.folder + @"\traces_archivage_" + key+".txt"; StreamWriter writer = File.CreateText(filename); writer.Write("Suppression de l'opération " + eprRow.nom_epr + "\r\n"); var zip = new ZipFile(Program.folder + @"\"+ key+"_"+DateTime.Now.ToString("yy_MM_dd_hh_mm_ss") + ".zip", writer); zip.AddDirectory(path_epr, key); zip.AddFile(Program.folder + @"\epreuve.json",""); zip.Save(); writer.Close(); f_result res = new f_result(filename, zip.Name); res.ShowDialog(); Directory.Delete(path_epr,true); tb_epr.Removetb_epreuveRow(eprRow); } hasChanged = true; } } private void bt_Valid_Click(object sender, EventArgs e) { tb_epr.AcceptChanges(); turn_txt(false); turn_bt(false); hasChanged = true; if (key_new != "") // Mode création { DirectoryInfo di = new DirectoryInfo(Program.folder); di.CreateSubdirectory(key_new); Program.subfolder = Program.folder + @"\" + key_new; File.Copy(Program.folder + @"\param\facture_carbu.xlsx", Program.subfolder + @"\facture_carbu.xlsx"); key_new = ""; } } private void Bt_Abort_Click(object sender, EventArgs e) { tb_epr.RejectChanges(); turn_txt(false); turn_bt(false); key_new = ""; } #endregion #region fonctions private string findNewkey() { Random rand1 = new Random(); string key = rand1.Next(99999).ToString(); while (tb_epr.FindBykey_epr(key) != null) { MessageBox.Show(key); key = rand1.Next(99999).ToString(); } return key; } #endregion private void f_epreuve_FormClosing(object sender, FormClosingEventArgs e) { DataSet1.tb_epreuveRow mydata = null; DataRowView myrow = tbepreuveBindingSource.Current as DataRowView; if (myrow != null) { mydata = myrow.Row as DataSet1.tb_epreuveRow; Program.nom_ope = mydata.nom_epr; Program.key_ope = mydata.key_epr; Program.abrev_ope = mydata.abrev_epr; } if (hasChanged) saveData(); DataTable tb_epr_change = tb_epr.GetChanges(); while (tb_epr_change != null) { if (MessageBox.Show("Voulez-vous Valider Oui ou Non les modifications apportées ?", "Modifications en cours!!!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation) == DialogResult.Yes) { tb_epr.AcceptChanges(); saveData(); tb_epr_change = tb_epr.GetChanges(); } else { tb_epr.RejectChanges(); tb_epr_change = tb_epr.GetChanges(); } e.Cancel = (tb_epr_change != null); } } private void saveData() { DbUtil.SaveToJson(Program.folder + @"\epreuve.json", tb_epr); } private void tbepreuveBindingSource_CurrentItemChanged(object sender, EventArgs e) { DataRowView myRow = tbepreuveBindingSource.Current as DataRowView; if (myRow == null) return; Program.key_ope = myRow.Row["key_epr"].ToString(); Program.nom_ope = myRow.Row["nom_epr"].ToString(); Program.abrev_ope = myRow.Row["abrev_epr"].ToString(); StatusLabel1.Text = Program.key_ope + "-" + Program.abrev_ope + "-" + Program.nom_ope; } private void dg_epr_DoubleClick(object sender, EventArgs e) { this.Close(); } private void f_epreuve_FormClosed(object sender, FormClosedEventArgs e) { tb_epr.Dispose(); this.Dispose(); } } }