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
        }
        protected static FR_L5DWS_GDWSDFDWSID_1156_Array Execute(DbConnection Connection, DbTransaction Transaction, P_L5DWS_GDWSDFDWSID_1156 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L5DWS_GDWSDFDWSID_1156_Array();
            //Put your code here

            ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query detailsQuery = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query();
            detailsQuery.DailyWorkSchedule_RefID = Parameter.DailyWorkScheduleID;
            detailsQuery.IsDeleted    = false;
            detailsQuery.Tenant_RefID = securityTicket.TenantID;

            var details = ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query.Search(Connection, Transaction, detailsQuery);

            List <L5DWS_GDWSDFDWSID_1156> resultDetails = new List <L5DWS_GDWSDFDWSID_1156>();

            foreach (var detail in details)
            {
                ORM_CMN_CAL_Event.Query calEventQuery = new ORM_CMN_CAL_Event.Query();
                calEventQuery.CMN_CAL_EventID = detail.CMN_CAL_Event_RefID;
                calEventQuery.IsDeleted       = false;
                calEventQuery.Tenant_RefID    = securityTicket.TenantID;

                ORM_CMN_CAL_Event calEvent = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, calEventQuery).FirstOrDefault();

                L5DWS_GDWSDFDWSID_1156 resultDetail = new L5DWS_GDWSDFDWSID_1156();
                resultDetail.AbsenceReason_RefID = detail.AbsenceReason_RefID;
                resultDetail.CMN_CAL_Event_RefID = detail.CMN_CAL_Event_RefID;
                resultDetail.LeaveRequest_RefID  = detail.CMN_BPT_EMP_Employee_LeaveRequest_RefID;
                resultDetail.CMN_STR_PPS_DailyWorkSchedule_DetailID = detail.CMN_STR_PPS_DailyWorkSchedule_DetailID;
                resultDetail.FromTime_as_time          = calEvent.StartTime.ToString("HH:mm");
                resultDetail.ToTime_as_time            = calEvent.EndTime.ToString("HH:mm");
                resultDetail.TotalWorkTime_as_time     = calEvent.EndTime.Subtract(calEvent.StartTime).ToString(@"hh\:mm");
                resultDetail.IsWorkBreak               = detail.IsWorkBreak;
                resultDetail.SheduleForWorkplace_RefID = detail.SheduleForWorkplace_RefID;
                resultDetail.FromTime_as_DateTime      = calEvent.StartTime;
                resultDetail.ToTime_as_DateTime        = calEvent.EndTime;
                resultDetails.Add(resultDetail);
            }

            returnValue.Result = resultDetails.ToArray();

            return(returnValue);

            #endregion UserCode
        }
Пример #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
        }
Пример #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
        }
        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_Base Execute(DbConnection Connection, DbTransaction Transaction, P_L6DWS_DDWSDFIDL_1014 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            //Leave UserCode region to enable user code saving
            #region UserCode
            var returnValue = new FR_Base();

            L6TN_GSFT_1017 settings = cls_Get_Settings_For_Tenant.Invoke(Connection, Transaction, securityTicket).Result;

            ORM_CMN_STR_PPS_DailyWorkSchedule_Detail scheduleDetail = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail();
            var result = scheduleDetail.Load(Connection, Transaction, Parameter.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);
            }


            ORM_CMN_CAL_Event calEvent = new ORM_CMN_CAL_Event();
            calEvent.Load(Connection, Transaction, scheduleDetail.CMN_CAL_Event_RefID);

            if (scheduleDetail.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, scheduleDetail.CMN_BPT_EMP_Employee_LeaveRequest_RefID);

                Guid oldLeaveRequestID = leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID;
                ORM_CMN_CAL_Event leaveRequestEvent = new ORM_CMN_CAL_Event();
                leaveRequestEvent.Load(Connection, Transaction, leaveRequest.CMN_CAL_Event_RefID);
                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();


                if (leaveRequestEvent.StartTime.Date != leaveRequestEvent.EndTime.Date)
                {
                    DateTimeRange firstRange  = null;
                    DateTimeRange secondRange = null;
                    DateTimeRange thirdRange  = null;

                    ORM_CMN_STR_PPS_DailyWorkSchedule dailySchedule = new ORM_CMN_STR_PPS_DailyWorkSchedule();
                    dailySchedule.Load(Connection, Transaction, scheduleDetail.DailyWorkSchedule_RefID);

                    if (leaveRequestEvent.StartTime.Date == dailySchedule.WorkSheduleDate)
                    {
                        P_L5DWS_GDWSWDFT_0946 dailyScheduleDetailsPar = new P_L5DWS_GDWSWDFT_0946();
                        dailyScheduleDetailsPar.WorkSheduleDate = dailySchedule.WorkSheduleDate.AddDays(1).Date;
                        var schedule = cls_Get_DailyWorkSchedules_WithDetails_For_Date.Invoke(Connection, Transaction, dailyScheduleDetailsPar, securityTicket).Result.FirstOrDefault(i => i.Employee_RefID == dailySchedule.Employee_RefID);
                        secondRange = new DateTimeRange();
                        if (schedule != null && schedule.Details.Any(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID))
                        {
                            secondRange.Start = schedule.Details.FirstOrDefault(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID).FromTime_as_DateTime;
                            secondRange.End   = leaveRequestEvent.EndTime;
                        }
                        else
                        {
                            secondRange = null;
                        }
                    }
                    else if (leaveRequestEvent.EndTime.Date == dailySchedule.WorkSheduleDate)
                    {
                        firstRange       = new DateTimeRange();
                        firstRange.Start = leaveRequestEvent.StartTime;


                        P_L5DWS_GDWSWDFT_0946 dailyScheduleDetailsPar = new P_L5DWS_GDWSWDFT_0946();
                        dailyScheduleDetailsPar.WorkSheduleDate = dailySchedule.WorkSheduleDate.AddDays(-1).Date;
                        var schedule = cls_Get_DailyWorkSchedules_WithDetails_For_Date.Invoke(Connection, Transaction, dailyScheduleDetailsPar, securityTicket).Result.FirstOrDefault(i => i.Employee_RefID == dailySchedule.Employee_RefID);
                        if (schedule != null && schedule.Details.Any(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID))
                        {
                            firstRange.End = schedule.Details.FirstOrDefault(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID).ToTime_as_DateTime;
                        }
                        else
                        {
                            firstRange = null;
                        }
                    }
                    else
                    {
                        firstRange       = new DateTimeRange();
                        firstRange.Start = leaveRequestEvent.StartTime;

                        P_L5DWS_GDWSWDFT_0946 dailyScheduleDetailsPar = new P_L5DWS_GDWSWDFT_0946();
                        dailyScheduleDetailsPar.WorkSheduleDate = dailySchedule.WorkSheduleDate.AddDays(-1).Date;
                        var schedule = cls_Get_DailyWorkSchedules_WithDetails_For_Date.Invoke(Connection, Transaction, dailyScheduleDetailsPar, securityTicket).Result.FirstOrDefault(i => i.Employee_RefID == dailySchedule.Employee_RefID);
                        if (schedule != null && schedule.Details.Any(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID))
                        {
                            firstRange.End = schedule.Details.FirstOrDefault(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID).ToTime_as_DateTime;
                        }
                        else
                        {
                            firstRange = null;
                        }
                        P_L5DWS_GDWSWDFT_0946 dailyScheduleDetailsParSecond = new P_L5DWS_GDWSWDFT_0946();
                        dailyScheduleDetailsParSecond.WorkSheduleDate = dailySchedule.WorkSheduleDate.AddDays(1).Date;
                        var scheduleSecond = cls_Get_DailyWorkSchedules_WithDetails_For_Date.Invoke(Connection, Transaction, dailyScheduleDetailsParSecond, securityTicket).Result.FirstOrDefault(i => i.Employee_RefID == dailySchedule.Employee_RefID);
                        secondRange = new DateTimeRange();

                        if (scheduleSecond != null && scheduleSecond.Details.Any(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID))
                        {
                            secondRange.End   = leaveRequestEvent.EndTime;
                            secondRange.Start = scheduleSecond.Details.FirstOrDefault(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID).FromTime_as_DateTime;
                        }
                        else
                        {
                            secondRange = null;
                        }
                    }

                    #region cancelLeaveRequest

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

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

                    approvalItem.Save(Connection, Transaction);


                    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;

                        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);
                    }
                    leaveRequest.Save(Connection, Transaction);

                    Guid absenceReasonID = leaveRequest.CMN_BPT_STA_AbsenceReason_RefID;

                    #endregion


                    #region FirstRange

                    var authRequired = true;

                    var absenceReasons = cls_get_Active_AbsenceReason_For_TenantID.Invoke(Connection, Transaction, securityTicket).Result;
                    if (absenceReasons != null)
                    {
                        if (absenceReasons.Any(r => r.CMN_BPT_STA_AbsenceReasonID == absenceReasonID))
                        {
                            var reason = absenceReasons.FirstOrDefault(r => r.CMN_BPT_STA_AbsenceReasonID == absenceReasonID);
                            if (reason != null)
                            {
                                authRequired = reason.IsAuthorizationRequired;
                            }
                        }
                    }

                    if (firstRange != null)
                    {
                        leaveRequestEvent = new ORM_CMN_CAL_Event();
                        leaveRequestEvent.CMN_CAL_EventID          = Guid.NewGuid();
                        leaveRequestEvent.StartTime                = firstRange.Start;
                        leaveRequestEvent.EndTime                  = firstRange.End;
                        leaveRequestEvent.R_EventDuration_sec      = (int)firstRange.End.Subtract(firstRange.Start).TotalSeconds;
                        leaveRequestEvent.IsRepetitive             = false;
                        leaveRequestEvent.IsWholeDayEvent          = false;
                        leaveRequestEvent.IsCalendarEvent_Editable = true;
                        leaveRequestEvent.Tenant_RefID             = securityTicket.TenantID;
                        leaveRequestEvent.Save(Connection, Transaction);

                        approvalItem = new ORM_CMN_CAL_Event_Approval();
                        approvalItem.CMN_CAL_Event_ApprovalID = Guid.NewGuid();
                        approvalItem.Event_RefID             = leaveRequestEvent.CMN_CAL_EventID;
                        approvalItem.IsApprovalProcessDenied = false;
                        approvalItem.IsApprovalProcessOpened = false;
                        if (settings.NumberOfResponsiblePersonsRequiredToApprove == 0 || !authRequired)
                        {
                            approvalItem.IsApproved = true;
                            approvalItem.IsApprovalProcessOpened = false;
                        }
                        else
                        {
                            approvalItem.IsApproved = false;
                            approvalItem.IsApprovalProcessOpened = true;
                        }
                        approvalItem.IsApprovalProcessCanceledByUser = false;
                        approvalItem.IsDeleted          = false;
                        approvalItem.Creation_Timestamp = DateTime.Now;
                        approvalItem.Tenant_RefID       = securityTicket.TenantID;
                        approvalItem.Save(Connection, Transaction);



                        leaveRequest = new ORM_CMN_BPT_EMP_Employee_LeaveRequest();
                        leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID = Guid.NewGuid();
                        leaveRequest.CMN_BPT_STA_AbsenceReason_RefID     = absenceReasonID;
                        leaveRequest.CMN_CAL_Event_Approval_RefID        = approvalItem.CMN_CAL_Event_ApprovalID;
                        leaveRequest.CMN_CAL_Event_RefID         = leaveRequestEvent.CMN_CAL_EventID;
                        leaveRequest.IsDeleted                   = false;
                        leaveRequest.RequestedFor_Employee_RefID = dailySchedule.Employee_RefID;
                        leaveRequest.Tenant_RefID                = securityTicket.TenantID;
                        leaveRequest.Creation_Timestamp          = DateTime.Now;
                        leaveRequest.LeaveRequestCreationSource  = "plannico.time";
                        leaveRequest.Save(Connection, Transaction);


                        P_L5DWS_GDWSWDFP_1225 par = new P_L5DWS_GDWSWDFP_1225();
                        par.StartDate = firstRange.Start;
                        par.EndDate   = firstRange.End;
                        var schedulesWithDetails = cls_Get_DailyWorkSchedules_WithDetails_For_Period.Invoke(Connection, Transaction, par, securityTicket).Result.DailyWorkSchedulesWithDetails;

                        foreach (var schedule in schedulesWithDetails)
                        {
                            if (schedule.Details.Any(i => i.LeaveRequest_RefID == oldLeaveRequestID))
                            {
                                foreach (var detailItem in schedule.Details.Where(i => i.LeaveRequest_RefID == oldLeaveRequestID).ToArray())
                                {
                                    ORM_CMN_STR_PPS_DailyWorkSchedule_Detail detail = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail();
                                    detail.Load(Connection, Transaction, detailItem.CMN_STR_PPS_DailyWorkSchedule_DetailID);
                                    detail.CMN_BPT_EMP_Employee_LeaveRequest_RefID = leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID;
                                    detail.Save(Connection, Transaction);
                                }
                            }
                        }
                    }
                    #endregion

                    #region secondRange
                    if (secondRange != null)
                    {
                        leaveRequestEvent = new ORM_CMN_CAL_Event();
                        leaveRequestEvent.CMN_CAL_EventID          = Guid.NewGuid();
                        leaveRequestEvent.StartTime                = secondRange.Start;
                        leaveRequestEvent.EndTime                  = secondRange.End;
                        leaveRequestEvent.R_EventDuration_sec      = (int)secondRange.End.Subtract(secondRange.Start).TotalSeconds;
                        leaveRequestEvent.IsRepetitive             = false;
                        leaveRequestEvent.IsWholeDayEvent          = false;
                        leaveRequestEvent.IsCalendarEvent_Editable = true;
                        leaveRequestEvent.Tenant_RefID             = securityTicket.TenantID;
                        leaveRequestEvent.Save(Connection, Transaction);

                        approvalItem = new ORM_CMN_CAL_Event_Approval();
                        approvalItem.CMN_CAL_Event_ApprovalID = Guid.NewGuid();
                        approvalItem.Event_RefID             = leaveRequestEvent.CMN_CAL_EventID;
                        approvalItem.IsApprovalProcessDenied = false;
                        approvalItem.IsApprovalProcessOpened = false;
                        if (settings.NumberOfResponsiblePersonsRequiredToApprove == 0 || !authRequired)
                        {
                            approvalItem.IsApproved = true;
                            approvalItem.IsApprovalProcessOpened = false;
                        }
                        else
                        {
                            approvalItem.IsApprovalProcessOpened = true;
                            approvalItem.IsApproved = false;
                        }
                        approvalItem.IsApprovalProcessCanceledByUser = false;
                        approvalItem.IsDeleted          = false;
                        approvalItem.Creation_Timestamp = DateTime.Now;
                        approvalItem.Tenant_RefID       = securityTicket.TenantID;
                        approvalItem.Save(Connection, Transaction);



                        leaveRequest = new ORM_CMN_BPT_EMP_Employee_LeaveRequest();
                        leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID = Guid.NewGuid();
                        leaveRequest.CMN_BPT_STA_AbsenceReason_RefID     = absenceReasonID;
                        leaveRequest.CMN_CAL_Event_Approval_RefID        = approvalItem.CMN_CAL_Event_ApprovalID;
                        leaveRequest.CMN_CAL_Event_RefID         = leaveRequestEvent.CMN_CAL_EventID;
                        leaveRequest.IsDeleted                   = false;
                        leaveRequest.RequestedFor_Employee_RefID = dailySchedule.Employee_RefID;
                        leaveRequest.Tenant_RefID                = securityTicket.TenantID;
                        leaveRequest.Creation_Timestamp          = DateTime.Now;
                        leaveRequest.LeaveRequestCreationSource  = "plannico.time";
                        leaveRequest.Save(Connection, Transaction);

                        P_L5DWS_GDWSWDFP_1225 par = new P_L5DWS_GDWSWDFP_1225();
                        par.StartDate = secondRange.Start;
                        par.EndDate   = secondRange.End;
                        var schedulesWithDetails = cls_Get_DailyWorkSchedules_WithDetails_For_Period.Invoke(Connection, Transaction, par, securityTicket).Result.DailyWorkSchedulesWithDetails;

                        foreach (var schedule in schedulesWithDetails)
                        {
                            if (schedule.Details.Any(i => i.LeaveRequest_RefID == oldLeaveRequestID))
                            {
                                foreach (var detailItem in schedule.Details.Where(i => i.LeaveRequest_RefID == oldLeaveRequestID).ToArray())
                                {
                                    ORM_CMN_STR_PPS_DailyWorkSchedule_Detail detail = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail();
                                    detail.Load(Connection, Transaction, detailItem.CMN_STR_PPS_DailyWorkSchedule_DetailID);
                                    detail.CMN_BPT_EMP_Employee_LeaveRequest_RefID = leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID;
                                    detail.Save(Connection, Transaction);
                                }
                            }
                        }
                    }

                    #endregion

                    #region thirdRange
                    if (thirdRange != null)
                    {
                        leaveRequestEvent = new ORM_CMN_CAL_Event();
                        leaveRequestEvent.CMN_CAL_EventID          = Guid.NewGuid();
                        leaveRequestEvent.StartTime                = thirdRange.Start;
                        leaveRequestEvent.EndTime                  = thirdRange.End;
                        leaveRequestEvent.R_EventDuration_sec      = (int)thirdRange.End.Subtract(thirdRange.Start).TotalSeconds;
                        leaveRequestEvent.IsRepetitive             = false;
                        leaveRequestEvent.IsWholeDayEvent          = false;
                        leaveRequestEvent.IsCalendarEvent_Editable = true;
                        leaveRequestEvent.Tenant_RefID             = securityTicket.TenantID;
                        leaveRequestEvent.Save(Connection, Transaction);

                        approvalItem = new ORM_CMN_CAL_Event_Approval();
                        approvalItem.CMN_CAL_Event_ApprovalID = Guid.NewGuid();
                        approvalItem.Event_RefID             = leaveRequestEvent.CMN_CAL_EventID;
                        approvalItem.IsApprovalProcessDenied = false;
                        approvalItem.IsApprovalProcessOpened = false;
                        if (settings.NumberOfResponsiblePersonsRequiredToApprove == 0 || !authRequired)
                        {
                            approvalItem.IsApprovalProcessOpened = false;
                            approvalItem.IsApproved = true;
                        }
                        else
                        {
                            approvalItem.IsApprovalProcessOpened = true;
                            approvalItem.IsApproved = false;
                        }
                        approvalItem.IsApprovalProcessCanceledByUser = false;
                        approvalItem.IsDeleted          = false;
                        approvalItem.Creation_Timestamp = DateTime.Now;
                        approvalItem.Tenant_RefID       = securityTicket.TenantID;
                        approvalItem.Save(Connection, Transaction);



                        leaveRequest = new ORM_CMN_BPT_EMP_Employee_LeaveRequest();
                        leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID = Guid.NewGuid();
                        leaveRequest.CMN_BPT_STA_AbsenceReason_RefID     = absenceReasonID;
                        leaveRequest.CMN_CAL_Event_Approval_RefID        = approvalItem.CMN_CAL_Event_ApprovalID;
                        leaveRequest.CMN_CAL_Event_RefID         = leaveRequestEvent.CMN_CAL_EventID;
                        leaveRequest.IsDeleted                   = false;
                        leaveRequest.RequestedFor_Employee_RefID = dailySchedule.Employee_RefID;
                        leaveRequest.Tenant_RefID                = securityTicket.TenantID;
                        leaveRequest.Creation_Timestamp          = DateTime.Now;
                        leaveRequest.LeaveRequestCreationSource  = "plannico.time";
                        leaveRequest.Save(Connection, Transaction);


                        P_L5DWS_GDWSWDFP_1225 par = new P_L5DWS_GDWSWDFP_1225();
                        par.StartDate = thirdRange.Start;
                        par.EndDate   = thirdRange.End;
                        var schedulesWithDetails = cls_Get_DailyWorkSchedules_WithDetails_For_Period.Invoke(Connection, Transaction, par, securityTicket).Result.DailyWorkSchedulesWithDetails;

                        foreach (var schedule in schedulesWithDetails)
                        {
                            if (schedule.Details.Any(i => i.LeaveRequest_RefID == oldLeaveRequestID))
                            {
                                foreach (var detailItem in schedule.Details.Where(i => i.LeaveRequest_RefID == oldLeaveRequestID).ToArray())
                                {
                                    ORM_CMN_STR_PPS_DailyWorkSchedule_Detail detail = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail();
                                    detail.Load(Connection, Transaction, detailItem.CMN_STR_PPS_DailyWorkSchedule_DetailID);
                                    detail.CMN_BPT_EMP_Employee_LeaveRequest_RefID = leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID;
                                    detail.Save(Connection, Transaction);
                                }
                            }
                        }
                    }

                    #endregion
                }
                else
                {
                    leaveRequestEvent.Remove(Connection, Transaction);
                    leaveRequest.Remove(Connection, Transaction);

                    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;

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

            P_L5DWS_DDWSDFIDL_1014 param = new P_L5DWS_DDWSDFIDL_1014();
            param.DailyWorkSchedule_DetailID = Parameter.DailyWorkSchedule_DetailID;
            cls_Delete_Employee_DailyWorkSchedule_Detail.Invoke(Connection, Transaction, param, securityTicket);

            //Put your code here
            return(returnValue);

            #endregion UserCode
        }
