Ejemplo n.º 1
0
        public MainWindowViewModel()
        {
            DateTime now = DateTime.Now;
            DateTime startOfThisWeek = now.AddDays(-(int)now.DayOfWeek + 1).Date;

            Weeks = new List<WeekModel>();

            Weeks.Add(new WeekModel(startOfThisWeek));
            for(int i = 1; i <= ConfigManager.NumberOfWeeks - 1; i++)
            {
                Weeks.Add(new WeekModel(startOfThisWeek.AddDays(-i * 7)));
            }

            SelectedWeek = Weeks[1];

            GetDataCommand = new GetDataCommand();

            CloseErrorStatusBarCommand = new CloseErrorStatusBarCommand();

            NavigateCommand = new NavigateCommand();

            HolidayCalculator hc = new HolidayCalculator(now.AddMonths(-11), ConfigManager.HolidayFile);
            foreach (HolidayCalculator.Holiday h in hc.OrderedHolidays)
                holidays.Add(new CalendarDayModel(h));

            CurrentUser = Environment.UserDomainName + "\\" + Environment.UserName;

            DataService.GetChangesetsCompleted += DataService_GetChangesetsCompleted;
            DataService.GetCalendarDaysCompleted += DataService_GetCalendarDaysCompleted;

            ShowComments = true;
            CheckCalendar = true;
        }
Ejemplo n.º 2
0
        public void SavePlanning2(long storeid, DateTime aBegin, DateTime aEnd, List <EmployeePlanningWeek> lstWeeks)
        {
            #region validate date
            Debug.Assert(aBegin < aEnd);
            Debug.Assert(aBegin.DayOfWeek == DayOfWeek.Monday);
            Debug.Assert(aEnd.DayOfWeek == DayOfWeek.Sunday);

            if (aEnd < DateTime.Today)
            {
                if (Log.IsWarnEnabled)
                {
                    User   user     = ServerEnvironment.AuthorizationService.GetCurrentUser();
                    string username = String.Empty;
                    if (user != null)
                    {
                        username = user.LoginName;
                    }

                    Log.Warn(string.Format("User - '{0}', try save planning date in date({1}) with input data {2}-{3} storeid={4}",
                                           new object[] { username, DateTime.Today, aBegin, aEnd, storeid }));
                }
                return;
            }
            #endregion

            try
            {
                HolidayCalculator calculatorHolidays = new HolidayCalculator();
                calculatorHolidays.Calculate(storeid, aBegin, lstWeeks);


                WorkingTimePlanningService.SetWeekTimePlanning(lstWeeks);
                AbsenceTimePlanningService.SetWeekTimePlanning(lstWeeks);


                StoreWeekCalculater calculator = new StoreWeekCalculater(storeid, aBegin, aEnd, this);

                calculator.Process();


                if (lstWeeks != null)
                {
                    long[] ids = PlanningWeekProcessor.ListToEmployeeIds(lstWeeks);

                    ExEmployeeHolidays.CalculateAndUpdate(ids, DateTimeHelper.GetYearByDate(aBegin));
                }

                _storeService.LastEmployeeWeekTimePlanningUpdate(storeid, aBegin);
            }
            catch (EntityException)
            {
                throw;
            }
            catch (Exception ex)
            {
                CheckForDBValidationException(null, ex);
                throw new SaveException(ex);
            }
        }
Ejemplo n.º 3
0
        private void ConfirmBTN_Click(object sender, RoutedEventArgs e)
        {
            double rate = 0;

            if (this.BuyDateTimeTp.SelectedDate == null ||
                this.StartDateTimeTp.SelectedDate == null ||
                this.EndTimeTp.SelectedDate == null ||
                this.RateTb.Text.Trim().Length == 0 ||
                !double.TryParse(this.RateTb.Text, out rate))
            {
                MessageBox.Show("参数错误!");
            }

            Debug.Assert(this.StartDateTimeTp.SelectedDate != null, "StartDateTimeTp.SelectedDate != null");
            Debug.Assert(this.BuyDateTimeTp.SelectedDate != null, "BuyDateTimeTp.SelectedDate != null");
            Debug.Assert(this.EndTimeTp.SelectedDate != null, "EndTimeTp.SelectedDate != null");

            var buyDate   = this.BuyDateTimeTp.SelectedDate.Value;
            var startDate = this.StartDateTimeTp.SelectedDate.Value;
            var endDate   = this.EndTimeTp.SelectedDate.Value;

            var possibleHolidays = HolidayCalculator.PossibleHolidays(endDate, out var workDate);

            var holidayInfo = new StringBuilder();

            holidayInfo.Append("{");
            foreach (var possibleHoliday in possibleHolidays)
            {
                if (holidayInfo.Length == 1)
                {
                    holidayInfo.Append(possibleHoliday.Name);
                }
                else
                {
                    holidayInfo.Append("," + possibleHoliday.Name);
                }
            }

            holidayInfo.Append("}");

            var result = (rate * (endDate - startDate).Days) / (workDate - buyDate).Days;

            var message = "===================\n"
                          + "宣传:" + (endDate - startDate).TotalDays + "天, 实际:" + (workDate - buyDate).TotalDays + "天\n"
                          + ToDateString(startDate) + "~" + ToDateString(endDate) + ":" + ToPercent(rate)
                          + " => " + ToDateString(buyDate) + "~" + ToDateString(workDate) + ":" + ToPercent(result)
                          + (possibleHolidays.Count > 0 ? "\n可能节假日:" + holidayInfo : "");

            MessageBox.Show(message);

            this.HistoryLB.Content = message + "\n" + this.HistoryLB.Content;
        }
