private static void RemindSponsorship()
        {
            try
            {
                System.Console.WriteLine("---DEBUT RELANCE PARRAINAGE---");

                //Get list "Code parrainage" not activated, not expired and "filleul" want to receive email
                List<Sponsorship> lstSponsorships = Business.Souscription.SponsorshipBL.GetActiveSponsorshipCodes();

                //Si le filleul n'a pas souscrit, renvoyer l'e-mail tous les 30 jours.
                foreach (var sponsorship in lstSponsorships)
                {
                    //multiple de 30 ?
                    int diff = (DateTime.Now - sponsorship.CreatedDate).Days;
                    if (diff != 0 && diff % 30 == 0)
                    {
                        //Send mail to filleul
                        if (!string.IsNullOrEmpty(sponsorship.EmailFilleul))
                        {                           
                            bool isSent = Business.Souscription.SponsorshipBL.SendEmailToFilleul(sponsorship);
                         
                            System.Console.WriteLine(@"Envoi email à l'utilisateur '{0} - {1} {2}' : {3}", sponsorship.EmailFilleul, sponsorship.NameFilleul, sponsorship.FirstnameFilleul, (isSent) ? "OK" : "KO");
                            
                            //Creation log envoi parrainage
                            if (isSent)
                            {
                                ReminderLog reminder = new ReminderLog()
                                {
                                    DateCreated = DateTime.Today,
                                    Email = sponsorship.EmailFilleul,
                                    idUser = null,
                                    IsAutomatic = true, //service auto
                                    DocumentType = Upsilab.Business.Souscription.SponsorshipBL.Parrainage,
                                };

                                ReminderLogBL.AddReminder(reminder);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log.AppendException(ex);
            }

            System.Console.WriteLine("---FIN RELANCE PARRAINAGE---");
        }
        private static void EnvoiMailExpirationLicence()
        {

            System.Console.WriteLine("---DEBUT ENVOI MAIL RELANCE LICENCES EXPIREES---");
            try
            {
                string sFrom = Upsilab.Business.Utility.ConfigurationManager.EmailFrom;
                string sTo = string.Empty;
                string sCC = string.Empty;
                string sSubject = @"Renouvellement de vos licences Upsideo";
                string sMsg = string.Empty;
                bool isSent = false;
                List<User> userAdminList = new List<User>();
                using (UpsilabEntities db = new UpsilabEntities())
                {
                    //liste des administrateurs centrals
                    DateTime datetimelimite = DateTime.Now.AddDays(30);
                    userAdminList = (from uc in db.User
                                     join f in db.FirmInstitution on uc.idUser equals f.idUserCreated
                                     join fa in db.FirmInstitutionAdviser on f.idFirmInstitution equals fa.idFirmInstitutionParent
                                     join u in db.User on fa.idUser equals u.idUser
                                     where ((u.License != null
                                            && u.License.DateExpired >= DateTime.Now
                                            && u.License.DateExpired <= datetimelimite)
                                            || (u.License1 != null
                                            && u.License1.DateExpired >= DateTime.Now
                                            && u.License1.DateExpired <= datetimelimite)) && uc.ReceiveLicenseRemind == true
                                     select uc).Distinct().ToList();

                    List<User> userList = null;
                    foreach (User userAdminNow in userAdminList)
                    {                        
                        //test la deriniere date d'envoie mail aux useradmin
                        bool isMailTosend = true;
                        List<ReminderLog> lstremender = ReminderLogBL.GetListReminderLog(userAdminNow.idUser, UserBL.LicenseExpired);
                        
                        if (lstremender != null && lstremender.Count > 0)
                        {
                            ReminderLog rd = lstremender.FirstOrDefault();                            
                            int diffDay = (DateTime.Today - rd.DateCreated).Days;                            
                            isMailTosend = (diffDay >= 3)? true : false; //Envoi tous les 3jours (mais il se peut que l'envoi echoue et on prend >)                           
                        }
                        
                        isSent = false;
                        
                        if (isMailTosend)
                        {
                            sTo = userAdminNow.UserEmail;
                            sMsg = string.Empty;
                            sMsg += @"<p>Bonjour,</p><p>Nous souhaitons vous informer que les licences des utilisateurs ci-dessous arrivent bientôt à expiration.</p>";

                            //liste des users pour chaque administrateur central
                            userList = new List<User>();
                            userList = (from uc in db.User
                                        join f in db.FirmInstitution on uc.idUser equals f.idUserCreated
                                        join fa in db.FirmInstitutionAdviser on f.idFirmInstitution equals fa.idFirmInstitutionParent
                                        join u in db.User on fa.idUser equals u.idUser
                                        where uc.idUser == userAdminNow.idUser
                                        select u).Distinct().ToList();
                            sMsg += @"<ul>";
                            foreach (User userNow in userList)
                            {
                                if (userNow.License != null)
                                {
                                    //System.Console.WriteLine(string.Format(@"LAB Licence N° {0} {1} {2} {3}", userNow.License.LicenseKey, userNow.UserName, userNow.UserFirstName, userNow.License.DateExpired.ToString()));
                                    sMsg += string.Format(@"<li>LAB Licence N° {0} {1} {2} {3}</li>", userNow.License.LicenseKey, userNow.UserName, userNow.UserFirstName, userNow.License.DateExpired.ToString());

                                }
                                if (userNow.License1 != null)
                                {
                                    //System.Console.WriteLine(string.Format(@"Recueil Licence N° {0} {1} {2} {3}", userNow.License1.LicenseKey, userNow.UserName, userNow.UserFirstName, userNow.License1.DateExpired.ToString()));
                                    sMsg += string.Format(@"<li>Recueil Licence N° {0} {1} {2} {3}</li>", userNow.License1.LicenseKey, userNow.UserName, userNow.UserFirstName, userNow.License1.DateExpired.ToString());
                                }

                            }
                            //end list user
                            sMsg += @"</ul>";
                            sMsg += @"<p>Afin de continuer à profiter de vos outils, nous vous invitons à renouveler vos licences dès maintenant en suivant la procédure suivante :</p><p>• Connectez-vous sur votre espace UPSIDEO, cliquez sur ""Souscrire > Un renouvellement de licence"".</p><p>Cordialement,</p>Le service client d’UPSIDEO<br/>[email protected]";
                        
                            isSent = UserBL.SendAlertEmailExpirationLicence(userAdminNow, sFrom, sTo, sSubject, sMsg);
                        }                       

                        //Creation log Licence expiré
                        if (isSent)
                        {
                            ReminderLog reminder = new ReminderLog()
                            {
                                DateCreated = DateTime.Today,
                                Email = userAdminNow.UserEmail,
                                idUser = userAdminNow.idUser,                               
                                IsAutomatic = true, //service auto
                                DocumentType = UserBL.LicenseExpired,
                            };                         

                            ReminderLogBL.AddReminder(reminder);
                        }
                    }

                }
            }
            catch (Exception ex)
            {
                Log.AppendException(ex);
            }

            System.Console.WriteLine("---FIN ENVOI MAIl LICENCES EXPIREES---");
        }