Пример #7
0
        protected static FR_L6DE_SDaTT_1355 Execute(DbConnection Connection, DbTransaction Transaction, P_L6DE_SDaTT_1355 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L6DE_SDaTT_1355();

            returnValue.Result          = new L6DE_SDaTT_1355();
            returnValue.Result.BaseData = new L5MHC_SDIwDC_1040();

            Parameter.BaseData.UpdateSlots = Parameter.UpdateSlots;

            var prevOfficeID = Guid.Empty;
            if (Parameter.BaseData.BaseData.PPS_DEV_Device_InstanceID != Guid.Empty)
            {
                ORM_PPS_DEV_Device_Instance_OfficeLocation location = ORM_PPS_DEV_Device_Instance_OfficeLocation.Query.Search(Connection, Transaction, new ORM_PPS_DEV_Device_Instance_OfficeLocation.Query()
                {
                    IsDeleted            = false,
                    Tenant_RefID         = securityTicket.TenantID,
                    DeviceInstance_RefID = Parameter.BaseData.BaseData.PPS_DEV_Device_InstanceID
                }).SingleOrDefault();
                if (location != null)
                {
                    prevOfficeID = location.CMN_STR_Office_RefID;
                }
            }


            var instanceID = cls_Save_DeviceInstance_withDeleteCheck.Invoke(Connection, Transaction, Parameter.BaseData, securityTicket).Result;
            if (Parameter.BaseData.BaseData.IsDelete)
            {
                returnValue.Result.BaseData = instanceID;
            }
            else
            {
                if (Parameter.AvailabilityDate != null)
                {
                    foreach (var timeItem in Parameter.AvailabilityDate)
                    {
                        var availabilityType = ORM_CMN_CAL_AVA_Availability_Type.Query.Search(Connection, Transaction, new ORM_CMN_CAL_AVA_Availability_Type.Query()
                        {
                            Tenant_RefID             = securityTicket.TenantID,
                            IsDeleted                = false,
                            GlobalPropertyMatchingID = timeItem.Type
                        }).First();

                        #region Delete
                        if (timeItem.IsDeleted)
                        {
                            ORM_PPS_DEV_Device_Instance_Availability.Query.SoftDelete(Connection, Transaction, new ORM_PPS_DEV_Device_Instance_Availability.Query()
                            {
                                Tenant_RefID = securityTicket.TenantID,
                                IsDeleted    = false,
                                CMN_CAL_AVA_Availability_RefID = timeItem.AvailabilityID,
                            });
                        }
                        #endregion
                        else
                        {
                            var assignment = ORM_PPS_DEV_Device_Instance_Availability.Query.Search(Connection, Transaction, new ORM_PPS_DEV_Device_Instance_Availability.Query()
                            {
                                Tenant_RefID = securityTicket.TenantID,
                                IsDeleted    = false,
                                CMN_CAL_AVA_Availability_RefID = timeItem.AvailabilityID,
                                DeviceInstance_RefID           = instanceID.ID
                            }).SingleOrDefault();

                            #region Save
                            if (assignment == null)
                            {
                                assignment = new ORM_PPS_DEV_Device_Instance_Availability();
                                assignment.PPS_DEV_Device_Instance_AvailabilityID = Guid.NewGuid();
                                assignment.CMN_CAL_AVA_Availability_RefID         = timeItem.AvailabilityID;
                                assignment.DeviceInstance_RefID = instanceID.ID;
                                assignment.Tenant_RefID         = securityTicket.TenantID;
                                assignment.Creation_Timestamp   = DateTime.Now;
                                assignment.Save(Connection, Transaction);


                                var availability = new ORM_CMN_CAL_AVA_Availability();
                                availability.CMN_CAL_AVA_AvailabilityID = assignment.CMN_CAL_AVA_Availability_RefID;
                                availability.Tenant_RefID                = securityTicket.TenantID;
                                availability.Creation_Timestamp          = DateTime.Now;
                                availability.AvailabilityType_RefID      = availabilityType.CMN_CAL_AVA_Availability_TypeID;
                                availability.IsAvailabilityExclusionItem = timeItem.IsException;
                                availability.Save(Connection, Transaction);

                                Guid EventId = Guid.NewGuid();

                                var date = new ORM_CMN_CAL_AVA_Date();
                                date.CMN_CAL_AVA_DateID  = Guid.NewGuid();
                                date.Availability_RefID  = availability.CMN_CAL_AVA_AvailabilityID;
                                date.CMN_CAL_Event_RefID = EventId;
                                date.DateName            = timeItem.AvailabilityDate_Name;
                                date.DateComment         = timeItem.Reason;
                                date.Tenant_RefID        = securityTicket.TenantID;
                                date.Creation_Timestamp  = DateTime.Now;
                                date.Save(Connection, Transaction);

                                var events = new ORM_CMN_CAL_Event();
                                events.CMN_CAL_EventID    = EventId;
                                events.IsRepetitive       = timeItem.IsRepetitive;
                                events.StartTime          = timeItem.AvailabilityDate_From;
                                events.EndTime            = timeItem.AvailabilityDate_To;
                                events.Tenant_RefID       = securityTicket.TenantID;
                                events.Creation_Timestamp = DateTime.Now;
                                events.Repetition_RefID   = Guid.NewGuid();
                                events.Save(Connection, Transaction);

                                if (timeItem.IsRepetitive)
                                {
                                    events.Repetition_RefID = Guid.NewGuid();

                                    var repetitions = new ORM_CMN_CAL_Repetition();
                                    repetitions.CMN_CAL_RepetitionID = events.Repetition_RefID;
                                    repetitions.IsMonthly            = timeItem.IsMontly;
                                    repetitions.IsWeekly             = timeItem.IsWeekly;
                                    repetitions.IsDaily            = timeItem.IsDaily;
                                    repetitions.IsYearly           = timeItem.IsYearly;
                                    repetitions.Tenant_RefID       = securityTicket.TenantID;
                                    repetitions.Creation_Timestamp = DateTime.Now;
                                    repetitions.Save(Connection, Transaction);

                                    if (timeItem.IsWeekly)
                                    {
                                        var repetitionWeekly = new ORM_CMN_CAL_RepetitionPatterns_Weekly();
                                        repetitionWeekly.CMN_CAL_RepetitionPattern_WeeklyID = Guid.NewGuid();
                                        repetitionWeekly.Repetition_RefID          = repetitions.CMN_CAL_RepetitionID;
                                        repetitionWeekly.Tenant_RefID              = securityTicket.TenantID;
                                        repetitionWeekly.Creation_Timestamp        = DateTime.Now;
                                        repetitionWeekly.HasRepeatingOn_Fridays    = timeItem.HasRepeatingOn_Fridays;
                                        repetitionWeekly.HasRepeatingOn_Mondays    = timeItem.HasRepeatingOn_Mondays;
                                        repetitionWeekly.HasRepeatingOn_Saturdays  = timeItem.HasRepeatingOn_Saturdays;
                                        repetitionWeekly.HasRepeatingOn_Sundays    = timeItem.HasRepeatingOn_Sundays;
                                        repetitionWeekly.HasRepeatingOn_Thursdays  = timeItem.HasRepeatingOn_Thursdays;
                                        repetitionWeekly.HasRepeatingOn_Tuesdays   = timeItem.HasRepeatingOn_Tuesdays;
                                        repetitionWeekly.HasRepeatingOn_Wednesdays = timeItem.HasRepeatingOn_Wednesdays;
                                        repetitionWeekly.Save(Connection, Transaction);
                                    }

                                    if (timeItem.IsMontly)
                                    {
                                        var repetitionMontly = new ORM_CMN_CAL_RepetitionPatterns_Monthly();
                                        repetitionMontly.CMN_CAL_RepetitionPattern_MonthlyID = Guid.NewGuid();
                                        repetitionMontly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                        repetitionMontly.Tenant_RefID       = securityTicket.TenantID;
                                        repetitionMontly.Creation_Timestamp = DateTime.Now;
                                        repetitionMontly.Save(Connection, Transaction);
                                    }

                                    if (timeItem.IsDaily)
                                    {
                                        var repetitionDaily = new ORM_CMN_CAL_RepetitionPatterns_Daily();
                                        repetitionDaily.CMN_CAL_RepetitionPattern_DailyID = Guid.NewGuid();
                                        repetitionDaily.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                        repetitionDaily.Tenant_RefID       = securityTicket.TenantID;
                                        repetitionDaily.Creation_Timestamp = DateTime.Now;
                                        repetitionDaily.Save(Connection, Transaction);
                                    }

                                    if (timeItem.IsYearly)
                                    {
                                        var repetitionYearly = new ORM_CMN_CAL_RepetitionPatterns_Yearly();
                                        repetitionYearly.CMN_CAL_RepetitionPattern_YearlyID = Guid.NewGuid();
                                        repetitionYearly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                        repetitionYearly.Tenant_RefID       = securityTicket.TenantID;
                                        repetitionYearly.Creation_Timestamp = DateTime.Now;
                                        repetitionYearly.Save(Connection, Transaction);
                                    }
                                }
                                events.Save(Connection, Transaction);
                            }
                            #endregion

                            #region Edit
                            else
                            {
                                var date = ORM_CMN_CAL_AVA_Date.Query.Search(Connection, Transaction, new ORM_CMN_CAL_AVA_Date.Query()
                                {
                                    Availability_RefID = assignment.CMN_CAL_AVA_Availability_RefID,
                                    IsDeleted          = false,
                                    Tenant_RefID       = securityTicket.TenantID
                                }).Single();

                                date.DateName    = timeItem.AvailabilityDate_Name;
                                date.DateComment = timeItem.Reason;
                                date.Save(Connection, Transaction);

                                var Events = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, new ORM_CMN_CAL_Event.Query()
                                {
                                    CMN_CAL_EventID = date.CMN_CAL_Event_RefID,
                                    Tenant_RefID    = securityTicket.TenantID,
                                    IsDeleted       = false
                                }).Single();

                                Events.IsRepetitive    = timeItem.IsRepetitive;
                                Events.IsWholeDayEvent = timeItem.IsWholeDay;
                                Events.StartTime       = timeItem.AvailabilityDate_From;
                                Events.EndTime         = timeItem.AvailabilityDate_To;

                                var repetitions = ORM_CMN_CAL_Repetition.Query.Search(Connection, Transaction, new ORM_CMN_CAL_Repetition.Query()
                                {
                                    CMN_CAL_RepetitionID = Events.Repetition_RefID,
                                    Tenant_RefID         = securityTicket.TenantID,
                                    IsDeleted            = false
                                }).SingleOrDefault();

                                if (repetitions != null)
                                {
                                    repetitions.IsDeleted = true;
                                    repetitions.Save(Connection, Transaction);

                                    if (repetitions.IsWeekly)
                                    {
                                        ORM_CMN_CAL_RepetitionPatterns_Weekly.Query.SoftDelete(Connection, Transaction, new ORM_CMN_CAL_RepetitionPatterns_Weekly.Query()
                                        {
                                            IsDeleted        = false,
                                            Tenant_RefID     = securityTicket.TenantID,
                                            Repetition_RefID = repetitions.CMN_CAL_RepetitionID,
                                        });
                                    }

                                    if (repetitions.IsMonthly)
                                    {
                                        ORM_CMN_CAL_RepetitionPatterns_Monthly.Query.SoftDelete(Connection, Transaction, new ORM_CMN_CAL_RepetitionPatterns_Monthly.Query()
                                        {
                                            Repetition_RefID = repetitions.CMN_CAL_RepetitionID,
                                            Tenant_RefID     = securityTicket.TenantID,
                                            IsDeleted        = false
                                        });
                                    }

                                    if (repetitions.IsDaily)
                                    {
                                        ORM_CMN_CAL_RepetitionPatterns_Daily.Query.SoftDelete(Connection, Transaction, new ORM_CMN_CAL_RepetitionPatterns_Daily.Query()
                                        {
                                            Repetition_RefID = repetitions.CMN_CAL_RepetitionID,
                                            IsDeleted        = false,
                                            Tenant_RefID     = securityTicket.TenantID
                                        });
                                    }

                                    if (repetitions.IsYearly)
                                    {
                                        ORM_CMN_CAL_RepetitionPatterns_Yearly.Query.SoftDelete(Connection, Transaction, new ORM_CMN_CAL_RepetitionPatterns_Yearly.Query()
                                        {
                                            Tenant_RefID     = securityTicket.TenantID,
                                            IsDeleted        = false,
                                            Repetition_RefID = repetitions.CMN_CAL_RepetitionID
                                        });
                                    }
                                }

                                if (timeItem.IsRepetitive)
                                {
                                    Events.Repetition_RefID          = Guid.NewGuid();
                                    repetitions                      = new ORM_CMN_CAL_Repetition();
                                    repetitions.CMN_CAL_RepetitionID = Events.Repetition_RefID;
                                    repetitions.IsMonthly            = timeItem.IsMontly;
                                    repetitions.IsWeekly             = timeItem.IsWeekly;
                                    repetitions.IsDaily              = timeItem.IsDaily;
                                    repetitions.IsYearly             = timeItem.IsYearly;
                                    repetitions.Tenant_RefID         = securityTicket.TenantID;
                                    repetitions.Creation_Timestamp   = DateTime.Now;
                                    repetitions.Save(Connection, Transaction);

                                    if (timeItem.IsWeekly)
                                    {
                                        var repetitionWeekly = new ORM_CMN_CAL_RepetitionPatterns_Weekly();
                                        repetitionWeekly.CMN_CAL_RepetitionPattern_WeeklyID = Guid.NewGuid();
                                        repetitionWeekly.HasRepeatingOn_Fridays             = timeItem.HasRepeatingOn_Fridays;
                                        repetitionWeekly.HasRepeatingOn_Mondays             = timeItem.HasRepeatingOn_Mondays;
                                        repetitionWeekly.HasRepeatingOn_Saturdays           = timeItem.HasRepeatingOn_Saturdays;
                                        repetitionWeekly.HasRepeatingOn_Sundays             = timeItem.HasRepeatingOn_Sundays;
                                        repetitionWeekly.HasRepeatingOn_Thursdays           = timeItem.HasRepeatingOn_Thursdays;
                                        repetitionWeekly.HasRepeatingOn_Tuesdays            = timeItem.HasRepeatingOn_Tuesdays;
                                        repetitionWeekly.HasRepeatingOn_Wednesdays          = timeItem.HasRepeatingOn_Wednesdays;
                                        repetitionWeekly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                        repetitionWeekly.Tenant_RefID       = securityTicket.TenantID;
                                        repetitionWeekly.Creation_Timestamp = DateTime.Now;
                                        repetitionWeekly.Save(Connection, Transaction);
                                    }

                                    if (timeItem.IsMontly)
                                    {
                                        var repetitionMontly = new ORM_CMN_CAL_RepetitionPatterns_Monthly();
                                        repetitionMontly.CMN_CAL_RepetitionPattern_MonthlyID = Guid.NewGuid();
                                        repetitionMontly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                        repetitionMontly.Tenant_RefID       = securityTicket.TenantID;
                                        repetitionMontly.Creation_Timestamp = DateTime.Now;
                                        repetitionMontly.Save(Connection, Transaction);
                                    }

                                    if (timeItem.IsDaily)
                                    {
                                        var repetitionDaily = new ORM_CMN_CAL_RepetitionPatterns_Daily();
                                        repetitionDaily.CMN_CAL_RepetitionPattern_DailyID = Guid.NewGuid();
                                        repetitionDaily.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                        repetitionDaily.Tenant_RefID       = securityTicket.TenantID;
                                        repetitionDaily.Creation_Timestamp = DateTime.Now;
                                        repetitionDaily.Save(Connection, Transaction);
                                    }

                                    if (timeItem.IsYearly)
                                    {
                                        var repetitionYearly = new ORM_CMN_CAL_RepetitionPatterns_Yearly();
                                        repetitionYearly.CMN_CAL_RepetitionPattern_YearlyID = Guid.NewGuid();
                                        repetitionYearly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                        repetitionYearly.Tenant_RefID       = securityTicket.TenantID;
                                        repetitionYearly.Creation_Timestamp = DateTime.Now;
                                        repetitionYearly.Save(Connection, Transaction);
                                    }
                                }

                                Events.Save(Connection, Transaction);
                            }
                            #endregion
                        }
                    }
                    returnValue.Result.BaseData = instanceID;
                }
            }
            if (Parameter.UpdateSlots)
            {
                if (!Parameter.BaseData.BaseData.IsDelete)
                {
                    cls_CreateUpdate_Slots_for_Practice.Invoke(Connection, Transaction, new P_L5S_SUSfP_1708()
                    {
                        PracticeID = Parameter.BaseData.BaseData.OfficeID
                    }, securityTicket);
                    if (prevOfficeID != Guid.Empty && prevOfficeID != Parameter.BaseData.BaseData.OfficeID)
                    {
                        cls_CreateUpdate_Slots_for_Practice.Invoke(Connection, Transaction, new P_L5S_SUSfP_1708()
                        {
                            PracticeID = prevOfficeID
                        }, securityTicket);
                    }
                }
                else
                {
                    if (prevOfficeID != Guid.Empty)
                    {
                        cls_CreateUpdate_Slots_for_Practice.Invoke(Connection, Transaction, new P_L5S_SUSfP_1708()
                        {
                            PracticeID = prevOfficeID
                        }, securityTicket);
                    }
                }
            }


            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
        }
