コード例 #1
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L6DWS_SEWTHLT_1934 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            ORM_CMN_BPT_EMP_EffectiveWorkTime_Header effectiveWorkTimeHeader = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Header();

            if (Parameter.CMN_STR_PPS_EffectiveWorkTime_HeaderID != Guid.Empty)
            {
                ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query effectiveWorkTimeHeaderQuery = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query();
                effectiveWorkTimeHeaderQuery.CMN_STR_PPS_EffectiveWorkTime_HeaderID = Parameter.CMN_STR_PPS_EffectiveWorkTime_HeaderID;
                effectiveWorkTimeHeaderQuery.Tenant_RefID = securityTicket.TenantID;
                effectiveWorkTimeHeaderQuery.IsDeleted    = false;

                effectiveWorkTimeHeader = ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query.Search(Connection, Transaction, effectiveWorkTimeHeaderQuery).FirstOrDefault();
            }
            else
            {
                ORM_CMN_BPT_EMP_EffectiveWorkTime_Header effectiveWorkTimeHeaderToSave = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Header();
                effectiveWorkTimeHeaderToSave.IsBreakTimeManualySpecified = false;
                effectiveWorkTimeHeaderToSave.ContractWorkerText          = "";
                effectiveWorkTimeHeaderToSave.Employee_RefID       = Parameter.Employee_RefID;
                effectiveWorkTimeHeaderToSave.Tenant_RefID         = securityTicket.TenantID;
                effectiveWorkTimeHeaderToSave.EffectiveBusinessDay = Parameter.WorkSheduleDate;
                effectiveWorkTimeHeaderToSave.Save(Connection, Transaction);

                effectiveWorkTimeHeader = effectiveWorkTimeHeaderToSave;
            }

            var startTime = effectiveWorkTimeHeader.EffectiveBusinessDay.AddMinutes(Parameter.dayStartInMins);

            P_L5DWS_SEWTP_1337 effectivePositionParam = new P_L5DWS_SEWTP_1337();
            effectivePositionParam.EffectiveWorkTime_Header_RefID = effectiveWorkTimeHeader.CMN_STR_PPS_EffectiveWorkTime_HeaderID;
            effectivePositionParam.WorkTime_Start              = startTime;
            effectivePositionParam.WorkTime_End                = startTime.AddSeconds(Parameter.R_ContractSpecified_WorkingTime_in_sec);
            effectivePositionParam.Employee_RefID              = Parameter.Employee_RefID;
            effectivePositionParam.AbsenceReason_RefID         = Parameter.LeaveTypeID;
            effectivePositionParam.RequestedFor_Employee_RefID = Parameter.Employee_RefID;
            cls_Save_EffectiveWorkTime_Position.Invoke(Connection, Transaction, effectivePositionParam, securityTicket);

            returnValue.Result = effectiveWorkTimeHeader.CMN_STR_PPS_EffectiveWorkTime_HeaderID;
            //Put your code here
            return(returnValue);

            #endregion UserCode
        }
