Exemplo n.º 1
0
        protected static FR_L5DWS_GEWTPFH_1725 Execute(DbConnection Connection, DbTransaction Transaction, P_L5DWS_GEWTPFH_1725 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            //Leave UserCode region to enable user code saving
            #region UserCode
            var returnValue = new FR_L5DWS_GEWTPFH_1725();
            //Put your code here

            ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query positionQuery = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query();
            positionQuery.EffectiveWorkTime_Header_RefID = Parameter.EffectiveWorkTime_Header_RefID;
            positionQuery.IsDeleted    = false;
            positionQuery.Tenant_RefID = securityTicket.TenantID;

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

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

            foreach (var position in positions)
            {
                L5DWS_GEWTFD_1648_Position newPosition = new L5DWS_GEWTFD_1648_Position();
                newPosition.Activity_RefID = position.Activity_RefID;
                newPosition.CMN_BPT_EMP_EffectiveWorkTime_PositionID = position.CMN_BPT_EMP_EffectiveWorkTime_PositionID;
                newPosition.CMN_BPT_EMP_Employe_RefID = position.CMN_BPT_EMP_Employe_RefID;
                newPosition.CMN_BPT_EMP_Employee_LeaveRequest_RefID = position.CMN_BPT_EMP_Employee_LeaveRequest_RefID;
                newPosition.EffectiveWorkTime_Header_RefID          = position.EffectiveWorkTime_Header_RefID;
                newPosition.SourceOfEntry            = position.SourceOfEntry;
                newPosition.Workplace_RefID          = position.Workplace_RefID;
                newPosition.WorkTime_Duration_in_sec = position.WorkTime_Duration_in_sec;
                newPosition.WorkTime_StartTime       = position.WorkTime_StartTime;


                if (position.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 = position.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();
                    newPosition.AbsenceReason_RefID = leaveRequest.CMN_BPT_STA_AbsenceReason_RefID;
                }
                else
                {
                    newPosition.AbsenceReason_RefID = Guid.Empty;
                }


                listOfPositions.Add(newPosition);
            }

            returnValue.Result = new L5DWS_GEWTPFH_1725();
            returnValue.Result.EffectiveWorkTimePositions = listOfPositions.ToArray();

            return(returnValue);

            #endregion UserCode
        }
        protected static FR_L5TN_GCTFFLR_1358 Execute(DbConnection Connection, DbTransaction Transaction, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L5TN_GCTFFLR_1358();

            //Put your code here
            L5TN_GCTFFT_1529[]      calculationTimeFrames       = cls_Get_CalculationTimeFramesForTenant.Invoke(Connection, Transaction, securityTicket).Result;
            List <L5TN_GCTFFT_1529> calculationTimeFramesResult = new List <L5TN_GCTFFT_1529>();

            ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query leaveRequestQuery = new ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query();
            leaveRequestQuery.Tenant_RefID = securityTicket.TenantID;
            leaveRequestQuery.IsDeleted    = false;
            List <ORM_CMN_BPT_EMP_Employee_LeaveRequest> leaveRequestList = ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query.Search(Connection, Transaction, leaveRequestQuery);

            List <ORM_CMN_CAL_Event> eventList = new List <ORM_CMN_CAL_Event>();
            foreach (var leaveRequestItem in leaveRequestList)
            {
                ORM_CMN_CAL_Event_Approval approval = new ORM_CMN_CAL_Event_Approval();
                approval.Load(Connection, Transaction, leaveRequestItem.CMN_CAL_Event_Approval_RefID);
                if (!approval.IsApprovalProcessDenied && !approval.IsApprovalProcessCanceledByUser)
                {
                    ORM_CMN_CAL_Event eventItem = new ORM_CMN_CAL_Event();
                    var eventResult             = eventItem.Load(Connection, Transaction, leaveRequestItem.CMN_CAL_Event_RefID);
                    if (eventResult.Status != FR_Status.Success || eventItem.CMN_CAL_EventID == Guid.Empty)
                    {
                        continue;
                    }
                    eventList.Add(eventItem);
                }
            }

            if (eventList.Count > 0)
            {
                foreach (var timeFrame in calculationTimeFrames)
                {
                    if (eventList.Any(e => e.StartTime.Year == timeFrame.CalculationTimeframe_StartDate.Year))
                    {
                        calculationTimeFramesResult.Add(timeFrame);
                    }
                }
            }

            if (calculationTimeFramesResult.Count == 0)
            {
                calculationTimeFramesResult.Add(calculationTimeFrames.Where(i => i.IsCalculationTimeframe_Active).FirstOrDefault());
            }

            returnValue.Result = new L5TN_GCTFFLR_1358();
            returnValue.Result.CalculationTimeFrames = calculationTimeFramesResult.ToArray();

            return(returnValue);

            #endregion UserCode
        }
