Example #1
0
        //проверяет, нужно ли запускать задачу исходя из времени последнего запуска и периодичности
        private bool PeriodFitting(SavedTaskResults task, string taskPeriod)
        {
            DateTime taskCutDT = this.CutDateTime(task.lastRun, taskPeriod);
            DateTime nowCutDT  = this.CutDateTime(GlobalUtils.GetNowUtcDateTime(), taskPeriod);

            return(taskCutDT == nowCutDT);
        }
Example #2
0
        public DateTime GetWorkDate()
        {
            if (this.isWorkDTComputed)
            {
                return(this.workDateTime);
            }

            //сначала вычислим рабочую дату
            switch (this.dateRange)
            {
            case eDateRange.Now:
                this.workDateTime = GlobalUtils.GetNowUtcDateTime();
                break;

            case eDateRange.Prev:
                this.workDateTime = this.ComputePrevDate(this.workInterval);
                break;

            default:
                this.workDateTime = new DateTime();
                break;
            }

            this.isWorkDTComputed = true;
            return(this.workDateTime);
        }
        public void BackupPlannerXml()
        {
            string backupPath = "planner backup";

            //проверка, создана ли папка для бекапов
            if (!Directory.Exists(backupPath))
            {
                Directory.CreateDirectory(backupPath);
            }

            //заполняем списов файлов и дат их создания
            DirectoryInfo di = new DirectoryInfo(backupPath);
            Dictionary <DateTime, string> nameAndDate = new Dictionary <DateTime, string>();

            foreach (FileInfo file in di.GetFiles())
            {
                nameAndDate.Add(file.CreationTime, file.FullName);
            }

            //находим самый поздний бекап и удаляем его
            if (nameAndDate.Count > 10)
            {
                string minFile = nameAndDate[nameAndDate.Min(x => x.Key)];
                File.Delete(minFile);
            }

            //копируем планировщик
            File.Copy("Planner.xml", backupPath + "\\Planner " + GlobalUtils.GetNowUtcDateTime().ToString("yyyy-MM-dd hh-mm-ss") + ".xml");
        }
        //когда заканчивается парсинг xml-файла, необходимо выполнить все задания из него по очереди
        public ResultController StartExchange()
        {
            ResultController sessionRC = new ResultController("Выполнение сессии");

            foreach (PlannerTask oneTask in tasks)
            {
                //успешно ли выполнилось текуще задание
                bool taskRes = true;

                DateTime startDT = GlobalUtils.GetNowUtcDateTime();

                if (!oneTask.isFake)
                {
                    //сперва смотрим, нужно ли выполнять данный таск
                    if (this.los.CheckTaskExecute(oneTask.id, oneTask.period))
                    {
                        //сообщения отправляет класс LogOfSuccession
                        //это сделано потому, что сообщения, преденные системе вывода могут быть разными
                        //и в то же время этому коду нужно знать, продолжать выполнение задания или нет
                        continue;
                    }

                    ResultController tmpResContr = oneTask.TaskStartsExchange(this.prx, sessionRC);
                    taskRes = ActionResult.IsResultIsNotError(tmpResContr.globalWorkRes);
                    sessionRC.AddInnerController(tmpResContr);
                    this.los.SaveTaskResult(oneTask.id, taskRes, startDT);
                }
            }

            //даем команду сохранить все в логах проверки запуска
            this.los.WorkIsOver();
            this.outputs.WorkIsOver2(sessionRC);

            return(sessionRC);
        }
Example #5
0
        public ControllerOfOutput(bool _testmode)
        {
            this.testmode = _testmode;
            SESSIONDATE   = GlobalUtils.GetNowUtcDateTime();

            if (!this.testmode)
            {
                OutputSupertype email        = new OutputEmail();
                OutputSupertype allLogFile   = new OutputFile("\\alllog.txt");
                OutputSupertype errorLogFile = new OutputFile("\\errorlog.txt");
                OutputSupertype console      = new OutputConsole();

                critMessages.Add(email);
                critMessages.Add(allLogFile);
                critMessages.Add(console);

                averageMessages.Add(allLogFile);
                averageMessages.Add(console);

                progressMessages.Add(console);

                errorMessages.Add(errorLogFile);
                errorMessages.Add(console);
                errorMessages.Add(allLogFile);
                errorMessages.Add(email);
            }
            else
            {
                OutputSupertype console = new OutputConsole();
                critMessages.Add(console);
                averageMessages.Add(console);
                progressMessages.Add(console);
                errorMessages.Add(console);
            }
        }
Example #6
0
 public override void WriteLog(string msg, string title)
 {
     if (this.file != null)
     {
         this.file.WriteLine(GlobalUtils.GetNowUtcDateTime().ToString("yyyy.MM.dd HH:mm:ss") + "\t" + msg);
     }
     //Console.WriteLine(msg);
 }
Example #7
0
        private DateTime ComputePrevDate(eWorkInterval _int)
        {
            switch (this.workInterval)
            {
            case eWorkInterval.Days:
                return(GlobalUtils.GetNowUtcDateTime().AddDays(-1));

            case eWorkInterval.Months:
                return(GlobalUtils.GetNowUtcDateTime().AddMonths(-1));

            case eWorkInterval.Years:
                return(GlobalUtils.GetNowUtcDateTime().AddYears(-1));

            default:
                return(new DateTime());
            }
        }
        static void Init(string[] args)
        {
            SettingsClass sc = SettingsClass.Instance;

            //парсинг командной строки
            foreach (string s in args)
            {
                Console.WriteLine(s);
                if (s == "-sc")
                {
                    sc.__showConsole = true;
                }
                else if (s == "-ra")
                {
                    sc.__runAll = true;
                }
            }

            ControllerOfOutput.Instance.WriteAverageMessage("Начинаем сессию от " + GlobalUtils.GetNowUtcDateTime().ToString());
        }
Example #9
0
 //останавливаем
 public void StopAction()
 {
     this.stopDate = GlobalUtils.GetNowUtcDateTime();
 }
Example #10
0
 //запускаем
 public void StartAction()
 {
     this.startDate = GlobalUtils.GetNowUtcDateTime();
 }