Example #1
0
        public List <CalendarADay> GetByDate(DateTime start, DateTime end, List <Notes> source)
        {
            List <CalendarADay> cd = new List <CalendarADay>();

            if (source != null && source.Count > 0)
            {
                _AccountID = source[0].Owner.Id;
                foreach (Notes notes in source)
                {
                    if (notes.RepeatType is MonthRepeat)
                    {
                        MonthRepeat type = (MonthRepeat)notes.RepeatType;

                        DateTime tempstart = type.RangeStart > start ? type.RangeStart : start;
                        DateTime tempend   = type.RangeEnd == null || type.RangeEnd > end
                                               ? end
                                               : Convert.ToDateTime(type.RangeEnd);
                        DateTime date = tempstart;
                        int      days = (tempend.Date - tempstart.Date).Days;
                        _PlanDutyFrom = new DateTime(tempstart.Year, tempstart.Month, 1);
                        _PlanDutyTo   = GetLastDate(tempend);
                        for (int i = 0; i <= days; i++)
                        {
                            if (RepeatValid(type, date))
                            {
                                List <MonthItem> monthitems = new List <MonthItem>();
                                MonthItem        monthitem  =
                                    new MonthItem(notes.Content,
                                                  RepeatUtility.DetailString(notes, notes.Start, notes.End), date,
                                                  CalendarShowType.Note);
                                monthitems.Add(monthitem);
                                List <DayItem> dayitems = new List <DayItem>();
                                DayItem        dayItem  =
                                    new DayItem(RepeatUtility.ConvertToDateTime(date, notes.Start),
                                                RepeatUtility.ConvertToDateTime(date, notes.End), notes.Content,
                                                CalendarShowType.Note);
                                dayItem.ObjectID = notes.PKID;
                                dayitems.Add(dayItem);
                                CalendarADay aday = new CalendarADay(date, monthitems, dayitems);
                                cd.Add(aday);
                            }
                            date = date.AddDays(1);
                        }
                    }
                }
            }

            return(cd);
        }
Example #2
0
 public static void Clean(CalendarADay aday)
 {
     foreach (DayItem item in aday.DayItems)
     {
         item.End =
             new DateTime(aday.Date.Year, aday.Date.Month, aday.Date.Day, item.End.Hour, item.End.Minute,
                          item.End.Second);
         item.Start =
             new DateTime(aday.Date.Year, aday.Date.Month, aday.Date.Day, item.Start.Hour, item.Start.Minute,
                          item.Start.Second);
     }
     foreach (MonthItem item in aday.MonthItems)
     {
         item.Date = aday.Date;
     }
 }
Example #3
0
        public List <CalendarADay> GetByDate(DateTime start, DateTime end, List <Notes> source)
        {
            List <CalendarADay> cd = new List <CalendarADay>();

            if (source != null && source.Count > 0)
            {
                foreach (Notes notes in source)
                {
                    if (notes.RepeatType is WeekRepeat)
                    {
                        WeekRepeat type = (WeekRepeat)notes.RepeatType;

                        DateTime tempstart = type.RangeStart > start ? type.RangeStart : start;
                        DateTime tempend   = type.RangeEnd == null || type.RangeEnd > end
                                               ? end
                                               : Convert.ToDateTime(type.RangeEnd);
                        DateTime date             = tempstart;
                        int      days             = (tempend.Date - tempstart.Date).Days;
                        DateTime rangestartmonday =
                            type.RangeStart.AddDays(-Convert.ToInt32(type.RangeStart.DayOfWeek) + 1);
                        for (int i = 0; i <= days; i++)
                        {
                            if ((date.Date.AddDays(-Convert.ToInt32(date.DayOfWeek) + 1) - rangestartmonday.Date).Days % type.NWeek == 0 &&
                                type.WeekList.Contains((Convert.ToInt32(date.DayOfWeek)).ToString()))
                            {
                                List <MonthItem> monthitems = new List <MonthItem>();
                                MonthItem        monthitem  =
                                    new MonthItem(notes.Content, RepeatUtility.DetailString(notes, notes.Start, notes.End), date, CalendarShowType.Note);
                                monthitems.Add(monthitem);
                                List <DayItem> dayitems = new List <DayItem>();
                                DayItem        dayItem  =
                                    new DayItem(RepeatUtility.ConvertToDateTime(date, notes.Start),
                                                RepeatUtility.ConvertToDateTime(date, notes.End), notes.Content,
                                                CalendarShowType.Note);
                                dayItem.ObjectID = notes.PKID;
                                dayitems.Add(dayItem);
                                CalendarADay aday = new CalendarADay(date, monthitems, dayitems);
                                cd.Add(aday);
                            }
                            date = date.AddDays(1);
                        }
                    }
                }
            }

            return(cd);
        }