コード例 #2
0
        protected static FR_Base Execute(DbConnection Connection, DbTransaction Transaction, P_L5DWS_LAD_1001 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            FR_Base returnValue = new FR_Base();


            var dayCount = 1;
            if (Parameter.LoadFor_Week)
            {
                dayCount = 7;
            }

            LeaveRequestUtils leaveRequestUtil = new LeaveRequestUtils();

            for (int i = 0; i < dayCount; i++)
            {
                var date = Parameter.WorkSheduleDate.Date.AddDays(i);
                if (Parameter.LoadFrom_LastWeek || Parameter.LoadFrom_Specific_Date_Or_Week)
                {
                    DateTime loadForDate;

                    if (Parameter.LoadFrom_Specific_Date_Or_Week)
                    {
                        loadForDate = Parameter.IfLoadFrom_Specific_Date_Or_Week_DateTime.AddDays(i);
                    }
                    else
                    {
                        loadForDate = Parameter.WorkSheduleDate.AddDays(-7).AddDays(i);
                    }



                    ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query actualsQuery = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query();
                    actualsQuery.EffectiveBusinessDay = loadForDate;
                    actualsQuery.Tenant_RefID         = securityTicket.TenantID;
                    actualsQuery.IsDeleted            = false;

                    var allEffectiveWorkTimeHeadersToLoadFrom = ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query.Search(Connection, Transaction, actualsQuery);

                    foreach (var effectiveWorkTimeHeader in allEffectiveWorkTimeHeadersToLoadFrom)
                    {
                        ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query effectiveWorkTimeToDeleteQuery = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query();
                        effectiveWorkTimeToDeleteQuery.EffectiveBusinessDay = date;
                        effectiveWorkTimeToDeleteQuery.Employee_RefID       = effectiveWorkTimeHeader.Employee_RefID;
                        effectiveWorkTimeToDeleteQuery.Tenant_RefID         = securityTicket.TenantID;
                        effectiveWorkTimeToDeleteQuery.IsDeleted            = false;

                        var effectiveWorkTimeHeaderToDeleteQueryResult = ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query.Search(Connection, Transaction, effectiveWorkTimeToDeleteQuery);

                        if (effectiveWorkTimeHeaderToDeleteQueryResult.Count != 0)
                        {
                            var effectiveWorkTimeHeaderToDelete = effectiveWorkTimeHeaderToDeleteQueryResult.FirstOrDefault();
                            P_L5DWS_DEWTH_1126 deleteParam      = new P_L5DWS_DEWTH_1126();
                            deleteParam.CMN_STR_PPS_EffectiveWorkTime_HeaderID = effectiveWorkTimeHeaderToDelete.CMN_STR_PPS_EffectiveWorkTime_HeaderID;

                            ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query positionsQuery = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query();
                            positionsQuery.EffectiveWorkTime_Header_RefID = effectiveWorkTimeHeaderToDelete.CMN_STR_PPS_EffectiveWorkTime_HeaderID;
                            positionsQuery.Tenant_RefID = securityTicket.TenantID;
                            positionsQuery.IsDeleted    = false;

                            var positions = ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query.Search(Connection, Transaction, positionsQuery);

                            List <P_L5DWS_DEWTH_1126_Positions> listOfPositions = new List <P_L5DWS_DEWTH_1126_Positions>();

                            foreach (var position in positions)
                            {
                                P_L5DWS_DEWTH_1126_Positions positionItem = new P_L5DWS_DEWTH_1126_Positions();
                                positionItem.CMN_BPT_EMP_EffectiveWorkTime_PositionID = position.CMN_BPT_EMP_EffectiveWorkTime_PositionID;
                                positionItem.durationInDays  = leaveRequestUtil.LeaveRequestDuration(position.WorkTime_StartTime, position.WorkTime_StartTime.AddSeconds(position.WorkTime_Duration_in_sec), Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == position.CMN_BPT_EMP_Employe_RefID), true);
                                positionItem.durationInHours = leaveRequestUtil.LeaveRequestDuration(position.WorkTime_StartTime, position.WorkTime_StartTime.AddSeconds(position.WorkTime_Duration_in_sec), Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == position.CMN_BPT_EMP_Employe_RefID), false);
                                listOfPositions.Add(positionItem);
                            }

                            deleteParam.Positions = listOfPositions.ToArray();
                            cls_Delete_EffectiveWorkTime_Header.Invoke(Connection, Transaction, deleteParam, securityTicket);
                        }

                        ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query positionsToLoadQuery = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query();
                        positionsToLoadQuery.EffectiveWorkTime_Header_RefID = effectiveWorkTimeHeader.CMN_STR_PPS_EffectiveWorkTime_HeaderID;
                        positionsToLoadQuery.Tenant_RefID = securityTicket.TenantID;
                        positionsToLoadQuery.IsDeleted    = false;

                        var positionsToLoad = ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query.Search(Connection, Transaction, positionsToLoadQuery);

                        ORM_CMN_BPT_EMP_EffectiveWorkTime_Header newHeader = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Header();
                        newHeader.ContractWorkerText          = effectiveWorkTimeHeader.ContractWorkerText;
                        newHeader.BreakDurationTime_in_sec    = effectiveWorkTimeHeader.BreakDurationTime_in_sec;
                        newHeader.EffectiveBusinessDay        = date;
                        newHeader.Employee_RefID              = effectiveWorkTimeHeader.Employee_RefID;
                        newHeader.IsBreakTimeManualySpecified = effectiveWorkTimeHeader.IsBreakTimeManualySpecified;
                        newHeader.SheduleBreakTemplate_RefID  = effectiveWorkTimeHeader.SheduleBreakTemplate_RefID;
                        newHeader.Tenant_RefID = securityTicket.TenantID;
                        newHeader.Save(Connection, Transaction);

                        foreach (var positionToLoad in positionsToLoad)
                        {
                            P_L5DWS_SEWTP_1337 positionSavePar = new P_L5DWS_SEWTP_1337();
                            if (positionToLoad.CMN_BPT_EMP_Employee_LeaveRequest_RefID != Guid.Empty)
                            {
                                ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query lrQuery = new ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query();
                                lrQuery.CMN_BPT_EMP_Employee_LeaveRequestID = positionToLoad.CMN_BPT_EMP_Employee_LeaveRequest_RefID;
                                lrQuery.IsDeleted    = false;
                                lrQuery.Tenant_RefID = securityTicket.TenantID;

                                var leaveRequest = ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query.Search(Connection, Transaction, lrQuery).FirstOrDefault();

                                positionSavePar.AbsenceReason_RefID         = leaveRequest.CMN_BPT_STA_AbsenceReason_RefID;
                                positionSavePar.durationInDays              = leaveRequestUtil.LeaveRequestDuration(positionToLoad.WorkTime_StartTime, positionToLoad.WorkTime_StartTime.AddSeconds(positionToLoad.WorkTime_Duration_in_sec), Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == positionToLoad.CMN_BPT_EMP_Employe_RefID), true);
                                positionSavePar.durationInHours             = leaveRequestUtil.LeaveRequestDuration(positionToLoad.WorkTime_StartTime, positionToLoad.WorkTime_StartTime.AddSeconds(positionToLoad.WorkTime_Duration_in_sec), Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == positionToLoad.CMN_BPT_EMP_Employe_RefID), false);
                                positionSavePar.RequestedBy_Employee_RefID  = leaveRequest.RequestedBy_Employee_RefID;
                                positionSavePar.RequestedFor_Employee_RefID = leaveRequest.RequestedFor_Employee_RefID;
                            }
                            else
                            {
                                positionSavePar.AbsenceReason_RefID         = Guid.Empty;
                                positionSavePar.durationInDays              = 0;
                                positionSavePar.durationInHours             = 0;
                                positionSavePar.RequestedBy_Employee_RefID  = Guid.Empty;
                                positionSavePar.RequestedFor_Employee_RefID = Guid.Empty;
                            }

                            positionSavePar.CMN_BPT_EMP_Employee_LeaveRequest_RefID = Guid.Empty;
                            positionSavePar.EffectiveWorkTime_Header_RefID          = newHeader.CMN_STR_PPS_EffectiveWorkTime_HeaderID;
                            positionSavePar.Employee_RefID     = newHeader.Employee_RefID;
                            positionSavePar.OldDurationInDays  = 0;
                            positionSavePar.OldDurationInHours = 0;
                            positionSavePar.Workplace_RefID    = positionToLoad.Workplace_RefID;
                            positionSavePar.WorkTime_End       = positionToLoad.WorkTime_StartTime.AddSeconds(positionToLoad.WorkTime_Duration_in_sec);
                            positionSavePar.WorkTime_Start     = positionToLoad.WorkTime_StartTime;

                            cls_Save_EffectiveWorkTime_Position.Invoke(Connection, Transaction, positionSavePar, securityTicket);
                        }
                    }
                }
                else if (Parameter.LoadFrom_StandardTimes)
                {
                    bool isEven = false;

                    if (CronExtender.weekNumber(date) % 2 == 0)
                    {
                        isEven = true;
                    }

                    ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query workplaceAssignementQuery = new ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query();
                    foreach (var empInfo in Parameter.EmployeeInformation)
                    {
                        var empID = empInfo.EmployeeID;
                        workplaceAssignementQuery.CMN_BPT_EMP_Employee_RefID = empID;
                        workplaceAssignementQuery.Tenant_RefID = securityTicket.TenantID;
                        workplaceAssignementQuery.IsDeleted    = false;

                        var workplaceAssignements = ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query.Search(Connection, Transaction, workplaceAssignementQuery);

                        if (workplaceAssignements != null)
                        {
                            var workplaceAssignement = workplaceAssignements.FirstOrDefault(x => x.WorkplaceAssignment_StartDate <= date && (x.WorkplaceAssignment_EndDate >= date || x.WorkplaceAssignment_EndDate == new DateTime()));

                            if (workplaceAssignement != null)
                            {
                                ORM_CMN_BPT_EMP_WorkplaceAssignments_WorkPattern.Query patternQuery = new ORM_CMN_BPT_EMP_WorkplaceAssignments_WorkPattern.Query();
                                patternQuery.BoundTo_WorkplaceAssignment_RefID = workplaceAssignement.CMN_BPT_EMP_Employee_WorkplaceAssignment;
                                patternQuery.Tenant_RefID = securityTicket.TenantID;
                                patternQuery.IsDeleted    = false;

                                var patterns = ORM_CMN_BPT_EMP_WorkplaceAssignments_WorkPattern.Query.Search(Connection, Transaction, patternQuery);
                                if (patterns != null)
                                {
                                    foreach (var pattern in patterns)
                                    {
                                        if (pattern.IsWeek_Even == isEven || !pattern.IsWeek_Even && pattern.IsWeek_Odd)
                                        {
                                            switch (date.DayOfWeek)
                                            {
                                            case DayOfWeek.Monday:
                                                if (!pattern.IsMonday)
                                                {
                                                    continue;
                                                }
                                                break;

                                            case DayOfWeek.Tuesday:
                                                if (!pattern.IsTuesday)
                                                {
                                                    continue;
                                                }
                                                break;

                                            case DayOfWeek.Wednesday:
                                                if (!pattern.IsWednesday)
                                                {
                                                    continue;
                                                }
                                                break;

                                            case DayOfWeek.Thursday:
                                                if (!pattern.IsThursday)
                                                {
                                                    continue;
                                                }
                                                break;

                                            case DayOfWeek.Friday:
                                                if (!pattern.IsFriday)
                                                {
                                                    continue;
                                                }
                                                break;

                                            case DayOfWeek.Saturday:
                                                if (!pattern.IsSaturday)
                                                {
                                                    continue;
                                                }
                                                break;

                                            case DayOfWeek.Sunday:
                                                if (!pattern.IsSunday)
                                                {
                                                    continue;
                                                }
                                                break;
                                            }

                                            if (pattern.CMN_PPS_ShiftTemplate_RefID == Guid.Empty && pattern.CMN_BPT_STA_AbsenceReason_RefID != Guid.Empty)
                                            {
                                                double   totalTime = 0;
                                                DateTime startTime = date;
                                                DateTime endTime   = new DateTime(date.Year, date.Month, date.Day, 23, 59, 59);


                                                double startTimeInSec = startTime.TimeOfDay.TotalSeconds;
                                                double endTimeInSec   = endTime.TimeOfDay.TotalSeconds;


                                                ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query effectiveWorkTimeToDeleteQuery = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query();
                                                effectiveWorkTimeToDeleteQuery.EffectiveBusinessDay = date;
                                                effectiveWorkTimeToDeleteQuery.Employee_RefID       = empID;
                                                effectiveWorkTimeToDeleteQuery.Tenant_RefID         = securityTicket.TenantID;
                                                effectiveWorkTimeToDeleteQuery.IsDeleted            = false;

                                                var allEffectiveWorkTimeHeadersToDelete = ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query.Search(Connection, Transaction, effectiveWorkTimeToDeleteQuery);

                                                foreach (var effectiveWorkTimeHeaderToDelete in allEffectiveWorkTimeHeadersToDelete)
                                                {
                                                    P_L5DWS_DEWTH_1126 deleteParam = new P_L5DWS_DEWTH_1126();
                                                    deleteParam.CMN_STR_PPS_EffectiveWorkTime_HeaderID = effectiveWorkTimeHeaderToDelete.CMN_STR_PPS_EffectiveWorkTime_HeaderID;

                                                    ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query positionsQuery = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query();
                                                    positionsQuery.EffectiveWorkTime_Header_RefID = effectiveWorkTimeHeaderToDelete.CMN_STR_PPS_EffectiveWorkTime_HeaderID;
                                                    positionsQuery.Tenant_RefID = securityTicket.TenantID;
                                                    positionsQuery.IsDeleted    = false;

                                                    var positions = ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query.Search(Connection, Transaction, positionsQuery);

                                                    List <P_L5DWS_DEWTH_1126_Positions> listOfPositions = new List <P_L5DWS_DEWTH_1126_Positions>();

                                                    foreach (var position in positions)
                                                    {
                                                        P_L5DWS_DEWTH_1126_Positions positionItem = new P_L5DWS_DEWTH_1126_Positions();
                                                        positionItem.CMN_BPT_EMP_EffectiveWorkTime_PositionID = position.CMN_BPT_EMP_EffectiveWorkTime_PositionID;
                                                        positionItem.durationInDays  = leaveRequestUtil.LeaveRequestDuration(position.WorkTime_StartTime, position.WorkTime_StartTime.AddSeconds(position.WorkTime_Duration_in_sec), Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == position.CMN_BPT_EMP_Employe_RefID), true);
                                                        positionItem.durationInHours = leaveRequestUtil.LeaveRequestDuration(position.WorkTime_StartTime, position.WorkTime_StartTime.AddSeconds(position.WorkTime_Duration_in_sec), Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == position.CMN_BPT_EMP_Employe_RefID), false);
                                                        listOfPositions.Add(positionItem);
                                                    }

                                                    deleteParam.Positions = listOfPositions.ToArray();
                                                    cls_Delete_EffectiveWorkTime_Header.Invoke(Connection, Transaction, deleteParam, securityTicket);
                                                }

                                                ORM_CMN_BPT_EMP_EffectiveWorkTime_Header effectiveWorkTimeHeader = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Header();
                                                effectiveWorkTimeHeader.IsBreakTimeManualySpecified = false;
                                                effectiveWorkTimeHeader.ContractWorkerText          = "";
                                                effectiveWorkTimeHeader.Employee_RefID       = empID;
                                                effectiveWorkTimeHeader.Tenant_RefID         = securityTicket.TenantID;
                                                effectiveWorkTimeHeader.EffectiveBusinessDay = date;
                                                effectiveWorkTimeHeader.Save(Connection, Transaction);

                                                P_L5DWS_SEWTP_1337 effectivePositionParam = new P_L5DWS_SEWTP_1337();
                                                effectivePositionParam.EffectiveWorkTime_Header_RefID = effectiveWorkTimeHeader.CMN_STR_PPS_EffectiveWorkTime_HeaderID;
                                                effectivePositionParam.WorkTime_Start              = effectiveWorkTimeHeader.EffectiveBusinessDay.AddSeconds(0);
                                                effectivePositionParam.WorkTime_End                = effectiveWorkTimeHeader.EffectiveBusinessDay.AddSeconds(86340);
                                                effectivePositionParam.Employee_RefID              = empID;
                                                effectivePositionParam.AbsenceReason_RefID         = pattern.CMN_BPT_STA_AbsenceReason_RefID;
                                                effectivePositionParam.RequestedFor_Employee_RefID = empID;
                                                cls_Save_EffectiveWorkTime_Position.Invoke(Connection, Transaction, effectivePositionParam, securityTicket);
                                            }
                                            else if (pattern.CMN_PPS_ShiftTemplate_RefID != Guid.Empty)
                                            {
                                                ORM_CMN_PPS_ShiftTemplate.Query shiftTemplateQuery = new ORM_CMN_PPS_ShiftTemplate.Query();
                                                shiftTemplateQuery.CMN_PPS_ShiftTemplateID = pattern.CMN_PPS_ShiftTemplate_RefID;
                                                shiftTemplateQuery.Tenant_RefID            = securityTicket.TenantID;
                                                shiftTemplateQuery.IsDeleted = false;

                                                var shiftTemplate = ORM_CMN_PPS_ShiftTemplate.Query.Search(Connection, Transaction, shiftTemplateQuery).FirstOrDefault();

                                                if (shiftTemplate != null)
                                                {
                                                    ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query effectiveWorkTimeToDeleteQuery = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query();
                                                    effectiveWorkTimeToDeleteQuery.EffectiveBusinessDay = date;
                                                    effectiveWorkTimeToDeleteQuery.Employee_RefID       = empID;
                                                    effectiveWorkTimeToDeleteQuery.Tenant_RefID         = securityTicket.TenantID;
                                                    effectiveWorkTimeToDeleteQuery.IsDeleted            = false;

                                                    var allEffectiveWorkTimeHeadersToDelete = ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query.Search(Connection, Transaction, effectiveWorkTimeToDeleteQuery);

                                                    foreach (var effectiveWorkTimeHeaderToDelete in allEffectiveWorkTimeHeadersToDelete)
                                                    {
                                                        P_L5DWS_DEWTH_1126 deleteParam = new P_L5DWS_DEWTH_1126();
                                                        deleteParam.CMN_STR_PPS_EffectiveWorkTime_HeaderID = effectiveWorkTimeHeaderToDelete.CMN_STR_PPS_EffectiveWorkTime_HeaderID;

                                                        ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query positionsQuery = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query();
                                                        positionsQuery.EffectiveWorkTime_Header_RefID = effectiveWorkTimeHeaderToDelete.CMN_STR_PPS_EffectiveWorkTime_HeaderID;
                                                        positionsQuery.Tenant_RefID = securityTicket.TenantID;
                                                        positionsQuery.IsDeleted    = false;

                                                        var positions = ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query.Search(Connection, Transaction, positionsQuery);

                                                        List <P_L5DWS_DEWTH_1126_Positions> listOfPositions = new List <P_L5DWS_DEWTH_1126_Positions>();

                                                        foreach (var position in positions)
                                                        {
                                                            P_L5DWS_DEWTH_1126_Positions positionItem = new P_L5DWS_DEWTH_1126_Positions();
                                                            positionItem.CMN_BPT_EMP_EffectiveWorkTime_PositionID = position.CMN_BPT_EMP_EffectiveWorkTime_PositionID;
                                                            positionItem.durationInDays  = leaveRequestUtil.LeaveRequestDuration(position.WorkTime_StartTime, position.WorkTime_StartTime.AddSeconds(position.WorkTime_Duration_in_sec), Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == position.CMN_BPT_EMP_Employe_RefID), true);
                                                            positionItem.durationInHours = leaveRequestUtil.LeaveRequestDuration(position.WorkTime_StartTime, position.WorkTime_StartTime.AddSeconds(position.WorkTime_Duration_in_sec), Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == position.CMN_BPT_EMP_Employe_RefID), false);
                                                            listOfPositions.Add(positionItem);
                                                        }

                                                        deleteParam.Positions = listOfPositions.ToArray();
                                                        cls_Delete_EffectiveWorkTime_Header.Invoke(Connection, Transaction, deleteParam, securityTicket);
                                                    }

                                                    P_L5DWS_SEWTFST_1141 saveParam = new P_L5DWS_SEWTFST_1141();
                                                    saveParam.EffectiveBusinessDay = date;
                                                    saveParam.Employee_RefID       = empID;
                                                    saveParam.ShiftTemplate_RefID  = shiftTemplate.CMN_PPS_ShiftTemplateID;

                                                    cls_Save_EffectiveWorkTime_For_ShiftTemplate.Invoke(Connection, Transaction, saveParam, securityTicket);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else if (Parameter.LoadFrom_PlanData)
                {
                    P_L5DWS_GDWSWDFT_0946 param = new P_L5DWS_GDWSWDFT_0946();
                    param.WorkSheduleDate = date;
                    var dailyWorkSchedules = cls_Get_DailyWorkSchedules_WithDetails_For_Date.Invoke(Connection, Transaction, param, securityTicket).Result;

                    foreach (var dailyWorkSchedule in dailyWorkSchedules)
                    {
                        ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query effectiveWorkTimeToDeleteQuery = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query();
                        effectiveWorkTimeToDeleteQuery.EffectiveBusinessDay = date;
                        effectiveWorkTimeToDeleteQuery.Employee_RefID       = dailyWorkSchedule.Employee_RefID;
                        effectiveWorkTimeToDeleteQuery.Tenant_RefID         = securityTicket.TenantID;
                        effectiveWorkTimeToDeleteQuery.IsDeleted            = false;

                        var effectiveWorkTimeHeaderToDeleteQueryResult = ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query.Search(Connection, Transaction, effectiveWorkTimeToDeleteQuery);

                        if (effectiveWorkTimeHeaderToDeleteQueryResult.Count != 0)
                        {
                            var effectiveWorkTimeHeaderToDelete = effectiveWorkTimeHeaderToDeleteQueryResult.FirstOrDefault();
                            P_L5DWS_DEWTH_1126 deleteParam      = new P_L5DWS_DEWTH_1126();
                            deleteParam.CMN_STR_PPS_EffectiveWorkTime_HeaderID = effectiveWorkTimeHeaderToDelete.CMN_STR_PPS_EffectiveWorkTime_HeaderID;

                            ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query positionsQuery = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query();
                            positionsQuery.EffectiveWorkTime_Header_RefID = effectiveWorkTimeHeaderToDelete.CMN_STR_PPS_EffectiveWorkTime_HeaderID;
                            positionsQuery.Tenant_RefID = securityTicket.TenantID;
                            positionsQuery.IsDeleted    = false;

                            var positions = ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query.Search(Connection, Transaction, positionsQuery);

                            List <P_L5DWS_DEWTH_1126_Positions> listOfPositions = new List <P_L5DWS_DEWTH_1126_Positions>();

                            foreach (var position in positions)
                            {
                                P_L5DWS_DEWTH_1126_Positions positionItem = new P_L5DWS_DEWTH_1126_Positions();
                                positionItem.CMN_BPT_EMP_EffectiveWorkTime_PositionID = position.CMN_BPT_EMP_EffectiveWorkTime_PositionID;
                                positionItem.durationInDays  = leaveRequestUtil.LeaveRequestDuration(position.WorkTime_StartTime, position.WorkTime_StartTime.AddSeconds(position.WorkTime_Duration_in_sec), Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == position.CMN_BPT_EMP_Employe_RefID), true);
                                positionItem.durationInHours = leaveRequestUtil.LeaveRequestDuration(position.WorkTime_StartTime, position.WorkTime_StartTime.AddSeconds(position.WorkTime_Duration_in_sec), Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == position.CMN_BPT_EMP_Employe_RefID), false);
                                listOfPositions.Add(positionItem);
                            }

                            deleteParam.Positions = listOfPositions.ToArray();
                            cls_Delete_EffectiveWorkTime_Header.Invoke(Connection, Transaction, deleteParam, securityTicket);
                        }

                        ORM_CMN_BPT_EMP_EffectiveWorkTime_Header newHeader = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Header();
                        newHeader.ContractWorkerText          = dailyWorkSchedule.ContractWorkerText;
                        newHeader.BreakDurationTime_in_sec    = dailyWorkSchedule.BreakDurationTime_in_sec;
                        newHeader.EffectiveBusinessDay        = date;
                        newHeader.Employee_RefID              = dailyWorkSchedule.Employee_RefID;
                        newHeader.IsBreakTimeManualySpecified = dailyWorkSchedule.IsBreakTimeManualySpecified;
                        newHeader.SheduleBreakTemplate_RefID  = dailyWorkSchedule.SheduleBreakTemplate_RefID;
                        newHeader.Tenant_RefID = securityTicket.TenantID;
                        newHeader.Save(Connection, Transaction);

                        foreach (var dailyWorkDetail in dailyWorkSchedule.Details)
                        {
                            P_L5DWS_SEWTP_1337 positionSavePar = new P_L5DWS_SEWTP_1337();
                            if (dailyWorkDetail.LeaveRequest_RefID != Guid.Empty)
                            {
                                positionSavePar.AbsenceReason_RefID         = dailyWorkDetail.AbsenceReason_RefID;
                                positionSavePar.durationInDays              = leaveRequestUtil.LeaveRequestDuration(dailyWorkDetail.FromTime_as_DateTime, dailyWorkDetail.ToTime_as_DateTime, Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == dailyWorkSchedule.Employee_RefID), true);
                                positionSavePar.durationInHours             = leaveRequestUtil.LeaveRequestDuration(dailyWorkDetail.FromTime_as_DateTime, dailyWorkDetail.ToTime_as_DateTime, Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == dailyWorkSchedule.Employee_RefID), false);
                                positionSavePar.RequestedBy_Employee_RefID  = Guid.Empty;
                                positionSavePar.RequestedFor_Employee_RefID = dailyWorkSchedule.Employee_RefID;
                            }
                            else
                            {
                                positionSavePar.AbsenceReason_RefID         = Guid.Empty;
                                positionSavePar.durationInDays              = 0;
                                positionSavePar.durationInHours             = 0;
                                positionSavePar.RequestedBy_Employee_RefID  = Guid.Empty;
                                positionSavePar.RequestedFor_Employee_RefID = Guid.Empty;
                            }

                            positionSavePar.CMN_BPT_EMP_Employee_LeaveRequest_RefID = Guid.Empty;
                            positionSavePar.EffectiveWorkTime_Header_RefID          = newHeader.CMN_STR_PPS_EffectiveWorkTime_HeaderID;
                            positionSavePar.Employee_RefID     = newHeader.Employee_RefID;
                            positionSavePar.OldDurationInDays  = 0;
                            positionSavePar.OldDurationInHours = 0;
                            positionSavePar.Workplace_RefID    = dailyWorkDetail.SheduleForWorkplace_RefID;
                            positionSavePar.WorkTime_End       = dailyWorkDetail.ToTime_as_DateTime;
                            positionSavePar.WorkTime_Start     = dailyWorkDetail.FromTime_as_DateTime;

                            cls_Save_EffectiveWorkTime_Position.Invoke(Connection, Transaction, positionSavePar, securityTicket);
                        }
                    }
                }
            }

            //Put your code here
            return(returnValue);

            #endregion UserCode
        }