Пример #9
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L3PR_SP_1520 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();
            //Put your code here

            #region Save
            if (Parameter.CMN_CAL_EVT_PresentationID == Guid.Empty)
            {
                ORM_CMN_CAL_Event presentationEvent = new ORM_CMN_CAL_Event();
                presentationEvent.CMN_CAL_EventID = Guid.NewGuid();
                presentationEvent.StartTime       = Parameter.PresentationDate;
                presentationEvent.Tenant_RefID    = securityTicket.TenantID;
                presentationEvent.IsDeleted       = false;
                presentationEvent.Save(Connection, Transaction);

                ORM_CMN_CAL_EVT_Presentation presentation = new ORM_CMN_CAL_EVT_Presentation();
                presentation.CMN_CAL_EVT_PresentationID  = Guid.NewGuid();
                presentation.Ext_CMN_CAL_Calendar_RefID  = presentationEvent.CMN_CAL_EventID;
                presentation.MaximumNumberOfParticipants = Parameter.MaximumNumberOfParticipants;
                presentation.PresentationLocation        = Parameter.PresentationLocation;
                presentation.PresentationTitle           = Parameter.PresentationTitle;
                presentation.PresentationDescription     = Parameter.PresentationDescription;
                presentation.IsFeaturedEvent             = Parameter.IsFeaturedEvent;
                presentation.Tenant_RefID = securityTicket.TenantID;
                presentation.IsDeleted    = false;
                presentation.Save(Connection, Transaction);

                ORM_CMN_CAL_EVT_Presenter presenter = new ORM_CMN_CAL_EVT_Presenter();
                presenter.CMN_CAL_EVT_PresenterID = Guid.NewGuid();
                presenter.Presentation_RefID      = presentation.CMN_CAL_EVT_PresentationID;
                presenter.PresenterDisplayName    = Parameter.PresenterDisplayName;
                presenter.Tenant_RefID            = securityTicket.TenantID;
                presenter.IsDeleted = false;
                presenter.Save(Connection, Transaction);

                returnValue.Result = presentation.CMN_CAL_EVT_PresentationID;
            }
            #endregion
            else
            {
                var existingPresentation = ORM_CMN_CAL_EVT_Presentation.Query.Search(Connection, Transaction, new ORM_CMN_CAL_EVT_Presentation.Query
                {
                    CMN_CAL_EVT_PresentationID = Parameter.CMN_CAL_EVT_PresentationID,
                    IsDeleted    = false,
                    Tenant_RefID = securityTicket.TenantID
                }).Single();
                var existingEventDate = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, new ORM_CMN_CAL_Event.Query
                {
                    CMN_CAL_EventID = existingPresentation.Ext_CMN_CAL_Calendar_RefID,
                    IsDeleted       = false,
                    Tenant_RefID    = securityTicket.TenantID
                }).Single();
                var existingPresenter = ORM_CMN_CAL_EVT_Presenter.Query.Search(Connection, Transaction, new ORM_CMN_CAL_EVT_Presenter.Query
                {
                    Presentation_RefID = existingPresentation.CMN_CAL_EVT_PresentationID,
                    IsDeleted          = false,
                    Tenant_RefID       = securityTicket.TenantID
                }).Single();
                #region Edit
                if (!Parameter.IsDeleted)
                {
                    existingPresentation.MaximumNumberOfParticipants = Parameter.MaximumNumberOfParticipants;
                    existingPresentation.PresentationLocation        = Parameter.PresentationLocation;
                    existingPresentation.PresentationTitle           = Parameter.PresentationTitle;
                    existingPresentation.PresentationDescription     = Parameter.PresentationDescription;
                    existingPresentation.IsFeaturedEvent             = Parameter.IsFeaturedEvent;

                    existingEventDate.StartTime            = Parameter.PresentationDate;
                    existingPresenter.PresenterDisplayName = Parameter.PresenterDisplayName;
                }
                #endregion
                #region Delete
                else
                {
                    existingPresentation.IsDeleted = true;
                    existingEventDate.IsDeleted    = true;
                    existingPresenter.IsDeleted    = true;
                }
                #endregion

                existingEventDate.Save(Connection, Transaction);
                existingPresenter.Save(Connection, Transaction);
                existingPresentation.Save(Connection, Transaction);
                returnValue.Result = existingPresentation.CMN_CAL_EVT_PresentationID;
            }
            return(returnValue);

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

            var instanceID = cls_Save_DeviceInstance.Invoke(Connection, Transaction, Parameter.BaseData, securityTicket).Result;

            if (Parameter.Availabilities != null)
            {
                foreach (var availability in Parameter.Availabilities)
                {
                    if (!availability.IsDelete)
                    {
                        ORM_PPS_DEV_Device_Instance_Availability assignemnt;
                        if (availability.CMN_CAL_AVA_AvailabilityID != Guid.Empty)
                        {
                            assignemnt = ORM_PPS_DEV_Device_Instance_Availability.Query.Search(Connection, Transaction, new ORM_PPS_DEV_Device_Instance_Availability.Query()
                            {
                                CMN_CAL_AVA_Availability_RefID = availability.CMN_CAL_AVA_AvailabilityID,
                                DeviceInstance_RefID           = instanceID,
                                IsDeleted    = false,
                                Tenant_RefID = securityTicket.TenantID
                            }).Single();
                        }
                        else
                        {
                            assignemnt = new ORM_PPS_DEV_Device_Instance_Availability();
                            assignemnt.PPS_DEV_Device_Instance_AvailabilityID = Guid.NewGuid();
                            assignemnt.DeviceInstance_RefID           = instanceID;
                            assignemnt.CMN_CAL_AVA_Availability_RefID = Guid.NewGuid();
                            assignemnt.Tenant_RefID = securityTicket.TenantID;
                            assignemnt.Save(Connection, Transaction);
                        }

                        ORM_CMN_CAL_AVA_Availability ORM_CMN_CAL_AVA_Availability = ORM_CMN_CAL_AVA_Availability.Query.Search(Connection, Transaction, new ORM_CMN_CAL_AVA_Availability.Query()
                        {
                            CMN_CAL_AVA_AvailabilityID = assignemnt.CMN_CAL_AVA_Availability_RefID,
                            IsDeleted    = false,
                            Tenant_RefID = securityTicket.TenantID
                        }).SingleOrDefault();

                        if (ORM_CMN_CAL_AVA_Availability == null)
                        {
                            ORM_CMN_CAL_AVA_Availability = new ORM_CMN_CAL_AVA_Availability();
                            ORM_CMN_CAL_AVA_Availability.CMN_CAL_AVA_AvailabilityID = assignemnt.CMN_CAL_AVA_Availability_RefID;
                            ORM_CMN_CAL_AVA_Availability.Tenant_RefID = securityTicket.TenantID;
                        }
                        ORM_CMN_CAL_AVA_Availability.Save(Connection, Transaction);

                        ORM_CMN_CAL_AVA_Date date = ORM_CMN_CAL_AVA_Date.Query.Search(Connection, Transaction, new ORM_CMN_CAL_AVA_Date.Query()
                        {
                            Availability_RefID = ORM_CMN_CAL_AVA_Availability.CMN_CAL_AVA_AvailabilityID,
                            IsDeleted          = false,
                            Tenant_RefID       = securityTicket.TenantID
                        }).SingleOrDefault();

                        if (date == null)
                        {
                            date = new ORM_CMN_CAL_AVA_Date();
                            date.CMN_CAL_AVA_DateID  = Guid.NewGuid();
                            date.Tenant_RefID        = securityTicket.TenantID;
                            date.Availability_RefID  = ORM_CMN_CAL_AVA_Availability.CMN_CAL_AVA_AvailabilityID;
                            date.CMN_CAL_Event_RefID = Guid.NewGuid();
                        }
                        date.DateName = availability.Name;
                        date.Save(Connection, Transaction);

                        ORM_CMN_CAL_Event eventItem = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, new ORM_CMN_CAL_Event.Query()
                        {
                            CMN_CAL_EventID = date.CMN_CAL_Event_RefID,
                            Tenant_RefID    = securityTicket.TenantID,
                            IsDeleted       = false
                        }).SingleOrDefault();

                        if (eventItem == null)
                        {
                            eventItem = new ORM_CMN_CAL_Event();
                            eventItem.CMN_CAL_EventID  = Guid.NewGuid();
                            eventItem.Tenant_RefID     = securityTicket.TenantID;
                            eventItem.IsRepetitive     = true;
                            eventItem.Repetition_RefID = Guid.NewGuid();
                        }
                        eventItem.IsWholeDayEvent = availability.IsWholeDay;
                        eventItem.StartTime       = availability.StartTime;
                        eventItem.EndTime         = availability.EndTime;
                        eventItem.Save(Connection, Transaction);

                        ORM_CMN_CAL_Repetition repetition = ORM_CMN_CAL_Repetition.Query.Search(Connection, Transaction, new ORM_CMN_CAL_Repetition.Query()
                        {
                            CMN_CAL_RepetitionID = eventItem.Repetition_RefID,
                            Tenant_RefID         = securityTicket.TenantID,
                            IsDeleted            = false
                        }).SingleOrDefault();

                        if (repetition == null)
                        {
                            repetition = new ORM_CMN_CAL_Repetition();
                            repetition.CMN_CAL_RepetitionID = Guid.NewGuid();
                            repetition.Tenant_RefID         = securityTicket.TenantID;
                            repetition.CMN_CAL_RepetitionID = eventItem.Repetition_RefID;
                            repetition.IsWeekly             = true;
                            repetition.Save(Connection, Transaction);
                        }

                        ORM_CMN_CAL_RepetitionPatterns_Weekly weekly = ORM_CMN_CAL_RepetitionPatterns_Weekly.Query.Search(Connection, Transaction, new ORM_CMN_CAL_RepetitionPatterns_Weekly.Query()
                        {
                            Repetition_RefID = repetition.CMN_CAL_RepetitionID,
                            Tenant_RefID     = securityTicket.TenantID,
                            IsDeleted        = false
                        }).SingleOrDefault();

                        if (repetition == null)
                        {
                            weekly = new ORM_CMN_CAL_RepetitionPatterns_Weekly();
                            weekly.CMN_CAL_RepetitionPattern_WeeklyID = Guid.NewGuid();
                            weekly.Repetition_RefID = repetition.CMN_CAL_RepetitionID;
                            weekly.Tenant_RefID     = securityTicket.TenantID;
                            weekly.Save(Connection, Transaction);
                        }
                    }
                    else
                    {
                        var assignemnt = ORM_PPS_DEV_Device_Instance_Availability.Query.Search(Connection, Transaction, new ORM_PPS_DEV_Device_Instance_Availability.Query()
                        {
                            CMN_CAL_AVA_Availability_RefID = availability.CMN_CAL_AVA_AvailabilityID,
                            DeviceInstance_RefID           = instanceID,
                            IsDeleted    = false,
                            Tenant_RefID = securityTicket.TenantID
                        }).Single();

                        ORM_CMN_CAL_AVA_Availability ORM_CMN_CAL_AVA_Availability = ORM_CMN_CAL_AVA_Availability.Query.Search(Connection, Transaction, new ORM_CMN_CAL_AVA_Availability.Query()
                        {
                            CMN_CAL_AVA_AvailabilityID = assignemnt.CMN_CAL_AVA_Availability_RefID,
                            IsDeleted    = false,
                            Tenant_RefID = securityTicket.TenantID
                        }).Single();

                        ORM_CMN_CAL_AVA_Date date = ORM_CMN_CAL_AVA_Date.Query.Search(Connection, Transaction, new ORM_CMN_CAL_AVA_Date.Query()
                        {
                            Availability_RefID = ORM_CMN_CAL_AVA_Availability.CMN_CAL_AVA_AvailabilityID,
                            IsDeleted          = false,
                            Tenant_RefID       = securityTicket.TenantID
                        }).Single();

                        ORM_CMN_CAL_Event eventItem = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, new ORM_CMN_CAL_Event.Query()
                        {
                            CMN_CAL_EventID = date.CMN_CAL_Event_RefID,
                            Tenant_RefID    = securityTicket.TenantID,
                            IsDeleted       = false
                        }).Single();

                        ORM_CMN_CAL_Repetition repetition = ORM_CMN_CAL_Repetition.Query.Search(Connection, Transaction, new ORM_CMN_CAL_Repetition.Query()
                        {
                            CMN_CAL_RepetitionID = eventItem.Repetition_RefID,
                            Tenant_RefID         = securityTicket.TenantID,
                            IsDeleted            = false
                        }).Single();

                        ORM_CMN_CAL_RepetitionPatterns_Weekly weekly = ORM_CMN_CAL_RepetitionPatterns_Weekly.Query.Search(Connection, Transaction, new ORM_CMN_CAL_RepetitionPatterns_Weekly.Query()
                        {
                            Repetition_RefID = repetition.CMN_CAL_RepetitionID,
                            Tenant_RefID     = securityTicket.TenantID,
                            IsDeleted        = false
                        }).Single();

                        assignemnt.IsDeleted = true;
                        assignemnt.Save(Connection, Transaction);
                        ORM_CMN_CAL_AVA_Availability.IsDeleted = true;
                        ORM_CMN_CAL_AVA_Availability.Save(Connection, Transaction);
                        date.IsDeleted = true;
                        date.Save(Connection, Transaction);
                        eventItem.IsDeleted = true;
                        eventItem.Save(Connection, Transaction);
                        repetition.IsDeleted = true;
                        repetition.Save(Connection, Transaction);
                        weekly.IsDeleted = true;
                        weekly.Save(Connection, Transaction);
                    }
                }
            }

            if (Parameter.Unavailabilities != null)
            {
                foreach (var unavailability in Parameter.Unavailabilities)
                {
                    if (!unavailability.IsDelete)
                    {
                        ORM_PPS_DEV_Device_Instance_Availability assignemnt;
                        if (unavailability.CMN_CAL_AVA_AvailabilityID != Guid.Empty)
                        {
                            assignemnt = ORM_PPS_DEV_Device_Instance_Availability.Query.Search(Connection, Transaction, new ORM_PPS_DEV_Device_Instance_Availability.Query()
                            {
                                CMN_CAL_AVA_Availability_RefID = unavailability.CMN_CAL_AVA_AvailabilityID,
                                DeviceInstance_RefID           = instanceID,
                                IsDeleted    = false,
                                Tenant_RefID = securityTicket.TenantID
                            }).Single();
                        }
                        else
                        {
                            assignemnt = new ORM_PPS_DEV_Device_Instance_Availability();
                            assignemnt.PPS_DEV_Device_Instance_AvailabilityID = Guid.NewGuid();
                            assignemnt.DeviceInstance_RefID           = instanceID;
                            assignemnt.CMN_CAL_AVA_Availability_RefID = Guid.NewGuid();
                            assignemnt.Tenant_RefID = securityTicket.TenantID;
                            assignemnt.Save(Connection, Transaction);
                        }

                        ORM_CMN_CAL_AVA_Availability ORM_CMN_CAL_AVA_Availability = ORM_CMN_CAL_AVA_Availability.Query.Search(Connection, Transaction, new ORM_CMN_CAL_AVA_Availability.Query()
                        {
                            CMN_CAL_AVA_AvailabilityID = assignemnt.CMN_CAL_AVA_Availability_RefID,
                            IsDeleted    = false,
                            Tenant_RefID = securityTicket.TenantID,
                            IsAvailabilityExclusionItem = true
                        }).SingleOrDefault();

                        if (ORM_CMN_CAL_AVA_Availability == null)
                        {
                            ORM_CMN_CAL_AVA_Availability = new ORM_CMN_CAL_AVA_Availability();
                            ORM_CMN_CAL_AVA_Availability.CMN_CAL_AVA_AvailabilityID = assignemnt.CMN_CAL_AVA_Availability_RefID;
                            ORM_CMN_CAL_AVA_Availability.Tenant_RefID = securityTicket.TenantID;
                            ORM_CMN_CAL_AVA_Availability.IsAvailabilityExclusionItem = true;
                        }
                        ORM_CMN_CAL_AVA_Availability.AvailabilityComment = unavailability.Reason;
                        ORM_CMN_CAL_AVA_Availability.Save(Connection, Transaction);

                        ORM_CMN_CAL_AVA_Date date = ORM_CMN_CAL_AVA_Date.Query.Search(Connection, Transaction, new ORM_CMN_CAL_AVA_Date.Query()
                        {
                            Availability_RefID = ORM_CMN_CAL_AVA_Availability.CMN_CAL_AVA_AvailabilityID,
                            IsDeleted          = false,
                            Tenant_RefID       = securityTicket.TenantID,
                        }).SingleOrDefault();

                        if (date == null)
                        {
                            date = new ORM_CMN_CAL_AVA_Date();
                            date.CMN_CAL_AVA_DateID  = Guid.NewGuid();
                            date.Tenant_RefID        = securityTicket.TenantID;
                            date.Availability_RefID  = ORM_CMN_CAL_AVA_Availability.CMN_CAL_AVA_AvailabilityID;
                            date.CMN_CAL_Event_RefID = Guid.NewGuid();
                            date.Save(Connection, Transaction);
                        }

                        ORM_CMN_CAL_Event eventItem = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, new ORM_CMN_CAL_Event.Query()
                        {
                            CMN_CAL_EventID = date.CMN_CAL_Event_RefID,
                            Tenant_RefID    = securityTicket.TenantID,
                            IsDeleted       = false
                        }).SingleOrDefault();

                        if (eventItem == null)
                        {
                            eventItem = new ORM_CMN_CAL_Event();
                            eventItem.CMN_CAL_EventID  = Guid.NewGuid();
                            eventItem.Tenant_RefID     = securityTicket.TenantID;
                            eventItem.IsRepetitive     = true;
                            eventItem.Repetition_RefID = Guid.NewGuid();
                        }
                        eventItem.IsWholeDayEvent = unavailability.IsWholeDay;
                        eventItem.StartTime       = unavailability.StartTime;
                        eventItem.EndTime         = unavailability.EndTime;
                        eventItem.Save(Connection, Transaction);

                        ORM_CMN_CAL_Repetition repetition = ORM_CMN_CAL_Repetition.Query.Search(Connection, Transaction, new ORM_CMN_CAL_Repetition.Query()
                        {
                            CMN_CAL_RepetitionID = eventItem.Repetition_RefID,
                            Tenant_RefID         = securityTicket.TenantID,
                            IsDeleted            = false
                        }).SingleOrDefault();

                        if (repetition == null)
                        {
                            repetition = new ORM_CMN_CAL_Repetition();
                            repetition.CMN_CAL_RepetitionID = Guid.NewGuid();
                            repetition.Tenant_RefID         = securityTicket.TenantID;
                            repetition.CMN_CAL_RepetitionID = eventItem.Repetition_RefID;
                            repetition.IsWeekly             = true;
                            repetition.Save(Connection, Transaction);
                        }

                        ORM_CMN_CAL_RepetitionPatterns_Weekly weekly = ORM_CMN_CAL_RepetitionPatterns_Weekly.Query.Search(Connection, Transaction, new ORM_CMN_CAL_RepetitionPatterns_Weekly.Query()
                        {
                            Repetition_RefID = repetition.CMN_CAL_RepetitionID,
                            Tenant_RefID     = securityTicket.TenantID,
                            IsDeleted        = false
                        }).SingleOrDefault();

                        if (repetition == null)
                        {
                            weekly = new ORM_CMN_CAL_RepetitionPatterns_Weekly();
                            weekly.CMN_CAL_RepetitionPattern_WeeklyID = Guid.NewGuid();
                            weekly.Repetition_RefID = repetition.CMN_CAL_RepetitionID;
                            weekly.Tenant_RefID     = securityTicket.TenantID;
                            weekly.Save(Connection, Transaction);
                        }
                    }
                    else
                    {
                        var assignemnt = ORM_PPS_DEV_Device_Instance_Availability.Query.Search(Connection, Transaction, new ORM_PPS_DEV_Device_Instance_Availability.Query()
                        {
                            CMN_CAL_AVA_Availability_RefID = unavailability.CMN_CAL_AVA_AvailabilityID,
                            DeviceInstance_RefID           = instanceID,
                            IsDeleted    = false,
                            Tenant_RefID = securityTicket.TenantID
                        }).Single();

                        ORM_CMN_CAL_AVA_Availability ORM_CMN_CAL_AVA_Availability = ORM_CMN_CAL_AVA_Availability.Query.Search(Connection, Transaction, new ORM_CMN_CAL_AVA_Availability.Query()
                        {
                            CMN_CAL_AVA_AvailabilityID = assignemnt.CMN_CAL_AVA_Availability_RefID,
                            IsDeleted    = false,
                            Tenant_RefID = securityTicket.TenantID
                        }).Single();

                        ORM_CMN_CAL_AVA_Date date = ORM_CMN_CAL_AVA_Date.Query.Search(Connection, Transaction, new ORM_CMN_CAL_AVA_Date.Query()
                        {
                            Availability_RefID = ORM_CMN_CAL_AVA_Availability.CMN_CAL_AVA_AvailabilityID,
                            IsDeleted          = false,
                            Tenant_RefID       = securityTicket.TenantID
                        }).Single();

                        ORM_CMN_CAL_Event eventItem = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, new ORM_CMN_CAL_Event.Query()
                        {
                            CMN_CAL_EventID = date.CMN_CAL_Event_RefID,
                            Tenant_RefID    = securityTicket.TenantID,
                            IsDeleted       = false
                        }).Single();

                        ORM_CMN_CAL_Repetition repetition = ORM_CMN_CAL_Repetition.Query.Search(Connection, Transaction, new ORM_CMN_CAL_Repetition.Query()
                        {
                            CMN_CAL_RepetitionID = eventItem.Repetition_RefID,
                            Tenant_RefID         = securityTicket.TenantID,
                            IsDeleted            = false
                        }).Single();

                        ORM_CMN_CAL_RepetitionPatterns_Weekly weekly = ORM_CMN_CAL_RepetitionPatterns_Weekly.Query.Search(Connection, Transaction, new ORM_CMN_CAL_RepetitionPatterns_Weekly.Query()
                        {
                            Repetition_RefID = repetition.CMN_CAL_RepetitionID,
                            Tenant_RefID     = securityTicket.TenantID,
                            IsDeleted        = false
                        }).Single();

                        assignemnt.IsDeleted = true;
                        assignemnt.Save(Connection, Transaction);
                        ORM_CMN_CAL_AVA_Availability.IsDeleted = true;
                        ORM_CMN_CAL_AVA_Availability.Save(Connection, Transaction);
                        date.IsDeleted = true;
                        date.Save(Connection, Transaction);
                        eventItem.IsDeleted = true;
                        eventItem.Save(Connection, Transaction);
                        repetition.IsDeleted = true;
                        repetition.Save(Connection, Transaction);
                        weekly.IsDeleted = true;
                        weekly.Save(Connection, Transaction);
                    }
                }
            }

            return(returnValue);

            #endregion UserCode
        }