Example #4
0
        public List <CalendarADay> GetByDate(DateTime start, DateTime end, List <Notes> source)
        {
            List <CalendarADay> cd = new List <CalendarADay>();

            foreach (Notes notes in source)
            {
                if (notes.RepeatType is NoRepeat)
                {
                    DateTime from = notes.Start;
                    DateTime to   = notes.End;
                    if (to >= from)
                    {
                        int      days = (to.Date - from.Date).Days;
                        DateTime date = from;
                        for (int i = 0; i <= days; i++)
                        {
                            if (date.Date <= end.Date && date.Date >= start.Date)
                            {
                                DateTime fromtemp = new DateTime(date.Year, date.Month, date.Day, 0, 0, 0);
                                DateTime totemp   = fromtemp.AddDays(1).AddSeconds(-1);
                                if (i == 0)
                                {
                                    fromtemp = from;
                                }
                                if (i == days)
                                {
                                    totemp = to;
                                }
                                List <MonthItem> monthitems = new List <MonthItem>();
                                MonthItem        monthitem  =
                                    new MonthItem(notes.Content, RepeatUtility.DetailString(notes, fromtemp, totemp), fromtemp, CalendarShowType.Note);
                                monthitems.Add(monthitem);
                                List <DayItem> dayitems = new List <DayItem>();
                                DayItem        dayItem  = new DayItem(fromtemp, totemp, notes.Content, CalendarShowType.Note);
                                dayItem.ObjectID = notes.PKID;
                                dayitems.Add(dayItem);
                                CalendarADay aday = new CalendarADay(fromtemp.Date, monthitems, dayitems);
                                cd.Add(aday);
                                date = date.AddDays(1);
                            }
                        }
                    }
                }
            }
            return(cd);
        }
        public static List <CalendarADay> Turn(List <OverWork> originalDataList,
                                               List <PlanDutyDetail> planDutyDetailList, List <SpecialDate> specialList, List <CalendarADay> retList)
        {
            foreach (OverWork overWork in originalDataList)
            {
                foreach (OverWorkItem originalDataItem in overWork.Item)
                {
                    string typeName = "加班";
                    // -1 全部;0 新增;1 提交;2 审核不通过;3 审核通过;4 取消请假;5 拒绝取消假期;6 批准取消假期;7 审核中;8 审核取消中
                    if (originalDataItem.Status == RequestStatus.New ||
                        originalDataItem.Status == RequestStatus.Submit ||
                        originalDataItem.Status == RequestStatus.Approving ||
                        originalDataItem.Status == RequestStatus.CancelApproving ||
                        originalDataItem.Status == RequestStatus.Cancelled)
                    {
                        typeName = typeName + "(" + originalDataItem.Status.Name + ")";
                    }
                    CalendarADay calendarADay = CalendarADay.CreateOrGetCalendarADayByDate(retList, originalDataItem.FromDate.Date);
                    DayItem      day          = new DayItem();
                    day.ObjectID  = originalDataItem.ItemID;
                    day.CType     = CalendarShowType.OverWork;
                    day.Start     = originalDataItem.FromDate;
                    day.End       = originalDataItem.ToDate;
                    day.DayDetail = typeName + " " + originalDataItem.CostTime + "小时<br>项目:" + overWork.ProjectName +
                                    "<br>理由:" + overWork.Reason;
                    calendarADay.DayItems.Add(day);

                    MonthItem month = new MonthItem();
                    month.ObjectID = originalDataItem.ItemID;
                    month.CType    = CalendarShowType.OverWork;
                    month.Title    = typeName + " " + originalDataItem.CostTime + "小时";
                    month.Date     = originalDataItem.FromDate;
                    month.Detail   = typeName + " 时段:" +
                                     originalDataItem.FromDate.ToShortDateString() + " " +
                                     originalDataItem.FromDate.ToShortTimeString() + "--" +
                                     originalDataItem.ToDate.ToShortDateString() + " " +
                                     originalDataItem.ToDate.ToShortTimeString() + " 加班时间(小时):" +
                                     originalDataItem.CostTime + " 项目:" + overWork.ProjectName + " 理由:" + overWork.Reason;
                    calendarADay.MonthItems.Add(month);
                    Utility.Clean(calendarADay);
                }
            }
            return(retList);
        }
