示例#1
0
 public bool deleteMonthlySave(DateTime monthToDelete)
 {
     List<MonthlySave> allSaves = getMonthlySaves();
     MonthlySave monthlySave = MonthlySave.findMonthlySave(allSaves, formatDate(monthToDelete));
     bool ok = allSaves.Remove(monthlySave);
     Serialise.Save(Const.FILE_MONTHLYRECAP, allSaves);
     return ok;
 }
        public void finalizeMonth(List <MonthlySave> allMonthlySaves, DateTime date)
        {
            MonthlySave montlySave = new MonthlySave(date, data.allBudgets);

            allMonthlySaves.Add(montlySave);
            Serialise.Save(Const.FILE_MONTHLYRECAP, allMonthlySaves);
            saveData();
        }
 /// <summary>
 /// Sauvegarde les données affichées par sérialisation.
 /// </summary>
 public void saveData()
 {
     try
     {
         data.storeUserData();
         Serialise.Save(Const.FILE_DATA, data);
     }
     catch
     {
         MessageBox.Show(Const.MSG_ERR_SAVE, Const.MSG_TITLE_SAVE, MessageBoxButtons.OK);
     }
     setFlagChange(change: false);
 }
        /// <summary>
        /// Charge les données enregistrées.
        /// Si aucun fichier enregistré, crée deux users.
        /// </summary>
        public void loadData()
        {
            Object obj = Serialise.Load(Const.FILE_DATA);

            if (obj != null)
            {
                data = (AppData)obj;
                User.initializeNames(data);
            }

            else // fichier vide
            {
                data = AppData.getAppData();
                User.initializeDefaultNames();
            }

            setFlagUserChange(change: false);
        }
示例#5
0
 private void buttonValider_Click(object sender, EventArgs e)
 {
     if ((DateTime.TryParse(textBoxDateDInscription.Text, out DateTime dateDInscription)) &&
         (DateTime.TryParse(textBoxDateDeValidation.Text, out DateTime dateDeValidation)))
     {
         ProfilDemandeur  profil           = new ProfilDemandeur(textBoxNom.Text, textBoxPrenom.Text, dateDInscription, dateDeValidation, (EDiplome)comboBox1.SelectedItem); //instance d'un nouveau profil de chercheurDEmploi
         ChercheurDEmploi chercheurDEmploi = new ChercheurDEmploi(profil.GenererID(), profil);                                                                               //instance d'un nouveau chercheurDEmploi
         if (chercheurDEmploi != null)
         {
             TrouveEmploi.ListeChercheursDEmploi.Add(chercheurDEmploi);
             // Serialise.Serialize(chercheurDEmploi, "chercheurDEmploiSerial.bin"); //sérialisation d'un seul demandeur d'emploi
             Serialise.Serialize(TrouveEmploi.ListeChercheursDEmploi, "listeDesChercheursDEmploi.bin");
             MessageBox.Show("Ajout du demandeur d'emploi réalisé avec succès"); //confirmation de la réussite de l'ajout d'un chercheurDEmploi
             MessageBox.Show("Avec ce niveau d'étude vous avez un taux d'employabilité de " + profil.TauxDEmployabilite + "%");
         }
         else
         {
             MessageBox.Show("Ce profil n'existe pas !");
         }
     }
示例#6
0
        /**
         * <summary>Lance l'écoute sur le serveur</summary>
         * <returns>Les données wrappées dans le model T demandé, null si une erreur</returns>
         */
        protected async Task <T> ReceiveAsync <T>(NetworkStream flux) where T : class, IModelReseau
        {
            T data = null;

            try
            {
                await Task.Run(() =>
                {
                    Catcher.LogInfo("En attente d'un message...");

                    byte[] buffer = new byte[1024];
                    using (MemoryStream ms = new MemoryStream())
                    {
                        int numBytesRead = flux.Read(buffer, 0, buffer.Length);
                        while (flux.DataAvailable || numBytesRead > 0)
                        {
                            if (numBytesRead == 0)
                            {
                                numBytesRead = flux.Read(buffer, 0, buffer.Length);
                            }

                            Catcher.LogInfo($"Réception de {numBytesRead} bytes");

                            ms.Write(buffer, 0, numBytesRead);
                            numBytesRead = 0;
                        }

                        data = Serialise.MemoryStreamToObject <T>(ms);                        // converti les octets en un model demandé

                        Catcher.LogInfo($"Message de longueur {ms.ToArray().Length} reçu");
                    }
                });
            }
            catch (Exception e)
            {
                Catcher.LogError(@"Impossible de recevoir un message TCP : " + e.Message);
            }

            return(data);
        }
示例#7
0
        /**
         * <summary>Envoie un model au client</summary>
         * <param name="data">Model qui implémente <see cref="IModelReseau"/> à envoyer</param>
         * <param name="flux">Flux <see cref="NetworkStream"/> à envoyer</param>
         * <returns>true si tout s'est bien passé, false sinon</returns>
         */
        protected virtual async Task <bool> SendAsync(IModelReseau data, NetworkStream flux)
        {
            try
            {
                await Task.Run(() =>
                {
                    BinaryWriter binaryWriter = new BinaryWriter(flux);                     // converti le flux en binaire

                    byte[] byteData = Serialise.ObjectToByteArray(data);

                    binaryWriter.Write(byteData);                     // envoie le model sous forme de bytes[]

                    Catcher.LogInfo($"Message de longueur {byteData.Length} envoyé");
                });

                return(true);
            }

            catch (Exception e)
            {
                Catcher.LogError(@"Impossible d'envoyer un message TCP : " + e.Message);
                return(false);
            }
        }
示例#8
0
        /**
         * <summary>Envoie un message en UDP</summary>
         * <param name="model">Données à envoyer, implémentant <see cref="IModelReseau"/></param>
         * <param name="destination"><see cref="IPEndPoint"/> Données sur la destination des données (IP et port)</param>
         */
        public async Task SendAsync(IModelReseau model, IPEndPoint destination)
        {
            byte[] data = Serialise.ObjectToByteArray(model);

            await _udp.SendAsync(data, data.Length, destination);
        }
 /// <summary>
 /// Récupère les sauvegardes mensuelles sérialisées.
 /// </summary>
 /// <returns>Liste des sauvegardes mensuelles.</returns>
 public List <MonthlySave> getMonthlySaves()
 {
     return((List <MonthlySave>)Serialise.Load(Const.FILE_MONTHLYRECAP));
 }