Пример #12
0
        protected static FR_Base Execute(DbConnection Connection, DbTransaction Transaction, P_L3EV_DSE_1353 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Base();



            P_L3EV_GSEFSE_1102 par = new P_L3EV_GSEFSE_1102();
            par.StructureEventID = Parameter.CMN_STR_SCE_StructureCalendarEventID;
            L3EV_GSEFSE_1102 sEvent = cls_Get_StructureEvent_For_StructureEventID.Invoke(Connection, Transaction, par, securityTicket).Result;


            ORM_CMN_CAL_Event whereInstanceEvent = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance <ORM_CMN_CAL_Event>();
            whereInstanceEvent.CMN_CAL_EventID = sEvent.CMN_CAL_EventID;
            CSV2Core_MySQL.Support.SQLClassFilter.Delete(Connection, Transaction, whereInstanceEvent);


            if (sEvent.IsRepetitive)
            {
                ORM_CMN_CAL_Repetition whereInstanceRepetition = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance <ORM_CMN_CAL_Repetition>();
                whereInstanceRepetition.CMN_CAL_RepetitionID = sEvent.CMN_CAL_RepetitionID;
                CSV2Core_MySQL.Support.SQLClassFilter.Delete(Connection, Transaction, whereInstanceRepetition);

                if (sEvent.IsDaily)
                {
                    ORM_CMN_CAL_RepetitionPatterns_Daily whereInstanceDaily = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance <ORM_CMN_CAL_RepetitionPatterns_Daily>();
                    whereInstanceDaily.CMN_CAL_RepetitionPattern_DailyID = sEvent.dailyCMN_CAL_RepetitionPattern_DailyID;
                    CSV2Core_MySQL.Support.SQLClassFilter.Delete(Connection, Transaction, whereInstanceDaily);
                }
                else if (sEvent.IsWeekly)
                {
                    ORM_CMN_CAL_RepetitionPatterns_Weekly whereInstanceWeekly = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance <ORM_CMN_CAL_RepetitionPatterns_Weekly>();
                    whereInstanceWeekly.CMN_CAL_RepetitionPattern_WeeklyID = sEvent.weeklyCMN_CAL_RepetitionPattern_WeeklyID;
                    CSV2Core_MySQL.Support.SQLClassFilter.Delete(Connection, Transaction, whereInstanceWeekly);
                }
                else if (sEvent.IsMonthly)
                {
                    ORM_CMN_CAL_RepetitionPatterns_Monthly whereInstanceMonthly = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance <ORM_CMN_CAL_RepetitionPatterns_Monthly>();
                    whereInstanceMonthly.CMN_CAL_RepetitionPattern_MonthlyID = sEvent.monthlyCMN_CAL_RepetitionPattern_MonthlyID;
                    CSV2Core_MySQL.Support.SQLClassFilter.Delete(Connection, Transaction, whereInstanceMonthly);

                    if (sEvent.yearlyIsRelative)
                    {
                        ORM_CMN_CAL_RepetitionPatterns_Relative whereInstanceCapacityRelative = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance <ORM_CMN_CAL_RepetitionPatterns_Relative>();
                        whereInstanceCapacityRelative.CMN_CAL_RepetitionPattern_RelativeID = sEvent.relativeCMN_CAL_RepetitionPattern_RelativeID;
                        CSV2Core_MySQL.Support.SQLClassFilter.Delete(Connection, Transaction, whereInstanceCapacityRelative);
                    }
                }
                else if (sEvent.IsYearly)
                {
                    ORM_CMN_CAL_RepetitionPatterns_Yearly whereInstanceYearly = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance <ORM_CMN_CAL_RepetitionPatterns_Yearly>();
                    whereInstanceYearly.CMN_CAL_RepetitionPattern_YearlyID = sEvent.CMN_STR_SCE_CapacityRestrictionID;
                    CSV2Core_MySQL.Support.SQLClassFilter.Delete(Connection, Transaction, whereInstanceYearly);

                    if (sEvent.yearlyIsRelative)
                    {
                        ORM_CMN_CAL_RepetitionPatterns_Relative whereInstanceCapacityRelative = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance <ORM_CMN_CAL_RepetitionPatterns_Relative>();
                        whereInstanceCapacityRelative.CMN_CAL_RepetitionPattern_RelativeID = sEvent.relativeCMN_CAL_RepetitionPattern_RelativeID;
                        CSV2Core_MySQL.Support.SQLClassFilter.Delete(Connection, Transaction, whereInstanceCapacityRelative);
                    }
                }
            }

            ORM_CMN_STR_SCE_CapacityRestriction whereInstanceCapacityRestriction = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance <ORM_CMN_STR_SCE_CapacityRestriction>();
            whereInstanceCapacityRestriction.CMN_STR_SCE_CapacityRestrictionID = sEvent.CMN_STR_SCE_CapacityRestrictionID;
            CSV2Core_MySQL.Support.SQLClassFilter.Delete(Connection, Transaction, whereInstanceCapacityRestriction);


            ORM_CMN_STR_SCE_StructureCalendarEvent whereInstanceStructureCalendarEvent = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance <ORM_CMN_STR_SCE_StructureCalendarEvent>();
            whereInstanceStructureCalendarEvent.CMN_STR_SCE_StructureCalendarEventID = Parameter.CMN_STR_SCE_StructureCalendarEventID;
            CSV2Core_MySQL.Support.SQLClassFilter.Delete(Connection, Transaction, whereInstanceStructureCalendarEvent);


            ORM_CMN_STR_SCE_ForbiddenLeaveType whereInstanceForbiddenLeaveType = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance <ORM_CMN_STR_SCE_ForbiddenLeaveType>();
            whereInstanceForbiddenLeaveType.CMN_STR_SCE_ForbiddenLeaveTypeID = sEvent.CMN_STR_SCE_StructureCalendarEventID;
            CSV2Core_MySQL.Support.SQLClassFilter.Delete(Connection, Transaction, whereInstanceForbiddenLeaveType);

            //Put your code here
            return(returnValue);

            #endregion UserCode
        }
