/// <summary>
        /// This is the constructor for the Schedule Stats generator.
        ///
        /// This class determines if today is the last working day of the week, month,
        /// or first working day of the year and send out a report via email automatically.
        /// </summary>
        /// <param name="MainForm"></param>
        /// <param name="detailFrom"></param>
        public ScheduleStatsGen(LogCreator MainForm, DetailForm detailFrom)
        {
            //Check if today is either the end of the week, end of the month, or end of the year.
            //End of the week == Monday(of next week)
            //End of the month == Last business day of the month
            //End of the year == One week into the new year. (Send out on the second Monday of the year)

            today = DateTime.Today;

            //If today is the end of the week we generate end of week statistics
            if (isEndOfWeek())
            {
                //Get the start date
                DateTime startDate = this.getFirstDayOfWeek();
                DateTime endDate   = today;

                while (endDate.DayOfWeek != DayOfWeek.Friday)
                {
                    endDate = endDate.AddDays(-1);
                }
                //generate the stats
                detailFrom.updateDetail("Generating weekly statistics.");
                statGenerator = new StatsGen(MainForm, startDate, endDate, "Weekly");
                //Get the file path
                string filePath = MainForm.STATS_LOCATION + statGenerator.getfileName();
                //Send the email
                detailFrom.updateDetail("Sending Email.");
                EmailSender ES = new EmailSender(filePath, "Weekly CSCO PT Stats");
            }

            //If we are at the end of the month we auto generate statistics
            if (isEndOfMonth())
            {
                //Get the start date
                DateTime starteDate = this.getFirstDayOfMonth();
                //generate the stats
                detailFrom.updateDetail("Generating monthly statistics.");
                statGenerator = new StatsGen(MainForm, starteDate, today, "Monthly");
                //Get the file path
                string filePath = MainForm.STATS_LOCATION + statGenerator.getfileName();
                //Send the email
                detailFrom.updateDetail("Sending Email.");
                EmailSender ES = new EmailSender(filePath, "Monthly CSCO PT Stats for " + today.Month);
            }

            //If we are at the end of the year we end
            if (isEndOfYear())
            {
                //Get the start date
                DateTime starteDate = this.getFirstDayOfYear();
                //generate the stats
                detailFrom.updateDetail("Generating yearly statistics.");
                statGenerator = new StatsGen(MainForm, starteDate, today, "Yearly");
                //Get the file path
                string filePath = MainForm.STATS_LOCATION + statGenerator.getfileName();
                //Send the email
                detailFrom.updateDetail("Sending Email.");
                EmailSender ES = new EmailSender(filePath, "Yearly CSCO PT stats for " + (today.Year - 1));
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Do the work
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Bw_DoWork(object sender, DoWorkEventArgs e)
        {
            var worker = sender as BackgroundWorker;

            try
            {
                StatsGen statGenerator = new StatsGen(this.mainForm, this.startDate, this.endDate, "Manual");
                statsFileToOpen = statGenerator.getfileName();
                statGenerator   = null;
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
            catch (Exception)
            {
                return;
            }
            return;
        }