コード例 #3
0
        ///<summary>
        /// Method Invocation of wrapper classes
        ///<summary>
        protected static FR_Guid Invoke(DbConnection Connection, DbTransaction Transaction, string ConnectionString, P_L5DWS_SEWTP_1337 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            bool cleanupConnection  = Connection == null;
            bool cleanupTransaction = Transaction == null;

            FR_Guid functionReturn = new FR_Guid();

            try
            {
                if (cleanupConnection == true)
                {
                    Connection = CSV2Core_MySQL.Support.DBSQLSupport.CreateConnection(ConnectionString);
                    Connection.Open();
                }
                if (cleanupTransaction == true)
                {
                    Transaction = Connection.BeginTransaction();
                }

                functionReturn = Execute(Connection, Transaction, Parameter, securityTicket);


                #region Cleanup Connection/Transaction
                //Commit the transaction
                if (cleanupTransaction == true)
                {
                    Transaction.Commit();
                }
                //Close the connection
                if (cleanupConnection == true)
                {
                    Connection.Close();
                }
                #endregion
            }
            catch (Exception ex)
            {
                try
                {
                    if (cleanupTransaction == true && Transaction != null)
                    {
                        Transaction.Rollback();
                    }
                }
                catch { }

                try
                {
                    if (cleanupConnection == true && Connection != null)
                    {
                        Connection.Close();
                    }
                }
                catch { }

                Guid errorID = Guid.NewGuid();
                ServerLog.Instance.Fatal("Application error occured. ErrorID = " + errorID, ex);
                throw ex;
            }
            return(functionReturn);
        }
