public async Task <ActionResult> Save(ScheduleMonthViewModel model)
        {
            using (ScheduleMonthServiceClient client = new ScheduleMonthServiceClient())
            {
                ScheduleMonth obj = new ScheduleMonth()
                {
                    Key = new ScheduleMonthKey()
                    {
                        LocationName       = model.LocationName,
                        RouteOperationName = model.RouteOperationName,
                        Year  = model.Year,
                        Month = model.Month
                    },
                    ScheduleName = model.ScheduleName,
                    Editor       = User.Identity.Name,
                    EditTime     = DateTime.Now,
                    CreateTime   = DateTime.Now,
                    Creator      = User.Identity.Name
                };
                MethodReturnResult rst = await client.AddAsync(obj);

                if (rst.Code == 0)
                {
                    rst.Message = string.Format(FMMResources.StringResource.ScheduleMonth_Save_Success
                                                , obj.Key);
                }
                return(Json(rst));
            }
        }
 /// <summary>
 /// Constructor for a yearly schedule
 /// </summary>
 /// <param name="StartMonth"></param>
 /// <param name="StartDate">The date, value between 1-31</param>
 /// <param name="StartTime"></param>
 /// <param name="EndMonth"></param>
 /// <param name="EndDate">The date, value between 1-31</param>
 /// <param name="Endtime"></param>
 public ICalendar(ScheduleMonth StartMonth, int StartDate, ScheduleTime StartTime, ScheduleMonth EndMonth, int EndDate, ScheduleTime Endtime) : this(
         ScheduleFrequency.YEARLY,
         new DateTime(1970, (int)StartMonth, StartDate, StartTime.Hour, StartTime.Minutes, StartTime.Seconds),
         new DateTime(1970, (int)EndMonth, EndDate, Endtime.Hour, Endtime.Minutes, Endtime.Seconds)
         )
 {
 }
        public void TestScheduleDay()
        {
            var month = new ScheduleMonth(2017, 02, holidays);
            var day   = month.GetScheduleDay(10);

            Assert.IsFalse(day.IsRestday);
            Assert.IsFalse(day.IsHoliday);
            Assert.IsFalse(day.IsPreHoliday);

            var smenDay = day[SmenaName.Day];

            Assert.AreEqual((int)smenDay.WorkHours, 8);
            Assert.IsFalse(smenDay.IsNight);

            var smenA = day[SmenaName.A];

            Assert.AreEqual((int)smenA.WorkHours, 0);
            Assert.IsFalse(smenA.IsNight);

            var smenaB = day[SmenaName.B];

            Assert.AreEqual((int)smenaB.WorkHours, 12);
            Assert.IsTrue(smenaB.IsNight);

            var smenaC = day[SmenaName.V];

            Assert.AreEqual((int)smenaC.WorkHours, 12);
            Assert.IsFalse(smenaC.IsNight);

            var smenaD = day[SmenaName.G];

            Assert.AreEqual((int)smenaD.WorkHours, 0);
            Assert.IsFalse(smenaD.IsNight);
        }