Ejemplo n.º 4
0
        public MainWindowViewModel()
        {
            DateTime now             = DateTime.Now;
            DateTime startOfThisWeek = now.AddDays(-(int)now.DayOfWeek + 1).Date;

            Weeks = new List <WeekModel>();

            Weeks.Add(new WeekModel(startOfThisWeek));
            for (int i = 1; i <= ConfigManager.NumberOfWeeks - 1; i++)
            {
                Weeks.Add(new WeekModel(startOfThisWeek.AddDays(-i * 7)));
            }

            SelectedWeek = Weeks[1];

            GetDataCommand = new GetDataCommand();

            CloseErrorStatusBarCommand = new CloseErrorStatusBarCommand();

            NavigateCommand = new NavigateCommand();

            HolidayCalculator hc = new HolidayCalculator(now.AddMonths(-11), ConfigManager.HolidayFile);

            foreach (HolidayCalculator.Holiday h in hc.OrderedHolidays)
            {
                holidays.Add(new CalendarDayModel(h));
            }

            CurrentUser = Environment.UserDomainName + "\\" + Environment.UserName;

            DataService.GetChangesetsCompleted   += DataService_GetChangesetsCompleted;
            DataService.GetCalendarDaysCompleted += DataService_GetCalendarDaysCompleted;

            ShowComments  = true;
            CheckCalendar = true;
        }
Ejemplo n.º 5
0
        private void GetMonth(DateTime day)
        {
            // add holidays
            var holidays = new HolidayCalculator(day, Utils.ReadConfig("Holidays", "Path"));

            foreach (HolidayCalculator.Holiday h in holidays.OrderedHolidays)
            {
                if (h.Date.Month == day.Month)
                {
                    Holidays.Add(new Holiday(h.Name, h.Date));
                }
                // and days before holidays if theye're not weekends or holidays
                var yesterday = h.Date.AddDays(-1);
                if (yesterday.Month == day.Month &&
                    Holidays.FirstOrDefault(hl => hl.Date == yesterday) == default(Holiday) &&
                    yesterday.DayOfWeek != DayOfWeek.Saturday &&
                    yesterday.DayOfWeek != DayOfWeek.Sunday)
                {
                    SpecialDays.Add(new SpecialDay("Day before " + h.Name, yesterday.Date));
                }
            }

            // if the last day in month is day before holiday
            var firstInNextMonth = Last.AddDays(1);
            var hol = Holidays.FirstOrDefault(h => h.Date == firstInNextMonth);

            if (hol != null &&
                Last.Date.DayOfWeek != DayOfWeek.Saturday &&
                Last.Date.DayOfWeek != DayOfWeek.Sunday)
            {
                SpecialDays.Add(new SpecialDay("Day before " + hol.Name, Last.Date));
            }

            // get all fridays, if they're not holidays
            var startDate = First;

            while (startDate.DayOfWeek != DayOfWeek.Friday)
            {
                startDate = startDate.AddDays(1);
            }

            while (startDate < Last)
            {
                if (Holidays.FirstOrDefault(h => h.Date == startDate) == default(Holiday))
                {
                    SpecialDays.Add(new SpecialDay("Friday", startDate));
                }
                startDate = startDate.AddDays(7);
            }

            // get all weekends, if they're not holidays
            startDate = First;
            while (startDate.DayOfWeek != DayOfWeek.Saturday)
            {
                startDate = startDate.AddDays(1);
            }

            while (startDate < Last)
            {
                if (Holidays.FirstOrDefault(h => h.Date == startDate) == default(Holiday))
                {
                    NonWorkingDays.Add(new NonWorkingDay(startDate));
                }
                startDate = startDate.AddDays(1);
                if (Holidays.FirstOrDefault(h => h.Date == startDate) == default(Holiday))
                {
                    NonWorkingDays.Add(new NonWorkingDay(startDate));
                }
                startDate = startDate.AddDays(6);
            }
        }