Exemplo n.º 3
0
        protected static FR_L5LR_CLRC_1517 Execute(DbConnection Connection, DbTransaction Transaction, P_L5LR_CLRC_1517 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            //Leave UserCode region to enable user code saving
            #region UserCode
            var returnValue = new FR_L5LR_CLRC_1517();
            returnValue.Result = new L5LR_CLRC_1517();

            int retVal = 0;

            //Put your code here
            ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query leaveRequestQuery = new ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query();
            leaveRequestQuery.RequestedFor_Employee_RefID = Parameter.EmployeeID;
            leaveRequestQuery.Tenant_RefID = securityTicket.TenantID;
            leaveRequestQuery.IsDeleted    = false;
            List <ORM_CMN_BPT_EMP_Employee_LeaveRequest> leaveRequests = ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query.Search(Connection, Transaction, leaveRequestQuery);

            FR_Base evetResult;
            FR_Base eventApprovalResult;
            foreach (var leaveRequest in leaveRequests)
            {
                ORM_CMN_CAL_Event Event = new ORM_CMN_CAL_Event();
                evetResult = Event.Load(Connection, Transaction, leaveRequest.CMN_CAL_Event_RefID);

                if (evetResult.Status == FR_Status.Success && Event.CMN_CAL_EventID != Guid.Empty && Event.StartTime.Ticks > Parameter.StartDate.Ticks)
                {
                    ORM_CMN_CAL_Event_Approval eventApproval = new ORM_CMN_CAL_Event_Approval();
                    eventApprovalResult = eventApproval.Load(Connection, Transaction, leaveRequest.CMN_CAL_Event_Approval_RefID);

                    if (eventApprovalResult.Status == FR_Status.Success && eventApproval.CMN_CAL_Event_ApprovalID != Guid.Empty &&
                        !eventApproval.IsApprovalProcessCanceledByUser && !eventApproval.IsApprovalProcessDenied)
                    {
                        retVal++;
                    }
                }
            }

            returnValue.Result.LeaveCount = retVal;

            return(returnValue);

            #endregion UserCode
        }
