コード例 #1
0
        /// <summary>
        /// Fonction principale.
        /// </summary>
        /// <param name="args">Arguments de la ligne de commande.</param>

        static void Main(string[] args)
        {
            bool   tmpBool;
            int    tmpInt;
            string tmpString;

            StringBuilder errors = new StringBuilder();

            XmlDocument xml = new XmlDocument();

            xml.Load(configFile);

            // Lecture des paramètres du rapport
            if (false == Boolean.TryParse(GetSettingsValue(xml, RapportTags.Sheet), out tmpBool))
            {
                tmpBool = false;
            }
            RapportSettings.BySheetOutput   = tmpBool;
            RapportSettings.File            = GetSettingsValue(xml, RapportTags.SqlFile);
            RapportSettings.OutFilePrefix   = GetSettingsValue(xml, RapportSettings.OutFilePrefix);
            RapportSettings.SheetNamePrefix = GetSettingsValue(xml, RapportTags.SheetPrefix);
            RapportSettings.OutFilePrefix   = GetSettingsValue(xml, RapportTags.FilePrefix);
            RapportSettings.LogFilePrefix   = GetSettingsValue(xml, RapportTags.LogPrefix);

            if (string.Empty != RapportSettings.LogFilePrefix.Trim())
            {
                RapportSettings.LogFile = string.Format("{0}{1:yyyy_MM_dd}.log", RapportSettings.LogFilePrefix, DateTime.Now);
                Redirect = new OutToFile(RapportSettings.LogFile);
            }

            if (false == File.Exists(RapportSettings.File))
            {
                errors.AppendLine("Le fichier SQL du rapport est manquant");
            }

            if (false == File.Exists(configFile))
            {
                errors.AppendLine("Le fichier de configuration est manquant");
            }

            // Lecture des paramètres de la base de données.
            DbSettings.Address = GetSettingsValue(xml, DbTags.Server);
            DbSettings.Login   = GetSettingsValue(xml, DbTags.Login);
            DbSettings.Pw      = GetSettingsValue(xml, DbTags.Pw);
            if (false == Boolean.TryParse(GetSettingsValue(xml, DbTags.Trusted), out tmpBool))
            {
                tmpBool = false;
            }
            DbSettings.TrustedConnection = tmpBool;
            DbSettings.Default           = GetSettingsValue(xml, DbTags.DefaultDb);

            if (string.Empty == DbSettings.Address.Trim())
            {
                errors.AppendLine("Pas de serveur défini dans le fichier de config");
            }

            if (false == DbSettings.TrustedConnection && string.Empty == DbSettings.Login.Trim())
            {
                errors.AppendLine("Il doit y avoir un login OU autoriser la connexion windows (Trusted)");
            }

            if (false == DbSettings.TrustedConnection && string.Empty == DbSettings.Pw.Trim())
            {
                Console.WriteLine(@"/!\ Pas de mot de passe défini pour le login /!\");
            }

            if (string.Empty == DbSettings.Default.Trim())
            {
                Console.WriteLine(@"/!\ Pas de base par défaut définie /!\");
            }

            // Lecture des paramètres du mail
            if (false == Boolean.TryParse(GetSettingsValue(xml, MailTags.Send), out tmpBool))
            {
                tmpBool = false;
            }
            MailSettings.Send = tmpBool;
            if (true == MailSettings.Send)
            {
                MailSettings.Server = GetSettingsValue(xml, MailTags.Smtp);
                if (false == int.TryParse(GetSettingsValue(xml, MailTags.Port), out tmpInt))
                {
                    tmpInt = 25;
                }
                MailSettings.Port = tmpInt;
                if (false == bool.TryParse(GetSettingsValue(xml, MailTags.MustLogin), out tmpBool))
                {
                    tmpBool = false;
                }
                MailSettings.MustLogin = tmpBool;
                if (true == MailSettings.MustLogin)
                {
                    MailSettings.Login = GetSettingsValue(xml, MailTags.Login);
                    MailSettings.Pw    = GetSettingsValue(xml, MailTags.Pw);
                }
                MailSettings.Subject   = GetSettingsValue(xml, MailTags.Subject);
                MailSettings.Body      = GetSettingsValue(xml, MailTags.Body);
                MailSettings.Sender    = GetSettingsValue(xml, MailTags.Sender);
                MailSettings.Recipient = GetSettingsValue(xml, MailTags.recipientTag);
            }

            if (true == MailSettings.Send && string.Empty == MailSettings.Server.Trim())
            {
                errors.AppendLine("Aucun serveur mail défini alors que l'envoi de mail est actif");
            }
            if (true == MailSettings.Send && string.Empty == MailSettings.Sender.Trim())
            {
                errors.AppendLine("Aucune adresse mail d'envoi définie alors que l'envoi de mail est actif");
            }
            if (true == MailSettings.Send && string.Empty == MailSettings.Recipient.Trim())
            {
                errors.AppendLine("Aucune adresse mail de destination définie alors que l'envoi de mail est actif");
            }
            if (true == MailSettings.MustLogin && string.Empty == MailSettings.Login.Trim())
            {
                errors.AppendLine("Le serveur de mail est configuré pour demander un login, mais aucun login fourni");
            }
            if (true == MailSettings.MustLogin && string.Empty == MailSettings.Pw.Trim())
            {
                Console.WriteLine(@"/!\ Pas de mot de passe défini pour le serveur mail /!\");
            }

            if (errors.Length > 0)
            {
                ErrorClose(errors.ToString());
            }

            tmpString = GetSettingsValue(xml, FormatTags.DateTimeFormat);
            if (tmpString != string.Empty)
            {
                FormatSettings.DateTime = tmpString;
            }

            // Extraction des paramètres
            ParamsExtract();

            // Extraction des données
            DataSet data = MsSqlServer.Extract();

            string ExcelFileName = Excel.Generate(data);

            try
            {
                sendMail(ExcelFileName);
            }
            catch (Exception exp)
            {
                ErrorClose(string.Format("Erreur lors de l'envoi du mail : {0}", exp.Message));
            }
            finally
            {
                if (Redirect != null)
                {
                    Redirect.Dispose();
                }
            }

            // Suppression du fichier de logs si le fichier est vide.
            if (File.Exists(RapportSettings.LogFile))
            {
                FileInfo fi = new FileInfo(RapportSettings.LogFile);

                if (fi.Length == 0)
                {
                    File.Delete(RapportSettings.LogFile);
                }
            }
        }