当前位置: 首页>>代码示例>>C#>>正文


C# IUnitOfWork.AddObject方法代码示例

本文整理汇总了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;
//.........这里部分代码省略.........
开发者ID:dtafe,项目名称:vnr,代码行数:101,代码来源:Att_AttendanceServices.cs

示例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))
//.........这里部分代码省略.........
开发者ID:dtafe,项目名称:vnr,代码行数:101,代码来源:Att_WorkDayServices.cs


注:本文中的IUnitOfWork.AddObject方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。