Exemple #1
0
        protected static FR_L5EM_GENFT_1344_Array Execute(DbConnection Connection, DbTransaction Transaction, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L5EM_GENFT_1344_Array();

            List <L5EM_GENFT_1344>         employeeResultList = new List <L5EM_GENFT_1344>();
            ORM_CMN_BPT_EMP_Employee.Query employeeQuery      = new ORM_CMN_BPT_EMP_Employee.Query();
            employeeQuery.IsDeleted    = false;
            employeeQuery.Tenant_RefID = securityTicket.TenantID;
            List <ORM_CMN_BPT_EMP_Employee> employeeList = ORM_CMN_BPT_EMP_Employee.Query.Search(Connection, Transaction, employeeQuery);

            foreach (var employeeItem in employeeList)
            {
                L5EM_GENFT_1344          result   = new L5EM_GENFT_1344();
                ORM_CMN_BPT_EMP_Employee employee = new ORM_CMN_BPT_EMP_Employee();
                employee.Load(Connection, Transaction, employeeItem.CMN_BPT_EMP_EmployeeID);
                result.CMN_BPT_EMP_EmployeeID = employeeItem.CMN_BPT_EMP_EmployeeID;

                ORM_CMN_BPT_BusinessParticipant businessParticipant = new ORM_CMN_BPT_BusinessParticipant();
                businessParticipant.Load(Connection, Transaction, employee.BusinessParticipant_RefID);


                ORM_CMN_PER_PersonInfo personInfo = new ORM_CMN_PER_PersonInfo();
                personInfo.Load(Connection, Transaction, businessParticipant.IfNaturalPerson_CMN_PER_PersonInfo_RefID);
                result.FirstName = personInfo.FirstName;
                result.LastName  = personInfo.LastName;
                employeeResultList.Add(result);

                //Employee workplace history
                ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query employeeWorkplaceAssignmentsQuery = new ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query();
                employeeWorkplaceAssignmentsQuery.CMN_BPT_EMP_Employee_RefID = employee.CMN_BPT_EMP_EmployeeID;
                employeeWorkplaceAssignmentsQuery.Tenant_RefID = securityTicket.TenantID;
                employeeWorkplaceAssignmentsQuery.IsDeleted    = false;
                List <ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment> employeeWorkplaceAssignemntsList = ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query.Search(Connection, Transaction, employeeWorkplaceAssignmentsQuery);
                List <L5EM_GENFT_1344_EmployeeWorkplaceHistory>     employeeWorkplaceAssignments     = new List <L5EM_GENFT_1344_EmployeeWorkplaceHistory>();

                foreach (var workplaceAssignemns in employeeWorkplaceAssignemntsList)
                {
                    L5EM_GENFT_1344_EmployeeWorkplaceHistory item = new L5EM_GENFT_1344_EmployeeWorkplaceHistory();
                    item.BoundTo_Workplace_RefID = workplaceAssignemns.BoundTo_Workplace_RefID;
                    item.CMN_BPT_EMP_Employee_PlanGroup_RefID       = workplaceAssignemns.CMN_BPT_EMP_Employee_PlanGroup_RefID;
                    item.CMN_BPT_EMP_Employee_WorkplaceAssignmentID = workplaceAssignemns.CMN_BPT_EMP_Employee_WorkplaceAssignment;
                    item.Default_BreakTime_Template_RefID           = workplaceAssignemns.Default_BreakTime_Template_RefID;
                    item.IsBreakTimeCalculated_Actual   = workplaceAssignemns.IsBreakTimeCalculated_Actual;
                    item.IsBreakTimeCalculated_Planning = workplaceAssignemns.IsBreakTimeCalculated_Planning;
                    item.SequenceNumber = workplaceAssignemns.SequenceNumber;
                    item.WorkplaceAssignment_StartDate = workplaceAssignemns.WorkplaceAssignment_StartDate;

                    employeeWorkplaceAssignments.Add(item);
                }

                result.EmployeeWorkplaceHistory = employeeWorkplaceAssignments.ToArray();
            }
            returnValue.Result = employeeResultList.ToArray();
            //Put your code here
            return(returnValue);

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

            //Put your code here
            ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query workplaceHistoryQuery = new ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query();
            workplaceHistoryQuery.CMN_BPT_EMP_Employee_RefID = Parameter.Employee_RefID;
            workplaceHistoryQuery.Tenant_RefID = securityTicket.TenantID;
            workplaceHistoryQuery.IsDeleted    = false;
            List <ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment> workplaceHistoryList = ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query.Search(Connection, Transaction, workplaceHistoryQuery);

            //delete workplace histories from database witch doesn't exist in passed parameter
            List <ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment> deletedWorkplaceHistoryList = new List <ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment>();
            foreach (var item in workplaceHistoryList)
            {
                if (Parameter.WorkplaceHistories.Any(p => p.CMN_BPT_EMP_Employee_WorkplaceAssignmentID == item.CMN_BPT_EMP_Employee_WorkplaceAssignment))
                {
                    continue;
                }

                item.Remove(Connection, Transaction);
                deletedWorkplaceHistoryList.Add(item);
            }
            workplaceHistoryList = workplaceHistoryList.Except(deletedWorkplaceHistoryList).ToList();

            //add or edit every workplace history from parameter
            foreach (var workplaceHistoryItem in Parameter.WorkplaceHistories)
            {
                ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment workplaceHistory = new ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment();

                if (workplaceHistoryList.Any(e => e.CMN_BPT_EMP_Employee_WorkplaceAssignment == workplaceHistoryItem.CMN_BPT_EMP_Employee_WorkplaceAssignmentID))
                {
                    workplaceHistory.Load(Connection, Transaction, workplaceHistoryItem.CMN_BPT_EMP_Employee_WorkplaceAssignmentID);
                }

                workplaceHistory.BoundTo_Workplace_RefID = workplaceHistoryItem.BoundTo_Workplace_RefID;
                workplaceHistory.CMN_BPT_EMP_Employee_PlanGroup_RefID = workplaceHistoryItem.CMN_BPT_EMP_Employee_PlanGroup_RefID;
                workplaceHistory.CMN_BPT_EMP_Employee_RefID           = Parameter.Employee_RefID;
                workplaceHistory.Default_BreakTime_Template_RefID     = workplaceHistoryItem.Default_BreakTime_Template_RefID;
                workplaceHistory.IsBreakTimeCalculated_Actual         = workplaceHistoryItem.IsBreakTimeCalculated_Actual;
                workplaceHistory.IsBreakTimeCalculated_Planning       = workplaceHistoryItem.IsBreakTimeCalculated_Planning;
                workplaceHistory.SequenceNumber = workplaceHistoryItem.SequenceNumber;
                workplaceHistory.Tenant_RefID   = securityTicket.TenantID;
                workplaceHistory.WorkplaceAssignment_StartDate = workplaceHistoryItem.WorkplaceAssignment_StartDate;

                workplaceHistory.Save(Connection, Transaction);
            }

            return(returnValue);

            #endregion UserCode
        }
        protected static FR_L5EM_GEFT_0959_Array Execute(DbConnection Connection, DbTransaction Transaction, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L5EM_GEFT_0959_Array();
            List <L5EM_GEFT_0959>          employeeResultList = new List <L5EM_GEFT_0959>();
            ORM_CMN_BPT_EMP_Employee.Query employeeQuery      = new ORM_CMN_BPT_EMP_Employee.Query();
            employeeQuery.IsDeleted    = false;
            employeeQuery.Tenant_RefID = securityTicket.TenantID;
            List <ORM_CMN_BPT_EMP_Employee> employeeList = ORM_CMN_BPT_EMP_Employee.Query.Search(Connection, Transaction, employeeQuery);

            foreach (var employeeItem in employeeList)
            {
                L5EM_GEFT_0959           result   = new L5EM_GEFT_0959();
                ORM_CMN_BPT_EMP_Employee employee = new ORM_CMN_BPT_EMP_Employee();
                employee.Load(Connection, Transaction, employeeItem.CMN_BPT_EMP_EmployeeID);
                result.CMN_BPT_EMP_EmployeeID = employee.CMN_BPT_EMP_EmployeeID;
                result.Staff_Number           = employee.Staff_Number;
                result.StandardFunction       = employee.StandardFunction;

                ORM_USR_Account.Query accountQuery = new ORM_USR_Account.Query();
                accountQuery.BusinessParticipant_RefID = employee.BusinessParticipant_RefID;
                accountQuery.Tenant_RefID = securityTicket.TenantID;
                accountQuery.IsDeleted    = false;
                ORM_USR_Account account = ORM_USR_Account.Query.Search(Connection, Transaction, accountQuery).FirstOrDefault();
                if (account != null)
                {
                    result.USR_AccountID = account.USR_AccountID;
                }

                ORM_CMN_BPT_BusinessParticipant businessParticipant = new ORM_CMN_BPT_BusinessParticipant();
                businessParticipant.Load(Connection, Transaction, employee.BusinessParticipant_RefID);

                result.CMN_BPT_BusinessParticipantID = businessParticipant.CMN_BPT_BusinessParticipantID;
                result.DisplayName = businessParticipant.DisplayName;

                ORM_CMN_PER_PersonInfo personInfo = new ORM_CMN_PER_PersonInfo();
                personInfo.Load(Connection, Transaction, businessParticipant.IfNaturalPerson_CMN_PER_PersonInfo_RefID);
                result.CMN_PER_PersonInfoID = personInfo.CMN_PER_PersonInfoID;
                result.FirstName            = personInfo.FirstName;
                result.LastName             = personInfo.LastName;
                result.PrimaryEmail         = personInfo.PrimaryEmail;
                result.Title = personInfo.Title;
                result.ProfileImage_Document_RefID = personInfo.ProfileImage_Document_RefID;
                result.BirthDate = personInfo.BirthDate;

                ORM_CMN_BPT_EMP_EmploymentRelationship.Query workingContractQuery = new ORM_CMN_BPT_EMP_EmploymentRelationship.Query();
                workingContractQuery.Employee_RefID = employee.CMN_BPT_EMP_EmployeeID;
                workingContractQuery.IsDeleted      = false;
                workingContractQuery.Tenant_RefID   = securityTicket.TenantID;
                ORM_CMN_BPT_EMP_EmploymentRelationship employmentRelationship = ORM_CMN_BPT_EMP_EmploymentRelationship.Query.Search(Connection, Transaction, workingContractQuery).FirstOrDefault();

                result.CMN_BPT_EMP_EmploymentRelationshipID = employmentRelationship.CMN_BPT_EMP_EmploymentRelationshipID;
                result.Work_StartDate = employmentRelationship.Work_StartDate;
                result.Work_EndDate   = employmentRelationship.Work_EndDate;

                //Address
                if (personInfo.Address_RefID != Guid.Empty)
                {
                    ORM_CMN_Address address = new ORM_CMN_Address();
                    address.Load(Connection, Transaction, personInfo.Address_RefID);
                    result.CMN_AddressID = address.CMN_AddressID;
                    result.Street_Name   = address.Street_Name;
                    result.Street_Number = address.Street_Number;
                    result.City_AdministrativeDistrict = address.City_AdministrativeDistrict;
                    result.City_Region     = address.City_Region;
                    result.City_Name       = address.City_Name;
                    result.City_PostalCode = address.City_PostalCode;
                    result.Province_Name   = address.Province_Name;
                    result.Country_Name    = address.Country_Name;
                    result.Country_ISOCode = address.Country_ISOCode;
                }

                //Contacts
                ORM_CMN_PER_CommunicationContact.Query comunicationContactQuery = new ORM_CMN_PER_CommunicationContact.Query();
                comunicationContactQuery.PersonInfo_RefID = personInfo.CMN_PER_PersonInfoID;
                comunicationContactQuery.Tenant_RefID     = securityTicket.TenantID;
                comunicationContactQuery.IsDeleted        = false;
                List <ORM_CMN_PER_CommunicationContact> comunicationContacts       = ORM_CMN_PER_CommunicationContact.Query.Search(Connection, Transaction, comunicationContactQuery);
                List <L5EM_GEFT_0959_Contacts>          resultComunicationContacts = new List <L5EM_GEFT_0959_Contacts>();
                foreach (var comunicationContact in comunicationContacts)
                {
                    ORM_CMN_PER_CommunicationContact_Type contactType = new ORM_CMN_PER_CommunicationContact_Type();
                    contactType.Load(Connection, Transaction, comunicationContact.CMN_PER_CommunicationContactID);
                    L5EM_GEFT_0959_Contacts resultComunicationContact = new L5EM_GEFT_0959_Contacts();
                    resultComunicationContact.CMN_PER_CommunicationContact_TypeID = contactType.CMN_PER_CommunicationContact_TypeID;
                    resultComunicationContact.CMN_PER_CommunicationContactID      = comunicationContact.CMN_PER_CommunicationContactID;
                    resultComunicationContact.Content = comunicationContact.Content;
                    resultComunicationContact.Type    = contactType.Type;
                    resultComunicationContacts.Add(resultComunicationContact);
                }
                result.Contacts = resultComunicationContacts.ToArray();


                //Employee workplace history
                ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query employeeWorkplaceAssignmentsQuery = new ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query();
                employeeWorkplaceAssignmentsQuery.CMN_BPT_EMP_Employee_RefID = employee.CMN_BPT_EMP_EmployeeID;
                employeeWorkplaceAssignmentsQuery.Tenant_RefID = securityTicket.TenantID;
                employeeWorkplaceAssignmentsQuery.IsDeleted    = false;
                List <ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment> employeeWorkplaceAssignemntsList = ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query.Search(Connection, Transaction, employeeWorkplaceAssignmentsQuery);
                List <L5EM_GEFT_0959_EmployeeWorkplaceHistory>      employeeWorkplaceAssignments     = new List <L5EM_GEFT_0959_EmployeeWorkplaceHistory>();

                foreach (var workplaceAssignemns in employeeWorkplaceAssignemntsList)
                {
                    L5EM_GEFT_0959_EmployeeWorkplaceHistory item = new L5EM_GEFT_0959_EmployeeWorkplaceHistory();
                    item.BoundTo_Workplace_RefID = workplaceAssignemns.BoundTo_Workplace_RefID;
                    item.CMN_BPT_EMP_Employee_PlanGroup_RefID       = workplaceAssignemns.CMN_BPT_EMP_Employee_PlanGroup_RefID;
                    item.CMN_BPT_EMP_Employee_WorkplaceAssignmentID = workplaceAssignemns.CMN_BPT_EMP_Employee_WorkplaceAssignment;
                    item.Default_BreakTime_Template_RefID           = workplaceAssignemns.Default_BreakTime_Template_RefID;
                    item.IsBreakTimeCalculated_Actual   = workplaceAssignemns.IsBreakTimeCalculated_Actual;
                    item.IsBreakTimeCalculated_Planning = workplaceAssignemns.IsBreakTimeCalculated_Planning;
                    item.SequenceNumber = workplaceAssignemns.SequenceNumber;
                    item.WorkplaceAssignment_StartDate = workplaceAssignemns.WorkplaceAssignment_StartDate;

                    employeeWorkplaceAssignments.Add(item);
                }

                result.EmployeeWorkplaceHistory = employeeWorkplaceAssignments.ToArray();


                //Contracts

                ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query contractTermQuery = new ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query();
                contractTermQuery.EmploymentRelationship_RefID = employmentRelationship.CMN_BPT_EMP_EmploymentRelationshipID;
                contractTermQuery.IsDeleted    = false;
                contractTermQuery.Tenant_RefID = securityTicket.TenantID;
                List <ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract> contracts = ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query.Search(Connection, Transaction, contractTermQuery);
                List <L5EM_GEFT_0959_WorkingContracts> resultContracts = new List <L5EM_GEFT_0959_WorkingContracts>();
                foreach (var contractToRelationship in contracts)
                {
                    L5EM_GEFT_0959_WorkingContracts resultContract = new L5EM_GEFT_0959_WorkingContracts();

                    ORM_CMN_BPT_EMP_WorkingContract workingContract = new ORM_CMN_BPT_EMP_WorkingContract();
                    workingContract.Load(Connection, Transaction, contractToRelationship.WorkingContract_RefID);
                    if (!workingContract.IsDeleted)
                    {
                        resultContract.CMN_BPT_EMP_WorkingContractID = workingContract.CMN_BPT_EMP_WorkingContractID;
                        resultContract.EmploymentRelationshipToWorkingContractAssignmentID = contractToRelationship.AssignmentID;
                        resultContract.IsWorkingContract_Active     = contractToRelationship.IsContract_Active;
                        resultContract.Contract_StartDate           = workingContract.Contract_StartDate;
                        resultContract.Contract_EndDate             = workingContract.Contract_EndDate;
                        resultContract.IsContractEndDateDefined     = workingContract.IsContractEndDateDefined;
                        resultContract.IsWorkTimeCalculated_InDays  = workingContract.IsWorkTimeCalculated_InDays;
                        resultContract.IsWorkTimeCalculated_InHours = workingContract.IsWorkTimeCalculated_InHours;
                        resultContract.R_WorkTime_DaysPerWeek       = workingContract.R_WorkTime_DaysPerWeek;
                        resultContract.R_WorkTime_HoursPerWeek      = workingContract.R_WorkTime_HoursPerWeek;

                        //Office hours
                        ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay.Query workingContractTermToWorkingDayQuery = new ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay.Query();
                        workingContractTermToWorkingDayQuery.CMN_BPT_EMP_WorkingContract_RefID = workingContract.CMN_BPT_EMP_WorkingContractID;
                        workingContractTermToWorkingDayQuery.Tenant_RefID = securityTicket.TenantID;
                        workingContractTermToWorkingDayQuery.IsDeleted    = false;
                        List <ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay> workingDayAssigments    = ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay.Query.Search(Connection, Transaction, workingContractTermToWorkingDayQuery);
                        List <L5EM_GEFT_0959_WeeklyOfficeHours>             resultWeeklyOfficeHours = new List <L5EM_GEFT_0959_WeeklyOfficeHours>();
                        foreach (var workingDayAssigment in workingDayAssigments)
                        {
                            ORM_CMN_CAL_WeeklyOfficeHours_Interval interval = new ORM_CMN_CAL_WeeklyOfficeHours_Interval();
                            interval.Load(Connection, Transaction, workingDayAssigment.CMN_CAL_WeeklyOfficeHours_Interval_RefID);

                            L5EM_GEFT_0959_WeeklyOfficeHours resultOfficeHour = new L5EM_GEFT_0959_WeeklyOfficeHours();
                            resultOfficeHour.CMN_CAL_WeeklyOfficeHours_IntervalID = interval.CMN_CAL_WeeklyOfficeHours_IntervalID;
                            resultOfficeHour.IsFriday           = interval.IsFriday;
                            resultOfficeHour.IsMonday           = interval.IsMonday;
                            resultOfficeHour.IsSaturday         = interval.IsSaturday;
                            resultOfficeHour.IsSunday           = interval.IsSunday;
                            resultOfficeHour.IsThursday         = interval.IsThursday;
                            resultOfficeHour.IsTuesday          = interval.IsTuesday;
                            resultOfficeHour.IsWednesday        = interval.IsWednesday;
                            resultOfficeHour.IsWholeDay         = interval.IsWholeDay;
                            resultOfficeHour.TimeFrom_InMinutes = interval.TimeFrom_InMinutes;
                            resultOfficeHour.TimeTo_InMinutes   = interval.TimeTo_InMinutes;
                            resultWeeklyOfficeHours.Add(resultOfficeHour);
                        }
                        resultContract.WeeklyOfficeHours = resultWeeklyOfficeHours.ToArray();


                        //Allowed absence reasons
                        ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason.Query AllowedAbsenceReasonQuery = new ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason.Query();
                        AllowedAbsenceReasonQuery.WorkingContract_RefID = resultContract.CMN_BPT_EMP_WorkingContractID;
                        AllowedAbsenceReasonQuery.Tenant_RefID          = securityTicket.TenantID;
                        AllowedAbsenceReasonQuery.IsDeleted             = false;
                        List <ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason> allowedAbsenceReasons       = ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason.Query.Search(Connection, Transaction, AllowedAbsenceReasonQuery);
                        List <L5EM_GEFT_0959_WorkingContractToLeaveRequest>         resultAllowedAbsenceReasons = new List <L5EM_GEFT_0959_WorkingContractToLeaveRequest>();
                        foreach (var allowedAbsenceReason in allowedAbsenceReasons)
                        {
                            ORM_CMN_BPT_STA_AbsenceReason absenceReason = new ORM_CMN_BPT_STA_AbsenceReason();
                            absenceReason.Load(Connection, Transaction, allowedAbsenceReason.STA_AbsenceReason_RefID);

                            L5EM_GEFT_0959_WorkingContractToLeaveRequest resultReasonresultReason = new L5EM_GEFT_0959_WorkingContractToLeaveRequest();
                            resultReasonresultReason.CMN_BPT_EMP_Employee_WorkingContract_AllowedAbsenceReasonID = allowedAbsenceReason.CMN_BPT_EMP_WorkingContract_AllowedAbsenceReasonID;
                            resultReasonresultReason.STA_AbsenceReason_RefID          = absenceReason.CMN_BPT_STA_AbsenceReasonID;
                            resultReasonresultReason.IsAbsenceCalculated_InDays       = allowedAbsenceReason.IsAbsenceCalculated_InDays;
                            resultReasonresultReason.IsAbsenceCalculated_InHours      = allowedAbsenceReason.IsAbsenceCalculated_InHours;
                            resultReasonresultReason.ContractAllowedAbsence_per_Month = allowedAbsenceReason.ContractAllowedAbsence_per_Month;
                            resultAllowedAbsenceReasons.Add(resultReasonresultReason);
                        }
                        resultContract.WorkingContractToLeaveRequest = resultAllowedAbsenceReasons.ToArray();

                        resultContracts.Add(resultContract);
                    }
                }
                result.WorkingContracts = resultContracts.ToArray();
                employeeResultList.Add(result);
            }
            returnValue.Result = employeeResultList.ToArray();
            //Put your code here
            return(returnValue);

            #endregion UserCode
        }