Example #6
0
        private static void CreateOutApplicationInfoInADay(List <CalendarADay> retList, DateTime date,
                                                           decimal hour, OutApplication originalData, OutApplicationItem originalDataItem,
                                                           DateTime from, DateTime to)
        {
            CalendarADay calendarADay = CalendarADay.CreateOrGetCalendarADayByDate(retList, date.Date);
            string       typeName     = originalData.OutType.Name;

            // -1 全部;0 新增;1 提交;2 审核不通过;3 审核通过;4 取消请假;5 拒绝取消假期;6 批准取消假期;7 审核中;8 审核取消中
            if (originalDataItem.Status == RequestStatus.New ||
                originalDataItem.Status == RequestStatus.Submit ||
                originalDataItem.Status == RequestStatus.Approving ||
                originalDataItem.Status == RequestStatus.CancelApproving ||
                originalDataItem.Status == RequestStatus.Cancelled)
            {
                typeName = typeName + "(" + originalDataItem.Status.Name + ")";
            }

            DayItem day = new DayItem();

            day.ObjectID  = originalDataItem.ItemID;
            day.CType     = CalendarShowType.Out;
            day.Start     = from;
            day.End       = to;
            day.DayDetail = typeName + " " + Convert.ToSingle(hour) + "小时<br>地点:" + originalData.OutLocation + "<br>理由:" +
                            originalData.Reason;
            calendarADay.DayItems.Add(day);

            MonthItem month = new MonthItem();

            month.ObjectID = originalDataItem.ItemID;
            month.CType    = CalendarShowType.Out;
            month.Title    = typeName + " " + Convert.ToSingle(hour) + "小时";
            month.Date     = date;
            month.Detail   = typeName + " 时段:" +
                             originalDataItem.FromDate.ToShortDateString() + " " +
                             originalDataItem.FromDate.ToShortTimeString() + "--" +
                             originalDataItem.ToDate.ToShortDateString() + " " +
                             originalDataItem.ToDate.ToShortTimeString() + " 外出时间(小时):" +
                             originalDataItem.CostTime + " 地点:" + originalData.OutLocation + " 理由:" + originalData.Reason;
            calendarADay.MonthItems.Add(month);
            Utility.Clean(calendarADay);
        }
