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); }
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; } }
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); }
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); }
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); }
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); }
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); }
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); }