Пример #13
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5LR_SELR_255 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            var eventItem = new ORM_CMN_CAL_Event();
            if (Parameter.EventID != Guid.Empty)
            {
                var result = eventItem.Load(Connection, Transaction, Parameter.EventID);
                if (result.Status != FR_Status.Success || eventItem.CMN_CAL_EventID == Guid.Empty)
                {
                    var error = new FR_Guid();
                    error.ErrorMessage = "No Such ID";
                    error.Status       = FR_Status.Error_Internal;
                    return(error);
                }
            }
            eventItem.CalendarInstance_RefID = Parameter.CalendarInstance_RefID;
            eventItem.EndTime            = Parameter.EndTime;
            eventItem.IsDeleted          = false;
            eventItem.IsRepetitive       = Parameter.IsRepetitive;
            eventItem.Repetition_RefID   = Parameter.Repetition_RefID;
            eventItem.StartTime          = Parameter.StartTime;
            eventItem.Tenant_RefID       = securityTicket.TenantID;
            eventItem.Creation_Timestamp = DateTime.Now;
            eventItem.Save(Connection, Transaction);

            var approvalItem = new ORM_CMN_CAL_Event_Approval();
            if (Parameter.Event_Approval_RefID != Guid.Empty)
            {
                var result = approvalItem.Load(Connection, Transaction, Parameter.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.Event_RefID             = eventItem.CMN_CAL_EventID;
            approvalItem.IsApprovalProcessDenied = Parameter.IsApprovalProcessDenied;
            approvalItem.IsApprovalProcessOpened = Parameter.IsApprovalProcessOpened;
            approvalItem.IsApproved = Parameter.IsApproved;
            approvalItem.IsApprovalProcessCanceledByUser = Parameter.IsApprovalProcessCanceledByUser;
            approvalItem.IsDeleted                  = false;
            approvalItem.Creation_Timestamp         = DateTime.Now;
            approvalItem.Tenant_RefID               = securityTicket.TenantID;
            approvalItem.ApprovalProcess_Type_RefID = Parameter.ApprovalProcessTypeID;
            approvalItem.Save(Connection, Transaction);



            var requestItem = new ORM_CMN_BPT_EMP_Employee_LeaveRequest();
            if (Parameter.Employee_LeaveRequestID != Guid.Empty)
            {
                var result = requestItem.Load(Connection, Transaction, Parameter.Employee_LeaveRequestID);
                if (result.Status != FR_Status.Success || requestItem.CMN_BPT_EMP_Employee_LeaveRequestID == Guid.Empty)
                {
                    var error = new FR_Guid();
                    error.ErrorMessage = "No Such ID";
                    error.Status       = FR_Status.Error_Internal;
                    return(error);
                }
            }
            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             = eventItem.CMN_CAL_EventID;
            requestItem.Comment   = Parameter.Comment;
            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 = Parameter.LeaveRequestCreationSource;
            requestItem.Save(Connection, Transaction);

            if (Parameter.EmployeeCover_RefID != Guid.Empty)
            {
                var coverItem = new ORM_CMN_BPT_EMP_Employee_LeaveRequest_EmployeeCover();
                if (Parameter.Employee_LeaveRequest_EmployeeCoverID != Guid.Empty)
                {
                    var result = coverItem.Load(Connection, Transaction, Parameter.Employee_LeaveRequest_EmployeeCoverID);
                    if (result.Status != FR_Status.Success || coverItem.CMN_BPT_EMP_Employee_LeaveRequest_EmployeeCoverID == Guid.Empty)
                    {
                        var error = new FR_Guid();
                        error.ErrorMessage = "No Such ID";
                        error.Status       = FR_Status.Error_Internal;
                        return(error);
                    }
                }
                coverItem.CMN_BPT_EMP_Employee_LeaveRequests = requestItem.CMN_BPT_EMP_Employee_LeaveRequestID;
                coverItem.EmployeeCover_RefID = Parameter.EmployeeCover_RefID;
                coverItem.IsDeleted           = false;
                coverItem.SequenceNumber      = Parameter.SequenceNumber;
                coverItem.Tenant_RefID        = securityTicket.TenantID;
                coverItem.Creation_Timestamp  = DateTime.Now;
                coverItem.Save(Connection, Transaction);
            }
            returnValue.Result = requestItem.CMN_BPT_EMP_Employee_LeaveRequestID;

            return(returnValue);

            #endregion UserCode
        }
Пример #14
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L3EV_SSE_1048 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();
            //Put your code here



            if (Parameter.CalendarInstanceID == Guid.Empty)
            {
                ORM_CMN_Tenant tenant = new ORM_CMN_Tenant();
                if (securityTicket.TenantID != Guid.Empty)
                {
                    var result = tenant.Load(Connection, Transaction, securityTicket.TenantID);
                    if (result.Status != FR_Status.Success || tenant.CMN_TenantID == Guid.Empty)
                    {
                        var error = new FR_Guid();
                        error.ErrorMessage = "No Such ID";
                        error.Status       = FR_Status.Error_Internal;
                        return(error);
                    }
                }
                if (tenant.CMN_CAL_CalendarInstance_RefID == Guid.Empty)
                {
                    ORM_CMN_CAL_CalendarInstance instance = new ORM_CMN_CAL_CalendarInstance();
                    instance.WeekStartsOnDay = 1;
                    instance.Save(Connection, Transaction);
                    tenant.CMN_CAL_CalendarInstance_RefID = instance.CMN_CAL_CalendarInstanceID;
                    tenant.Save(Connection, Transaction);
                }
            }

            ORM_CMN_CAL_Event calendarEvent = new ORM_CMN_CAL_Event();
            if (Parameter.CMN_CAL_EventID != Guid.Empty)
            {
                var result = calendarEvent.Load(Connection, Transaction, Parameter.CMN_CAL_EventID);
                if (result.Status != FR_Status.Success || calendarEvent.CMN_CAL_EventID == Guid.Empty)
                {
                    var error = new FR_Guid();
                    error.ErrorMessage = "No Such ID";
                    error.Status       = FR_Status.Error_Internal;
                    return(error);
                }
            }
            calendarEvent.CalendarInstance_RefID = Parameter.CalendarInstanceID;
            calendarEvent.EndTime             = Parameter.EndTime;
            calendarEvent.IsRepetitive        = Parameter.IsRepetitive;
            calendarEvent.R_EventDuration_sec = Parameter.R_EventDuration_sec;

            calendarEvent.StartTime              = Parameter.StartTime;
            calendarEvent.Tenant_RefID           = securityTicket.TenantID;
            calendarEvent.CalendarInstance_RefID = Parameter.CalendarInstanceID;

            if (Parameter.IsRepetitive)
            {
                ORM_CMN_CAL_Repetition repetition = new ORM_CMN_CAL_Repetition();
                if (Parameter.CMN_CAL_RepetitionID != Guid.Empty)
                {
                    var result = repetition.Load(Connection, Transaction, Parameter.CMN_CAL_RepetitionID);
                    if (result.Status != FR_Status.Success || repetition.CMN_CAL_RepetitionID == Guid.Empty)
                    {
                        var error = new FR_Guid();
                        error.ErrorMessage = "No Such ID";
                        error.Status       = FR_Status.Error_Internal;
                        return(error);
                    }
                }
                repetition.IsDaily          = Parameter.IsDaily;
                repetition.IsMonthly        = Parameter.IsMonthly;
                repetition.IsWeekly         = Parameter.IsWeekly;
                repetition.IsYearly         = Parameter.IsYearly;
                repetition.R_CronExpression = Parameter.R_CronExpression;
                repetition.Tenant_RefID     = securityTicket.TenantID;
                repetition.Save(Connection, Transaction);
                calendarEvent.IsRepetitive     = true;
                calendarEvent.Repetition_RefID = repetition.CMN_CAL_RepetitionID;

                ORM_CMN_CAL_Repetition_Ranx repetitionRange = new ORM_CMN_CAL_Repetition_Ranx();
                if (Parameter.repetitionRangesCMN_CAL_Repetition_RangeID != Guid.Empty)
                {
                    var result = repetitionRange.Load(Connection, Transaction, Parameter.repetitionRangesCMN_CAL_Repetition_RangeID);
                    if (result.Status != FR_Status.Success || repetitionRange.CMN_CAL_Repetition_RangeID == Guid.Empty)
                    {
                        var error = new FR_Guid();
                        error.ErrorMessage = "No Such ID";
                        error.Status       = FR_Status.Error_Internal;
                        return(error);
                    }
                }
                repetitionRange.End_AfterSpecifiedOccurrences = Parameter.repetitionRangesEnd_AfterSpecifiedOccurrences;
                repetitionRange.End_ByDate            = Parameter.repetitionRangesEnd_ByDate;
                repetitionRange.HasEndType_DateTime   = Parameter.repetitionRangesHasEndType_DateTime;
                repetitionRange.HasEndType_NoEndDate  = Parameter.repetitionRangesHasEndType_NoEndDate;
                repetitionRange.HasEndType_Occurrence = Parameter.repetitionRangesHasEndType_Occurrence;
                repetitionRange.Repetition_RefID      = repetition.CMN_CAL_RepetitionID;
                repetitionRange.Tenant_RefID          = securityTicket.TenantID;
                repetitionRange.Save(Connection, Transaction);

                if (Parameter.IsDaily)
                {
                    ORM_CMN_CAL_RepetitionPatterns_Daily daily = new ORM_CMN_CAL_RepetitionPatterns_Daily();
                    if (Parameter.dailyCMN_CAL_RepetitionPattern_DailyID != Guid.Empty)
                    {
                        var result = daily.Load(Connection, Transaction, Parameter.dailyCMN_CAL_RepetitionPattern_DailyID);
                        if (result.Status != FR_Status.Success || daily.CMN_CAL_RepetitionPattern_DailyID == Guid.Empty)
                        {
                            var error = new FR_Guid();
                            error.ErrorMessage = "No Such ID";
                            error.Status       = FR_Status.Error_Internal;
                            return(error);
                        }
                    }
                    daily.Repetition_EveryNumberOfDays = Parameter.dailyRepetition_EveryNumberOfDays;
                    daily.Repetition_RefID             = repetition.CMN_CAL_RepetitionID;
                    daily.Tenant_RefID = securityTicket.TenantID;
                    daily.Save(Connection, Transaction);
                }
                else if (Parameter.IsWeekly)
                {
                    ORM_CMN_CAL_RepetitionPatterns_Weekly weekly = new ORM_CMN_CAL_RepetitionPatterns_Weekly();
                    if (Parameter.weeklyCMN_CAL_RepetitionPattern_WeeklyID != Guid.Empty)
                    {
                        var result = weekly.Load(Connection, Transaction, Parameter.weeklyCMN_CAL_RepetitionPattern_WeeklyID);
                        if (result.Status != FR_Status.Success || weekly.CMN_CAL_RepetitionPattern_WeeklyID == Guid.Empty)
                        {
                            var error = new FR_Guid();
                            error.ErrorMessage = "No Such ID";
                            error.Status       = FR_Status.Error_Internal;
                            return(error);
                        }
                    }
                    weekly.HasRepeatingOn_Fridays        = Parameter.weeklyHasRepeatingOn_Fridays;
                    weekly.HasRepeatingOn_Mondays        = Parameter.weeklyHasRepeatingOn_Mondays;
                    weekly.HasRepeatingOn_Saturdays      = Parameter.weeklyHasRepeatingOn_Saturdays;
                    weekly.HasRepeatingOn_Sundays        = Parameter.weeklyHasRepeatingOn_Sundays;
                    weekly.HasRepeatingOn_Thursdays      = Parameter.weeklyHasRepeatingOn_Thursdays;
                    weekly.HasRepeatingOn_Tuesdays       = Parameter.weeklyHasRepeatingOn_Tuesdays;
                    weekly.HasRepeatingOn_Wednesdays     = Parameter.weeklyHasRepeatingOn_Wednesdays;
                    weekly.Repetition_EveryNumberOfWeeks = Parameter.weeklyRepetition_EveryNumberOfWeeks;
                    weekly.Repetition_RefID = repetition.CMN_CAL_RepetitionID;
                    weekly.Tenant_RefID     = securityTicket.TenantID;
                    weekly.Save(Connection, Transaction);
                }
                else if (Parameter.IsMonthly)
                {
                    ORM_CMN_CAL_RepetitionPatterns_Monthly monthly = new ORM_CMN_CAL_RepetitionPatterns_Monthly();
                    if (Parameter.monthlyCMN_CAL_RepetitionPattern_MonthlyID != Guid.Empty)
                    {
                        var result = monthly.Load(Connection, Transaction, Parameter.monthlyCMN_CAL_RepetitionPattern_MonthlyID);
                        if (result.Status != FR_Status.Success || monthly.CMN_CAL_RepetitionPattern_MonthlyID == Guid.Empty)
                        {
                            var error = new FR_Guid();
                            error.ErrorMessage = "No Such ID";
                            error.Status       = FR_Status.Error_Internal;
                            return(error);
                        }
                    }
                    monthly.Repetition_EveryNumberOfMonths = Parameter.monthlyRepetition_EveryNumberOfMonths;
                    monthly.Repetition_RefID = repetition.CMN_CAL_RepetitionID;
                    monthly.Tenant_RefID     = securityTicket.TenantID;
                    if (Parameter.monthlyIsRelative)
                    {
                        monthly.IsFixed    = false;
                        monthly.IsRelative = true;
                        ORM_CMN_CAL_RepetitionPatterns_Relative relative = new ORM_CMN_CAL_RepetitionPatterns_Relative();
                        if (Parameter.relativeCMN_CAL_RepetitionPattern_RelativeID != Guid.Empty)
                        {
                            var result = relative.Load(Connection, Transaction, Parameter.relativeCMN_CAL_RepetitionPattern_RelativeID);
                            if (result.Status != FR_Status.Success || relative.CMN_CAL_RepetitionPattern_RelativeID == Guid.Empty)
                            {
                                var error = new FR_Guid();
                                error.ErrorMessage = "No Such ID";
                                error.Status       = FR_Status.Error_Internal;
                                return(error);
                            }
                        }
                        relative.IsFriday     = Parameter.relativeIsFriday;
                        relative.IsMonday     = Parameter.relativeIsMonday;
                        relative.IsSaturday   = Parameter.relativeIsSaturday;
                        relative.IsSunday     = Parameter.relativeIsSunday;
                        relative.IsThursday   = Parameter.relativeIsThursday;
                        relative.IsTuesday    = Parameter.relativeIsTuesday;
                        relative.IsWednesday  = Parameter.relativeIsWednesday;
                        relative.IsWeekDay    = Parameter.relativeIsWeekDay;
                        relative.IsWeekendDay = Parameter.relativeIsWeekendDay;
                        relative.Ordinal      = Parameter.relativeOrdinal;
                        relative.Tenant_RefID = securityTicket.TenantID;
                        relative.Save(Connection, Transaction);
                        monthly.IfRelative_RepetitionPattern_RefID = relative.CMN_CAL_RepetitionPattern_RelativeID;
                    }
                    else
                    {
                        monthly.IsRelative         = false;
                        monthly.IsFixed            = true;
                        monthly.IfFixed_DayOfMonth = Parameter.monthlyIfFixed_DayOfMonth;
                    }
                    monthly.Save(Connection, Transaction);
                }
                else
                {
                    ORM_CMN_CAL_RepetitionPatterns_Yearly yearly = new ORM_CMN_CAL_RepetitionPatterns_Yearly();
                    if (Parameter.yearlyCMN_CAL_RepetitionPattern_YearlyID != Guid.Empty)
                    {
                        var result = yearly.Load(Connection, Transaction, Parameter.yearlyCMN_CAL_RepetitionPattern_YearlyID);
                        if (result.Status != FR_Status.Success || yearly.CMN_CAL_RepetitionPattern_YearlyID == Guid.Empty)
                        {
                            var error = new FR_Guid();
                            error.ErrorMessage = "No Such ID";
                            error.Status       = FR_Status.Error_Internal;
                            return(error);
                        }
                    }
                    yearly.Repetition_EveryNumberOfYears = Parameter.yearlyRepetition_EveryNumberOfYears;
                    yearly.Repetition_Month = Parameter.yearlyRepetition_Month;
                    yearly.Repetition_RefID = repetition.CMN_CAL_RepetitionID;
                    yearly.Tenant_RefID     = securityTicket.TenantID;
                    if (Parameter.yearlyIsRelative)
                    {
                        yearly.IsRelative = true;
                        yearly.IsFixed    = false;
                        ORM_CMN_CAL_RepetitionPatterns_Relative relative = new ORM_CMN_CAL_RepetitionPatterns_Relative();
                        if (Parameter.relativeCMN_CAL_RepetitionPattern_RelativeID != Guid.Empty)
                        {
                            var result = relative.Load(Connection, Transaction, Parameter.relativeCMN_CAL_RepetitionPattern_RelativeID);
                            if (result.Status != FR_Status.Success || relative.CMN_CAL_RepetitionPattern_RelativeID == Guid.Empty)
                            {
                                var error = new FR_Guid();
                                error.ErrorMessage = "No Such ID";
                                error.Status       = FR_Status.Error_Internal;
                                return(error);
                            }
                        }
                        relative.IsFriday     = Parameter.relativeIsFriday;
                        relative.IsMonday     = Parameter.relativeIsMonday;
                        relative.IsSaturday   = Parameter.relativeIsSaturday;
                        relative.IsSunday     = Parameter.relativeIsSunday;
                        relative.IsThursday   = Parameter.relativeIsThursday;
                        relative.IsTuesday    = Parameter.relativeIsTuesday;
                        relative.IsWednesday  = Parameter.relativeIsWednesday;
                        relative.IsWeekDay    = Parameter.relativeIsWeekDay;
                        relative.IsWeekendDay = Parameter.relativeIsWeekendDay;
                        relative.Ordinal      = Parameter.relativeOrdinal;
                        relative.Tenant_RefID = securityTicket.TenantID;

                        relative.Save(Connection, Transaction);
                        yearly.IfRelative_RepetitionPattern_RefID = relative.CMN_CAL_RepetitionPattern_RelativeID;
                        yearly.IsFixed = false;
                    }
                    else
                    {
                        yearly.IsRelative         = false;
                        yearly.IsFixed            = true;
                        yearly.IfFixed_DayOfMonth = Parameter.yearlyIfFixed_DayOfMonth;
                    }
                    yearly.Save(Connection, Transaction);
                }
            }
            else
            {
                calendarEvent.IsRepetitive     = false;
                calendarEvent.Repetition_RefID = Guid.Empty;
            }

            calendarEvent.Save(Connection, Transaction);

            ORM_CMN_STR_SCE_StructureCalendarEvent structureEvent = new ORM_CMN_STR_SCE_StructureCalendarEvent();
            if (Parameter.CMN_STR_SCE_StructureCalendarEventID != Guid.Empty)
            {
                var result = structureEvent.Load(Connection, Transaction, Parameter.CMN_STR_SCE_StructureCalendarEventID);
                if (result.Status != FR_Status.Success || structureEvent.CMN_STR_SCE_StructureCalendarEventID == Guid.Empty)
                {
                    var error = new FR_Guid();
                    error.ErrorMessage = "No Such ID";
                    error.Status       = FR_Status.Error_Internal;
                    return(error);
                }
            }

            if (Parameter.IsHavingCapacityRestriction)
            {
                ORM_CMN_STR_SCE_CapacityRestriction capacityRestriction = new ORM_CMN_STR_SCE_CapacityRestriction();
                if (Parameter.CMN_STR_SCE_CapacityRestrictionID != Guid.Empty)
                {
                    var result = capacityRestriction.Load(Connection, Transaction, Parameter.CMN_STR_SCE_CapacityRestrictionID);
                    if (result.Status != FR_Status.Success || capacityRestriction.CMN_STR_SCE_CapacityRestrictionID == Guid.Empty)
                    {
                        var error = new FR_Guid();
                        error.ErrorMessage = "No Such ID";
                        error.Status       = FR_Status.Error_Internal;
                        return(error);
                    }
                }
                capacityRestriction.IsValueCalculated_InHeadCount    = Parameter.IsValueCalculated_InHeadCount;
                capacityRestriction.IsValueCalculated_InPercentage   = Parameter.IsValueCalculated_InPercentage;
                capacityRestriction.IsValueCalculated_InWorkingHours = Parameter.IsValueCalculated_InWorkingHours;
                capacityRestriction.CapacityRestrictionType_RefID    = Parameter.CMN_STR_SCE_CapacityRestriction_TypeID;
                capacityRestriction.Tenant_RefID    = securityTicket.TenantID;
                capacityRestriction.ValueCalculated = Parameter.ValueCalculated;
                capacityRestriction.Save(Connection, Transaction);
                structureEvent.IfHavingCapacityRestriction_Restriction_RefID = capacityRestriction.CMN_STR_SCE_CapacityRestrictionID;
                structureEvent.IsHavingCapacityRestriction = true;
            }
            else
            {
                structureEvent.IsHavingCapacityRestriction = false;
            }

            var eventType = new ORM_CMN_STR_SCE_StructureCalendarEvent_Type();

            var resultForType = eventType.Load(Connection, Transaction, Parameter.StructureCalendarEvent_Type_RefID);
            if (resultForType.Status != FR_Status.Success || eventType.CMN_STR_SCE_StructureCalendarEvent_TypeID == Guid.Empty)
            {
                var error = new FR_Guid();
                error.ErrorMessage = "No Such ID";
                error.Status       = FR_Status.Error_Internal;
                return(error);
            }



            structureEvent.IsWorkingDayEvent                 = eventType.IsWorkingDay;
            structureEvent.IsWorkingHalfDayEvent             = eventType.IsHalfWorkingDay;
            structureEvent.IsNonWorkingDay                   = eventType.IsNonWorkingDay;
            structureEvent.CMN_CAL_Event_RefID               = calendarEvent.CMN_CAL_EventID;
            structureEvent.StructureCalendarEvent_Type_RefID = Parameter.StructureCalendarEvent_Type_RefID;
            structureEvent.R_CalendarInstance_RefID          = Parameter.CalendarInstanceID;
            structureEvent.StructureEvent_Description        = Parameter.StructureEvent_Description;
            structureEvent.StructureEvent_Name               = Parameter.StructureEvent_Name;
            structureEvent.Tenant_RefID = securityTicket.TenantID;
            structureEvent.IsEvent_ImportedFromTemplate = Parameter.IsEvent_ImportedFromTemplate;
            structureEvent.IsBusinessDay = Parameter.IsBusinessDay;
            structureEvent.Save(Connection, Transaction);
            returnValue.Result = structureEvent.CMN_STR_SCE_StructureCalendarEventID;


            ORM_CMN_STR_SCE_ForbiddenLeaveType whereInstanceForbiddenLeaveType = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance <ORM_CMN_STR_SCE_ForbiddenLeaveType>();
            whereInstanceForbiddenLeaveType.CMN_STR_SCE_StructureCalendarEvent_RefID = structureEvent.CMN_STR_SCE_StructureCalendarEventID;
            CSV2Core_MySQL.Support.SQLClassFilter.Delete(Connection, Transaction, whereInstanceForbiddenLeaveType);

            foreach (var forbidenLeaveType in Parameter.forbidenLeaveTypes)
            {
                ORM_CMN_STR_SCE_ForbiddenLeaveType item = new ORM_CMN_STR_SCE_ForbiddenLeaveType();
                if (forbidenLeaveType.CMN_STR_SCE_ForbiddenLeaveTypeID != Guid.Empty)
                {
                    var result = item.Load(Connection, Transaction, forbidenLeaveType.CMN_STR_SCE_ForbiddenLeaveTypeID);
                    if (result.Status != FR_Status.Success || item.CMN_STR_SCE_ForbiddenLeaveTypeID == Guid.Empty)
                    {
                        var error = new FR_Guid();
                        error.ErrorMessage = "No Such ID";
                        error.Status       = FR_Status.Error_Internal;
                        return(error);
                    }
                }
                item.CMN_BPT_STA_AbsenceReason_RefID          = forbidenLeaveType.CMN_BPT_STA_AbsenceReasonID;
                item.CMN_STR_SCE_StructureCalendarEvent_RefID = structureEvent.CMN_STR_SCE_StructureCalendarEventID;
                item.Tenant_RefID = securityTicket.TenantID;
                item.Save(Connection, Transaction);
            }
            return(returnValue);


            #endregion UserCode
        }