Example #7
0
        public static List <CalendarADay> Turn(List <WorkTask> originalDataList, List <CalendarADay> retList,
                                               List <PlanDutyDetail> planDutyDetailList, int accountID, DateTime startDate, DateTime endDate)
        {
            foreach (WorkTask originalData in originalDataList)
            {
                for (int i = 0; originalData.StartDate.AddDays(i).Date <= originalData.EndDate.Date; i++)
                {
                    if (originalData.StartDate.AddDays(i).Date < startDate.Date ||
                        originalData.StartDate.AddDays(i).Date > endDate.Date)
                    {
                        continue;
                    }
                    PlanDutyDetail detail = PlanDutyDetail.GetPlanDutyDetailByDate(planDutyDetailList, originalData.StartDate.AddDays(i).Date);
                    if (detail != null && detail.PlanDutyClass != null && detail.PlanDutyClass.IsWeek)
                    {
                        continue;
                    }
                    CalendarADay calendarADay =
                        CalendarADay.CreateOrGetCalendarADayByDate(retList, originalData.StartDate.AddDays(i).Date);

                    MonthItem month = new MonthItem();
                    month.CType  = CalendarShowType.WorkTask;
                    month.Title  = originalData.Title;
                    month.Date   = originalData.StartDate.AddDays(i).Date;
                    month.Detail = month.Title +
                                   (originalData.Account.Id == accountID ? "" : "<br>创建人:" + originalData.Account.Name)
                                   + "<br>时段:" + originalData.StartDate.ToShortDateString() + "--" +
                                   originalData.EndDate.ToShortDateString() + " 状态:<span class=\"" +
                                   originalData.Status.Style + "\">" + originalData.Status.Name +
                                   "</span><br>" + originalData.Description;
                    calendarADay.MonthItems.Add(month);

                    DayItem day = new DayItem();
                    day.CType = CalendarShowType.WorkTask;
                    day.Start = day.End = originalData.StartDate.AddDays(i).Date;

                    if (detail != null)
                    {
                        day.Start =
                            new DateTime(day.Start.Year, day.Start.Month, day.Start.Day,
                                         detail.PlanDutyClass.FirstStartFromTime.Hour,
                                         detail.PlanDutyClass.FirstStartFromTime.Minute,
                                         detail.PlanDutyClass.FirstStartFromTime.Second); //todo by wsl
                        day.End =
                            new DateTime(day.End.Year, day.End.Month, day.End.Day,
                                         detail.PlanDutyClass.SecondEndTime.Hour,
                                         detail.PlanDutyClass.SecondEndTime.Minute,
                                         detail.PlanDutyClass.SecondEndTime.Second);
                    }
                    else
                    {
                        day.Start = new DateTime(day.Start.Year, day.Start.Month, day.Start.Day, 9, 0, 0);
                        day.End   = new DateTime(day.End.Year, day.End.Month, day.End.Day, 17, 0, 0);
                    }

                    day.DayDetail = month.Title +
                                    (originalData.Account.Id == accountID ? "" : "<br>创建人:" + originalData.Account.Name)
                                    + "<br>时段:" +
                                    originalData.StartDate.ToShortDateString() + "--" +
                                    originalData.EndDate.ToShortDateString() + "<br>状态:" + originalData.Status.Name +
                                    "<br>" + originalData.Description;
                    calendarADay.DayItems.Add(day);
                    Utility.Clean(calendarADay);
                }
            }
            return(retList);
        }
Example #8
0
        public static List <CalendarADay> Turn(List <AttendanceBase> originalDataList,
                                               List <CalendarADay> retList, List <PlanDutyDetail> planDutyDetailList,
                                               List <OutApplication> outApplicationList, List <LeaveRequest> leaveRequestList, List <AttendanceInAndOutRecord> attendanceInAndOutRecordList)
        {
            foreach (AttendanceBase originalData in originalDataList)
            {
                PlanDutyDetail theDayPlanDuty =
                    PlanDutyDetail.GetPlanDutyDetailByDate(planDutyDetailList, originalData.TheDay);
                if (theDayPlanDuty == null)
                {
                    continue;
                }
                CalendarADay calendarADay = CalendarADay.CreateOrGetCalendarADayByDate(retList, originalData.TheDay);

                DayItem   day   = new DayItem();
                MonthItem month = new MonthItem();
                day.ObjectID = month.ObjectID = originalData.AttendanceId;
                day.CType    = month.CType = CalendarShowType.Absent;
                day.ObjectID = month.ObjectID = originalData.AttendanceId;
                month.Date   = calendarADay.Date;
                LaterAttendance      late;
                EarlyLeaveAttendance early;
                if (originalData is AbsentAttendance)
                {
                    day.Start = theDayPlanDuty.PlanDutyClass.FirstStartFromTime;
                    day.End   = originalData.Days == 1
                                  ? theDayPlanDuty.PlanDutyClass.SecondEndTime
                                  : theDayPlanDuty.PlanDutyClass.FirstEndTime;
                    if (originalData.Days != 1)
                    {
                        List <UnKownTimeSpan> uktsList =
                            CaculateAbsentTimes(originalData.TheDay, theDayPlanDuty, outApplicationList,
                                                leaveRequestList,
                                                attendanceInAndOutRecordList);
                        foreach (UnKownTimeSpan span in uktsList)
                        {
                            if ((span.To - span.From).TotalMinutes >= theDayPlanDuty.PlanDutyClass.AbsentLateTime
                                ||
                                (span.To - span.From).TotalMinutes >= theDayPlanDuty.PlanDutyClass.AbsentEarlyLeaveTime)
                            {
                                day.Start = span.From;
                                day.End   = span.To;
                            }
                        }
                    }
                    day.DayDetail = originalData.Name + " " + Utility.FormatNumData(originalData.Days * 8) + "小时";
                    month.Title   = month.Detail = originalData.Name + " " + Utility.FormatNumData(originalData.Days * 8) + "小时";
                }
                else if ((early = originalData as EarlyLeaveAttendance) != null)
                {
                    day.Start        = theDayPlanDuty.PlanDutyClass.SecondEndTime.AddMinutes(-early.EarlyLeaveMinutes);
                    day.End          = theDayPlanDuty.PlanDutyClass.SecondEndTime;
                    day.DayDetail    = early.Name + " " + Utility.FormatNumData(early.EarlyLeaveMinutes) + "分钟";
                    month.Title      =
                        month.Detail = early.Name + " " + Utility.FormatNumData(early.EarlyLeaveMinutes) + "分钟";
                }
                else if ((late = originalData as LaterAttendance) != null)
                {
                    day.Start     = theDayPlanDuty.PlanDutyClass.FirstStartFromTime;
                    day.End       = theDayPlanDuty.PlanDutyClass.FirstStartFromTime.AddMinutes(late.LaterMinutes);
                    day.DayDetail = late.Name + " " + Utility.FormatNumData(late.LaterMinutes) + "分钟";
                    month.Title   = month.Detail = late.Name + " " + Utility.FormatNumData(late.LaterMinutes) + "分钟";
                }

                calendarADay.DayItems.Add(day);
                calendarADay.MonthItems.Add(month);
                Utility.Clean(calendarADay);
            }
            return(retList);
        }
