Esempio n. 1
0
        private DataTable GenerateTasks(ClockTime startTime, ClockTime stopTime, ClockTimeInterval interval, List <DayOfWeek> IncludedDays)
        {
            DataTable task      = GetTasksDataTable();
            ClockTime clockTime = new ClockTime();

            foreach (var day in IncludedDays)
            {
                clockTime.Hour   = startTime.Hour;
                clockTime.Minute = startTime.Minute;
                while (clockTime != stopTime)
                {
                    task.Rows.Add(day, clockTime.ToString(), null);
                    clockTime.AddInterval(interval);
                }
            }
            return(task);
        }
Esempio n. 2
0
        private bool IsTimeOverlap(ClockTime startTime, ClockTime stopTime, ClockTimeInterval interval)
        {
            ClockTimeInterval differentialInterval = ClockTimeInterval.GetInterval(startTime, stopTime);

            while (true)
            {
                if (differentialInterval.Hour == 0 && differentialInterval.Minute == 0)
                {
                    return(true);
                }
                else if (differentialInterval.Hour < 0 || differentialInterval.Minute < 0)
                {
                    return(false);
                }
                differentialInterval.SubtractInterval(interval);
            }
        }
Esempio n. 3
0
 private Tools.Planner GetPlanner(Participant participant, string plannerName)
 {
     try
     {
         DataTable         plannerSample = DbAdapter.GetPlanner(participant.Name, plannerName);
         DayOfWeek         firstDay      = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), plannerSample.Rows[0]["Planner_FirstDay"].ToString());
         ClockTime         startTime     = ExtractClockTime(plannerSample.Rows[0]["Planner_StartTime"].ToString());
         ClockTime         stopTime      = ExtractClockTime(plannerSample.Rows[0]["Planner_StopTime"].ToString());
         ClockTimeInterval interval      = ExtractClockTimeInterval(plannerSample.Rows[0]["Planner_Interval"].ToString());
         DataTable         task          = ExtractTask(firstDay, startTime, stopTime, interval, DbAdapter.GetTask(participant.Name, plannerName));
         return(new Tools.Planner(participant, plannerName, firstDay, startTime, stopTime, interval, task));
     }
     catch (Exception)
     {
         throw;
     }
 }
Esempio n. 4
0
 private void CreatePlanner(Participant participant, string plannerName, DayOfWeek firstDay, List <DayOfWeek> IncludedDays, string startTimeSample, string stopTimeSample, string intervalSample)
 {
     if (plannerName.Length != 0 && startTimeSample.Length != 0 && stopTimeSample.Length != 0 && intervalSample.Length != 0)
     {
         if (!ExtractPlanners(DbAdapter.GetPlanners(this.Participant.Name)).Contains(plannerName))
         {
             if (IsTimeFormatCorrect(startTimeSample) && IsTimeFormatCorrect(stopTimeSample) && IsTimeFormatCorrect(intervalSample))
             {
                 ClockTime         startTime = ExtractClockTime(startTimeSample);
                 ClockTime         stopTime  = ExtractClockTime(stopTimeSample);
                 ClockTimeInterval interval  = ExtractClockTimeInterval(intervalSample);
                 if (IsTimeOverlap(startTime, stopTime, interval))
                 {
                     try
                     {
                         DataTable task = GenerateTasks(startTime, stopTime, interval, IncludedDays);
                         DbAdapter.CreatePlanner(participant.Name, plannerName, firstDay.ToString(), startTime.ToString(), stopTime.ToString(), interval.ToString(), task);
                         AdjustPlannerListBox();
                         OpenPlanner(participant, plannerName);
                     }
                     catch (Exception exception)
                     {
                         MessageBox.Show(exception.Message);
                     }
                 }
                 else
                 {
                     MessageBox.Show($"Cannot create planner of given time values");
                 }
             }
             else
             {
                 MessageBox.Show("Time values must be expressed as hh:mm");
             }
         }
         else
         {
             MessageBox.Show($"Planner {plannerName} already exists");
         }
     }
     else
     {
         MessageBox.Show("All fields must be non-empty");
     }
 }
Esempio n. 5
0
        private DataTable ExtractTask(DayOfWeek firstDay, ClockTime startTime, ClockTime stopTime, ClockTimeInterval interval, DataTable taskSample)
        {
            DataTable task = new DataTable();

            #region columns definition

            List <string>    IncludedDaysSample = (taskSample.AsEnumerable().Select(x => x["Task_Day"].ToString()).Distinct().ToList());
            List <DayOfWeek> IncludedDays       = IncludedDaysSample.ConvertAll(new Converter <string, DayOfWeek>(StringToDayOfWeek));
            ChangeWeekDaysOrder(IncludedDays, firstDay);
            task.Columns.AddRange(IncludedDays.ConvertAll(new Converter <DayOfWeek, DataColumn>(DayOfWeekToDataColumn)).ToArray());

            #endregion

            #region table values definition

            List <object> DataRowEquivalent = new List <object>();
            ClockTime     clockTime         = new ClockTime(startTime.Hour, startTime.Minute);
            while (clockTime != stopTime)
            {
                DataRow[] dataRows = taskSample.Select($"Task_Time = '{clockTime.ToString()}'");
                foreach (DataColumn dataColumn in task.Columns)
                {
                    foreach (DataRow dataRow in dataRows)
                    {
                        if (dataColumn.ColumnName == dataRow["Task_Day"].ToString())
                        {
                            DataRowEquivalent.Add(dataRow["TaskType_Name"]);
                            break;
                        }
                    }
                }
                task.Rows.Add(DataRowEquivalent.ToArray());
                DataRowEquivalent.Clear();
                clockTime.AddInterval(interval);
            }

            #endregion

            return(task);
        }