Exemple #4
0
        protected static FR_L5EM_GEFU_445 Execute(DbConnection Connection, DbTransaction Transaction, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            //Leave UserCode region to enable user code saving
            #region UserCode
            var           returnValue = new FR_L5EM_GEFU_445();
            L5EM_GEFU_445 result      = new L5EM_GEFU_445();


            ORM_USR_Account account = new ORM_USR_Account();
            account.Load(Connection, Transaction, securityTicket.AccountID);
            if (account.USR_AccountID == Guid.Empty)
            {
                return(null);
            }

            ORM_CMN_BPT_EMP_Employee.Query employeeQuery = new ORM_CMN_BPT_EMP_Employee.Query();
            employeeQuery.IsDeleted    = false;
            employeeQuery.Tenant_RefID = securityTicket.TenantID;
            employeeQuery.BusinessParticipant_RefID = account.BusinessParticipant_RefID;
            List <ORM_CMN_BPT_EMP_Employee> employeeList = ORM_CMN_BPT_EMP_Employee.Query.Search(Connection, Transaction, employeeQuery);
            if (employeeList.Count != 0)
            {
                ORM_CMN_BPT_EMP_Employee employee = employeeList[0];
                result.CMN_BPT_EMP_EmployeeID = employee.CMN_BPT_EMP_EmployeeID;
                result.Staff_Number           = employee.Staff_Number;
                result.StandardFunction       = employee.StandardFunction;


                ORM_CMN_BPT_BusinessParticipant businessParticipant = new ORM_CMN_BPT_BusinessParticipant();
                businessParticipant.Load(Connection, Transaction, employee.BusinessParticipant_RefID);

                ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query employeeWorkplaceAssignmentsQuery = new ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query();
                employeeWorkplaceAssignmentsQuery.CMN_BPT_EMP_Employee_RefID = employee.CMN_BPT_EMP_EmployeeID;
                employeeWorkplaceAssignmentsQuery.Tenant_RefID = securityTicket.TenantID;
                employeeWorkplaceAssignmentsQuery.IsDeleted    = false;
                List <ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment> employeeWorkplaceAssignemntsList = ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query.Search(Connection, Transaction, employeeWorkplaceAssignmentsQuery);
                List <L5EM_GEFU_445_EmployeeWorkplaceHistory>       employeeWorkplaceAssignments     = new List <L5EM_GEFU_445_EmployeeWorkplaceHistory>();

                foreach (var workplaceAssignemns in employeeWorkplaceAssignemntsList)
                {
                    L5EM_GEFU_445_EmployeeWorkplaceHistory item = new L5EM_GEFU_445_EmployeeWorkplaceHistory();
                    item.BoundTo_Workplace_RefID = workplaceAssignemns.BoundTo_Workplace_RefID;
                    item.CMN_BPT_EMP_Employee_PlanGroup_RefID       = workplaceAssignemns.CMN_BPT_EMP_Employee_PlanGroup_RefID;
                    item.CMN_BPT_EMP_Employee_WorkplaceAssignmentID = workplaceAssignemns.CMN_BPT_EMP_Employee_WorkplaceAssignment;
                    item.Default_BreakTime_Template_RefID           = workplaceAssignemns.Default_BreakTime_Template_RefID;
                    item.IsBreakTimeCalculated_Actual   = workplaceAssignemns.IsBreakTimeCalculated_Actual;
                    item.IsBreakTimeCalculated_Planning = workplaceAssignemns.IsBreakTimeCalculated_Planning;
                    item.SequenceNumber = workplaceAssignemns.SequenceNumber;
                    item.WorkplaceAssignment_StartDate = workplaceAssignemns.WorkplaceAssignment_StartDate;

                    employeeWorkplaceAssignments.Add(item);
                }

                result.EmployeeWorkplaceHistory = employeeWorkplaceAssignments.ToArray();
            }
            returnValue.Result = result;
            //Put your code here
            return(returnValue);

            #endregion UserCode
        }