Exemple #4
0
        private static Rotation FindUnassignedRotation(Schedule schedule, out ScheduleMonth monthOut)
        {
            foreach (ScheduleMonth month in schedule.Months)
            {
                foreach (Rotation rotation in month.Rotations)
                {
                    if (!rotation.RotationType.HasValue)
                    {
                        monthOut = month;
                        return(rotation);
                    }
                }
            }

            throw new Exception("No unassigned rotations to be found.");
        }
        public void TestPreHoliday()
        {
            var holidays = new Dictionary <DateTime, string> {
                { new DateTime(2015, 03, 08), "бабский день" }
            };

            var month = new ScheduleMonth(2015, 03, holidays);
            var day   = month.GetScheduleDay(07);

            Assert.IsTrue(day.IsRestday);
            Assert.IsFalse(day.IsHoliday);
            Assert.IsTrue(day.IsPreHoliday);

            var smenDay = day[SmenaName.Day];

            Assert.AreEqual((int)smenDay.WorkHours, 0);
            Assert.IsFalse(smenDay.IsNight);
        }
        /// <summary>
        /// Constructor
        /// </summary>
        public MonthSchedule(string configxml)
        {
            XmlDocument configXml = new XmlDocument();

            configXml.LoadXml(configxml);
            base.type = ExtractScheduleType(configXml);
            if (base.type != ScheduleType.Monthly)
            {
                throw (new ApplicationException("Invalid Configuration Type"));
            }
            this.StartDate = ExtractDate(configXml, "/schedule/startdate", true);
            this.StartTime = ExtractTime(configXml, "/schedule/starttime", true);

            this.Day = IfExistsExtractInt(configXml, "/schedule/dayofmonth", 0);
            if (this.Day == 0)
            {
                this.Ordinal = ExtractScheduleOrdinal(configXml, "/schedule/ordinal", true);
                this.WeekDay = ExtractScheduleDay(configXml, "/schedule/weekday", true);
            }
            this.ScheduledMonths = ExtractScheduleMonth(configXml, "/schedule/months", true);
        }
        public bool Apply()
        {
            if (!Validate())
            {
                return(false);
            }

            this.adapterConfiguration.Name           = this.textScheduleName.Text;
            this.adapterConfiguration.Uri            = string.Format("schedule://{0}/{1}", this.comboScheduleType.SelectedItem, this.textScheduleName.Text);
            this.adapterConfiguration.SuspendMessage = this.checkSuspendMessage.Checked;

            #region Schedule
            Schedule schedule = null;
            switch ((ScheduleType)this.comboScheduleType.SelectedItem)
            {
            case ScheduleType.TimeSpan:
                schedule           = new TimeSpanSchedule();
                schedule.StartDate = this.dateStartDate.Value;
                schedule.StartTime = this.dateStartTime.Value;
                int interval = 0;
                switch ((ScheduleTimeUnit)this.comboTimeUnits.SelectedItem)
                {
                case ScheduleTimeUnit.Seconds:
                    interval = Convert.ToInt32(this.updownTimeInterval.Value);
                    break;

                case ScheduleTimeUnit.Minutes:
                    interval = Convert.ToInt32(this.updownTimeInterval.Value * 60);
                    break;

                case ScheduleTimeUnit.Hours:
                    interval = Convert.ToInt32(this.updownTimeInterval.Value * 3600);
                    break;

                default:
                    interval = 3600;
                    break;
                }
                ((TimeSpanSchedule)schedule).Interval = interval;
                break;

            case ScheduleType.Daily:
                schedule           = new DaySchedule();
                schedule.StartDate = this.dateStartDate.Value;
                schedule.StartTime = this.dateStartTime.Value;
                if (radioDayInterval.Checked)
                {
                    ((DaySchedule)schedule).Interval      = Convert.ToInt32(this.updownDayInterval.Value);
                    ((DaySchedule)schedule).ScheduledDays = ScheduleDay.None;
                }
                else
                {
                    ScheduleDay days = ScheduleDay.None;
                    if (checkDaySunday.Checked)
                    {
                        days |= ScheduleDay.Sunday;
                    }
                    if (checkDayMonday.Checked)
                    {
                        days |= ScheduleDay.Monday;
                    }
                    if (checkDayTuesday.Checked)
                    {
                        days |= ScheduleDay.Tuesday;
                    }
                    if (checkDayWednesday.Checked)
                    {
                        days |= ScheduleDay.Wednesday;
                    }
                    if (checkDayThursday.Checked)
                    {
                        days |= ScheduleDay.Thursday;
                    }
                    if (checkDayFriday.Checked)
                    {
                        days |= ScheduleDay.Friday;
                    }
                    if (checkDaySaturday.Checked)
                    {
                        days |= ScheduleDay.Saturday;
                    }
                    ((DaySchedule)schedule).ScheduledDays = days;
                    ((DaySchedule)schedule).Interval      = 0;
                }
                break;

            case ScheduleType.Weekly:
                schedule           = new WeekSchedule();
                schedule.StartDate = this.dateStartDate.Value;
                schedule.StartTime = this.dateStartTime.Value;
                ((WeekSchedule)schedule).Interval = Convert.ToInt32(this.updownWeekInterval.Value);
                ScheduleDay weekDays = ScheduleDay.None;
                if (checkWeekSunday.Checked)
                {
                    weekDays |= ScheduleDay.Sunday;
                }
                if (checkWeekMonday.Checked)
                {
                    weekDays |= ScheduleDay.Monday;
                }
                if (checkWeekTuesday.Checked)
                {
                    weekDays |= ScheduleDay.Tuesday;
                }
                if (checkWeekWednesday.Checked)
                {
                    weekDays |= ScheduleDay.Wednesday;
                }
                if (checkWeekThursday.Checked)
                {
                    weekDays |= ScheduleDay.Thursday;
                }
                if (checkWeekFriday.Checked)
                {
                    weekDays |= ScheduleDay.Friday;
                }
                if (checkWeekSaturday.Checked)
                {
                    weekDays |= ScheduleDay.Saturday;
                }
                ((WeekSchedule)schedule).ScheduledDays = weekDays;
                break;

            case ScheduleType.Monthly:
                schedule           = new MonthSchedule();
                schedule.StartDate = this.dateStartDate.Value;
                schedule.StartTime = this.dateStartTime.Value;
                if (radioDayofMonth.Checked)
                {
                    ((MonthSchedule)schedule).Day = Convert.ToInt32(this.updownDayofMonth.Value);
                }
                else
                {
                    ((MonthSchedule)schedule).Ordinal = (ScheduleOrdinal)this.comboOrdinal.SelectedItem;
                    ((MonthSchedule)schedule).WeekDay = (ScheduleDay)this.comboWeekday.SelectedItem;
                }
                ScheduleMonth months = ScheduleMonth.None;
                if (checkJanuary.Checked)
                {
                    months |= ScheduleMonth.January;
                }
                if (checkFebruary.Checked)
                {
                    months |= ScheduleMonth.February;
                }
                if (checkMarch.Checked)
                {
                    months |= ScheduleMonth.March;
                }
                if (checkApril.Checked)
                {
                    months |= ScheduleMonth.April;
                }
                if (checkMay.Checked)
                {
                    months |= ScheduleMonth.May;
                }
                if (checkJune.Checked)
                {
                    months |= ScheduleMonth.June;
                }
                if (checkJuly.Checked)
                {
                    months |= ScheduleMonth.July;
                }
                if (checkAugust.Checked)
                {
                    months |= ScheduleMonth.August;
                }
                if (checkSeptember.Checked)
                {
                    months |= ScheduleMonth.September;
                }
                if (checkOctober.Checked)
                {
                    months |= ScheduleMonth.October;
                }
                if (checkNovember.Checked)
                {
                    months |= ScheduleMonth.November;
                }
                if (checkDecember.Checked)
                {
                    months |= ScheduleMonth.December;
                }
                ((MonthSchedule)schedule).ScheduledMonths = months;
                break;

            default:
                break;
            }

            adapterConfiguration.Schedule = schedule;
            #endregion

            #region Task
            Task task = new Task();
            task.TaskType                  = this.taskType;
            task.TaskParameters            = propertyGridTask.SelectedObject;
            this.adapterConfiguration.Task = task;
            #endregion

            return(true);
        }
        public void ScheduledPropertyPage_OnLoad(object sender, EventArgs e)
        {
            this.textScheduleName.Text       = adapterConfiguration.Name;
            this.checkSuspendMessage.Checked = adapterConfiguration.SuspendMessage;

            if (adapterConfiguration.Schedule != null)
            {
                this.dateStartDate.Value            = adapterConfiguration.Schedule.StartDate;
                this.dateStartTime.Value            = adapterConfiguration.Schedule.StartTime;
                this.comboScheduleType.SelectedItem = adapterConfiguration.Schedule.Type;
                switch (adapterConfiguration.Schedule.Type)
                {
                case ScheduleType.Daily:
                    //set Daily schedule properties
                    DaySchedule daySchedule = adapterConfiguration.Schedule as DaySchedule;
                    this.updownDayInterval.Value = Convert.ToDecimal(daySchedule.Interval);
                    //if (this.updownDayInterval.Value == 0) --- to be removed
                    if (daySchedule.ScheduledDays != ScheduleDay.None)
                    {
                        ScheduleDay days = daySchedule.ScheduledDays;
                        if ((days & ScheduleDay.Sunday) > 0)
                        {
                            checkDaySunday.Checked = true;
                        }
                        if ((days & ScheduleDay.Monday) > 0)
                        {
                            checkDayMonday.Checked = true;
                        }
                        if ((days & ScheduleDay.Tuesday) > 0)
                        {
                            checkDayTuesday.Checked = true;
                        }
                        if ((days & ScheduleDay.Wednesday) > 0)
                        {
                            checkDayWednesday.Checked = true;
                        }
                        if ((days & ScheduleDay.Thursday) > 0)
                        {
                            checkDayThursday.Checked = true;
                        }
                        if ((days & ScheduleDay.Friday) > 0)
                        {
                            checkDayFriday.Checked = true;
                        }
                        if ((days & ScheduleDay.Saturday) > 0)
                        {
                            checkDaySaturday.Checked = true;
                        }
                        //radioDayInterval.Checked = false; --- to be removed
                        radioSelectDays.Checked = true;
                    }
                    else
                    {
                        radioDayInterval.Checked = true;
                    }
                    break;

                case ScheduleType.Weekly:
                    //set Weekly schedule properties
                    WeekSchedule weekSchedule = adapterConfiguration.Schedule as WeekSchedule;
                    this.updownWeekInterval.Value = weekSchedule.Interval;
                    ScheduleDay weekDays = weekSchedule.ScheduledDays;
                    if ((weekDays & ScheduleDay.Sunday) > 0)
                    {
                        checkWeekSunday.Checked = true;
                    }
                    if ((weekDays & ScheduleDay.Monday) > 0)
                    {
                        checkWeekMonday.Checked = true;
                    }
                    if ((weekDays & ScheduleDay.Tuesday) > 0)
                    {
                        checkWeekTuesday.Checked = true;
                    }
                    if ((weekDays & ScheduleDay.Wednesday) > 0)
                    {
                        checkWeekWednesday.Checked = true;
                    }
                    if ((weekDays & ScheduleDay.Thursday) > 0)
                    {
                        checkWeekThursday.Checked = true;
                    }
                    if ((weekDays & ScheduleDay.Friday) > 0)
                    {
                        checkWeekFriday.Checked = true;
                    }
                    if ((weekDays & ScheduleDay.Saturday) > 0)
                    {
                        checkWeekSaturday.Checked = true;
                    }
                    break;

                case ScheduleType.Monthly:
                    //set Monthly schedule properties
                    MonthSchedule monthSchedule = adapterConfiguration.Schedule as MonthSchedule;
                    this.updownDayofMonth.Value = monthSchedule.Day;
                    if (this.updownDayofMonth.Value == 0)
                    {
                        this.comboOrdinal.SelectedItem = monthSchedule.Ordinal;
                        this.comboWeekday.SelectedItem = monthSchedule.WeekDay;
                        radioDayofMonth.Checked        = false;
                    }
                    else
                    {
                        radioDayofMonth.Checked = true;
                    }
                    ScheduleMonth months = monthSchedule.ScheduledMonths;
                    if ((months & ScheduleMonth.January) > 0)
                    {
                        checkJanuary.Checked = true;
                    }
                    if ((months & ScheduleMonth.February) > 0)
                    {
                        checkFebruary.Checked = true;
                    }
                    if ((months & ScheduleMonth.March) > 0)
                    {
                        checkMarch.Checked = true;
                    }
                    if ((months & ScheduleMonth.April) > 0)
                    {
                        checkApril.Checked = true;
                    }
                    if ((months & ScheduleMonth.May) > 0)
                    {
                        checkMay.Checked = true;
                    }
                    if ((months & ScheduleMonth.June) > 0)
                    {
                        checkJune.Checked = true;
                    }
                    if ((months & ScheduleMonth.July) > 0)
                    {
                        checkJuly.Checked = true;
                    }
                    if ((months & ScheduleMonth.August) > 0)
                    {
                        checkAugust.Checked = true;
                    }
                    if ((months & ScheduleMonth.September) > 0)
                    {
                        checkSeptember.Checked = true;
                    }
                    if ((months & ScheduleMonth.October) > 0)
                    {
                        checkOctober.Checked = true;
                    }
                    if ((months & ScheduleMonth.November) > 0)
                    {
                        checkNovember.Checked = true;
                    }
                    if ((months & ScheduleMonth.December) > 0)
                    {
                        checkDecember.Checked = true;
                    }
                    break;

                case ScheduleType.TimeSpan:
                    //set Timespan schedule properties
                    TimeSpanSchedule timeSchedule = adapterConfiguration.Schedule as TimeSpanSchedule;
                    int timeinseconds             = timeSchedule.Interval;
                    if (timeinseconds % 3600 == 0)
                    {
                        this.updownTimeInterval.Value    = (timeinseconds / 3600);
                        this.comboTimeUnits.SelectedItem = ScheduleTimeUnit.Hours;
                    }
                    else if (timeinseconds % 60 == 0)
                    {
                        this.updownTimeInterval.Value    = (timeinseconds / 60);
                        this.comboTimeUnits.SelectedItem = ScheduleTimeUnit.Minutes;
                    }
                    else
                    {
                        this.updownTimeInterval.Value    = timeinseconds;
                        this.comboTimeUnits.SelectedItem = ScheduleTimeUnit.Seconds;
                    }
                    break;

                default:
                    break;
                }
            }
            if (adapterConfiguration.Task != null)
            {
                this.taskType           = adapterConfiguration.Task.TaskType;
                this.textTaskClass.Text = adapterConfiguration.Task.TaskType.AssemblyQualifiedName;
                this.propertyGridTask.SelectedObject = adapterConfiguration.Task.TaskParameters;
            }
        }
        private void UnloadMonthlySchedule()
        {
            ConfigXml.DocumentElement.SetAttribute("type", "", "Monthly");
            if (radioDayofMonth.Checked)
            {
                if (_dayofmonth.Value == 0)
                {
                    throw new ApplicationException("Must select a day of the month");
                }
                XmlNode dayofmonth = ConfigXml.CreateNode("element", "dayofmonth", "");
                dayofmonth.InnerText = _dayofmonth.Value.ToString();
                ConfigXml.DocumentElement.AppendChild(dayofmonth);
            }
            else
            {
                if (ordinalDropDown.SelectedItem == null)
                {
                    throw new ApplicationException("Must select an ordinal day");
                }
                XmlNode ordinal = ConfigXml.CreateNode("element", "ordinal", "");
                ordinal.InnerText = ordinalDropDown.SelectedItem.ToString();
                ConfigXml.DocumentElement.AppendChild(ordinal);

                if (weekdayDropDown.SelectedItem == null)
                {
                    throw new ApplicationException("Must select an ordinal week day");
                }
                XmlNode weekday = ConfigXml.CreateNode("element", "weekday", "");
                weekday.InnerText = weekdayDropDown.SelectedItem.ToString();
                if (weekday.InnerText == "Day")
                {
                    weekday.InnerText = "All";
                }
                ConfigXml.DocumentElement.AppendChild(weekday);
            }
            ScheduleMonth result = ScheduleMonth.None;

            if (monthJanuary.Checked)
            {
                result = result | ScheduleMonth.January;
            }
            if (monthFebruary.Checked)
            {
                result = result | ScheduleMonth.February;
            }
            if (monthMarch.Checked)
            {
                result = result | ScheduleMonth.March;
            }
            if (monthApril.Checked)
            {
                result = result | ScheduleMonth.April;
            }
            if (monthMay.Checked)
            {
                result = result | ScheduleMonth.May;
            }
            if (monthJune.Checked)
            {
                result = result | ScheduleMonth.June;
            }
            if (monthJuly.Checked)
            {
                result = result | ScheduleMonth.July;
            }
            if (monthAugust.Checked)
            {
                result = result | ScheduleMonth.August;
            }
            if (monthSeptember.Checked)
            {
                result = result | ScheduleMonth.September;
            }
            if (monthOctober.Checked)
            {
                result = result | ScheduleMonth.October;
            }
            if (monthNovember.Checked)
            {
                result = result | ScheduleMonth.November;
            }
            if (monthDecember.Checked)
            {
                result = result | ScheduleMonth.December;
            }
            if (result == ScheduleMonth.None)
            {
                throw new ApplicationException("Must select one or more months");
            }
            else
            {
                XmlNode months = ConfigXml.CreateNode("element", "months", "");
                months.InnerText = result.ToString();
                ConfigXml.DocumentElement.AppendChild(months);
            }
        }
        private void LoadMonthlySchedule()
        {
            tabPages.SelectedTab = tabMonthly;
            _dayofmonth.Value    = Convert.ToDecimal(Schedule.IfExistsExtractInt(ConfigXml, "/schedule/dayofmonth", 0));
            if (_dayofmonth.Value == 0)
            {
                ScheduleOrdinal ordinal = Schedule.ExtractScheduleOrdinal(ConfigXml, "/schedule/ordinal", false);
                int             index   = ordinalDropDown.Items.IndexOf(ordinal.ToString());
                ordinalDropDown.SelectedIndex = index;
                ScheduleDay weekDay    = Schedule.ExtractScheduleDay(ConfigXml, "/schedule/weekday", false);
                string      strWeekday = weekDay.ToString();
                if (strWeekday == "All")
                {
                    strWeekday = "Day";
                }
                index = weekdayDropDown.Items.IndexOf(strWeekday);
                weekdayDropDown.SelectedIndex = index;
                radioDayofMonth.Checked       = false;
            }
            else
            {
                radioDayofMonth.Checked = true;
            }
            ScheduleMonth months = Schedule.ExtractScheduleMonth(ConfigXml, "/schedule/months", false);

            if ((months & ScheduleMonth.February) > 0)
            {
                monthFebruary.Checked = true;
            }
            if ((months & ScheduleMonth.March) > 0)
            {
                monthMarch.Checked = true;
            }
            if ((months & ScheduleMonth.April) > 0)
            {
                monthApril.Checked = true;
            }
            if ((months & ScheduleMonth.May) > 0)
            {
                monthMay.Checked = true;
            }
            if ((months & ScheduleMonth.June) > 0)
            {
                monthJune.Checked = true;
            }
            if ((months & ScheduleMonth.July) > 0)
            {
                monthJuly.Checked = true;
            }
            if ((months & ScheduleMonth.August) > 0)
            {
                monthAugust.Checked = true;
            }
            if ((months & ScheduleMonth.September) > 0)
            {
                monthSeptember.Checked = true;
            }
            if ((months & ScheduleMonth.October) > 0)
            {
                monthOctober.Checked = true;
            }
            if ((months & ScheduleMonth.November) > 0)
            {
                monthNovember.Checked = true;
            }
            if ((months & ScheduleMonth.December) > 0)
            {
                monthDecember.Checked = true;
            }
        }