コード例 #4
0
 ///<summary>
 /// Invokes the method for the given Connection, and Transaction, leaving them open/not commited if no exceptions occured
 ///<summary>
 public static FR_Guid Invoke(DbConnection Connection, DbTransaction Transaction, P_L5DWS_SEWTP_1337 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
 {
     return(Invoke(Connection, Transaction, null, Parameter, securityTicket));
 }
コード例 #5
0
 ///<summary>
 /// Opens the connection/transaction for the given connectionString, and closes them when complete
 ///<summary>
 public static FR_Guid Invoke(string ConnectionString, P_L5DWS_SEWTP_1337 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
 {
     return(Invoke(null, null, ConnectionString, Parameter, securityTicket));
 }
コード例 #6
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5DWS_SEWTP_1337 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();
            //Put your code here


            LeaveRequestUtils leaveRequestUtil = new LeaveRequestUtils();

            ORM_CMN_BPT_EMP_EffectiveWorkTime_Position effectivePosition = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Position();
            if (Parameter.CMN_BPT_EMP_EffectiveWorkTime_PositionID != Guid.Empty)
            {
                var result = effectivePosition.Load(Connection, Transaction, Parameter.CMN_BPT_EMP_EffectiveWorkTime_PositionID);
                if (result.Status != FR_Status.Success || effectivePosition.CMN_BPT_EMP_EffectiveWorkTime_PositionID == Guid.Empty)
                {
                    var error = new FR_Guid();
                    error.ErrorMessage = "No Such ID.";
                    error.Status       = FR_Status.Error_Internal;
                    return(error);
                }
                effectivePosition.EffectiveWorkTime_Header_RefID          = Parameter.EffectiveWorkTime_Header_RefID;
                effectivePosition.CMN_BPT_EMP_Employe_RefID               = Parameter.Employee_RefID;
                effectivePosition.CMN_BPT_EMP_Employee_LeaveRequest_RefID = Parameter.CMN_BPT_EMP_Employee_LeaveRequest_RefID;
                effectivePosition.Workplace_RefID          = Parameter.Workplace_RefID;
                effectivePosition.Tenant_RefID             = securityTicket.TenantID;
                effectivePosition.WorkTime_StartTime       = Parameter.WorkTime_Start;
                effectivePosition.WorkTime_Duration_in_sec = (int)Parameter.WorkTime_End.Subtract(Parameter.WorkTime_Start).TotalSeconds;
                effectivePosition.SourceOfEntry            = Parameter.SourceOfEntry;
                effectivePosition.Save(Connection, Transaction);

                if (Parameter.AbsenceReason_RefID != Guid.Empty)
                {
                    P_L5DWS_GDWSWDFPAE_1331 par = new P_L5DWS_GDWSWDFPAE_1331();
                    par.EmployeeID      = Parameter.Employee_RefID;
                    par.PeriodStartDate = Parameter.WorkTime_Start.Date;
                    par.PeriodEndDate   = Parameter.WorkTime_Start.Date;
                    var planningData = cls_Get_DailyWorkSchedules_WithDetails_For_Period_And_EmployeeID.Invoke(Connection, Transaction, par, securityTicket).Result;
                    if (planningData.DailyWorkSchedulesWithDetails.Length != 0)
                    {
                        var dailyWorkSchedule = planningData.DailyWorkSchedulesWithDetails[0];
                        foreach (var detail in dailyWorkSchedule.Details)
                        {
                            if (detail.LeaveRequest_RefID != Guid.Empty)
                            {
                                ORM_CMN_BPT_EMP_Employee_LeaveRequest leaveRequest = new ORM_CMN_BPT_EMP_Employee_LeaveRequest();
                                leaveRequest.Load(Connection, Transaction, detail.LeaveRequest_RefID);
                                leaveRequest.Remove(Connection, Transaction);

                                ORM_CMN_CAL_Event leaveRequestEvent = new ORM_CMN_CAL_Event();
                                leaveRequestEvent.Load(Connection, Transaction, leaveRequest.CMN_CAL_Event_RefID);
                                leaveRequestEvent.Remove(Connection, Transaction);

                                var calQuery = new ORM_CMN_CAL_Event.Query();
                                calQuery.CMN_CAL_EventID = leaveRequest.CMN_CAL_Event_RefID;
                                var calendarRes = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, calQuery);
                                ORM_CMN_CAL_Event calendarEvent = calendarRes[0];

                                P_L5TN_GCTFFTAY_1320 timeFrameParam = new P_L5TN_GCTFFTAY_1320();
                                timeFrameParam.Year = leaveRequestEvent.StartTime.Year;
                                var timeFrame = cls_Get_CalculationTimeFramesForTenant_And_Year.Invoke(Connection, Transaction, timeFrameParam, securityTicket).Result.CalculationTimeFrame;

                                var approvalItem = new ORM_CMN_CAL_Event_Approval();
                                if (leaveRequest.CMN_CAL_Event_Approval_RefID != Guid.Empty)
                                {
                                    var approvalResult = approvalItem.Load(Connection, Transaction, leaveRequest.CMN_CAL_Event_Approval_RefID);
                                    if (approvalResult.Status != FR_Status.Success || approvalItem.CMN_CAL_Event_ApprovalID == Guid.Empty)
                                    {
                                        var error = new FR_Guid();
                                        error.ErrorMessage = "No Such ID";
                                        error.Status       = FR_Status.Error_Internal;
                                        return(error);
                                    }
                                }
                                bool isApprovedBefore = approvalItem.IsApproved;

                                P_L5EM_GEATFSbRTFE_1423 statParam = new P_L5EM_GEATFSbRTFE_1423();
                                statParam.absenceReasonID = leaveRequest.CMN_BPT_STA_AbsenceReason_RefID;
                                statParam.employeeID      = leaveRequest.RequestedFor_Employee_RefID;
                                statParam.timeFrameID     = timeFrame.CMN_CAL_CalculationTimeframeID;
                                var statistics = cls_Get_Employee_AbsenceReason_TimeframeStatistic_byReasonTimeFrameEmployee.Invoke(Connection, Transaction, statParam, securityTicket).Result;
                                if (statistics != null)
                                {
                                    P_L5EM_SEARTFS_1356 updateStatisticsParam = new P_L5EM_SEARTFS_1356();
                                    updateStatisticsParam.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID = statistics.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID;
                                    updateStatisticsParam.Employee_RefID             = statistics.Employee_RefID;
                                    updateStatisticsParam.CalculationTimeframe_RefID = statistics.CalculationTimeframe_RefID;
                                    updateStatisticsParam.AbsenceReason_RefID        = statistics.AbsenceReason_RefID;

                                    updateStatisticsParam.R_AbsenceCarryOver_InDays  = statistics.R_AbsenceCarryOver_InDays;
                                    updateStatisticsParam.R_AbsenceCarryOver_InHours = statistics.R_AbsenceCarryOver_InHours;

                                    var durationInDays  = leaveRequestUtil.LeaveRequestDuration(leaveRequestEvent.StartTime, leaveRequestEvent.EndTime, Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == leaveRequest.RequestedFor_Employee_RefID), true);
                                    var durationInHours = leaveRequestUtil.LeaveRequestDuration(leaveRequestEvent.StartTime, leaveRequestEvent.EndTime, Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == leaveRequest.RequestedFor_Employee_RefID), false);


                                    if (!isApprovedBefore)
                                    {
                                        updateStatisticsParam.R_RequestReservedAbsence_InDays  = statistics.R_RequestReservedAbsence_InDays - durationInDays;
                                        updateStatisticsParam.R_RequestReservedAbsence_InHours = statistics.R_RequestReservedAbsence_InHours - durationInHours;

                                        updateStatisticsParam.R_AbsenceTimeUsed_InDays  = statistics.R_AbsenceTimeUsed_InDays;
                                        updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours;

                                        updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays  = statistics.R_TotalAllowedAbsenceTime_InDays;
                                        updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours;
                                    }

                                    var res = cls_Save_Employee_AbsenceReason_TimeframeStatistic.Invoke(Connection, Transaction, updateStatisticsParam, securityTicket);
                                }

                                ORM_CMN_STR_PPS_DailyWorkSchedule_Detail scheduleDetail = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail();
                                result = scheduleDetail.Load(Connection, Transaction, detail.CMN_STR_PPS_DailyWorkSchedule_DetailID);
                                if (result.Status != FR_Status.Success || scheduleDetail.CMN_STR_PPS_DailyWorkSchedule_DetailID == Guid.Empty)
                                {
                                    var error = new FR_Guid();
                                    error.ErrorMessage = "No Such ID.";
                                    error.Status       = FR_Status.Error_Internal;
                                    return(error);
                                }

                                scheduleDetail.CMN_BPT_EMP_Employee_LeaveRequest_RefID = Guid.Empty;
                                scheduleDetail.Save(Connection, Transaction);
                            }
                        }
                    }

                    if (effectivePosition.CMN_BPT_EMP_Employee_LeaveRequest_RefID == Guid.Empty)
                    {
                        ORM_CMN_CAL_Event leaveRequestEvent = new ORM_CMN_CAL_Event();
                        leaveRequestEvent.StartTime                = Parameter.WorkTime_Start;
                        leaveRequestEvent.EndTime                  = Parameter.WorkTime_End;
                        leaveRequestEvent.R_EventDuration_sec      = (int)Parameter.WorkTime_End.Subtract(Parameter.WorkTime_Start).TotalSeconds;
                        leaveRequestEvent.IsRepetitive             = false;
                        leaveRequestEvent.IsWholeDayEvent          = false;
                        leaveRequestEvent.IsCalendarEvent_Editable = true;
                        leaveRequestEvent.Tenant_RefID             = securityTicket.TenantID;
                        leaveRequestEvent.Save(Connection, Transaction);

                        var approvalItem = new ORM_CMN_CAL_Event_Approval();
                        approvalItem.Event_RefID             = leaveRequestEvent.CMN_CAL_EventID;
                        approvalItem.IsApprovalProcessDenied = false;
                        approvalItem.IsApprovalProcessOpened = false;
                        approvalItem.IsApproved = true;
                        approvalItem.IsApprovalProcessCanceledByUser = false;
                        approvalItem.IsDeleted          = false;
                        approvalItem.Creation_Timestamp = DateTime.Now;
                        approvalItem.Tenant_RefID       = securityTicket.TenantID;
                        approvalItem.Save(Connection, Transaction);



                        var requestItem = new ORM_CMN_BPT_EMP_Employee_LeaveRequest();
                        requestItem.CMN_BPT_STA_AbsenceReason_RefID = Parameter.AbsenceReason_RefID;
                        requestItem.CMN_CAL_Event_Approval_RefID    = approvalItem.CMN_CAL_Event_ApprovalID;
                        requestItem.CMN_CAL_Event_RefID             = leaveRequestEvent.CMN_CAL_EventID;
                        requestItem.IsDeleted = false;
                        requestItem.RequestedBy_Employee_RefID  = Parameter.Employee_RefID;
                        requestItem.RequestedFor_Employee_RefID = Parameter.Employee_RefID;
                        requestItem.Tenant_RefID               = securityTicket.TenantID;
                        requestItem.Creation_Timestamp         = DateTime.Now;
                        requestItem.LeaveRequestCreationSource = "plannico.time";
                        requestItem.Save(Connection, Transaction);
                        effectivePosition.CMN_BPT_EMP_Employee_LeaveRequest_RefID = requestItem.CMN_BPT_EMP_Employee_LeaveRequestID;
                        effectivePosition.Save(Connection, Transaction);

                        P_L5TN_GCTFFTAY_1320 timeFrameParam = new P_L5TN_GCTFFTAY_1320();
                        timeFrameParam.Year = leaveRequestEvent.StartTime.Year;
                        var timeFrame = cls_Get_CalculationTimeFramesForTenant_And_Year.Invoke(Connection, Transaction, timeFrameParam, securityTicket).Result.CalculationTimeFrame;

                        P_L5EM_GEATFSbRTFE_1423 statParam = new P_L5EM_GEATFSbRTFE_1423();
                        statParam.absenceReasonID = requestItem.CMN_BPT_STA_AbsenceReason_RefID;
                        statParam.employeeID      = requestItem.RequestedFor_Employee_RefID;
                        statParam.timeFrameID     = timeFrame.CMN_CAL_CalculationTimeframeID;
                        var statistics = cls_Get_Employee_AbsenceReason_TimeframeStatistic_byReasonTimeFrameEmployee.Invoke(Connection, Transaction, statParam, securityTicket).Result;
                        if (statistics != null)
                        {
                            P_L5EM_SEARTFS_1356 updateStatisticsParam = new P_L5EM_SEARTFS_1356();
                            updateStatisticsParam.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID = statistics.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID;
                            updateStatisticsParam.Employee_RefID             = statistics.Employee_RefID;
                            updateStatisticsParam.CalculationTimeframe_RefID = statistics.CalculationTimeframe_RefID;
                            updateStatisticsParam.AbsenceReason_RefID        = statistics.AbsenceReason_RefID;

                            updateStatisticsParam.R_RequestReservedAbsence_InDays  = statistics.R_RequestReservedAbsence_InDays;
                            updateStatisticsParam.R_RequestReservedAbsence_InHours = statistics.R_RequestReservedAbsence_InHours;

                            updateStatisticsParam.R_AbsenceCarryOver_InDays  = statistics.R_AbsenceCarryOver_InDays;
                            updateStatisticsParam.R_AbsenceCarryOver_InHours = statistics.R_AbsenceCarryOver_InHours;

                            updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays  = statistics.R_TotalAllowedAbsenceTime_InDays - Parameter.durationInDays;
                            updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours - Parameter.durationInHours;


                            updateStatisticsParam.R_AbsenceTimeUsed_InDays  = statistics.R_AbsenceTimeUsed_InDays + Parameter.durationInDays;
                            updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours + Parameter.durationInHours;

                            var res = cls_Save_Employee_AbsenceReason_TimeframeStatistic.Invoke(Connection, Transaction, updateStatisticsParam, securityTicket);
                        }
                    }
                    else
                    {
                        ORM_CMN_BPT_EMP_Employee_LeaveRequest leaveRequest = new ORM_CMN_BPT_EMP_Employee_LeaveRequest();
                        leaveRequest.Load(Connection, Transaction, effectivePosition.CMN_BPT_EMP_Employee_LeaveRequest_RefID);

                        ORM_CMN_CAL_Event leaveRequestEvent = new ORM_CMN_CAL_Event();
                        leaveRequestEvent.Load(Connection, Transaction, leaveRequest.CMN_CAL_Event_RefID);
                        if (leaveRequest.CMN_BPT_STA_AbsenceReason_RefID != Parameter.AbsenceReason_RefID || Parameter.OldDurationInHours != Parameter.durationInHours || Parameter.OldDurationInDays != Parameter.durationInDays)
                        {
                            var calQuery = new ORM_CMN_CAL_Event.Query();
                            calQuery.CMN_CAL_EventID = leaveRequest.CMN_CAL_Event_RefID;
                            var calendarRes = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, calQuery);
                            ORM_CMN_CAL_Event calendarEvent = calendarRes[0];

                            P_L5TN_GCTFFTAY_1320 timeFrameParam = new P_L5TN_GCTFFTAY_1320();
                            timeFrameParam.Year = leaveRequestEvent.StartTime.Year;
                            var timeFrame = cls_Get_CalculationTimeFramesForTenant_And_Year.Invoke(Connection, Transaction, timeFrameParam, securityTicket).Result.CalculationTimeFrame;

                            P_L5EM_GEATFSbRTFE_1423 statParam = new P_L5EM_GEATFSbRTFE_1423();
                            statParam.absenceReasonID = leaveRequest.CMN_BPT_STA_AbsenceReason_RefID;
                            statParam.employeeID      = leaveRequest.RequestedFor_Employee_RefID;
                            statParam.timeFrameID     = timeFrame.CMN_CAL_CalculationTimeframeID;
                            var statistics = cls_Get_Employee_AbsenceReason_TimeframeStatistic_byReasonTimeFrameEmployee.Invoke(Connection, Transaction, statParam, securityTicket).Result;
                            if (statistics != null)
                            {
                                P_L5EM_SEARTFS_1356 updateStatisticsParam = new P_L5EM_SEARTFS_1356();
                                updateStatisticsParam.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID = statistics.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID;
                                updateStatisticsParam.Employee_RefID             = statistics.Employee_RefID;
                                updateStatisticsParam.CalculationTimeframe_RefID = statistics.CalculationTimeframe_RefID;
                                updateStatisticsParam.AbsenceReason_RefID        = statistics.AbsenceReason_RefID;

                                updateStatisticsParam.R_AbsenceCarryOver_InDays  = statistics.R_AbsenceCarryOver_InDays;
                                updateStatisticsParam.R_AbsenceCarryOver_InHours = statistics.R_AbsenceCarryOver_InHours;

                                updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays  = statistics.R_TotalAllowedAbsenceTime_InDays + Parameter.OldDurationInDays - Parameter.durationInDays;
                                updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours + Parameter.OldDurationInHours - Parameter.durationInHours;

                                updateStatisticsParam.R_RequestReservedAbsence_InDays  = statistics.R_RequestReservedAbsence_InDays;
                                updateStatisticsParam.R_RequestReservedAbsence_InHours = statistics.R_RequestReservedAbsence_InHours;

                                updateStatisticsParam.R_AbsenceTimeUsed_InDays  = statistics.R_AbsenceTimeUsed_InDays - Parameter.OldDurationInDays + Parameter.durationInDays;
                                updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours - Parameter.OldDurationInHours + Parameter.durationInHours;

                                var res = cls_Save_Employee_AbsenceReason_TimeframeStatistic.Invoke(Connection, Transaction, updateStatisticsParam, securityTicket);
                            }
                            leaveRequest.CMN_BPT_STA_AbsenceReason_RefID = Parameter.AbsenceReason_RefID;
                            leaveRequest.Save(Connection, Transaction);
                        }


                        leaveRequestEvent.StartTime           = Parameter.WorkTime_Start;
                        leaveRequestEvent.EndTime             = Parameter.WorkTime_End;
                        leaveRequestEvent.R_EventDuration_sec = (int)Parameter.WorkTime_End.Subtract(Parameter.WorkTime_Start).TotalSeconds;
                        leaveRequestEvent.Save(Connection, Transaction);
                    }
                }
                else
                {
                    if (effectivePosition.CMN_BPT_EMP_Employee_LeaveRequest_RefID != Guid.Empty)
                    {
                        ORM_CMN_BPT_EMP_Employee_LeaveRequest leaveRequest = new ORM_CMN_BPT_EMP_Employee_LeaveRequest();
                        leaveRequest.Load(Connection, Transaction, effectivePosition.CMN_BPT_EMP_Employee_LeaveRequest_RefID);
                        leaveRequest.Remove(Connection, Transaction);

                        ORM_CMN_CAL_Event_Approval.Query calEventApprovalQuery = new ORM_CMN_CAL_Event_Approval.Query();
                        calEventApprovalQuery.Event_RefID  = leaveRequest.CMN_CAL_Event_RefID;
                        calEventApprovalQuery.IsDeleted    = false;
                        calEventApprovalQuery.Tenant_RefID = securityTicket.TenantID;
                        ORM_CMN_CAL_Event_Approval calEventApproval = ORM_CMN_CAL_Event_Approval.Query.Search(Connection, Transaction, calEventApprovalQuery).FirstOrDefault();
                        calEventApproval.Remove(Connection, Transaction);

                        ORM_CMN_CAL_Event leaveRequestEvent = new ORM_CMN_CAL_Event();
                        leaveRequestEvent.Load(Connection, Transaction, leaveRequest.CMN_CAL_Event_RefID);
                        leaveRequestEvent.Remove(Connection, Transaction);
                        effectivePosition.CMN_BPT_EMP_Employee_LeaveRequest_RefID = Guid.Empty;
                        effectivePosition.Save(Connection, Transaction);

                        P_L5TN_GCTFFTAY_1320 timeFrameParam = new P_L5TN_GCTFFTAY_1320();
                        timeFrameParam.Year = leaveRequestEvent.StartTime.Year;
                        var timeFrame = cls_Get_CalculationTimeFramesForTenant_And_Year.Invoke(Connection, Transaction, timeFrameParam, securityTicket).Result.CalculationTimeFrame;


                        P_L5EM_GEATFSbRTFE_1423 statParam = new P_L5EM_GEATFSbRTFE_1423();
                        statParam.absenceReasonID = leaveRequest.CMN_BPT_STA_AbsenceReason_RefID;
                        statParam.employeeID      = leaveRequest.RequestedFor_Employee_RefID;
                        statParam.timeFrameID     = timeFrame.CMN_CAL_CalculationTimeframeID;
                        var statistics = cls_Get_Employee_AbsenceReason_TimeframeStatistic_byReasonTimeFrameEmployee.Invoke(Connection, Transaction, statParam, securityTicket).Result;
                        if (statistics != null)
                        {
                            P_L5EM_SEARTFS_1356 updateStatisticsParam = new P_L5EM_SEARTFS_1356();
                            updateStatisticsParam.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID = statistics.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID;
                            updateStatisticsParam.Employee_RefID             = statistics.Employee_RefID;
                            updateStatisticsParam.CalculationTimeframe_RefID = statistics.CalculationTimeframe_RefID;
                            updateStatisticsParam.AbsenceReason_RefID        = statistics.AbsenceReason_RefID;

                            updateStatisticsParam.R_AbsenceCarryOver_InDays  = statistics.R_AbsenceCarryOver_InDays;
                            updateStatisticsParam.R_AbsenceCarryOver_InHours = statistics.R_AbsenceCarryOver_InHours;

                            updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays  = statistics.R_TotalAllowedAbsenceTime_InDays + Parameter.OldDurationInDays;
                            updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours + Parameter.OldDurationInHours;

                            updateStatisticsParam.R_RequestReservedAbsence_InDays  = statistics.R_RequestReservedAbsence_InDays;
                            updateStatisticsParam.R_RequestReservedAbsence_InHours = statistics.R_RequestReservedAbsence_InHours;

                            updateStatisticsParam.R_AbsenceTimeUsed_InDays  = statistics.R_AbsenceTimeUsed_InDays - Parameter.OldDurationInDays;
                            updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours - Parameter.OldDurationInHours;

                            var res = cls_Save_Employee_AbsenceReason_TimeframeStatistic.Invoke(Connection, Transaction, updateStatisticsParam, securityTicket);
                        }
                    }
                }
            }
            else
            {
                effectivePosition.EffectiveWorkTime_Header_RefID          = Parameter.EffectiveWorkTime_Header_RefID;
                effectivePosition.CMN_BPT_EMP_Employe_RefID               = Parameter.Employee_RefID;
                effectivePosition.CMN_BPT_EMP_Employee_LeaveRequest_RefID = Parameter.CMN_BPT_EMP_Employee_LeaveRequest_RefID;
                effectivePosition.Workplace_RefID          = Parameter.Workplace_RefID;
                effectivePosition.Tenant_RefID             = securityTicket.TenantID;
                effectivePosition.WorkTime_StartTime       = Parameter.WorkTime_Start;
                effectivePosition.WorkTime_Duration_in_sec = (int)Parameter.WorkTime_End.Subtract(Parameter.WorkTime_Start).TotalSeconds;
                effectivePosition.SourceOfEntry            = Parameter.SourceOfEntry;
                effectivePosition.Save(Connection, Transaction);

                if (Parameter.AbsenceReason_RefID != Guid.Empty)
                {
                    ORM_CMN_CAL_Event leaveRequestEvent = new ORM_CMN_CAL_Event();
                    leaveRequestEvent.StartTime                = Parameter.WorkTime_Start;
                    leaveRequestEvent.EndTime                  = Parameter.WorkTime_End;
                    leaveRequestEvent.R_EventDuration_sec      = (int)Parameter.WorkTime_End.Subtract(Parameter.WorkTime_Start).TotalSeconds;
                    leaveRequestEvent.IsRepetitive             = false;
                    leaveRequestEvent.IsWholeDayEvent          = false;
                    leaveRequestEvent.IsCalendarEvent_Editable = true;
                    leaveRequestEvent.Tenant_RefID             = securityTicket.TenantID;
                    leaveRequestEvent.Save(Connection, Transaction);

                    var approvalItem = new ORM_CMN_CAL_Event_Approval();
                    approvalItem.Event_RefID             = leaveRequestEvent.CMN_CAL_EventID;
                    approvalItem.IsApprovalProcessDenied = false;
                    approvalItem.IsApprovalProcessOpened = false;
                    approvalItem.IsApproved = true;
                    approvalItem.IsApprovalProcessCanceledByUser = false;
                    approvalItem.IsDeleted          = false;
                    approvalItem.Creation_Timestamp = DateTime.Now;
                    approvalItem.Tenant_RefID       = securityTicket.TenantID;
                    approvalItem.Save(Connection, Transaction);

                    var requestItem = new ORM_CMN_BPT_EMP_Employee_LeaveRequest();
                    requestItem.CMN_BPT_STA_AbsenceReason_RefID = Parameter.AbsenceReason_RefID;
                    requestItem.CMN_CAL_Event_Approval_RefID    = approvalItem.CMN_CAL_Event_ApprovalID;
                    requestItem.CMN_CAL_Event_RefID             = leaveRequestEvent.CMN_CAL_EventID;
                    requestItem.IsDeleted = false;
                    requestItem.RequestedBy_Employee_RefID  = Parameter.RequestedBy_Employee_RefID;
                    requestItem.RequestedFor_Employee_RefID = Parameter.RequestedFor_Employee_RefID;
                    requestItem.Tenant_RefID               = securityTicket.TenantID;
                    requestItem.Creation_Timestamp         = DateTime.Now;
                    requestItem.LeaveRequestCreationSource = "plannico.time";
                    requestItem.Save(Connection, Transaction);
                    effectivePosition.CMN_BPT_EMP_Employee_LeaveRequest_RefID = requestItem.CMN_BPT_EMP_Employee_LeaveRequestID;
                    effectivePosition.Save(Connection, Transaction);


                    P_L5TN_GCTFFTAY_1320 timeFrameParam = new P_L5TN_GCTFFTAY_1320();
                    timeFrameParam.Year = leaveRequestEvent.StartTime.Year;
                    var timeFrame = cls_Get_CalculationTimeFramesForTenant_And_Year.Invoke(Connection, Transaction, timeFrameParam, securityTicket).Result.CalculationTimeFrame;

                    P_L5EM_GEATFSbRTFE_1423 statParam = new P_L5EM_GEATFSbRTFE_1423();
                    statParam.absenceReasonID = requestItem.CMN_BPT_STA_AbsenceReason_RefID;
                    statParam.employeeID      = requestItem.RequestedFor_Employee_RefID;
                    statParam.timeFrameID     = timeFrame.CMN_CAL_CalculationTimeframeID;
                    var statistics = cls_Get_Employee_AbsenceReason_TimeframeStatistic_byReasonTimeFrameEmployee.Invoke(Connection, Transaction, statParam, securityTicket).Result;
                    if (statistics != null)
                    {
                        P_L5EM_SEARTFS_1356 updateStatisticsParam = new P_L5EM_SEARTFS_1356();
                        updateStatisticsParam.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID = statistics.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID;
                        updateStatisticsParam.Employee_RefID             = statistics.Employee_RefID;
                        updateStatisticsParam.CalculationTimeframe_RefID = statistics.CalculationTimeframe_RefID;
                        updateStatisticsParam.AbsenceReason_RefID        = statistics.AbsenceReason_RefID;

                        updateStatisticsParam.R_AbsenceCarryOver_InDays  = statistics.R_AbsenceCarryOver_InDays;
                        updateStatisticsParam.R_AbsenceCarryOver_InHours = statistics.R_AbsenceCarryOver_InHours;

                        updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays  = statistics.R_TotalAllowedAbsenceTime_InDays - Parameter.durationInDays;
                        updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours - Parameter.durationInHours;


                        updateStatisticsParam.R_AbsenceTimeUsed_InDays  = statistics.R_AbsenceTimeUsed_InDays + Parameter.durationInDays;
                        updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours + Parameter.durationInHours;

                        var res = cls_Save_Employee_AbsenceReason_TimeframeStatistic.Invoke(Connection, Transaction, updateStatisticsParam, securityTicket);
                    }
                }
            }



            returnValue.Result = effectivePosition.CMN_BPT_EMP_EffectiveWorkTime_PositionID;

            return(returnValue);

            #endregion UserCode
        }