Exemple #5
0
        protected static FR_L5EM_GEWPGFSD_1437_Array Execute(DbConnection Connection, DbTransaction Transaction, P_L5EM_GEWPGFSD_1437 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L5EM_GEWPGFSD_1437_Array();
            //Put your code here

            ORM_CMN_BPT_EMP_Employee.Query empQuery = new ORM_CMN_BPT_EMP_Employee.Query();
            empQuery.IsDeleted    = false;
            empQuery.Tenant_RefID = securityTicket.TenantID;

            var allEmployees = ORM_CMN_BPT_EMP_Employee.Query.Search(Connection, Transaction, empQuery);

            List <L5EM_GEWPGFSD_1437> resultList = new List <L5EM_GEWPGFSD_1437>();

            foreach (var employee in allEmployees)
            {
                L5EM_GEWPGFSD_1437 resultItem = new L5EM_GEWPGFSD_1437();
                resultItem.EmployeeID = employee.CMN_BPT_EMP_EmployeeID;

                ORM_CMN_BPT_BusinessParticipant.Query bptQuery = new ORM_CMN_BPT_BusinessParticipant.Query();
                bptQuery.CMN_BPT_BusinessParticipantID = employee.BusinessParticipant_RefID;
                bptQuery.IsDeleted    = false;
                bptQuery.Tenant_RefID = securityTicket.TenantID;

                var bpt = ORM_CMN_BPT_BusinessParticipant.Query.Search(Connection, Transaction, bptQuery).FirstOrDefault();

                ORM_CMN_PER_PersonInfo.Query infoQuery = new ORM_CMN_PER_PersonInfo.Query();
                infoQuery.CMN_PER_PersonInfoID = bpt.IfNaturalPerson_CMN_PER_PersonInfo_RefID;
                infoQuery.IsDeleted            = false;
                infoQuery.Tenant_RefID         = securityTicket.TenantID;

                var info = ORM_CMN_PER_PersonInfo.Query.Search(Connection, Transaction, infoQuery).FirstOrDefault();

                int age = Parameter.SelectedDate.Year - info.BirthDate.Year;
                if (Parameter.SelectedDate < info.BirthDate.AddYears(age))
                {
                    age--;
                }

                resultItem.Age       = age;
                resultItem.FirstName = info.FirstName;
                resultItem.LastName  = info.LastName;


                ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query wpaQuery = new ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query();
                wpaQuery.CMN_BPT_EMP_Employee_RefID = employee.CMN_BPT_EMP_EmployeeID;
                wpaQuery.IsDeleted    = false;
                wpaQuery.Tenant_RefID = securityTicket.TenantID;

                var allWorkPlaceAssignements = ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query.Search(Connection, Transaction, wpaQuery);

                var workPlaceAssignementsForSelectedDate = allWorkPlaceAssignements.Where(x => x.WorkplaceAssignment_StartDate.Date.CompareTo(Parameter.SelectedDate) <= 0).ToArray();
                if (workPlaceAssignementsForSelectedDate.Count() != 0)
                {
                    var resultingWorkPlaceAssignement = workPlaceAssignementsForSelectedDate.OrderByDescending(x => x.WorkplaceAssignment_StartDate.Ticks).FirstOrDefault();

                    if (resultingWorkPlaceAssignement.CMN_BPT_EMP_Employee_PlanGroup_RefID == Guid.Empty)
                    {
                        resultItem.PlanGroupID   = Guid.Empty;
                        resultItem.PlanGroupName = new Dict();
                        resultItem.Position      = -1;
                    }
                    else
                    {
                        ORM_CMN_BPT_EMP_Employee_PlanGroup.Query pgQuery = new ORM_CMN_BPT_EMP_Employee_PlanGroup.Query();
                        pgQuery.CMN_BPT_EMP_Employee_PlanGroupID = resultingWorkPlaceAssignement.CMN_BPT_EMP_Employee_PlanGroup_RefID;
                        pgQuery.IsDeleted    = false;
                        pgQuery.Tenant_RefID = securityTicket.TenantID;

                        var selectedPlanGroup = ORM_CMN_BPT_EMP_Employee_PlanGroup.Query.Search(Connection, Transaction, pgQuery).FirstOrDefault();

                        if (selectedPlanGroup == null)
                        {
                            resultItem.PlanGroupID   = Guid.Empty;
                            resultItem.PlanGroupName = new Dict();
                            resultItem.Position      = -1;
                        }
                        else
                        {
                            resultItem.PlanGroupID   = selectedPlanGroup.CMN_BPT_EMP_Employee_PlanGroupID;
                            resultItem.PlanGroupName = selectedPlanGroup.PlanGroup_Name;
                            resultItem.Position      = resultingWorkPlaceAssignement.SequenceNumber;
                        }

                        resultItem.IsBreakTimeCalculated_Planning = resultingWorkPlaceAssignement.IsBreakTimeCalculated_Planning;
                        resultItem.IsBreakTimeCalculated_Actual   = resultingWorkPlaceAssignement.IsBreakTimeCalculated_Actual;
                    }
                }
                else
                {
                    continue;
                }

                ORM_CMN_BPT_EMP_EmploymentRelationship.Query employmentRelationshipQuery = new ORM_CMN_BPT_EMP_EmploymentRelationship.Query();
                employmentRelationshipQuery.Employee_RefID = employee.CMN_BPT_EMP_EmployeeID;
                employmentRelationshipQuery.Tenant_RefID   = securityTicket.TenantID;
                employmentRelationshipQuery.IsDeleted      = false;

                ORM_CMN_BPT_EMP_EmploymentRelationship employmentRelationship = ORM_CMN_BPT_EMP_EmploymentRelationship.Query.Search(Connection, Transaction, employmentRelationshipQuery).FirstOrDefault();

                ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query er2wcQuery = new ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query();
                er2wcQuery.EmploymentRelationship_RefID = employmentRelationship.CMN_BPT_EMP_EmploymentRelationshipID;
                er2wcQuery.Tenant_RefID      = securityTicket.TenantID;
                er2wcQuery.IsContract_Active = true;
                er2wcQuery.IsDeleted         = false;



                ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract er2wc = ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query.Search(Connection, Transaction, er2wcQuery).FirstOrDefault();
                if (er2wc != null)
                {
                    ORM_CMN_BPT_EMP_WorkingContract.Query workingContractQuery = new ORM_CMN_BPT_EMP_WorkingContract.Query();
                    workingContractQuery.CMN_BPT_EMP_WorkingContractID = er2wc.WorkingContract_RefID;
                    workingContractQuery.IsDeleted    = false;
                    workingContractQuery.Tenant_RefID = securityTicket.TenantID;

                    ORM_CMN_BPT_EMP_WorkingContract workingContract = ORM_CMN_BPT_EMP_WorkingContract.Query.Search(Connection, Transaction, workingContractQuery).FirstOrDefault();

                    resultItem.IsWorkTimeCalculated_InDays  = workingContract.IsWorkTimeCalculated_InDays;
                    resultItem.IsWorkTimeCalculated_InHours = workingContract.IsWorkTimeCalculated_InHours;

                    ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay.Query wc2wdQuery = new ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay.Query();
                    wc2wdQuery.CMN_BPT_EMP_WorkingContract_RefID = er2wc.WorkingContract_RefID;
                    wc2wdQuery.Tenant_RefID = securityTicket.TenantID;
                    wc2wdQuery.IsDeleted    = false;

                    ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay[] workingContract2workingDays = ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay.Query.Search(Connection, Transaction, wc2wdQuery).ToArray();

                    resultItem.ContractSpecifiedWorkTime_InMinutes = 0;
                    List <WeeklyOfficeHours> listOfWeeklyOfficeHours = new List <WeeklyOfficeHours>();

                    foreach (var workingContract2workingDay in workingContract2workingDays)
                    {
                        ORM_CMN_CAL_WeeklyOfficeHours_Interval.Query weeklyOfficeHoursQuery = new ORM_CMN_CAL_WeeklyOfficeHours_Interval.Query();
                        weeklyOfficeHoursQuery.CMN_CAL_WeeklyOfficeHours_IntervalID = workingContract2workingDay.CMN_CAL_WeeklyOfficeHours_Interval_RefID;
                        weeklyOfficeHoursQuery.Tenant_RefID = securityTicket.TenantID;
                        weeklyOfficeHoursQuery.IsDeleted    = false;

                        ORM_CMN_CAL_WeeklyOfficeHours_Interval weeklyOfficeHours = ORM_CMN_CAL_WeeklyOfficeHours_Interval.Query.Search(Connection, Transaction, weeklyOfficeHoursQuery).FirstOrDefault();

                        switch (Parameter.SelectedDate.DayOfWeek)
                        {
                        case DayOfWeek.Monday:
                            if (weeklyOfficeHours.IsMonday)
                            {
                                resultItem.ContractSpecifiedWorkTime_InMinutes = (int)(weeklyOfficeHours.TimeTo_InMinutes - weeklyOfficeHours.TimeFrom_InMinutes);
                            }
                            break;

                        case DayOfWeek.Tuesday:
                            if (weeklyOfficeHours.IsTuesday)
                            {
                                resultItem.ContractSpecifiedWorkTime_InMinutes = (int)(weeklyOfficeHours.TimeTo_InMinutes - weeklyOfficeHours.TimeFrom_InMinutes);
                            }
                            break;

                        case DayOfWeek.Wednesday:
                            if (weeklyOfficeHours.IsWednesday)
                            {
                                resultItem.ContractSpecifiedWorkTime_InMinutes = (int)(weeklyOfficeHours.TimeTo_InMinutes - weeklyOfficeHours.TimeFrom_InMinutes);
                            }
                            break;

                        case DayOfWeek.Thursday:
                            if (weeklyOfficeHours.IsThursday)
                            {
                                resultItem.ContractSpecifiedWorkTime_InMinutes = (int)(weeklyOfficeHours.TimeTo_InMinutes - weeklyOfficeHours.TimeFrom_InMinutes);
                            }
                            break;

                        case DayOfWeek.Friday:
                            if (weeklyOfficeHours.IsFriday)
                            {
                                resultItem.ContractSpecifiedWorkTime_InMinutes = (int)(weeklyOfficeHours.TimeTo_InMinutes - weeklyOfficeHours.TimeFrom_InMinutes);
                            }
                            break;

                        case DayOfWeek.Saturday:
                            if (weeklyOfficeHours.IsSaturday)
                            {
                                resultItem.ContractSpecifiedWorkTime_InMinutes = (int)(weeklyOfficeHours.TimeTo_InMinutes - weeklyOfficeHours.TimeFrom_InMinutes);
                            }
                            break;

                        case DayOfWeek.Sunday:
                            if (weeklyOfficeHours.IsSunday)
                            {
                                resultItem.ContractSpecifiedWorkTime_InMinutes = (int)(weeklyOfficeHours.TimeTo_InMinutes - weeklyOfficeHours.TimeFrom_InMinutes);
                            }
                            break;
                        }

                        WeeklyOfficeHours newWeeklyOfficeHour = new WeeklyOfficeHours();
                        newWeeklyOfficeHour.CMN_CAL_WeeklyOfficeHours_IntervalID = weeklyOfficeHours.CMN_CAL_WeeklyOfficeHours_IntervalID;
                        newWeeklyOfficeHour.IsFriday           = weeklyOfficeHours.IsFriday;
                        newWeeklyOfficeHour.IsMonday           = weeklyOfficeHours.IsMonday;
                        newWeeklyOfficeHour.IsSaturday         = weeklyOfficeHours.IsSaturday;
                        newWeeklyOfficeHour.IsSunday           = weeklyOfficeHours.IsSunday;
                        newWeeklyOfficeHour.IsThursday         = weeklyOfficeHours.IsThursday;
                        newWeeklyOfficeHour.IsTuesday          = weeklyOfficeHours.IsTuesday;
                        newWeeklyOfficeHour.IsWednesday        = weeklyOfficeHours.IsWednesday;
                        newWeeklyOfficeHour.IsWholeDay         = weeklyOfficeHours.IsWholeDay;
                        newWeeklyOfficeHour.TimeFrom_InMinutes = weeklyOfficeHours.TimeFrom_InMinutes;
                        newWeeklyOfficeHour.TimeTo_InMinutes   = weeklyOfficeHours.TimeTo_InMinutes;

                        listOfWeeklyOfficeHours.Add(newWeeklyOfficeHour);
                    }


                    resultItem.WeeklyOfficeHours = listOfWeeklyOfficeHours.ToArray();
                }
                else
                {
                    continue;
                }

                ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query relationShipToContractQuery = new ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query();
                relationShipToContractQuery.EmploymentRelationship_RefID = employmentRelationship.CMN_BPT_EMP_EmploymentRelationshipID;
                relationShipToContractQuery.IsDeleted    = false;
                relationShipToContractQuery.Tenant_RefID = securityTicket.TenantID;
                List <ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract> relationShipToContracts = ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query.Search(Connection, Transaction, relationShipToContractQuery);
                List <L5EM_GEFE_1150_WorkingContract> resultWorkingContracts = new List <L5EM_GEFE_1150_WorkingContract>();
                foreach (var relationShipToContract in relationShipToContracts)
                {
                    L5EM_GEFE_1150_WorkingContract resultWorkingContract = new L5EM_GEFE_1150_WorkingContract();

                    ORM_CMN_BPT_EMP_WorkingContract workingContractItem = new ORM_CMN_BPT_EMP_WorkingContract();
                    workingContractItem.Load(Connection, Transaction, relationShipToContract.WorkingContract_RefID);
                    resultWorkingContract.CMN_BPT_EMP_WorkingContractID = workingContractItem.CMN_BPT_EMP_WorkingContractID;
                    resultWorkingContract.EmploymentRelationship_2_WorkingContractAssigmentID = relationShipToContract.AssignmentID;
                    resultWorkingContract.IsContract_Active                   = relationShipToContract.IsContract_Active;
                    resultWorkingContract.Contract_StartDate                  = workingContractItem.Contract_StartDate;
                    resultWorkingContract.Contract_EndDate                    = workingContractItem.Contract_EndDate;
                    resultWorkingContract.IsContractEndDateDefined            = workingContractItem.IsContractEndDateDefined;
                    resultWorkingContract.IsWorkTimeCalculated_InDays         = workingContractItem.IsWorkTimeCalculated_InDays;
                    resultWorkingContract.IsWorkTimeCalculated_InHours        = workingContractItem.IsWorkTimeCalculated_InHours;
                    resultWorkingContract.R_WorkTime_DaysPerWeek              = workingContractItem.R_WorkTime_DaysPerWeek;
                    resultWorkingContract.R_WorkTime_HoursPerWeek             = workingContractItem.R_WorkTime_HoursPerWeek;
                    resultWorkingContract.WorkingContract_InCurrency_RefID    = workingContractItem.WorkingContract_InCurrency_RefID;
                    resultWorkingContract.ExtraWorkCalculation_RefID          = workingContractItem.ExtraWorkCalculation_RefID;
                    resultWorkingContract.IsWorktimeChecked_Weekly            = workingContractItem.IsWorktimeChecked_Weekly;
                    resultWorkingContract.IsWorktimeChecked_Monthly           = workingContractItem.IsWorktimeChecked_Monthly;
                    resultWorkingContract.SurchargeCalculation_UseMaximum     = workingContractItem.SurchargeCalculation_UseMaximum;
                    resultWorkingContract.SurchargeCalculation_UseAccumulated = workingContractItem.SurchargeCalculation_UseAccumulated;
                    resultWorkingContract.IsMealAllowanceProvided             = workingContractItem.IsMealAllowanceProvided;
                    resultWorkingContract.WorkingContract_Comment             = workingContractItem.WorkingContract_Comment;

                    ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge.Query contractToExtraWorkSurchargeQuery = new ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge.Query();
                    contractToExtraWorkSurchargeQuery.CMN_BPT_EMP_WorkingContract_RefID = workingContractItem.CMN_BPT_EMP_WorkingContractID;
                    contractToExtraWorkSurchargeQuery.IsDeleted    = false;
                    contractToExtraWorkSurchargeQuery.Tenant_RefID = securityTicket.TenantID;
                    var contractToExtraWorkSurchargeResult = ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge.Query.Search(Connection, Transaction, contractToExtraWorkSurchargeQuery);
                    if (contractToExtraWorkSurchargeResult.Count != 0)
                    {
                        var nightTimeSurcharge    = contractToExtraWorkSurchargeResult.FirstOrDefault(x => x.R_IsNightTimeSurcharge && !x.R_IsSpecialEventSurcharge);
                        var specialEventSurcharge = contractToExtraWorkSurchargeResult.FirstOrDefault(x => x.R_IsSpecialEventSurcharge && !x.R_IsNightTimeSurcharge);

                        if (nightTimeSurcharge != null)
                        {
                            resultWorkingContract.NightTime_Surcharge_RefID = nightTimeSurcharge.CMN_BPT_EMP_ExtraWorkCalculation_Surcharge_RefID;
                            resultWorkingContract.MaximumAllowedNightTimeSurchargeTime_in_mins = nightTimeSurcharge.MaximumAllowedSurchargeTime_in_mins;
                        }

                        if (specialEventSurcharge != null)
                        {
                            resultWorkingContract.SpecialEvent_Surcharge_RefID = specialEventSurcharge.CMN_BPT_EMP_ExtraWorkCalculation_Surcharge_RefID;
                            resultWorkingContract.MaximumAllowedSpecialEventSurchargeTime_in_mins = specialEventSurcharge.MaximumAllowedSurchargeTime_in_mins;
                        }
                    }


                    //Office hours
                    ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay.Query workingContractToWorkingDayQuery = new ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay.Query();
                    workingContractToWorkingDayQuery.CMN_BPT_EMP_WorkingContract_RefID = workingContractItem.CMN_BPT_EMP_WorkingContractID;
                    //workingContractToWorkingDayQuery.Tenant_RefID = securityTicket.TenantID;
                    workingContractToWorkingDayQuery.IsDeleted = false;
                    List <ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay> workingDayAssigments    = ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay.Query.Search(Connection, Transaction, workingContractToWorkingDayQuery);
                    List <L5EM_GEFE_1150_WeeklyOfficeHours>             resultWeeklyOfficeHours = new List <L5EM_GEFE_1150_WeeklyOfficeHours>();
                    foreach (var workingDayAssigment in workingDayAssigments)
                    {
                        ORM_CMN_CAL_WeeklyOfficeHours_Interval interval = new ORM_CMN_CAL_WeeklyOfficeHours_Interval();
                        interval.Load(Connection, Transaction, workingDayAssigment.CMN_CAL_WeeklyOfficeHours_Interval_RefID);

                        L5EM_GEFE_1150_WeeklyOfficeHours resultOfficeHour = new L5EM_GEFE_1150_WeeklyOfficeHours();
                        resultOfficeHour.CMN_CAL_WeeklyOfficeHours_IntervalID = interval.CMN_CAL_WeeklyOfficeHours_IntervalID;
                        resultOfficeHour.IsFriday           = interval.IsFriday;
                        resultOfficeHour.IsMonday           = interval.IsMonday;
                        resultOfficeHour.IsSaturday         = interval.IsSaturday;
                        resultOfficeHour.IsSunday           = interval.IsSunday;
                        resultOfficeHour.IsThursday         = interval.IsThursday;
                        resultOfficeHour.IsTuesday          = interval.IsTuesday;
                        resultOfficeHour.IsWednesday        = interval.IsWednesday;
                        resultOfficeHour.IsWholeDay         = interval.IsWholeDay;
                        resultOfficeHour.TimeFrom_InMinutes = interval.TimeFrom_InMinutes;
                        resultOfficeHour.TimeTo_InMinutes   = interval.TimeTo_InMinutes;
                        resultWeeklyOfficeHours.Add(resultOfficeHour);
                    }
                    resultWorkingContract.WeeklyOfficeHours = resultWeeklyOfficeHours.ToArray();



                    ORM_CMN_BPT_EMP_WorkingContract_2_ContractEmploymentType.Query workingContractTypeQuery = new ORM_CMN_BPT_EMP_WorkingContract_2_ContractEmploymentType.Query();
                    workingContractTypeQuery.CMN_BPT_EMP_Employee_WorkingContract_RefID = workingContractItem.CMN_BPT_EMP_WorkingContractID;
                    workingContractTypeQuery.Tenant_RefID = securityTicket.TenantID;
                    workingContractTypeQuery.IsDeleted    = false;
                    ORM_CMN_BPT_EMP_WorkingContract_2_ContractEmploymentType workingContract_2_ContractEmploymentType = ORM_CMN_BPT_EMP_WorkingContract_2_ContractEmploymentType.Query.Search(Connection, Transaction, workingContractTypeQuery).FirstOrDefault();
                    if (workingContract_2_ContractEmploymentType != null)
                    {
                        ORM_CMN_BPT_EMP_WorkingContract_EmploymentType EmploymentType = new ORM_CMN_BPT_EMP_WorkingContract_EmploymentType();
                        EmploymentType.Load(Connection, Transaction, workingContract_2_ContractEmploymentType.CMN_BPT_EMP_WorkingContract_EmploymentTypeID);
                        if (EmploymentType.CMN_BPT_EMP_Employee_WorkingContract_EmploymentTypeID != Guid.Empty)
                        {
                            resultWorkingContract.TypeOfEmployment = int.Parse(EmploymentType.GlobalPropertyMatchingID);
                        }
                    }


                    //Allowed absence reasons
                    ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason.Query AllowedAbsenceReasonQuery = new ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason.Query();
                    AllowedAbsenceReasonQuery.WorkingContract_RefID = resultWorkingContract.CMN_BPT_EMP_WorkingContractID;
                    AllowedAbsenceReasonQuery.Tenant_RefID          = securityTicket.TenantID;
                    AllowedAbsenceReasonQuery.IsDeleted             = false;
                    List <ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason> allowedAbsenceReasons       = ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason.Query.Search(Connection, Transaction, AllowedAbsenceReasonQuery);
                    List <L5EM_GEFE_1150_WorkingContractToLeaveRequest>         resultAllowedAbsenceReasons = new List <L5EM_GEFE_1150_WorkingContractToLeaveRequest>();
                    foreach (var allowedAbsenceReason in allowedAbsenceReasons)
                    {
                        ORM_CMN_BPT_STA_AbsenceReason absenceReason = new ORM_CMN_BPT_STA_AbsenceReason();
                        absenceReason.Load(Connection, Transaction, allowedAbsenceReason.STA_AbsenceReason_RefID);

                        L5EM_GEFE_1150_WorkingContractToLeaveRequest resultReasonresultReason = new L5EM_GEFE_1150_WorkingContractToLeaveRequest();
                        resultReasonresultReason.CMN_BPT_EMP_WorkingContract_AllowedAbsenceReasonID = allowedAbsenceReason.CMN_BPT_EMP_WorkingContract_AllowedAbsenceReasonID;
                        resultReasonresultReason.CMN_BPT_STA_AbsenceReasonID      = absenceReason.CMN_BPT_STA_AbsenceReasonID;
                        resultReasonresultReason.IsAbsenceCalculated_InDays       = allowedAbsenceReason.IsAbsenceCalculated_InDays;
                        resultReasonresultReason.IsAbsenceCalculated_InHours      = allowedAbsenceReason.IsAbsenceCalculated_InHours;
                        resultReasonresultReason.ContractAllowedAbsence_per_Month = allowedAbsenceReason.ContractAllowedAbsence_per_Month;
                        resultReasonresultReason.AbsenceReasonName = absenceReason.Name;
                        resultReasonresultReason.CMN_BPT_EMP_EmploymentRelationship_RefID = employmentRelationship.CMN_BPT_EMP_EmploymentRelationshipID;
                        resultAllowedAbsenceReasons.Add(resultReasonresultReason);
                    }
                    resultWorkingContract.WorkingContractToLeaveRequest = resultAllowedAbsenceReasons.ToArray();

                    resultWorkingContracts.Add(resultWorkingContract);
                }
                resultItem.AllWorkingContracts = resultWorkingContracts.ToArray();

                //Employee workplace history
                ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query employeeWorkplaceAssignmentsQuery = new ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query();
                employeeWorkplaceAssignmentsQuery.CMN_BPT_EMP_Employee_RefID = employee.CMN_BPT_EMP_EmployeeID;
                employeeWorkplaceAssignmentsQuery.Tenant_RefID = securityTicket.TenantID;
                employeeWorkplaceAssignmentsQuery.IsDeleted    = false;
                List <ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment> employeeWorkplaceAssignemntsList = ORM_CMN_BPT_EMP_Employee_WorkplaceAssignment.Query.Search(Connection, Transaction, employeeWorkplaceAssignmentsQuery);
                List <L5EM_GEFE_1150_EmployeeWorkplaceHistory>      employeeWorkplaceAssignments     = new List <L5EM_GEFE_1150_EmployeeWorkplaceHistory>();

                foreach (var workplaceAssignemns in employeeWorkplaceAssignemntsList)
                {
                    L5EM_GEFE_1150_EmployeeWorkplaceHistory item = new L5EM_GEFE_1150_EmployeeWorkplaceHistory();
                    item.BoundTo_Workplace_RefID = workplaceAssignemns.BoundTo_Workplace_RefID;
                    item.CMN_BPT_EMP_Employee_PlanGroup_RefID       = workplaceAssignemns.CMN_BPT_EMP_Employee_PlanGroup_RefID;
                    item.CMN_BPT_EMP_Employee_WorkplaceAssignmentID = workplaceAssignemns.CMN_BPT_EMP_Employee_WorkplaceAssignment;
                    item.Default_BreakTime_Template_RefID           = workplaceAssignemns.Default_BreakTime_Template_RefID;
                    item.IsBreakTimeCalculated_Actual   = workplaceAssignemns.IsBreakTimeCalculated_Actual;
                    item.IsBreakTimeCalculated_Planning = workplaceAssignemns.IsBreakTimeCalculated_Planning;
                    item.SequenceNumber = workplaceAssignemns.SequenceNumber;
                    item.WorkplaceAssignment_StartDate = workplaceAssignemns.WorkplaceAssignment_StartDate;

                    employeeWorkplaceAssignments.Add(item);
                }

                resultItem.AllWorkplaceHistories = employeeWorkplaceAssignments.ToArray();

                //employee qualifications
                ORM_CMN_BPT_EMP_Employee_2_Skill.Query qualificationQuary = new ORM_CMN_BPT_EMP_Employee_2_Skill.Query();
                qualificationQuary.Employee_RefID = employee.CMN_BPT_EMP_EmployeeID;
                qualificationQuary.Tenant_RefID   = securityTicket.TenantID;
                qualificationQuary.IsDeleted      = false;
                List <ORM_CMN_BPT_EMP_Employee_2_Skill>     qualificationList      = ORM_CMN_BPT_EMP_Employee_2_Skill.Query.Search(Connection, Transaction, qualificationQuary);
                List <L5EM_GEFE_1150_EmployeeQualification> employeeQualifications = new List <L5EM_GEFE_1150_EmployeeQualification>();

                L5EM_GEFE_1150_EmployeeQualification employeeQualification;
                ORM_CMN_STR_Skill skillORM;
                foreach (var qualification in qualificationList)
                {
                    employeeQualification = new L5EM_GEFE_1150_EmployeeQualification();
                    employeeQualification.QualificationAssignmentID = qualification.AssignmentID;
                    employeeQualification.ProfessionObtainedAtDate  = qualification.QualificationObtainedAtDate;
                    employeeQualification.SkillName = new Dict();
                    if (qualification.Skill_RefID != Guid.Empty)
                    {
                        skillORM = new ORM_CMN_STR_Skill();
                        skillORM.Load(Connection, Transaction, qualification.Skill_RefID);
                        employeeQualification.Skill_RefID = skillORM.CMN_STR_SkillID;
                        employeeQualification.SkillName   = skillORM.Skill_Name;
                    }

                    employeeQualifications.Add(employeeQualification);
                }

                resultItem.AllQualification = employeeQualifications.ToArray();


                resultList.Add(resultItem);
            }

            returnValue.Result = resultList.ToArray();


            return(returnValue);

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


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

            LeaveRequestUtils leaveRequestUtil = new LeaveRequestUtils();

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            //Put your code here
            return(returnValue);

            #endregion UserCode
        }