本文整理汇总了C#中IUnitOfWork.AddObject方法的典型用法代码示例。如果您正苦于以下问题:C# IUnitOfWork.AddObject方法的具体用法?C# IUnitOfWork.AddObject怎么用?C# IUnitOfWork.AddObject使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IUnitOfWork
的用法示例。
在下文中一共展示了IUnitOfWork.AddObject方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ComputeAttendance
private int ComputeAttendance(IUnitOfWork unitOfWork, Guid userID, DateTime monthYear, Guid cutOffDurationID, DateTime attendanceFrom,
DateTime attendanceTo, Hre_ProfileEntity profile, Cat_GradeAttendance gradeCfg, List<Cat_Shift> listShift, List<Att_AnnualDetail> listAnnualDetailByProfile,
List<Hre_HDTJob> listHDTJobByProfile, List<Att_LeaveDayEntity> listLeaveDayByProfile, List<Cat_LeaveDayType> listLeaveDayType,
List<Att_OvertimeEntity> listOvertimeByProfile, List<Cat_OvertimeType> listOvertimeType, List<Att_PregnancyEntity> listPregnancyByProfile,
List<Cat_LateEarlyRule> listLateEarlyRule, List<Att_Workday> listWorkDayByProfile, List<Att_AttendanceTableEntity> listPreAttendanceTableByProfile,
List<Att_TimeOffInLieuEntity> listTimeOffInLieuByProfile, Sys_AllSetting notAutoRegHolidayLeave, Sys_AllSetting otholidayscompute400,
Sys_AllSetting missTAM_LeaveType, Dictionary<DateTime, List<Guid?>> listMonthShiftID, List<Cat_DayOff> listHoliday)
{
Guid profileID = profile.ID;
if (gradeCfg == null || profile == null)
{
return 0;
}
DateTime midCutOffDate = attendanceTo;
bool isMidCutOffDay = false;
#region Tạo Att_AttendanceTable theo khoảng thời gian
Att_AttendanceTable attendanceTable = new Att_AttendanceTable();
unitOfWork.AddObject(typeof(Att_AttendanceTable), attendanceTable);
attendanceTable.Status = AttendanceTableStatus.E_WAITING.ToString();
attendanceTable.ID = Guid.NewGuid();
attendanceTable.ProfileID = profileID;
attendanceTable.MonthYear = monthYear;
attendanceTable.DateStart = attendanceFrom;
attendanceTable.DateEnd = attendanceTo;
double anlDayTaken = 0D;
double sickDayTaken = 0D;
double coBeginPeriod = 0D;
double coEndPeriod = 0D;
if (cutOffDurationID != Guid.Empty)
{
attendanceTable.CutOffDurationID = cutOffDurationID;
}
//Tính công đến ngày cấu hình trong grade, những ngày sau mặc định full công - Khách hàng CPG
if (gradeCfg != null && gradeCfg.IsMonthlyMidCutOff == true && gradeCfg.MidCutOffDay > 0)
{
if (!profile.DateQuit.HasValue || profile.DateQuit > attendanceTo)
{
midCutOffDate = new DateTime(monthYear.Year,
monthYear.Month, gradeCfg.MidCutOffDay.Value);
//Luôn tạo một dòng Ứng công lúc tính công, kô cần biết có nghỉ không
Att_AdvanceTableItem advanceTableItem = new Att_AdvanceTableItem();
advanceTableItem.Att_AttendanceTable = attendanceTable;
advanceTableItem.DateFrom = midCutOffDate.AddDays(1);
advanceTableItem.DateTo = attendanceTo;
isMidCutOffDay = true;
}
}
#endregion
#region Tạo Att_AttendanceTableItem theo khoảng thời gian
List<Att_AttendanceTableItem> listAttendanceTableItemByProfile = new List<Att_AttendanceTableItem>();
for (DateTime date = attendanceFrom.Date; date <= attendanceTo; date = date.AddDays(1))
{
var workdayByProfile = listWorkDayByProfile.Where(d =>
d.WorkDate.Date == date).FirstOrDefault();
Guid? shiftID1 = Guid.Empty;
Guid? shiftID2 = Guid.Empty;
var shiftByDate = listMonthShiftID.Where(d => d.Key.Date == date).Select(d => d.Value).FirstOrDefault();
if (shiftByDate != null)
{
if (shiftByDate.Count() > 0)
{
shiftID1 = shiftByDate[0];
}
if (shiftByDate.Count() > 1)
{
shiftID2 = shiftByDate[1];
}
}
if (workdayByProfile == null && gradeCfg.EDType == PayrollComputeMethod.E_SUBTRACT.ToString())
{
if (shiftID1.HasValue && shiftID1 != Guid.Empty)
{
workdayByProfile = new Att_Workday
{
ShiftID = shiftID1,
ShiftApprove = shiftID1,
ShiftActual = shiftID1,
WorkDate = date
};
if (shiftID2.HasValue && shiftID2 != Guid.Empty)
{
workdayByProfile.Shift2ID = shiftID2;
//.........这里部分代码省略.........
示例2: CreateWorkday
private Att_Workday CreateWorkday(IUnitOfWork unitOfWork, DateTime date, Hre_ProfileEntity profile, WorkdayConfig inOutConfig,
List<Cat_DayOffEntity> listHoliday, List<Att_Workday> listWorkday, Att_Workday workday, bool isFromShift2, Guid? shiftID,
Cat_Shift shiftInfo, List<Cat_Shift> listShift, Dictionary<DateTime, List<Guid?>> listMonthShifts, out Guid? actualShiftID,
List<Att_TAMScanLogEntity> listTamScanLogByCardCode, List<Att_TAMScanLogEntity> listTamScanLogByCardCodeUnchecked)
{
#region Trường hợp có lịch làm việc
#region Kiểm tra dữ liệu quẹt theo theo ngày (ca)
var listTamScanLogByShift = GetTamScanLogByShift(date, listShift, shiftID,
listMonthShifts, listTamScanLogByCardCodeUnchecked.ToArray());
//Checked = true để không tự detect shift cho nó
listTamScanLogByShift.ForEach(d => d.Checked = true);
actualShiftID = null;
if (workday == null)
{
workday = new Att_Workday();
unitOfWork.AddObject(typeof(Att_Workday), workday);
}
#endregion
if (inOutConfig == null || inOutConfig.TypeLoadData.IsNullOrEmpty()
|| inOutConfig.TypeLoadData == TypeLoadData.E_DEFAULT.ToString()
|| inOutConfig.TypeLoadData == TypeLoadData.E_MAXMIN.ToString())
{
if (listTamScanLogByShift.Count() >= 2)
{
#region Trường hợp có ít nhất 2 dòng quẹt thẻ thuộc ca đang xét
var inTime = listTamScanLogByShift.Select(d => d.TimeLog).FirstOrDefault();
var outTime = listTamScanLogByShift.Select(d => d.TimeLog).LastOrDefault();
//Khi phát hiện 2 quẹt thẻ hợp lệ với ca đăng ký thì nhân luôn - không detect shift
workday.FirstInTime = !workday.FirstInTime.HasValue || workday.FirstInTime > inTime ? inTime : workday.FirstInTime;
workday.LastOutTime = !workday.LastOutTime.HasValue || workday.LastOutTime < outTime ? outTime : workday.LastOutTime;
if (isFromShift2)
{
workday.InTime2 = inTime;
workday.OutTime2 = outTime;
}
else
{
workday.InTime1 = inTime;
workday.OutTime1 = outTime;
}
if (inOutConfig.DetectWrongShift == Boolean.TrueString)
{
//Trường hợp wrong-shift và detected-shift thì phải check lại actualShiftID
actualShiftID = GetDetectedShiftID(inTime, outTime, listShift, null);
if (actualShiftID != Guid.Empty && actualShiftID != shiftID)
{
var listTest = GetTamScanLogByShift(inTime.Value.Date, listShift,
actualShiftID, listMonthShifts, listTamScanLogByShift.ToArray());
if (listTest != null && listTest.Count() >= 2 && listTest.Any(d =>
d.TimeLog.HasValue && d.TimeLog.Value.Date == date))
{
workday.Type = WorkdayType.E_WRONG_SHIFT.ToString();
}
else
{
actualShiftID = null;
}
}
}
#endregion
}
else if (listTamScanLogByShift.Count() == 1)
{
#region Trường hợp có 1 dòng quẹt thẻ thuộc ca đang xét
if (listTamScanLogByShift.Any(d => d.SrcType == TAMScanType.E_OUT.ToString()))
{
//Dữ liệu quẹt thẻ được lấy từ máy chấm công ra - có option máy vào máy ra
workday.Type = WorkdayType.E_MISS_IN.ToString();
if (isFromShift2)
{
workday.OutTime2 = listTamScanLogByShift.Select(d => d.TimeLog).LastOrDefault();
}
else
{
workday.OutTime1 = listTamScanLogByShift.Select(d => d.TimeLog).LastOrDefault();
}
}
else
{
//So sanh độ lệch với thời gian của ca -> gần bên nào thì tính theo bên đó
var timeLog = listTamScanLogByShift.Select(d => d.TimeLog).FirstOrDefault();
var shiftInTime = date.Add(shiftInfo.InTime.TimeOfDay);
if (timeLog.Value <= shiftInTime || timeLog.Value.Subtract(shiftInTime)
< shiftInTime.AddHours(shiftInfo.CoOut).Subtract(timeLog.Value))
//.........这里部分代码省略.........