コード例 #7
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5DWS_SEWTFST_1141 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            //Leave UserCode region to enable user code saving
            #region UserCode
            var returnValue = new FR_Guid();
            //Put your code here

            ORM_CMN_PPS_ShiftTemplate.Query shiftTemplateQuery = new ORM_CMN_PPS_ShiftTemplate.Query();
            shiftTemplateQuery.CMN_PPS_ShiftTemplateID = Parameter.ShiftTemplate_RefID;
            shiftTemplateQuery.Tenant_RefID            = securityTicket.TenantID;
            shiftTemplateQuery.IsDeleted = false;

            ORM_CMN_PPS_ShiftTemplate shiftTemplate = ORM_CMN_PPS_ShiftTemplate.Query.Search(Connection, Transaction, shiftTemplateQuery).FirstOrDefault();



            ORM_CMN_PPS_ShiftTemplate_WorkDetail.Query shiftTemplateWorkDetailQuery = new ORM_CMN_PPS_ShiftTemplate_WorkDetail.Query();
            shiftTemplateWorkDetailQuery.CMN_PPS_ShiftTemplate_RefID = Parameter.ShiftTemplate_RefID;
            shiftTemplateWorkDetailQuery.Tenant_RefID = securityTicket.TenantID;
            shiftTemplateWorkDetailQuery.IsDeleted    = false;

            var shiftTemplateDetailsResult = ORM_CMN_PPS_ShiftTemplate_WorkDetail.Query.Search(Connection, Transaction, shiftTemplateWorkDetailQuery);

            ORM_CMN_BPT_EMP_EffectiveWorkTime_Header effectiveWorkTimeHeader = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Header();
            effectiveWorkTimeHeader.IsBreakTimeManualySpecified = false;
            effectiveWorkTimeHeader.SheduleBreakTemplate_RefID  = shiftTemplate.Default_AllowedBreakTimeTemplate_RefID;

            if (shiftTemplate.Default_AllowedBreakTimeTemplate_RefID != Guid.Empty && Parameter.IsBreakTimeCalculated_Actual)
            {
                ORM_CMN_PPS_BreakTime_Template_Assignment.Query breakTimeAssignmentQuery = new ORM_CMN_PPS_BreakTime_Template_Assignment.Query();
                breakTimeAssignmentQuery.BreakTime_Template_RefID = shiftTemplate.Default_AllowedBreakTimeTemplate_RefID;
                breakTimeAssignmentQuery.Tenant_RefID             = securityTicket.TenantID;
                breakTimeAssignmentQuery.IsDeleted = false;

                var breakTimeAssignment = ORM_CMN_PPS_BreakTime_Template_Assignment.Query.Search(Connection, Transaction, breakTimeAssignmentQuery).FirstOrDefault();

                ORM_CMN_PPS_BreakTime.Query breakTimeQuery = new ORM_CMN_PPS_BreakTime.Query();
                breakTimeQuery.CMN_PPS_BreakTimeID = breakTimeAssignment.BreakTime_RefID;
                breakTimeQuery.Tenant_RefID        = securityTicket.TenantID;
                breakTimeQuery.IsDeleted           = false;

                var breakTime = ORM_CMN_PPS_BreakTime.Query.Search(Connection, Transaction, breakTimeQuery).FirstOrDefault();

                effectiveWorkTimeHeader.BreakDurationTime_in_sec = breakTime.Default_Duration_in_sec;
            }
            else
            {
                effectiveWorkTimeHeader.BreakDurationTime_in_sec = 0;
            }

            effectiveWorkTimeHeader.EffectiveBusinessDay = Parameter.EffectiveBusinessDay;
            effectiveWorkTimeHeader.ContractWorkerText   = "";
            effectiveWorkTimeHeader.Employee_RefID       = Parameter.Employee_RefID;
            effectiveWorkTimeHeader.Tenant_RefID         = securityTicket.TenantID;
            effectiveWorkTimeHeader.Save(Connection, Transaction);

            foreach (var shiftTemplateDetail in shiftTemplateDetailsResult)
            {
                P_L5DWS_SEWTP_1337 effectivePositionParam = new P_L5DWS_SEWTP_1337();
                effectivePositionParam.EffectiveWorkTime_Header_RefID = effectiveWorkTimeHeader.CMN_STR_PPS_EffectiveWorkTime_HeaderID;
                effectivePositionParam.WorkTime_Start = effectiveWorkTimeHeader.EffectiveBusinessDay.AddSeconds(shiftTemplateDetail.ShiftStart_Offset_sec);
                effectivePositionParam.WorkTime_End   = effectiveWorkTimeHeader.EffectiveBusinessDay.AddSeconds(shiftTemplateDetail.ShiftStart_Offset_sec + shiftTemplateDetail.Duration_in_sec);
                effectivePositionParam.Employee_RefID = Parameter.Employee_RefID;
                effectivePositionParam.RequestedFor_Employee_RefID = Parameter.Employee_RefID;
                cls_Save_EffectiveWorkTime_Position.Invoke(Connection, Transaction, effectivePositionParam, securityTicket);
            }

            return(returnValue);

            #endregion UserCode
        }