Exemplo n.º 4
0
        protected static FR_L6LR_GLR_ID_1339 Execute(DbConnection Connection, DbTransaction Transaction, P_L6LR_GLR_ID_1339 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L6LR_GLR_ID_1339();
            returnValue.Result = new L6LR_GLR_ID_1339();


            //Covers
            ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query leaveRequestQuery = new ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query();
            leaveRequestQuery.CMN_BPT_EMP_Employee_LeaveRequestID = Parameter.LeaveID;
            leaveRequestQuery.Tenant_RefID = securityTicket.TenantID;
            leaveRequestQuery.IsDeleted    = false;
            ORM_CMN_BPT_EMP_Employee_LeaveRequest leaveRequest = ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query.Search(Connection, Transaction, leaveRequestQuery).FirstOrDefault();
            ORM_CMN_BPT_EMP_Employee employee = new ORM_CMN_BPT_EMP_Employee();
            employee.Load(Connection, Transaction, leaveRequest.RequestedFor_Employee_RefID);
            L5LR_GLRFSP_1532 result = new L5LR_GLRFSP_1532();
            result.ForEmployeeID = employee.CMN_BPT_EMP_EmployeeID;
            result.ForEmployee_BusinessParticipant_RefID = employee.BusinessParticipant_RefID;
            result.ForEmployee_Staff_Number     = employee.Staff_Number;
            result.ForEmployee_StandardFunction = employee.StandardFunction;
            result.LeaveRequestCreationSource   = leaveRequest.LeaveRequestCreationSource;
            ORM_CMN_BPT_BusinessParticipant bpart = new ORM_CMN_BPT_BusinessParticipant();
            bpart.Load(Connection, Transaction, employee.BusinessParticipant_RefID);

            ORM_CMN_PER_PersonInfo per = new ORM_CMN_PER_PersonInfo();
            per.Load(Connection, Transaction, bpart.IfNaturalPerson_CMN_PER_PersonInfo_RefID);
            result.FirstName = per.FirstName;
            result.LastName  = per.LastName;

            result.CMN_CAL_Event_RefID          = leaveRequest.CMN_CAL_Event_RefID;
            result.CMN_CAL_Event_Approval_RefID = leaveRequest.CMN_CAL_Event_Approval_RefID;
            //result.AbsenceReason_Type_RefID = leaveRequest.CMN_BPT_STA_AbsenceReason_RefID;
            result.Comment = leaveRequest.Comment;
            result.RequestedBy_Employee_RefID          = leaveRequest.RequestedBy_Employee_RefID;
            result.CMN_BPT_EMP_Employee_LeaveRequestID = leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID;
            ORM_CMN_BPT_EMP_Employee_LeaveRequest_EmployeeCover.Query covers = new ORM_CMN_BPT_EMP_Employee_LeaveRequest_EmployeeCover.Query();
            covers.CMN_BPT_EMP_Employee_LeaveRequests = leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID;
            covers.Tenant_RefID = securityTicket.TenantID;
            covers.IsDeleted    = false;
            List <ORM_CMN_BPT_EMP_Employee_LeaveRequest_EmployeeCover> employeeCovers = ORM_CMN_BPT_EMP_Employee_LeaveRequest_EmployeeCover.Query.Search(Connection, Transaction, covers);
            result.Cover = new L5LR_GLRFSP_1532_Cover();
            if (employeeCovers.Count != 0)
            {
                ORM_CMN_BPT_EMP_Employee_LeaveRequest_EmployeeCover employeeCover = employeeCovers[0];
                result.Cover.CMN_BPT_EMP_EmployeeID = employeeCover.EmployeeCover_RefID;
                result.Cover.CMN_BPT_EMP_Employee_LeaveRequest_EmployeeCoverID = employeeCover.CMN_BPT_EMP_Employee_LeaveRequest_EmployeeCoverID;
                result.Cover.SequenceNumber = employeeCover.SequenceNumber;
            }

            ORM_CMN_BPT_STA_AbsenceReason absenceReason = new ORM_CMN_BPT_STA_AbsenceReason();
            absenceReason.Load(Connection, Transaction, leaveRequest.CMN_BPT_STA_AbsenceReason_RefID);

            result.CMN_BPT_STA_AbsenceReason_RefID = absenceReason.CMN_BPT_STA_AbsenceReasonID;
            result.ShortName  = absenceReason.ShortName;
            result.ReasonName = absenceReason.Name;
            result.ReasonDesc = absenceReason.Description;
            result.AbsenceReason_Type_RefID = absenceReason.AbsenceReason_Type_RefID;
            result.ColorCode                            = absenceReason.ColorCode;
            result.Parent_RefID                         = absenceReason.Parent_RefID;
            result.IsAuthorizationRequired              = absenceReason.IsAuthorizationRequired;
            result.IsIncludedInCapacityCalculation      = absenceReason.IsIncludedInCapacityCalculation;
            result.IsAllowedAbsence                     = absenceReason.IsAllowedAbsence;
            result.IsDeactivated                        = absenceReason.IsDeactivated;
            result.IsCarryOverEnabled                   = absenceReason.IsCarryOverEnabled;
            result.IsCaryOverLimited                    = absenceReason.IsCaryOverLimited;
            result.IfCarryOverLimited_MaximumAmount_Hrs = absenceReason.IfCarryOverLimited_MaximumAmount_Hrs;

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

            result.CalendarInstance_RefID = Event.CalendarInstance_RefID;
            result.StartTime           = Event.StartTime;
            result.EndTime             = Event.EndTime;
            result.R_EventDuration_sec = Event.R_EventDuration_sec;

            ORM_CMN_CAL_Event_Approval eventApproval = new ORM_CMN_CAL_Event_Approval();
            eventApproval.Load(Connection, Transaction, leaveRequest.CMN_CAL_Event_Approval_RefID);

            result.Action = new L5LR_GLRFSP_1532_Action();

            result.IsApproved = eventApproval.IsApproved;
            result.IsApprovalProcessOpened = eventApproval.IsApprovalProcessOpened;
            result.IsApprovalProcessDenied = eventApproval.IsApprovalProcessDenied;

            ORM_CMN_CAL_Event_Approval_Action.Query approvalQuery = new ORM_CMN_CAL_Event_Approval_Action.Query();
            approvalQuery.EventApproval_RefID = eventApproval.CMN_CAL_Event_ApprovalID;
            approvalQuery.Tenant_RefID        = securityTicket.TenantID;
            approvalQuery.IsDeleted           = false;
            List <ORM_CMN_CAL_Event_Approval_Action> apporvalActions = ORM_CMN_CAL_Event_Approval_Action.Query.Search(Connection, Transaction, approvalQuery);
            if (apporvalActions.Count != 0)
            {
                ORM_CMN_CAL_Event_Approval_Action approvalAction = apporvalActions[0];
                result.Action.ActionTriggeredBy_Account_RefID = approvalAction.ActionTriggeredBy_Account_RefID;
                result.Action.CMN_CAL_Event_Approval_ActionID = approvalAction.CMN_CAL_Event_Approval_ActionID;
                result.Action.IsApproval              = approvalAction.IsApproval;
                result.Action.IsRevocation            = approvalAction.IsRevocation;
                result.Action.IsDenial                = approvalAction.IsDenial;
                result.Action.Approval_Action_Commnet = approvalAction.Comment;
            }

            returnValue.Result.Leave = result;
            //Put your code here
            return(returnValue);

            #endregion UserCode
        }