Пример #15
0
        protected static FR_L6DWS_LPD_1451_Array Execute(DbConnection Connection, DbTransaction Transaction, P_L6DWS_LPD_1451 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L6DWS_LPD_1451_Array();

            LeaveRequestUtils leaveRequestUtil = new LeaveRequestUtils();

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

            for (int i = 0; i < dayCount; i++)
            {
                var date = Parameter.WorkSheduleDate.Date.AddDays(i);
                if (Parameter.LoadFrom_LastWeek || Parameter.LoadFrom_Specific_Date_Or_Week)
                {
                    P_L5DWS_GDWSWDFT_0946 param = new P_L5DWS_GDWSWDFT_0946();
                    if (Parameter.LoadFrom_Specific_Date_Or_Week)
                    {
                        param.WorkSheduleDate = Parameter.IfLoadFrom_Specific_Date_Or_Week_DateTime.AddDays(i);
                    }
                    else
                    {
                        param.WorkSheduleDate = Parameter.WorkSheduleDate.AddDays(-7).AddDays(i);
                    }

                    var lastWeekSchedules = cls_Get_DailyWorkSchedules_WithDetails_For_Date.Invoke(Connection, Transaction, param, securityTicket).Result;

                    foreach (var lastWeekSchedule in lastWeekSchedules)
                    {
                        var empInfo = Parameter.EmployeeInformation.FirstOrDefault(x => x.EmployeeID == lastWeekSchedule.Employee_RefID);

                        ORM_CMN_STR_PPS_DailyWorkSchedule.Query dailyWorkScheduleQuery = new ORM_CMN_STR_PPS_DailyWorkSchedule.Query();
                        dailyWorkScheduleQuery.Employee_RefID  = lastWeekSchedule.Employee_RefID;
                        dailyWorkScheduleQuery.WorkSheduleDate = date;
                        dailyWorkScheduleQuery.IsDeleted       = false;
                        dailyWorkScheduleQuery.Tenant_RefID    = securityTicket.TenantID;

                        var oldDailyWorkSchedule = ORM_CMN_STR_PPS_DailyWorkSchedule.Query.Search(Connection, Transaction, dailyWorkScheduleQuery).FirstOrDefault();

                        if (oldDailyWorkSchedule != null)
                        {
                            ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query oldDailyWorkScheduleDetailQuery = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query();
                            oldDailyWorkScheduleDetailQuery.DailyWorkSchedule_RefID = oldDailyWorkSchedule.CMN_STR_PPS_DailyWorkScheduleID;
                            oldDailyWorkScheduleDetailQuery.IsDeleted    = false;
                            oldDailyWorkScheduleDetailQuery.Tenant_RefID = securityTicket.TenantID;

                            var oldDailyWorkScheduleDetails = ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query.Search(Connection, Transaction, oldDailyWorkScheduleDetailQuery);

                            List <P_L6DWS_DDWS_1126_Details> detailsList = new List <P_L6DWS_DDWS_1126_Details>();

                            foreach (var detail in oldDailyWorkScheduleDetails)
                            {
                                ORM_CMN_CAL_Event.Query eventQuery = new ORM_CMN_CAL_Event.Query();
                                eventQuery.CMN_CAL_EventID = detail.CMN_CAL_Event_RefID;
                                eventQuery.IsDeleted       = false;
                                eventQuery.Tenant_RefID    = securityTicket.TenantID;

                                var detailEvent = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, eventQuery).FirstOrDefault();

                                if (detailEvent != null)
                                {
                                    P_L6DWS_DDWS_1126_Details detailParam = new P_L6DWS_DDWS_1126_Details();
                                    detailParam.DailyWorkSchedule_DetailID = detail.CMN_STR_PPS_DailyWorkSchedule_DetailID;
                                    detailParam.durationInDays             = leaveRequestUtil.LeaveRequestDuration(detailEvent.StartTime, detailEvent.EndTime, Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == lastWeekSchedule.Employee_RefID), true);
                                    detailParam.durationInHours            = leaveRequestUtil.LeaveRequestDuration(detailEvent.StartTime, detailEvent.EndTime, Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == lastWeekSchedule.Employee_RefID), false);
                                    detailsList.Add(detailParam);
                                }
                            }


                            P_L6DWS_DDWS_1126 deleteParam = new P_L6DWS_DDWS_1126();
                            deleteParam.CMN_STR_PPS_DailyWorkScheduleID = oldDailyWorkSchedule.CMN_STR_PPS_DailyWorkScheduleID;
                            deleteParam.Details = detailsList.ToArray();
                            cls_Delete_DailyWorkSchedule.Invoke(Connection, Transaction, deleteParam, securityTicket);
                        }

                        ORM_CMN_STR_PPS_DailyWorkSchedule dailyWorkSchedule = new ORM_CMN_STR_PPS_DailyWorkSchedule();
                        dailyWorkSchedule.BreakDurationTime_in_sec               = lastWeekSchedule.BreakDurationTime_in_sec;
                        dailyWorkSchedule.ContractWorkerText                     = lastWeekSchedule.ContractWorkerText;
                        dailyWorkSchedule.Employee_RefID                         = lastWeekSchedule.Employee_RefID;
                        dailyWorkSchedule.InstantiatedWithShiftTemplate_RefID    = lastWeekSchedule.InstantiatedWithShiftTemplate_RefID;
                        dailyWorkSchedule.IsBreakTimeManualySpecified            = lastWeekSchedule.IsBreakTimeManualySpecified;
                        dailyWorkSchedule.IsWorkShedule_Confirmed                = lastWeekSchedule.IsWorkShedule_Confirmed;
                        dailyWorkSchedule.R_ContractSpecified_WorkingTime_in_sec = empInfo.ContractInfo.FirstOrDefault(x => x.Date.Date == date.Date).ContractSpecified_WorkingTime_in_sec;
                        dailyWorkSchedule.R_WorkDay_Duration_in_sec              = lastWeekSchedule.R_WorkDay_Duration_in_sec;
                        dailyWorkSchedule.R_WorkDay_End_in_sec                   = lastWeekSchedule.R_WorkDay_End_in_sec;
                        dailyWorkSchedule.R_WorkDay_Start_in_sec                 = lastWeekSchedule.R_WorkDay_Start_in_sec;
                        dailyWorkSchedule.SheduleBreakTemplate_RefID             = lastWeekSchedule.SheduleBreakTemplate_RefID;
                        dailyWorkSchedule.Tenant_RefID          = securityTicket.TenantID;
                        dailyWorkSchedule.WorkingSheduleComment = lastWeekSchedule.WorkingSheduleComment;
                        dailyWorkSchedule.WorkShedule_ConfirmedBy_Account_RefID = lastWeekSchedule.WorkShedule_ConfirmedBy_Account_RefID;
                        dailyWorkSchedule.WorkSheduleDate = date;
                        dailyWorkSchedule.Save(Connection, Transaction);

                        foreach (var lastWeekDetail in lastWeekSchedule.Details)
                        {
                            ORM_CMN_STR_PPS_DailyWorkSchedule_Detail detail = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail();
                            detail.AbsenceReason_RefID = lastWeekDetail.AbsenceReason_RefID;
                            if (lastWeekDetail.CMN_CAL_Event_RefID != Guid.Empty)
                            {
                                ORM_CMN_CAL_Event.Query eventQuery = new ORM_CMN_CAL_Event.Query();
                                eventQuery.CMN_CAL_EventID = lastWeekDetail.CMN_CAL_Event_RefID;
                                eventQuery.Tenant_RefID    = securityTicket.TenantID;
                                eventQuery.IsDeleted       = false;

                                var eventResult            = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, eventQuery).FirstOrDefault();
                                ORM_CMN_CAL_Event newEvent = new ORM_CMN_CAL_Event();
                                newEvent.CalendarInstance_RefID = eventResult.CalendarInstance_RefID;
                                newEvent.EndTime = date.AddHours(eventResult.EndTime.TimeOfDay.TotalHours);
                                newEvent.IsCalendarEvent_Editable = eventResult.IsCalendarEvent_Editable;
                                newEvent.IsRepetitive             = eventResult.IsRepetitive;
                                newEvent.IsWholeDayEvent          = eventResult.IsWholeDayEvent;
                                newEvent.R_EventDuration_sec      = eventResult.R_EventDuration_sec;
                                newEvent.Repetition_RefID         = eventResult.Repetition_RefID;
                                newEvent.StartTime    = date.AddHours(eventResult.StartTime.TimeOfDay.TotalHours);
                                newEvent.Tenant_RefID = securityTicket.TenantID;
                                newEvent.Save(Connection, Transaction);
                                detail.CMN_CAL_Event_RefID = newEvent.CMN_CAL_EventID;
                            }
                            else
                            {
                                detail.CMN_CAL_Event_RefID = Guid.Empty;
                            }
                            detail.DailyWorkSchedule_RefID   = dailyWorkSchedule.CMN_STR_PPS_DailyWorkScheduleID;
                            detail.IsWorkBreak               = lastWeekDetail.IsWorkBreak;
                            detail.SheduleForWorkplace_RefID = lastWeekDetail.SheduleForWorkplace_RefID;
                            detail.Tenant_RefID              = securityTicket.TenantID;


                            if (detail.AbsenceReason_RefID != Guid.Empty)
                            {
                                ORM_CMN_CAL_Event leaveRequestEvent = new ORM_CMN_CAL_Event();
                                leaveRequestEvent.EndTime      = date.AddSeconds(lastWeekDetail.ToTime_as_DateTime.TimeOfDay.TotalSeconds);
                                leaveRequestEvent.StartTime    = date.AddSeconds(lastWeekDetail.FromTime_as_DateTime.TimeOfDay.TotalSeconds);
                                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;

                                var authRequired = true;

                                var absenceReasons = cls_get_Active_AbsenceReason_For_TenantID.Invoke(Connection, Transaction, securityTicket).Result;
                                if (absenceReasons != null)
                                {
                                    if (absenceReasons.Any(r => r.CMN_BPT_STA_AbsenceReasonID == detail.AbsenceReason_RefID))
                                    {
                                        var reason = absenceReasons.FirstOrDefault(r => r.CMN_BPT_STA_AbsenceReasonID == detail.AbsenceReason_RefID);
                                        if (reason != null)
                                        {
                                            authRequired = reason.IsAuthorizationRequired;
                                        }
                                    }
                                }

                                L6TN_GSFT_1017 settings = cls_Get_Settings_For_Tenant.Invoke(Connection, Transaction, securityTicket).Result;
                                if (settings.NumberOfResponsiblePersonsRequiredToApprove == 0 || !authRequired)
                                {
                                    approvalItem.IsApprovalProcessOpened = false;
                                    approvalItem.IsApproved = true;
                                }
                                else
                                {
                                    approvalItem.IsApprovalProcessOpened = true;
                                    approvalItem.IsApproved = false;
                                }

                                approvalItem.IsApprovalProcessCanceledByUser = false;
                                approvalItem.IsDeleted          = false;
                                approvalItem.Creation_Timestamp = DateTime.Now;
                                approvalItem.Tenant_RefID       = securityTicket.TenantID;
                                approvalItem.Save(Connection, Transaction);

                                var leaveRequest = new ORM_CMN_BPT_EMP_Employee_LeaveRequest();
                                leaveRequest.CMN_BPT_STA_AbsenceReason_RefID = detail.AbsenceReason_RefID;
                                leaveRequest.CMN_CAL_Event_Approval_RefID    = approvalItem.CMN_CAL_Event_ApprovalID;
                                leaveRequest.CMN_CAL_Event_RefID             = leaveRequestEvent.CMN_CAL_EventID;
                                leaveRequest.IsDeleted = false;
                                leaveRequest.RequestedBy_Employee_RefID  = Parameter.LoggedEmployeeID;
                                leaveRequest.RequestedFor_Employee_RefID = lastWeekSchedule.Employee_RefID;
                                leaveRequest.Tenant_RefID       = securityTicket.TenantID;
                                leaveRequest.Creation_Timestamp = DateTime.Now;
                                leaveRequest.Save(Connection, Transaction);
                                detail.CMN_BPT_EMP_Employee_LeaveRequest_RefID = leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID;

                                detail.Save(Connection, Transaction);

                                #region updateStatistics

                                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;

                                    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 (approvalItem.IsApproved)
                                    {
                                        updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays  = statistics.R_TotalAllowedAbsenceTime_InDays - durationInDays;
                                        updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours - 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 + durationInDays;
                                        updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours + durationInHours;
                                    }
                                    else
                                    {
                                        updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays  = statistics.R_TotalAllowedAbsenceTime_InDays;
                                        updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours;

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


                                    var res = cls_Save_Employee_AbsenceReason_TimeframeStatistic.Invoke(Connection, Transaction, updateStatisticsParam, securityTicket);
                                }
                                #endregion
                            }
                            else
                            {
                                detail.Save(Connection, Transaction);
                            }
                        }
                    }
                }
                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.AddMinutes(empInfo.ContractInfo.FirstOrDefault(x => x.Date == date).startTime);
                                                DateTime endTime   = date.AddMinutes(empInfo.ContractInfo.FirstOrDefault(x => x.Date == date).endTime);


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


                                                ORM_CMN_STR_PPS_DailyWorkSchedule.Query dailyWorkScheduleQuery = new ORM_CMN_STR_PPS_DailyWorkSchedule.Query();
                                                dailyWorkScheduleQuery.Employee_RefID  = empID;
                                                dailyWorkScheduleQuery.WorkSheduleDate = date;
                                                dailyWorkScheduleQuery.IsDeleted       = false;
                                                dailyWorkScheduleQuery.Tenant_RefID    = securityTicket.TenantID;

                                                var oldDailyWorkSchedule = ORM_CMN_STR_PPS_DailyWorkSchedule.Query.Search(Connection, Transaction, dailyWorkScheduleQuery).FirstOrDefault();

                                                if (oldDailyWorkSchedule != null)
                                                {
                                                    ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query oldDailyWorkScheduleDetailQuery = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query();
                                                    oldDailyWorkScheduleDetailQuery.DailyWorkSchedule_RefID = oldDailyWorkSchedule.CMN_STR_PPS_DailyWorkScheduleID;
                                                    oldDailyWorkScheduleDetailQuery.IsDeleted    = false;
                                                    oldDailyWorkScheduleDetailQuery.Tenant_RefID = securityTicket.TenantID;

                                                    var oldDailyWorkScheduleDetails = ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query.Search(Connection, Transaction, oldDailyWorkScheduleDetailQuery);

                                                    List <P_L6DWS_DDWS_1126_Details> detailsList = new List <P_L6DWS_DDWS_1126_Details>();

                                                    foreach (var detail in oldDailyWorkScheduleDetails)
                                                    {
                                                        ORM_CMN_CAL_Event.Query eventQuery = new ORM_CMN_CAL_Event.Query();
                                                        eventQuery.CMN_CAL_EventID = detail.CMN_CAL_Event_RefID;
                                                        eventQuery.IsDeleted       = false;
                                                        eventQuery.Tenant_RefID    = securityTicket.TenantID;

                                                        var detailEvent = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, eventQuery).FirstOrDefault();

                                                        if (detailEvent != null)
                                                        {
                                                            P_L6DWS_DDWS_1126_Details deleteDetailParam = new P_L6DWS_DDWS_1126_Details();
                                                            deleteDetailParam.DailyWorkSchedule_DetailID = detail.CMN_STR_PPS_DailyWorkSchedule_DetailID;
                                                            deleteDetailParam.durationInDays             = leaveRequestUtil.LeaveRequestDuration(detailEvent.StartTime, detailEvent.EndTime, Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == empID), true);
                                                            deleteDetailParam.durationInHours            = leaveRequestUtil.LeaveRequestDuration(detailEvent.StartTime, detailEvent.EndTime, Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == empID), false);
                                                            detailsList.Add(deleteDetailParam);
                                                        }
                                                    }


                                                    P_L6DWS_DDWS_1126 deleteParam = new P_L6DWS_DDWS_1126();
                                                    deleteParam.CMN_STR_PPS_DailyWorkScheduleID = oldDailyWorkSchedule.CMN_STR_PPS_DailyWorkScheduleID;
                                                    deleteParam.Details = detailsList.ToArray();
                                                    cls_Delete_DailyWorkSchedule.Invoke(Connection, Transaction, deleteParam, securityTicket);
                                                }

                                                ORM_CMN_STR_PPS_DailyWorkSchedule dailyWorkSchedule = new ORM_CMN_STR_PPS_DailyWorkSchedule();
                                                dailyWorkSchedule.IsBreakTimeManualySpecified = false;
                                                dailyWorkSchedule.BreakDurationTime_in_sec    = 0;

                                                dailyWorkSchedule.R_WorkDay_Start_in_sec    = (int)startTimeInSec;
                                                dailyWorkSchedule.R_WorkDay_Duration_in_sec = (int)totalTime;
                                                dailyWorkSchedule.R_WorkDay_End_in_sec      = (int)endTimeInSec;
                                                dailyWorkSchedule.R_ContractSpecified_WorkingTime_in_sec = 0;
                                                dailyWorkSchedule.ContractWorkerText = "";
                                                dailyWorkSchedule.Employee_RefID     = empID;
                                                dailyWorkSchedule.WorkSheduleDate    = date;
                                                dailyWorkSchedule.Tenant_RefID       = securityTicket.TenantID;

                                                dailyWorkSchedule.Save(Connection, Transaction);


                                                var durationInDays  = leaveRequestUtil.LeaveRequestDuration(date.AddSeconds(startTimeInSec), date.AddSeconds(endTimeInSec), Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == empID), true);
                                                var durationInHours = leaveRequestUtil.LeaveRequestDuration(date.AddSeconds(startTimeInSec), date.AddSeconds(endTimeInSec), Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == empID), false);

                                                P_L6DWS_SDWSD_1130 detailParam = new P_L6DWS_SDWSD_1130();
                                                detailParam.WorkTime_Start              = dailyWorkSchedule.WorkSheduleDate.AddSeconds(startTimeInSec);
                                                detailParam.WorkTime_End                = dailyWorkSchedule.WorkSheduleDate.AddSeconds(endTimeInSec);
                                                detailParam.DailyWorkSchedule_RefID     = dailyWorkSchedule.CMN_STR_PPS_DailyWorkScheduleID;
                                                detailParam.IsWorkBreak                 = false;
                                                detailParam.SheduleForWorkplace_RefID   = Guid.Empty;
                                                detailParam.AbsenceReason_RefID         = pattern.CMN_BPT_STA_AbsenceReason_RefID;
                                                detailParam.RequestedBy_Employee_RefID  = Guid.Empty;
                                                detailParam.RequestedFor_Employee_RefID = empID;
                                                detailParam.durationInDays              = durationInDays;
                                                detailParam.durationInHours             = durationInHours;
                                                cls_Save_DailyWorkSchedule_Detail.Invoke(Connection, Transaction, detailParam, 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_STR_PPS_DailyWorkSchedule.Query dailyWorkScheduleQuery = new ORM_CMN_STR_PPS_DailyWorkSchedule.Query();
                                                    dailyWorkScheduleQuery.Employee_RefID  = empID;
                                                    dailyWorkScheduleQuery.WorkSheduleDate = date;
                                                    dailyWorkScheduleQuery.IsDeleted       = false;
                                                    dailyWorkScheduleQuery.Tenant_RefID    = securityTicket.TenantID;

                                                    var oldDailyWorkSchedule = ORM_CMN_STR_PPS_DailyWorkSchedule.Query.Search(Connection, Transaction, dailyWorkScheduleQuery).FirstOrDefault();

                                                    if (oldDailyWorkSchedule != null)
                                                    {
                                                        ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query oldDailyWorkScheduleDetailQuery = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query();
                                                        oldDailyWorkScheduleDetailQuery.DailyWorkSchedule_RefID = oldDailyWorkSchedule.CMN_STR_PPS_DailyWorkScheduleID;
                                                        oldDailyWorkScheduleDetailQuery.IsDeleted    = false;
                                                        oldDailyWorkScheduleDetailQuery.Tenant_RefID = securityTicket.TenantID;

                                                        var oldDailyWorkScheduleDetails = ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query.Search(Connection, Transaction, oldDailyWorkScheduleDetailQuery);

                                                        List <P_L6DWS_DDWS_1126_Details> detailsList = new List <P_L6DWS_DDWS_1126_Details>();

                                                        foreach (var detail in oldDailyWorkScheduleDetails)
                                                        {
                                                            ORM_CMN_CAL_Event.Query eventQuery = new ORM_CMN_CAL_Event.Query();
                                                            eventQuery.CMN_CAL_EventID = detail.CMN_CAL_Event_RefID;
                                                            eventQuery.IsDeleted       = false;
                                                            eventQuery.Tenant_RefID    = securityTicket.TenantID;

                                                            var detailEvent = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, eventQuery).FirstOrDefault();

                                                            if (detailEvent != null)
                                                            {
                                                                P_L6DWS_DDWS_1126_Details detailParam = new P_L6DWS_DDWS_1126_Details();
                                                                detailParam.DailyWorkSchedule_DetailID = detail.CMN_STR_PPS_DailyWorkSchedule_DetailID;
                                                                detailParam.durationInDays             = leaveRequestUtil.LeaveRequestDuration(detailEvent.StartTime, detailEvent.EndTime, Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == empID), true);
                                                                detailParam.durationInHours            = leaveRequestUtil.LeaveRequestDuration(detailEvent.StartTime, detailEvent.EndTime, Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == empID), false);
                                                                detailsList.Add(detailParam);
                                                            }
                                                        }


                                                        P_L6DWS_DDWS_1126 deleteParam = new P_L6DWS_DDWS_1126();
                                                        deleteParam.CMN_STR_PPS_DailyWorkScheduleID = oldDailyWorkSchedule.CMN_STR_PPS_DailyWorkScheduleID;
                                                        deleteParam.Details = detailsList.ToArray();
                                                        cls_Delete_DailyWorkSchedule.Invoke(Connection, Transaction, deleteParam, securityTicket);
                                                    }
                                                    P_L5DWS_SDWSFST_1447 param = new P_L5DWS_SDWSFST_1447();
                                                    param.Employee_RefID = empID;
                                                    param.InstantiatedWithShiftTemplate_RefID = shiftTemplate.CMN_PPS_ShiftTemplateID;
                                                    param.WorkSheduleDate = date;
                                                    param.R_ContractSpecified_WorkingTime_in_sec = empInfo.ContractInfo.FirstOrDefault(x => x.Date == date).ContractSpecified_WorkingTime_in_sec;
                                                    cls_Save_DailyWorkSchedule_For_ShiftTemplate.Invoke(Connection, Transaction, param, securityTicket);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }



            //Put your code here
            return(returnValue);

            #endregion UserCode
        }