Example #9
0
        public List <CalendarADay> GetByDate(DateTime start, DateTime end, List <Notes> source)
        {
            List <CalendarADay> cd = new List <CalendarADay>();

            if (source != null && source.Count > 0)
            {
                List <PlanDutyDetail> planDutyDetailList =
                    new PlanDutyFacade().GetPlanDutyDetailByAccount(source[0].Owner.Id, start, end);

                foreach (Notes notes in source)
                {
                    if (notes.RepeatType is DayRepeat)
                    {
                        DayRepeat type = (DayRepeat)notes.RepeatType;

                        DateTime tempstart = type.RangeStart > start ? type.RangeStart : start;
                        DateTime tempend   = type.RangeEnd == null || type.RangeEnd > end
                                               ? end
                                               : Convert.ToDateTime(type.RangeEnd);
                        DateTime date = tempstart;
                        int      days = (tempend.Date - tempstart.Date).Days;
                        for (int i = 0; i <= days; i++)
                        {
                            bool isadd = false;
                            if (type.EveryWork || type.EveryWeek)
                            {
                                PlanDutyDetail detail = PlanDutyDetail.GetPlanDutyDetailByDate(planDutyDetailList, date);
                                if ((type.EveryWork && !detail.PlanDutyClass.IsWeek) ||
                                    (type.EveryWeek && detail.PlanDutyClass.IsWeek))
                                {
                                    isadd = true;
                                }
                            }
                            else
                            {
                                if ((date.Date - type.RangeStart.Date).Days % type.NDayOnce == 0)
                                {
                                    isadd = true;
                                }
                            }
                            if (isadd)
                            {
                                List <MonthItem> monthitems = new List <MonthItem>();
                                MonthItem        monthitem  =
                                    new MonthItem(notes.Content, RepeatUtility.DetailString(notes, notes.Start, notes.End), date, CalendarShowType.Note);
                                monthitems.Add(monthitem);
                                List <DayItem> dayitems = new List <DayItem>();
                                DayItem        dayItem  =
                                    new DayItem(RepeatUtility.ConvertToDateTime(date, notes.Start),
                                                RepeatUtility.ConvertToDateTime(date, notes.End), notes.Content,
                                                CalendarShowType.Note);
                                dayItem.ObjectID = notes.PKID;
                                dayitems.Add(dayItem);
                                CalendarADay aday = new CalendarADay(date, monthitems, dayitems);
                                cd.Add(aday);
                            }
                            date = date.AddDays(1);
                        }
                    }
                }
            }

            return(cd);
        }