Exemplo n.º 5
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
        }
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L6LR_SLRDA_1224 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            if (Parameter.LeaveRequestID != Guid.Empty)
            {
                var lrQuery = new ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query();
                lrQuery.CMN_BPT_EMP_Employee_LeaveRequestID = Parameter.LeaveRequestID;
                lrQuery.Tenant_RefID = securityTicket.TenantID;
                lrQuery.IsDeleted    = false;

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

                ORM_CMN_BPT_EMP_Employee_LeaveRequest leaveRequest = leaveRequestsRes[0];

                P_L5LR_SEAA_1351 ApprovalActionParam = new P_L5LR_SEAA_1351();
                ApprovalActionParam.Approval_Action_Commnet         = "";
                ApprovalActionParam.CMN_CAL_Event_Approval_ActionID = Guid.Empty;
                ApprovalActionParam.EventApproval_RefID             = leaveRequest.CMN_CAL_Event_Approval_RefID;
                ApprovalActionParam.IsApproval   = false;
                ApprovalActionParam.IsDenial     = true;
                ApprovalActionParam.IsRevocation = false;
                cls_Save_Employee_ApprovalAction.Invoke(Connection, Transaction, ApprovalActionParam, securityTicket);



                var approvalItem = new ORM_CMN_CAL_Event_Approval();
                if (leaveRequest.CMN_CAL_Event_Approval_RefID != Guid.Empty)
                {
                    var result = approvalItem.Load(Connection, Transaction, leaveRequest.CMN_CAL_Event_Approval_RefID);
                    if (result.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);
                    }
                }

                approvalItem.IsApprovalProcessDenied         = true;
                approvalItem.IsApprovalProcessOpened         = false;
                approvalItem.IsApprovalProcessCanceledByUser = false;
                approvalItem.IsApproved = false;

                approvalItem.Save(Connection, Transaction);

                // update statistics ************************************************
                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];
                var timeFrame = cls_Get_CalculationTimeFramesForTenant.Invoke(Connection, Transaction, securityTicket).Result.Where(x => x.CalculationTimeframe_StartDate.Year == calendarEvent.StartTime.Year).FirstOrDefault();

                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;
                    updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours;

                    updateStatisticsParam.R_RequestReservedAbsence_InDays  = statistics.R_RequestReservedAbsence_InDays - Parameter.durationInDays;
                    updateStatisticsParam.R_RequestReservedAbsence_InHours = statistics.R_RequestReservedAbsence_InHours - Parameter.durationInHours;

                    updateStatisticsParam.R_AbsenceTimeUsed_InDays  = statistics.R_AbsenceTimeUsed_InDays;
                    updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours;
                    var res = cls_Save_Employee_AbsenceReason_TimeframeStatistic.Invoke(Connection, Transaction, updateStatisticsParam, securityTicket);
                    // statistics update end :)
                }
            }

            return(returnValue);

            #endregion UserCode
        }
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L6LR_SLRCA_1055 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();
            if (Parameter.LeaveRequestID != Guid.Empty)
            {
                var lrQuery = new ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query();
                lrQuery.CMN_BPT_EMP_Employee_LeaveRequestID = Parameter.LeaveRequestID;
                lrQuery.Tenant_RefID = securityTicket.TenantID;
                lrQuery.IsDeleted    = false;
                var leaveRequestsRes = ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query.Search(Connection, Transaction, lrQuery);
                ORM_CMN_BPT_EMP_Employee_LeaveRequest leaveRequest = leaveRequestsRes[0];

                P_L5LR_SEAA_1351 ApprovalActionParam = new P_L5LR_SEAA_1351();
                ApprovalActionParam.Approval_Action_Commnet         = "";
                ApprovalActionParam.CMN_CAL_Event_Approval_ActionID = Guid.Empty;
                ApprovalActionParam.EventApproval_RefID             = leaveRequest.CMN_CAL_Event_Approval_RefID;
                ApprovalActionParam.IsApproval   = false;
                ApprovalActionParam.IsDenial     = false;
                ApprovalActionParam.IsRevocation = true;
                cls_Save_Employee_ApprovalAction.Invoke(Connection, Transaction, ApprovalActionParam, securityTicket);



                var approvalItem = new ORM_CMN_CAL_Event_Approval();
                if (leaveRequest.CMN_CAL_Event_Approval_RefID != Guid.Empty)
                {
                    var result = approvalItem.Load(Connection, Transaction, leaveRequest.CMN_CAL_Event_Approval_RefID);
                    if (result.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;

                approvalItem.IsApprovalProcessDenied         = false;
                approvalItem.IsApprovalProcessOpened         = false;
                approvalItem.IsApprovalProcessCanceledByUser = true;
                approvalItem.IsApproved = false;

                approvalItem.Save(Connection, Transaction);



                // update statistics ************************************************
                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];
                var timeFrame = cls_Get_CalculationTimeFramesForTenant.Invoke(Connection, Transaction, securityTicket).Result.Where(x => x.CalculationTimeframe_StartDate.Year == calendarEvent.StartTime.Year).FirstOrDefault();

                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;

                    if (isApprovedBefore)
                    {
                        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.durationInDays;
                        updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours - Parameter.durationInHours;

                        updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays  = statistics.R_TotalAllowedAbsenceTime_InDays + Parameter.durationInDays;
                        updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours + Parameter.durationInHours;
                    }
                    else
                    {
                        updateStatisticsParam.R_RequestReservedAbsence_InDays  = statistics.R_RequestReservedAbsence_InDays - Parameter.durationInDays;
                        updateStatisticsParam.R_RequestReservedAbsence_InHours = statistics.R_RequestReservedAbsence_InHours - Parameter.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);
                    // statistics update end :)
                }

                DateTime startTime = calendarEvent.StartTime;
                while (startTime.Date <= calendarEvent.EndTime.Date)
                {
                    ORM_CMN_STR_PPS_DailyWorkSchedule.Query scheduleQuery = new ORM_CMN_STR_PPS_DailyWorkSchedule.Query();
                    scheduleQuery.Tenant_RefID    = securityTicket.TenantID;
                    scheduleQuery.IsDeleted       = false;
                    scheduleQuery.WorkSheduleDate = startTime.Date;
                    scheduleQuery.Employee_RefID  = leaveRequest.RequestedFor_Employee_RefID;
                    List <ORM_CMN_STR_PPS_DailyWorkSchedule> workSechedules = ORM_CMN_STR_PPS_DailyWorkSchedule.Query.Search(Connection, Transaction, scheduleQuery);

                    if (workSechedules.Count != 0)
                    {
                        var dwsParam = new P_L5DWS_GDWSWDFT_0946();
                        dwsParam.WorkSheduleDate = startTime.Date;
                        var resultDailyWorkSchedule = cls_Get_DailyWorkSchedules_WithDetails_For_Date.Invoke(Connection, Transaction, dwsParam, securityTicket);

                        var dailySchedule = resultDailyWorkSchedule.Result.FirstOrDefault(i => i.Employee_RefID == leaveRequest.RequestedFor_Employee_RefID);
                        foreach (var detail in dailySchedule.Details)
                        {
                            P_L5DWS_DDWSDFIDL_1014 deleteParam = new P_L5DWS_DDWSDFIDL_1014();
                            deleteParam.DailyWorkSchedule_DetailID = detail.CMN_STR_PPS_DailyWorkSchedule_DetailID;

                            var scheduleID = cls_Delete_Employee_DailyWorkSchedule_Detail.Invoke(Connection, Transaction, deleteParam, securityTicket);
                        }
                        ORM_CMN_STR_PPS_DailyWorkSchedule schedule = new ORM_CMN_STR_PPS_DailyWorkSchedule();
                        if (dailySchedule.CMN_STR_PPS_DailyWorkScheduleID != Guid.Empty)
                        {
                            var result = schedule.Load(Connection, Transaction, dailySchedule.CMN_STR_PPS_DailyWorkScheduleID);
                            if (result.Status != FR_Status.Success || schedule.CMN_STR_PPS_DailyWorkScheduleID == Guid.Empty)
                            {
                                var error = new FR_Guid();
                                error.ErrorMessage = "No Such ID.";
                                error.Status       = FR_Status.Error_Internal;
                                return(error);
                            }
                        }

                        schedule.IsDeleted = true;
                        schedule.Save(Connection, Transaction);
                    }
                    startTime = startTime.AddDays(1);
                }
            }

            return(returnValue);

            #endregion UserCode
        }
        protected static FR_L5DWS_GEWTFDAE_0953 Execute(DbConnection Connection, DbTransaction Transaction, P_L5DWS_GEWTFDAE_0953 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            //Leave UserCode region to enable user code saving
            #region UserCode
            var returnValue = new FR_L5DWS_GEWTFDAE_0953();
            //Put your code here

            ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query effectiveWorkTimeHeaderQuery = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query();
            effectiveWorkTimeHeaderQuery.EffectiveBusinessDay = Parameter.currentDate.Date;
            effectiveWorkTimeHeaderQuery.Employee_RefID       = Parameter.EmployeeID;
            effectiveWorkTimeHeaderQuery.IsDeleted            = false;
            effectiveWorkTimeHeaderQuery.Tenant_RefID         = securityTicket.TenantID;


            var header = ORM_CMN_BPT_EMP_EffectiveWorkTime_Header.Query.Search(Connection, Transaction, effectiveWorkTimeHeaderQuery).FirstOrDefault();

            if (header == null)
            {
                returnValue.Result = new L5DWS_GEWTFDAE_0953();
                returnValue.Result.EffectiveWorkTime = null;
                return(returnValue);
            }

            L5DWS_GEWTFD_1648 resultItem = new L5DWS_GEWTFD_1648();
            resultItem.CMN_STR_PPS_EffectiveWorkTime_HeaderID = header.CMN_STR_PPS_EffectiveWorkTime_HeaderID;
            resultItem.BreakDurationTime_in_sec    = header.BreakDurationTime_in_sec;
            resultItem.ContractWorkerText          = header.ContractWorkerText;
            resultItem.EffectiveBusinessDay        = header.EffectiveBusinessDay;
            resultItem.Employee_RefID              = header.Employee_RefID;
            resultItem.IsBreakTimeManualySpecified = header.IsBreakTimeManualySpecified;
            resultItem.SheduleBreakTemplate_RefID  = header.SheduleBreakTemplate_RefID;
            resultItem.WorktimeComment             = header.WorktimeComment;

            ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query positionQuery = new ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query();
            positionQuery.EffectiveWorkTime_Header_RefID = header.CMN_STR_PPS_EffectiveWorkTime_HeaderID;
            positionQuery.IsDeleted    = false;
            positionQuery.Tenant_RefID = securityTicket.TenantID;

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

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

            foreach (var position in positions)
            {
                L5DWS_GEWTFD_1648_Position newPosition = new L5DWS_GEWTFD_1648_Position();
                newPosition.Activity_RefID = position.Activity_RefID;
                newPosition.CMN_BPT_EMP_EffectiveWorkTime_PositionID = position.CMN_BPT_EMP_EffectiveWorkTime_PositionID;
                newPosition.CMN_BPT_EMP_Employe_RefID = position.CMN_BPT_EMP_Employe_RefID;
                newPosition.CMN_BPT_EMP_Employee_LeaveRequest_RefID = position.CMN_BPT_EMP_Employee_LeaveRequest_RefID;
                newPosition.EffectiveWorkTime_Header_RefID          = position.EffectiveWorkTime_Header_RefID;
                newPosition.SourceOfEntry            = position.SourceOfEntry;
                newPosition.Workplace_RefID          = position.Workplace_RefID;
                newPosition.WorkTime_Duration_in_sec = position.WorkTime_Duration_in_sec;
                newPosition.WorkTime_StartTime       = position.WorkTime_StartTime;

                if (position.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 = position.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();
                    newPosition.AbsenceReason_RefID = leaveRequest.CMN_BPT_STA_AbsenceReason_RefID;
                }
                else
                {
                    newPosition.AbsenceReason_RefID = Guid.Empty;
                }

                listOfPositions.Add(newPosition);
            }

            resultItem.Positions = listOfPositions.ToArray();

            returnValue.Result = new L5DWS_GEWTFDAE_0953();
            returnValue.Result.EffectiveWorkTime = resultItem;

            return(returnValue);

            #endregion UserCode
        }