Пример #16
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5DO_SDaSA_1634 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            foreach (var item in Parameter.AvailabilityDate)
            {
                #region Delete
                if (item.IsDeleted)
                {
                    ORM_CMN_BPT_BusinessParticipant_Availability.Query.SoftDelete(Connection, Transaction, new ORM_CMN_BPT_BusinessParticipant_Availability.Query()
                    {
                        Tenant_RefID = securityTicket.TenantID,
                        IsDeleted    = false,
                        CMN_BPT_BusinessParticipant_AvailabilityID = item.OfficeAvailabilityID
                    });
                }
                #endregion
                else
                {
                    var officeAvailabilityQuery = new ORM_CMN_BPT_BusinessParticipant_Availability.Query();
                    officeAvailabilityQuery.Tenant_RefID = securityTicket.TenantID;
                    officeAvailabilityQuery.IsDeleted    = false;
                    officeAvailabilityQuery.CMN_BPT_BusinessParticipant_AvailabilityID = item.OfficeAvailabilityID;

                    var bpAvailability = ORM_CMN_BPT_BusinessParticipant_Availability.Query.Search(Connection, Transaction, officeAvailabilityQuery).SingleOrDefault();

                    #region Save
                    if (bpAvailability == null)
                    {
                        bpAvailability = new ORM_CMN_BPT_BusinessParticipant_Availability();
                        bpAvailability.CMN_BPT_BusinessParticipant_AvailabilityID = item.OfficeAvailabilityID;
                        bpAvailability.BusinessParticipant_RefID      = Parameter.CMN_BPT_BusinessParticipantID;
                        bpAvailability.CMN_CAL_AVA_Availability_RefID = Guid.NewGuid();
                        bpAvailability.Tenant_RefID       = securityTicket.TenantID;
                        bpAvailability.Creation_Timestamp = DateTime.Now;
                        bpAvailability.Save(Connection, Transaction);


                        var availability = new ORM_CMN_CAL_AVA_Availability();
                        availability.CMN_CAL_AVA_AvailabilityID = bpAvailability.CMN_CAL_AVA_Availability_RefID;
                        availability.Tenant_RefID       = securityTicket.TenantID;
                        availability.Creation_Timestamp = DateTime.Now;

                        var availabilityTypeQuery = new ORM_CMN_CAL_AVA_Availability_Type.Query();
                        availabilityTypeQuery.IsDeleted                = false;
                        availabilityTypeQuery.Tenant_RefID             = securityTicket.TenantID;
                        availabilityTypeQuery.GlobalPropertyMatchingID = item.Type;

                        var availabilityType = ORM_CMN_CAL_AVA_Availability_Type.Query.Search(Connection, Transaction, availabilityTypeQuery).First();

                        availability.Office_RefID                = item.OfficeID;
                        availability.AvailabilityType_RefID      = availabilityType.CMN_CAL_AVA_Availability_TypeID;
                        availability.IsAvailabilityExclusionItem = item.IsException;
                        availability.Save(Connection, Transaction);

                        Guid EventId = Guid.NewGuid();

                        var date = new ORM_CMN_CAL_AVA_Date();
                        date.CMN_CAL_AVA_DateID  = Guid.NewGuid();
                        date.Availability_RefID  = availability.CMN_CAL_AVA_AvailabilityID;
                        date.CMN_CAL_Event_RefID = EventId;
                        date.DateName            = item.AvailabilityDate_Name;
                        date.DateComment         = item.Reason;
                        date.Tenant_RefID        = securityTicket.TenantID;
                        date.Creation_Timestamp  = DateTime.Now;
                        date.Save(Connection, Transaction);

                        var events = new ORM_CMN_CAL_Event();
                        events.CMN_CAL_EventID    = EventId;
                        events.IsRepetitive       = item.IsRepetitive;
                        events.StartTime          = item.AvailabilityDate_From;
                        events.EndTime            = item.AvailabilityDate_To;
                        events.Tenant_RefID       = securityTicket.TenantID;
                        events.Creation_Timestamp = DateTime.Now;
                        events.IsWholeDayEvent    = item.IsWholeDay;

                        if (item.IsRepetitive)
                        {
                            events.Repetition_RefID = Guid.NewGuid();

                            var repetitions = new ORM_CMN_CAL_Repetition();
                            repetitions.CMN_CAL_RepetitionID = events.Repetition_RefID;
                            repetitions.IsMonthly            = item.IsMontly;
                            repetitions.IsWeekly             = item.IsWeekly;
                            repetitions.IsDaily            = item.IsDaily;
                            repetitions.IsYearly           = item.IsYearly;
                            repetitions.Tenant_RefID       = securityTicket.TenantID;
                            repetitions.Creation_Timestamp = DateTime.Now;
                            repetitions.Save(Connection, Transaction);

                            if (item.IsWeekly)
                            {
                                var repetitionWeekly = new ORM_CMN_CAL_RepetitionPatterns_Weekly();
                                repetitionWeekly.CMN_CAL_RepetitionPattern_WeeklyID = Guid.NewGuid();
                                repetitionWeekly.Repetition_RefID          = repetitions.CMN_CAL_RepetitionID;
                                repetitionWeekly.Tenant_RefID              = securityTicket.TenantID;
                                repetitionWeekly.Creation_Timestamp        = DateTime.Now;
                                repetitionWeekly.HasRepeatingOn_Fridays    = item.HasRepeatingOn_Fridays;
                                repetitionWeekly.HasRepeatingOn_Mondays    = item.HasRepeatingOn_Mondays;
                                repetitionWeekly.HasRepeatingOn_Saturdays  = item.HasRepeatingOn_Saturdays;
                                repetitionWeekly.HasRepeatingOn_Sundays    = item.HasRepeatingOn_Sundays;
                                repetitionWeekly.HasRepeatingOn_Thursdays  = item.HasRepeatingOn_Thursdays;
                                repetitionWeekly.HasRepeatingOn_Tuesdays   = item.HasRepeatingOn_Tuesdays;
                                repetitionWeekly.HasRepeatingOn_Wednesdays = item.HasRepeatingOn_Wednesdays;
                                repetitionWeekly.Save(Connection, Transaction);
                            }

                            if (item.IsMontly)
                            {
                                var repetitionMontly = new ORM_CMN_CAL_RepetitionPatterns_Monthly();
                                repetitionMontly.CMN_CAL_RepetitionPattern_MonthlyID = Guid.NewGuid();
                                repetitionMontly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                repetitionMontly.Tenant_RefID       = securityTicket.TenantID;
                                repetitionMontly.Creation_Timestamp = DateTime.Now;
                                repetitionMontly.Save(Connection, Transaction);
                            }

                            if (item.IsDaily)
                            {
                                var repetitionDaily = new ORM_CMN_CAL_RepetitionPatterns_Daily();
                                repetitionDaily.CMN_CAL_RepetitionPattern_DailyID = Guid.NewGuid();
                                repetitionDaily.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                repetitionDaily.Tenant_RefID       = securityTicket.TenantID;
                                repetitionDaily.Creation_Timestamp = DateTime.Now;
                                repetitionDaily.Save(Connection, Transaction);
                            }

                            if (item.IsYearly)
                            {
                                var repetitionYearly = new ORM_CMN_CAL_RepetitionPatterns_Yearly();
                                repetitionYearly.CMN_CAL_RepetitionPattern_YearlyID = Guid.NewGuid();
                                repetitionYearly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                repetitionYearly.Tenant_RefID       = securityTicket.TenantID;
                                repetitionYearly.Creation_Timestamp = DateTime.Now;
                                repetitionYearly.Save(Connection, Transaction);
                            }
                        }

                        events.Save(Connection, Transaction);
                    }
                    #endregion

                    #region Edit
                    else
                    {
                        bpAvailability.Save(Connection, Transaction);
                        var eventsQuery = new ORM_CMN_CAL_Event.Query();
                        eventsQuery.IsDeleted    = false;
                        eventsQuery.Tenant_RefID = securityTicket.TenantID;

                        var availability = ORM_CMN_CAL_AVA_Availability.Query.Search(Connection, Transaction, new ORM_CMN_CAL_AVA_Availability.Query()
                        {
                            Tenant_RefID = securityTicket.TenantID,
                            IsDeleted    = false,
                            CMN_CAL_AVA_AvailabilityID = bpAvailability.CMN_CAL_AVA_Availability_RefID
                        }).Single();

                        availability.Office_RefID = item.OfficeID;
                        availability.Save(Connection, Transaction);

                        var dateQuery = new ORM_CMN_CAL_AVA_Date.Query();
                        dateQuery.IsDeleted          = false;
                        dateQuery.Tenant_RefID       = securityTicket.TenantID;
                        dateQuery.Availability_RefID = bpAvailability.CMN_CAL_AVA_Availability_RefID;

                        var date = ORM_CMN_CAL_AVA_Date.Query.Search(Connection, Transaction, dateQuery).Single();
                        date.DateName    = item.AvailabilityDate_Name;
                        date.DateComment = item.Reason;
                        date.Save(Connection, Transaction);

                        eventsQuery.CMN_CAL_EventID = date.CMN_CAL_Event_RefID;

                        var Events = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, eventsQuery).Single();

                        Events.IsRepetitive    = item.IsRepetitive;
                        Events.IsWholeDayEvent = item.IsWholeDay;
                        Events.StartTime       = item.AvailabilityDate_From;
                        Events.EndTime         = item.AvailabilityDate_To;
                        #region delete old repetation if exists

                        var repetitionsQuery = new ORM_CMN_CAL_Repetition.Query();
                        repetitionsQuery.IsDeleted            = false;
                        repetitionsQuery.Tenant_RefID         = securityTicket.TenantID;
                        repetitionsQuery.CMN_CAL_RepetitionID = Events.Repetition_RefID;

                        var repetitions = ORM_CMN_CAL_Repetition.Query.Search(Connection, Transaction, repetitionsQuery).SingleOrDefault();
                        if (repetitions != null)
                        {
                            repetitions.IsDeleted = true;
                            repetitions.Save(Connection, Transaction);

                            if (repetitions.IsWeekly)
                            {
                                ORM_CMN_CAL_RepetitionPatterns_Weekly.Query.SoftDelete(Connection, Transaction, new ORM_CMN_CAL_RepetitionPatterns_Weekly.Query()
                                {
                                    IsDeleted        = false,
                                    Tenant_RefID     = securityTicket.TenantID,
                                    Repetition_RefID = repetitions.CMN_CAL_RepetitionID,
                                });
                            }

                            if (repetitions.IsMonthly)
                            {
                                ORM_CMN_CAL_RepetitionPatterns_Monthly.Query.SoftDelete(Connection, Transaction, new ORM_CMN_CAL_RepetitionPatterns_Monthly.Query()
                                {
                                    Repetition_RefID = repetitions.CMN_CAL_RepetitionID,
                                    Tenant_RefID     = securityTicket.TenantID,
                                    IsDeleted        = false
                                });
                            }

                            if (repetitions.IsDaily)
                            {
                                ORM_CMN_CAL_RepetitionPatterns_Daily.Query.SoftDelete(Connection, Transaction, new ORM_CMN_CAL_RepetitionPatterns_Daily.Query()
                                {
                                    Repetition_RefID = repetitions.CMN_CAL_RepetitionID,
                                    IsDeleted        = false,
                                    Tenant_RefID     = securityTicket.TenantID
                                });
                            }

                            if (repetitions.IsYearly)
                            {
                                ORM_CMN_CAL_RepetitionPatterns_Yearly.Query.SoftDelete(Connection, Transaction, new ORM_CMN_CAL_RepetitionPatterns_Yearly.Query()
                                {
                                    Tenant_RefID     = securityTicket.TenantID,
                                    IsDeleted        = false,
                                    Repetition_RefID = repetitions.CMN_CAL_RepetitionID
                                });
                            }
                        }
                        #endregion
                        if (item.IsRepetitive)
                        {
                            Events.Repetition_RefID          = Guid.NewGuid();
                            repetitions                      = new ORM_CMN_CAL_Repetition();
                            repetitions.CMN_CAL_RepetitionID = Events.Repetition_RefID;
                            repetitions.IsMonthly            = item.IsMontly;
                            repetitions.IsWeekly             = item.IsWeekly;
                            repetitions.IsDaily              = item.IsDaily;
                            repetitions.IsYearly             = item.IsYearly;
                            repetitions.Tenant_RefID         = securityTicket.TenantID;
                            repetitions.Creation_Timestamp   = DateTime.Now;
                            repetitions.Save(Connection, Transaction);

                            if (item.IsWeekly)
                            {
                                var repetitionWeekly = new ORM_CMN_CAL_RepetitionPatterns_Weekly();
                                repetitionWeekly.CMN_CAL_RepetitionPattern_WeeklyID = Guid.NewGuid();
                                repetitionWeekly.Repetition_RefID          = repetitions.CMN_CAL_RepetitionID;
                                repetitionWeekly.Tenant_RefID              = securityTicket.TenantID;
                                repetitionWeekly.Creation_Timestamp        = DateTime.Now;
                                repetitionWeekly.HasRepeatingOn_Fridays    = item.HasRepeatingOn_Fridays;
                                repetitionWeekly.HasRepeatingOn_Mondays    = item.HasRepeatingOn_Mondays;
                                repetitionWeekly.HasRepeatingOn_Saturdays  = item.HasRepeatingOn_Saturdays;
                                repetitionWeekly.HasRepeatingOn_Sundays    = item.HasRepeatingOn_Sundays;
                                repetitionWeekly.HasRepeatingOn_Thursdays  = item.HasRepeatingOn_Thursdays;
                                repetitionWeekly.HasRepeatingOn_Tuesdays   = item.HasRepeatingOn_Tuesdays;
                                repetitionWeekly.HasRepeatingOn_Wednesdays = item.HasRepeatingOn_Wednesdays;
                                repetitionWeekly.Save(Connection, Transaction);
                            }

                            if (item.IsMontly)
                            {
                                var repetitionMontly = new ORM_CMN_CAL_RepetitionPatterns_Monthly();
                                repetitionMontly.CMN_CAL_RepetitionPattern_MonthlyID = Guid.NewGuid();
                                repetitionMontly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                repetitionMontly.Tenant_RefID       = securityTicket.TenantID;
                                repetitionMontly.Creation_Timestamp = DateTime.Now;
                                repetitionMontly.Save(Connection, Transaction);
                            }

                            if (item.IsDaily)
                            {
                                var repetitionDaily = new ORM_CMN_CAL_RepetitionPatterns_Daily();
                                repetitionDaily.CMN_CAL_RepetitionPattern_DailyID = Guid.NewGuid();
                                repetitionDaily.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                repetitionDaily.Tenant_RefID       = securityTicket.TenantID;
                                repetitionDaily.Creation_Timestamp = DateTime.Now;
                                repetitionDaily.Save(Connection, Transaction);
                            }

                            if (item.IsYearly)
                            {
                                var repetitionYearly = new ORM_CMN_CAL_RepetitionPatterns_Yearly();
                                repetitionYearly.CMN_CAL_RepetitionPattern_YearlyID = Guid.NewGuid();
                                repetitionYearly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                repetitionYearly.Tenant_RefID       = securityTicket.TenantID;
                                repetitionYearly.Creation_Timestamp = DateTime.Now;
                                repetitionYearly.Save(Connection, Transaction);
                            }
                        }

                        Events.Save(Connection, Transaction);
                    }
                    #endregion
                }
            }
            var emp = ORM_CMN_BPT_EMP_Employee.Query.Search(Connection, Transaction, new ORM_CMN_BPT_EMP_Employee.Query {
                BusinessParticipant_RefID = Parameter.CMN_BPT_BusinessParticipantID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID
            }).FirstOrDefault();
            var oficeToDoctorList = ORM_CMN_BPT_EMP_Employee_2_Office.Query.Search(Connection, Transaction, new ORM_CMN_BPT_EMP_Employee_2_Office.Query {
                CMN_BPT_EMP_Employee_RefID = emp.CMN_BPT_EMP_EmployeeID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID
            });

            if (Parameter.UpdateSlots)
            {
                foreach (var o2d in oficeToDoctorList)
                {
                    cls_CreateUpdate_Slots_for_Practice.Invoke(Connection, Transaction, new P_L5S_SUSfP_1708()
                    {
                        PracticeID = o2d.CMN_STR_Office_RefID
                    }, securityTicket);
                }
            }

            return(returnValue);

            #endregion UserCode
        }