Ejemplo n.º 6
0
 public CalendarDayModel(HolidayCalculator.Holiday h)
     : this(h.Name, h.Date)
 {
 }
Ejemplo n.º 7
0
    public static void Run(
        DateTime now,
        out DateTime ChristmasDate,
        out DateTime ChristmasEveDate,
        out DateTime EasterDate,
        out DateTime FourthOfJulyDate,
        out DateTime HalloweenDate,
        out DateTime LaborDayDate,
        out DateTime MemorialDayDate,
        out DateTime MLKdayDate,
        out DateTime MothersDayDate,
        out DateTime NewYearsDayDate,
        out DateTime NewYearsEveDate,
        out DateTime PresidentsDayDate,
        out DateTime ThanksgivingDate,
        out DateTime ValentinesDate,
        out DateTime VeteransDayDate,
        out bool isChristmas,
        out bool isEaster,
        out bool isChristmasEve,
        out bool isFourthOfJuly,
        out bool isHalloween,
        out bool isLaborDay,
        out bool isMemorialDay,
        out bool isMLKday,
        out bool isMothersDay,
        out bool isNewYearsDay,
        out bool isNewYearsEve,
        out bool isPresidentsDay,
        out bool isThanksgiving,
        out bool isValentines,
        out bool isVeteransDay
        )
    {
        int year = now.Year;

        ThanksgivingDate = getThanksgivingDate(year);
        isThanksgiving   = datesMatch(now, ThanksgivingDate);

        EasterDate = HolidayCalculator.GetEaster(year);
        isEaster   = datesMatch(now, EasterDate);

        MemorialDayDate = getMemorialDayDate(year);
        isMemorialDay   = datesMatch(now, MemorialDayDate);

        ValentinesDate = new DateTime(year, 2, 14);
        isValentines   = datesMatch(now, ValentinesDate);

        ChristmasDate = new DateTime(year, 12, 25);
        isChristmas   = datesMatch(now, ChristmasDate);

        ChristmasEveDate = new DateTime(year, 12, 24);
        isChristmasEve   = datesMatch(now, ChristmasEveDate);

        LaborDayDate = getLaborDayDate(year);
        isLaborDay   = datesMatch(now, LaborDayDate);

        MLKdayDate = getMLKdate(year);
        isMLKday   = datesMatch(now, MLKdayDate);

        PresidentsDayDate = getPresidentsDayDate(year);
        isPresidentsDay   = datesMatch(now, PresidentsDayDate);

        FourthOfJulyDate = new DateTime(year, 7, 4);
        isFourthOfJuly   = datesMatch(now, FourthOfJulyDate);

        NewYearsDayDate = new DateTime(year, 1, 1);
        isNewYearsDay   = datesMatch(now, NewYearsDayDate);

        NewYearsEveDate = new DateTime(year, 12, 31);
        isNewYearsEve   = datesMatch(now, NewYearsEveDate);

        VeteransDayDate = new DateTime(year, 11, 11);
        isVeteransDay   = datesMatch(now, VeteransDayDate);

        HalloweenDate = new DateTime(year, 10, 31);
        isHalloween   = datesMatch(now, HalloweenDate);

        MothersDayDate = getMothersDayDate(year);
        isMothersDay   = datesMatch(now, MothersDayDate);
    }
Ejemplo n.º 8
0
    public static DateTime getMothersDayDate(int year)
    {
        var hol = new DateTime(year, 5, 1);

        return(HolidayCalculator.FindOccurrenceOfDayOfWeek(hol, DayOfWeek.Sunday, 2));
    }
Ejemplo n.º 9
0
    public static DateTime getPresidentsDayDate(int year)
    {
        var hol = new DateTime(year, 2, 15);

        return(HolidayCalculator.FindFirstMonday(hol));
    }
Ejemplo n.º 10
0
    public static DateTime getMLKdate(int year)
    {
        var hol = new DateTime(year, 1, 15);

        return(HolidayCalculator.FindFirstMonday(hol));
    }
Ejemplo n.º 11
0
    public static DateTime getLaborDayDate(int year)
    {
        var hol = new DateTime(year, 9, 1);

        return(HolidayCalculator.FindFirstMonday(hol));
    }
Ejemplo n.º 12
0
    public static DateTime getMemorialDayDate(int year)
    {
        var hol = new DateTime(year, 5, 25);

        return(HolidayCalculator.FindFirstMonday(hol));
    }
Ejemplo n.º 13
0
 public void IsHolidayTesting(DateTime date)
 {
     Assert.IsTrue(HolidayCalculator.IsHoliday(date));
 }