Пример #17
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5DWS_SDWSD_1130 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_STR_PPS_DailyWorkSchedule_Detail scheduleDetail = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail();
            if (Parameter.CMN_STR_PPS_DailyWorkSchedule_DetailID != Guid.Empty)
            {
                var result = scheduleDetail.Load(Connection, Transaction, Parameter.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.AbsenceReason_RefID = Parameter.AbsenceReason_RefID;
                scheduleDetail.CMN_BPT_EMP_Employee_LeaveRequest_RefID = Parameter.CMN_BPT_EMP_Employee_LeaveRequest_RefID;
                scheduleDetail.CMN_CAL_Event_RefID       = Parameter.CMN_CAL_Event_RefID;
                scheduleDetail.DailyWorkSchedule_RefID   = Parameter.DailyWorkSchedule_RefID;
                scheduleDetail.IsWorkBreak               = Parameter.IsWorkBreak;
                scheduleDetail.SheduleForWorkplace_RefID = Parameter.SheduleForWorkplace_RefID;
                scheduleDetail.Tenant_RefID              = securityTicket.TenantID;
                scheduleDetail.Save(Connection, Transaction);

                ORM_CMN_CAL_Event.Query calEventQuery = new ORM_CMN_CAL_Event.Query();
                calEventQuery.CMN_CAL_EventID = Parameter.CMN_CAL_Event_RefID;
                calEventQuery.IsDeleted       = false;
                calEventQuery.Tenant_RefID    = securityTicket.TenantID;

                ORM_CMN_CAL_Event calEvent = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, calEventQuery).FirstOrDefault();

                calEvent.StartTime           = Parameter.WorkTime_Start;
                calEvent.EndTime             = Parameter.WorkTime_End;
                calEvent.R_EventDuration_sec = (int)Parameter.WorkTime_End.Subtract(Parameter.WorkTime_Start).TotalSeconds;
                calEvent.Save(Connection, Transaction);
            }
            else
            {
                scheduleDetail.AbsenceReason_RefID = Parameter.AbsenceReason_RefID;
                scheduleDetail.CMN_BPT_EMP_Employee_LeaveRequest_RefID = Parameter.CMN_BPT_EMP_Employee_LeaveRequest_RefID;
                scheduleDetail.CMN_CAL_Event_RefID       = Parameter.CMN_CAL_Event_RefID;
                scheduleDetail.DailyWorkSchedule_RefID   = Parameter.DailyWorkSchedule_RefID;
                scheduleDetail.IsWorkBreak               = Parameter.IsWorkBreak;
                scheduleDetail.SheduleForWorkplace_RefID = Parameter.SheduleForWorkplace_RefID;
                scheduleDetail.Tenant_RefID              = securityTicket.TenantID;


                ORM_CMN_CAL_Event calEvent = new ORM_CMN_CAL_Event();
                calEvent.StartTime           = Parameter.WorkTime_Start;
                calEvent.EndTime             = Parameter.WorkTime_End;
                calEvent.R_EventDuration_sec = (int)(Parameter.WorkTime_End - Parameter.WorkTime_Start).TotalSeconds;
                calEvent.Tenant_RefID        = securityTicket.TenantID;
                calEvent.Save(Connection, Transaction);

                scheduleDetail.CMN_CAL_Event_RefID = calEvent.CMN_CAL_EventID;
                scheduleDetail.Save(Connection, Transaction);
            }
            returnValue.Result = scheduleDetail.CMN_STR_PPS_DailyWorkSchedule_DetailID;

            return(returnValue);

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

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

            var position = ORM_CMN_BPT_EMP_EffectiveWorkTime_Position.Query.Search(Connection, Transaction, positionQuery).FirstOrDefault();
            if (position == null)
            {
                return(null);
            }

            ORM_CMN_BPT_EMP_Employee_LeaveRequest leaveRequest = new ORM_CMN_BPT_EMP_Employee_LeaveRequest();
            Guid leaveRequestID = Guid.Empty;
            if (position.CMN_BPT_EMP_Employee_LeaveRequest_RefID != Guid.Empty)
            {
                leaveRequestID = position.CMN_BPT_EMP_Employee_LeaveRequest_RefID;
            }


            if (leaveRequestID != Guid.Empty)
            {
                leaveRequest.Load(Connection, Transaction, leaveRequestID);
                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];
                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 + Parameter.durationInDays;
                    updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours + 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.durationInDays;
                    updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours - Parameter.durationInHours;

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

            position.IsDeleted = true;
            position.Save(Connection, Transaction);

            return(returnValue);

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

            foreach (var item in Parameter.OpeningHours)
            {
                #region Non-working  Hours
                if (item.IsNonWorkingHours)
                {
                    var workTimeExceptionsQuery = new ORM_CMN_STR_Office_WorktimeTemplateException.Query();
                    workTimeExceptionsQuery.IsDeleted    = false;
                    workTimeExceptionsQuery.Tenant_RefID = securityTicket.TenantID;
                    workTimeExceptionsQuery.Office_RefID = Parameter.OfficeID;
                    workTimeExceptionsQuery.CMN_STR_Office_WorktimeTemplateExceptionID = item.TimeID;

                    var workTimeExceptions = ORM_CMN_STR_Office_WorktimeTemplateException.Query.Search(Connection, Transaction, workTimeExceptionsQuery).SingleOrDefault();

                    #region Delete
                    if (item.IsDeleted)
                    {
                        if (workTimeExceptions != null)
                        {
                            workTimeExceptions.IsDeleted = true;
                            workTimeExceptions.Save(Connection, Transaction);
                        }
                    }
                    #endregion
                    else
                    {
                        #region Save
                        if (workTimeExceptions == null)
                        {
                            workTimeExceptions = new ORM_CMN_STR_Office_WorktimeTemplateException();
                            workTimeExceptions.CMN_STR_Office_WorktimeTemplateExceptionID = item.TimeID;
                            workTimeExceptions.CMN_CAL_Event_RefID = Guid.NewGuid();
                            workTimeExceptions.Office_RefID        = Parameter.OfficeID;
                            workTimeExceptions.Description         = item.Description;
                            workTimeExceptions.Tenant_RefID        = securityTicket.TenantID;
                            workTimeExceptions.Creation_Timestamp  = DateTime.Now;
                            workTimeExceptions.Save(Connection, Transaction);


                            var Events = new ORM_CMN_CAL_Event();
                            Events.CMN_CAL_EventID    = workTimeExceptions.CMN_CAL_Event_RefID;
                            Events.IsRepetitive       = item.IsRepetitive;
                            Events.IsWholeDayEvent    = item.IsWholeDay;
                            Events.StartTime          = item.StartDate;
                            Events.EndTime            = item.EndDate;
                            Events.Tenant_RefID       = securityTicket.TenantID;
                            Events.Creation_Timestamp = DateTime.Now;

                            if (item.IsRepetitive)
                            {
                                Events.Repetition_RefID = Guid.NewGuid();

                                var repetitions = new ORM_CMN_CAL_Repetition();
                                repetitions.CMN_CAL_RepetitionID = Events.Repetition_RefID;
                                repetitions.IsMonthly            = item.IsMontly;
                                repetitions.IsWeekly             = item.IsWeekly;
                                repetitions.IsDaily            = item.IsDaily;
                                repetitions.IsYearly           = item.IsYearly;
                                repetitions.Tenant_RefID       = securityTicket.TenantID;
                                repetitions.Creation_Timestamp = DateTime.Now;
                                repetitions.Save(Connection, Transaction);

                                if (item.IsWeekly)
                                {
                                    var repetitionWeekly = new ORM_CMN_CAL_RepetitionPatterns_Weekly();
                                    repetitionWeekly.CMN_CAL_RepetitionPattern_WeeklyID = Guid.NewGuid();
                                    repetitionWeekly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                    repetitionWeekly.Tenant_RefID       = securityTicket.TenantID;
                                    repetitionWeekly.Creation_Timestamp = DateTime.Now;
                                    repetitionWeekly.Save(Connection, Transaction);
                                }

                                if (item.IsMontly)
                                {
                                    var repetitionMontly = new ORM_CMN_CAL_RepetitionPatterns_Monthly();
                                    repetitionMontly.CMN_CAL_RepetitionPattern_MonthlyID = Guid.NewGuid();
                                    repetitionMontly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                    repetitionMontly.Tenant_RefID       = securityTicket.TenantID;
                                    repetitionMontly.Creation_Timestamp = DateTime.Now;
                                    repetitionMontly.Save(Connection, Transaction);
                                }

                                if (item.IsDaily)
                                {
                                    var repetitionDaily = new ORM_CMN_CAL_RepetitionPatterns_Daily();
                                    repetitionDaily.CMN_CAL_RepetitionPattern_DailyID = Guid.NewGuid();
                                    repetitionDaily.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                    repetitionDaily.Tenant_RefID       = securityTicket.TenantID;
                                    repetitionDaily.Creation_Timestamp = DateTime.Now;
                                    repetitionDaily.Save(Connection, Transaction);
                                }

                                if (item.IsYearly)
                                {
                                    var repetitionYearly = new ORM_CMN_CAL_RepetitionPatterns_Yearly();
                                    repetitionYearly.CMN_CAL_RepetitionPattern_YearlyID = Guid.NewGuid();
                                    repetitionYearly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                    repetitionYearly.Tenant_RefID       = securityTicket.TenantID;
                                    repetitionYearly.Creation_Timestamp = DateTime.Now;
                                    repetitionYearly.Save(Connection, Transaction);
                                }
                            }

                            Events.Save(Connection, Transaction);
                        }
                        #endregion
                        #region Edit
                        else
                        {
                            workTimeExceptions.Description = item.Description;
                            workTimeExceptions.Save(Connection, Transaction);

                            var EventsQuery = new ORM_CMN_CAL_Event.Query();
                            EventsQuery.CMN_CAL_EventID = workTimeExceptions.CMN_CAL_Event_RefID;
                            EventsQuery.IsDeleted       = false;
                            EventsQuery.Tenant_RefID    = securityTicket.TenantID;

                            var Events = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, EventsQuery).Single();

                            Events.IsRepetitive    = item.IsRepetitive;
                            Events.IsWholeDayEvent = item.IsWholeDay;
                            Events.StartTime       = item.StartDate;
                            Events.EndTime         = item.EndDate;
                            #region delete old repetation if exists

                            var repetitionsQuery = new ORM_CMN_CAL_Repetition.Query();
                            repetitionsQuery.IsDeleted            = false;
                            repetitionsQuery.Tenant_RefID         = securityTicket.TenantID;
                            repetitionsQuery.CMN_CAL_RepetitionID = Events.Repetition_RefID;

                            var repetitions = ORM_CMN_CAL_Repetition.Query.Search(Connection, Transaction, repetitionsQuery).SingleOrDefault();
                            if (repetitions != null)
                            {
                                repetitions.IsDeleted = true;
                                repetitions.Save(Connection, Transaction);

                                if (repetitions.IsDaily)
                                {
                                    var repetitionDailyQuery = new ORM_CMN_CAL_RepetitionPatterns_Daily.Query();
                                    repetitionDailyQuery.IsDeleted        = false;
                                    repetitionDailyQuery.Tenant_RefID     = securityTicket.TenantID;
                                    repetitionDailyQuery.Repetition_RefID = repetitions.CMN_CAL_RepetitionID;

                                    var repetitionDaily = ORM_CMN_CAL_RepetitionPatterns_Daily.Query.Search(Connection, Transaction, repetitionDailyQuery).Single();
                                    repetitionDaily.IsDeleted = true;
                                    repetitionDaily.Save(Connection, Transaction);
                                }

                                if (repetitions.IsWeekly)
                                {
                                    var repetitionWeeklyQuery = new ORM_CMN_CAL_RepetitionPatterns_Weekly.Query();
                                    repetitionWeeklyQuery.IsDeleted        = false;
                                    repetitionWeeklyQuery.Tenant_RefID     = securityTicket.TenantID;
                                    repetitionWeeklyQuery.Repetition_RefID = repetitions.CMN_CAL_RepetitionID;

                                    var repetitionWeekly = ORM_CMN_CAL_RepetitionPatterns_Weekly.Query.Search(Connection, Transaction, repetitionWeeklyQuery).Single();
                                    repetitionWeekly.IsDeleted = true;
                                    repetitionWeekly.Save(Connection, Transaction);
                                }

                                if (repetitions.IsMonthly)
                                {
                                    var repetitionMontlyQuery = new ORM_CMN_CAL_RepetitionPatterns_Monthly.Query();
                                    repetitionMontlyQuery.IsDeleted        = false;
                                    repetitionMontlyQuery.Tenant_RefID     = securityTicket.TenantID;
                                    repetitionMontlyQuery.Repetition_RefID = repetitions.CMN_CAL_RepetitionID;

                                    var repetitionMontly = ORM_CMN_CAL_RepetitionPatterns_Monthly.Query.Search(Connection, Transaction, repetitionMontlyQuery).Single();
                                    repetitionMontly.IsDeleted = true;
                                    repetitionMontly.Save(Connection, Transaction);
                                }

                                if (repetitions.IsYearly)
                                {
                                    var repetitionYearlyQuery = new ORM_CMN_CAL_RepetitionPatterns_Yearly.Query();
                                    repetitionYearlyQuery.IsDeleted        = false;
                                    repetitionYearlyQuery.Tenant_RefID     = securityTicket.TenantID;
                                    repetitionYearlyQuery.Repetition_RefID = repetitions.CMN_CAL_RepetitionID;

                                    var repetitionYearly = ORM_CMN_CAL_RepetitionPatterns_Yearly.Query.Search(Connection, Transaction, repetitionYearlyQuery).Single();
                                    repetitionYearly.IsDeleted = true;
                                    repetitionYearly.Save(Connection, Transaction);
                                }
                            }
                            #endregion
                            if (item.IsRepetitive)
                            {
                                Events.Repetition_RefID          = Guid.NewGuid();
                                repetitions                      = new ORM_CMN_CAL_Repetition();
                                repetitions.CMN_CAL_RepetitionID = Events.Repetition_RefID;
                                repetitions.IsMonthly            = item.IsMontly;
                                repetitions.IsWeekly             = item.IsWeekly;
                                repetitions.IsDaily              = item.IsDaily;
                                repetitions.IsYearly             = item.IsYearly;
                                repetitions.Tenant_RefID         = securityTicket.TenantID;
                                repetitions.Creation_Timestamp   = DateTime.Now;
                                repetitions.Save(Connection, Transaction);

                                if (item.IsWeekly)
                                {
                                    var repetitionWeekly = new ORM_CMN_CAL_RepetitionPatterns_Weekly();
                                    repetitionWeekly.CMN_CAL_RepetitionPattern_WeeklyID = Guid.NewGuid();
                                    repetitionWeekly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                    repetitionWeekly.Tenant_RefID       = securityTicket.TenantID;
                                    repetitionWeekly.Creation_Timestamp = DateTime.Now;
                                    repetitionWeekly.Save(Connection, Transaction);
                                }

                                if (item.IsMontly)
                                {
                                    var repetitionMontly = new ORM_CMN_CAL_RepetitionPatterns_Monthly();
                                    repetitionMontly.CMN_CAL_RepetitionPattern_MonthlyID = Guid.NewGuid();
                                    repetitionMontly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                    repetitionMontly.Tenant_RefID       = securityTicket.TenantID;
                                    repetitionMontly.Creation_Timestamp = DateTime.Now;
                                    repetitionMontly.Save(Connection, Transaction);
                                }

                                if (item.IsDaily)
                                {
                                    var repetitionDaily = new ORM_CMN_CAL_RepetitionPatterns_Daily();
                                    repetitionDaily.CMN_CAL_RepetitionPattern_DailyID = Guid.NewGuid();
                                    repetitionDaily.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                    repetitionDaily.Tenant_RefID       = securityTicket.TenantID;
                                    repetitionDaily.Creation_Timestamp = DateTime.Now;
                                    repetitionDaily.Save(Connection, Transaction);
                                }

                                if (item.IsYearly)
                                {
                                    var repetitionYearly = new ORM_CMN_CAL_RepetitionPatterns_Yearly();
                                    repetitionYearly.CMN_CAL_RepetitionPattern_YearlyID = Guid.NewGuid();
                                    repetitionYearly.Repetition_RefID   = repetitions.CMN_CAL_RepetitionID;
                                    repetitionYearly.Tenant_RefID       = securityTicket.TenantID;
                                    repetitionYearly.Creation_Timestamp = DateTime.Now;
                                    repetitionYearly.Save(Connection, Transaction);
                                }
                            }

                            Events.Save(Connection, Transaction);
                        }
                        #endregion
                    }
                }
                #endregion
                #region Standard Hours
                else
                {
                    var workTimeTemplateQuery = new ORM_CMN_STR_Office_Weekly_WorkTimeTemplate.Query();
                    workTimeTemplateQuery.IsDeleted    = false;
                    workTimeTemplateQuery.Office_RefID = Parameter.OfficeID;
                    workTimeTemplateQuery.CMN_STR_Office_Weekly_WorkTimeTemplateID = item.TimeID;
                    workTimeTemplateQuery.Tenant_RefID = securityTicket.TenantID;

                    var workTimeTemplate = ORM_CMN_STR_Office_Weekly_WorkTimeTemplate.Query.Search(Connection, Transaction, workTimeTemplateQuery).SingleOrDefault();

                    #region Delete
                    if (item.IsDeleted)
                    {
                        if (workTimeTemplate != null)
                        {
                            workTimeTemplate.IsDeleted = true;
                            workTimeTemplate.Save(Connection, Transaction);
                        }
                    }
                    #endregion
                    else
                    {
                        #region Save
                        if (workTimeTemplate == null)
                        {
                            workTimeTemplate = new ORM_CMN_STR_Office_Weekly_WorkTimeTemplate();
                            workTimeTemplate.CMN_STR_Office_Weekly_WorkTimeTemplateID = item.TimeID;
                            workTimeTemplate.Office_RefID = Parameter.OfficeID;
                            workTimeTemplate.CMN_CAL_WeeklyOfficeHours_Interval_RefID = Guid.NewGuid();
                            workTimeTemplate.Tenant_RefID       = securityTicket.TenantID;
                            workTimeTemplate.Creation_Timestamp = DateTime.Now;
                            workTimeTemplate.Save(Connection, Transaction);

                            ORM_CMN_CAL_WeeklyOfficeHours_Interval WeeklyOfficeHours_Interval = new ORM_CMN_CAL_WeeklyOfficeHours_Interval();
                            WeeklyOfficeHours_Interval.CMN_CAL_WeeklyOfficeHours_IntervalID = workTimeTemplate.CMN_CAL_WeeklyOfficeHours_Interval_RefID;
                            WeeklyOfficeHours_Interval.WeeklyOfficeHours_Template_RefID     = Guid.NewGuid();
                            WeeklyOfficeHours_Interval.Tenant_RefID       = securityTicket.TenantID;
                            WeeklyOfficeHours_Interval.Creation_Timestamp = DateTime.Now;
                            WeeklyOfficeHours_Interval.IsMonday           = item.IsMonday;
                            WeeklyOfficeHours_Interval.IsTuesday          = item.IsTuesday;
                            WeeklyOfficeHours_Interval.IsWednesday        = item.IsWednesday;
                            WeeklyOfficeHours_Interval.IsThursday         = item.IsThursday;
                            WeeklyOfficeHours_Interval.IsFriday           = item.IsFriday;
                            WeeklyOfficeHours_Interval.IsSaturday         = item.IsSaturday;
                            WeeklyOfficeHours_Interval.IsSunday           = item.IsSunday;
                            WeeklyOfficeHours_Interval.IsWholeDay         = item.IsWholeDay;
                            WeeklyOfficeHours_Interval.TimeFrom_InMinutes = item.TimeFrom_InMinutes;
                            WeeklyOfficeHours_Interval.TimeTo_InMinutes   = item.TimeTo_InMinutes;
                            WeeklyOfficeHours_Interval.Save(Connection, Transaction);

                            ORM_CMN_CAL_WeeklyOfficeHours_Template WeeklyOfficeHours_Template = new ORM_CMN_CAL_WeeklyOfficeHours_Template();
                            WeeklyOfficeHours_Template.CMN_CAL_WeeklyOfficeHours_TemplateID = WeeklyOfficeHours_Interval.WeeklyOfficeHours_Template_RefID;
                            WeeklyOfficeHours_Template.OfficeHoursTemplate_Name             = item.OfficeHoursTemplate_Name;
                            WeeklyOfficeHours_Template.Creation_Timestamp = DateTime.Now;
                            WeeklyOfficeHours_Template.Tenant_RefID       = securityTicket.TenantID;
                            WeeklyOfficeHours_Template.Save(Connection, Transaction);
                        }
                        else
                        #endregion
                        #region Edit
                        {
                            var WeeklyOfficeHours_IntervalQuery = new ORM_CMN_CAL_WeeklyOfficeHours_Interval.Query();
                            WeeklyOfficeHours_IntervalQuery.IsDeleted    = false;
                            WeeklyOfficeHours_IntervalQuery.Tenant_RefID = securityTicket.TenantID;
                            WeeklyOfficeHours_IntervalQuery.CMN_CAL_WeeklyOfficeHours_IntervalID = workTimeTemplate.CMN_CAL_WeeklyOfficeHours_Interval_RefID;

                            var WeeklyOfficeHours_Interval = ORM_CMN_CAL_WeeklyOfficeHours_Interval.Query.Search(Connection, Transaction, WeeklyOfficeHours_IntervalQuery).Single();

                            WeeklyOfficeHours_Interval.IsWholeDay         = item.IsWholeDay;
                            WeeklyOfficeHours_Interval.TimeFrom_InMinutes = item.TimeFrom_InMinutes;
                            WeeklyOfficeHours_Interval.TimeTo_InMinutes   = item.TimeTo_InMinutes;
                            WeeklyOfficeHours_Interval.Save(Connection, Transaction);

                            var WeeklyOfficeHours_TemplateQuery = new ORM_CMN_CAL_WeeklyOfficeHours_Template.Query();
                            WeeklyOfficeHours_TemplateQuery.IsDeleted    = false;
                            WeeklyOfficeHours_TemplateQuery.Tenant_RefID = securityTicket.TenantID;
                            WeeklyOfficeHours_TemplateQuery.CMN_CAL_WeeklyOfficeHours_TemplateID = WeeklyOfficeHours_Interval.WeeklyOfficeHours_Template_RefID;

                            var WeeklyOfficeHours_Template = ORM_CMN_CAL_WeeklyOfficeHours_Template.Query.Search(Connection, Transaction, WeeklyOfficeHours_TemplateQuery).Single();

                            WeeklyOfficeHours_Template.OfficeHoursTemplate_Name = item.OfficeHoursTemplate_Name;
                            WeeklyOfficeHours_Template.Save(Connection, Transaction);
                        }
                        #endregion
                    }
                }
                #endregion
            }

            if (Parameter.UpdateSlots)
            {
                cls_CreateUpdate_Slots_for_Practice.Invoke(Connection, Transaction, new P_L5S_SUSfP_1708()
                {
                    PracticeID = Parameter.OfficeID
                }, securityTicket);
            }

            return(returnValue);

            #endregion UserCode
        }