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

            ORM_CMN_BPT_EMP_WorkingContract workingContract = new ORM_CMN_BPT_EMP_WorkingContract();
            if (Parameter.CMN_BPT_EMP_WorkingContractID != Guid.Empty)
            {
                var result = workingContract.Load(Connection, Transaction, Parameter.CMN_BPT_EMP_WorkingContractID);
                if (result.Status != FR_Status.Success || workingContract.CMN_BPT_EMP_WorkingContractID == Guid.Empty)
                {
                    var error = new FR_Guid();
                    error.ErrorMessage = "No Such ID";
                    error.Status       = FR_Status.Error_Internal;
                    return(error);
                }
            }
            workingContract.Contract_EndDate                    = Parameter.Contract_EndDate;
            workingContract.Contract_StartDate                  = Parameter.Contract_StartDate;
            workingContract.IsContractEndDateDefined            = Parameter.IsContractEndDateDefined;
            workingContract.IsWorkTimeCalculated_InDays         = Parameter.IsWorkTimeCalculated_InDays;
            workingContract.IsWorkTimeCalculated_InHours        = Parameter.IsWorkTimeCalculated_InHours;
            workingContract.R_WorkTime_DaysPerWeek              = Parameter.R_WorkTime_DaysPerWeek;
            workingContract.R_WorkTime_HoursPerWeek             = Parameter.R_WorkTime_HoursPerWeek;
            workingContract.ExtraWorkCalculation_RefID          = Parameter.ExtraWorkCalculation_RefID;
            workingContract.WorkingContract_InCurrency_RefID    = Parameter.WorkingContract_InCurrency_RefID;
            workingContract.IsWorktimeChecked_Monthly           = Parameter.IsWorktimeChecked_Monthly;
            workingContract.IsWorktimeChecked_Weekly            = Parameter.IsWorktimeChecked_Weekly;
            workingContract.IsMealAllowanceProvided             = Parameter.IsMealAllowanceProvided;
            workingContract.SurchargeCalculation_UseAccumulated = Parameter.SurchargeCalculation_UseAccumulated;
            workingContract.SurchargeCalculation_UseMaximum     = Parameter.SurchargeCalculation_UseMaximum;
            workingContract.WorkingContract_Comment             = Parameter.WorkingContract_Comment;
            workingContract.Tenant_RefID = securityTicket.TenantID;

            workingContract.Save(Connection, Transaction);

            returnValue.Result = workingContract.CMN_BPT_EMP_WorkingContractID;

            //Night time surcharges

            ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge.Query contractToNightTimeSurchargeQuery = new ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge.Query();
            contractToNightTimeSurchargeQuery.CMN_BPT_EMP_ExtraWorkCalculation_Surcharge_RefID = Parameter.NightTime_Surcharge_RefID;
            contractToNightTimeSurchargeQuery.CMN_BPT_EMP_WorkingContract_RefID = workingContract.CMN_BPT_EMP_WorkingContractID;
            contractToNightTimeSurchargeQuery.R_IsNightTimeSurcharge            = true;
            contractToNightTimeSurchargeQuery.R_IsSpecialEventSurcharge         = false;
            contractToNightTimeSurchargeQuery.IsDeleted    = false;
            contractToNightTimeSurchargeQuery.Tenant_RefID = securityTicket.TenantID;

            var nightTimeSurchargeQueryResult = ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge.Query.Search(Connection, Transaction, contractToNightTimeSurchargeQuery);
            if (nightTimeSurchargeQueryResult.Count != 0)
            {
                ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge contractToNightTimeSurcharge = nightTimeSurchargeQueryResult.FirstOrDefault();
                contractToNightTimeSurcharge.MaximumAllowedSurchargeTime_in_mins = Parameter.MaximumAllowedNightTimeSurchargeTime_in_mins;
                contractToNightTimeSurcharge.Save(Connection, Transaction);
            }
            else
            {
                ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge contractToNightTimeSurcharge = new ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge();
                contractToNightTimeSurcharge.CMN_BPT_EMP_ExtraWorkCalculation_Surcharge_RefID = Parameter.NightTime_Surcharge_RefID;
                contractToNightTimeSurcharge.CMN_BPT_EMP_WorkingContract_RefID   = workingContract.CMN_BPT_EMP_WorkingContractID;
                contractToNightTimeSurcharge.R_IsNightTimeSurcharge              = true;
                contractToNightTimeSurcharge.R_IsSpecialEventSurcharge           = false;
                contractToNightTimeSurcharge.MaximumAllowedSurchargeTime_in_mins = Parameter.MaximumAllowedNightTimeSurchargeTime_in_mins;
                contractToNightTimeSurcharge.Tenant_RefID = securityTicket.TenantID;
                contractToNightTimeSurcharge.Save(Connection, Transaction);
            }

            //Special event surcharges

            ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge.Query contractToSpecialEventSurchargeQuery = new ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge.Query();
            contractToSpecialEventSurchargeQuery.CMN_BPT_EMP_ExtraWorkCalculation_Surcharge_RefID = Parameter.SpecialEvent_Surcharge_RefID;
            contractToSpecialEventSurchargeQuery.CMN_BPT_EMP_WorkingContract_RefID = workingContract.CMN_BPT_EMP_WorkingContractID;
            contractToSpecialEventSurchargeQuery.R_IsNightTimeSurcharge            = false;
            contractToSpecialEventSurchargeQuery.R_IsSpecialEventSurcharge         = true;
            contractToSpecialEventSurchargeQuery.IsDeleted    = false;
            contractToSpecialEventSurchargeQuery.Tenant_RefID = securityTicket.TenantID;

            var specialEventSurchargeQueryResult = ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge.Query.Search(Connection, Transaction, contractToSpecialEventSurchargeQuery);
            if (specialEventSurchargeQueryResult.Count != 0)
            {
                ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge contractToSpecialEventSurcharge = specialEventSurchargeQueryResult.FirstOrDefault();
                contractToSpecialEventSurcharge.MaximumAllowedSurchargeTime_in_mins = Parameter.MaximumAllowedSpecialEventSurchargeTime_in_mins;
                contractToSpecialEventSurcharge.Save(Connection, Transaction);
            }
            else
            {
                ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge contractToSpecialEventSurcharge = new ORM_CMN_BPT_EMP_WorkingContract_2_ExtraWorkSurcharge();
                contractToSpecialEventSurcharge.CMN_BPT_EMP_ExtraWorkCalculation_Surcharge_RefID = Parameter.SpecialEvent_Surcharge_RefID;
                contractToSpecialEventSurcharge.CMN_BPT_EMP_WorkingContract_RefID   = workingContract.CMN_BPT_EMP_WorkingContractID;
                contractToSpecialEventSurcharge.R_IsNightTimeSurcharge              = false;
                contractToSpecialEventSurcharge.R_IsSpecialEventSurcharge           = true;
                contractToSpecialEventSurcharge.MaximumAllowedSurchargeTime_in_mins = Parameter.MaximumAllowedSpecialEventSurchargeTime_in_mins;
                contractToSpecialEventSurcharge.Tenant_RefID = securityTicket.TenantID;
                contractToSpecialEventSurcharge.Save(Connection, Transaction);
            }

            ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract contractToEmployeeRelationship = new ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract();

            if (Parameter.EmployeeRelationshipToWorkingContractAssignmentID != Guid.Empty)
            {
                ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query contractToEmployeeRelationshipQuery = new ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query();
                contractToEmployeeRelationshipQuery.AssignmentID = Parameter.EmployeeRelationshipToWorkingContractAssignmentID;
                contractToEmployeeRelationshipQuery.IsDeleted    = false;
                contractToEmployeeRelationshipQuery.Tenant_RefID = securityTicket.TenantID;

                contractToEmployeeRelationship = ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query.Search(Connection, Transaction, contractToEmployeeRelationshipQuery).FirstOrDefault();
            }
            contractToEmployeeRelationship.WorkingContract_RefID        = workingContract.CMN_BPT_EMP_WorkingContractID;
            contractToEmployeeRelationship.EmploymentRelationship_RefID = Parameter.EmploymentRelationship_RefID;
            contractToEmployeeRelationship.IsContract_Active            = Parameter.IsActive_WorkingContract;
            contractToEmployeeRelationship.Tenant_RefID = securityTicket.TenantID;
            contractToEmployeeRelationship.Save(Connection, Transaction);

            if (Parameter.LastActive_WorkingContractID != Guid.Empty)
            {
                ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query lastActiveContractToEmployeeRelationshipQuery = new ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query();
                lastActiveContractToEmployeeRelationshipQuery.WorkingContract_RefID = Parameter.LastActive_WorkingContractID;
                lastActiveContractToEmployeeRelationshipQuery.IsDeleted             = false;
                lastActiveContractToEmployeeRelationshipQuery.Tenant_RefID          = securityTicket.TenantID;

                ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract lastActiveContractToEmployeeRelationship = ORM_CMN_BPT_EMP_EmploymentRelationship_2_WorkingContract.Query.Search(Connection, Transaction, lastActiveContractToEmployeeRelationshipQuery).FirstOrDefault();
                lastActiveContractToEmployeeRelationship.IsContract_Active = false;
                lastActiveContractToEmployeeRelationship.Save(Connection, Transaction);

                ORM_CMN_BPT_EMP_WorkingContract.Query lastActiveContractQuery = new ORM_CMN_BPT_EMP_WorkingContract.Query();
                lastActiveContractQuery.CMN_BPT_EMP_WorkingContractID = Parameter.LastActive_WorkingContractID;
                lastActiveContractQuery.IsDeleted    = false;
                lastActiveContractQuery.Tenant_RefID = securityTicket.TenantID;

                var lastActiveContract = ORM_CMN_BPT_EMP_WorkingContract.Query.Search(Connection, Transaction, lastActiveContractQuery).FirstOrDefault();

                if (!lastActiveContract.IsContractEndDateDefined)
                {
                    lastActiveContract.Contract_EndDate         = Parameter.Contract_StartDate;
                    lastActiveContract.IsContractEndDateDefined = true;
                    lastActiveContract.Save(Connection, Transaction);
                }
            }

            foreach (P_L5CT_SECT_1810_WorkingContractAllowedAbsenceReason obj in Parameter.WorkingContractAllowedAbsenceReason)
            {
                ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason contractToabsenceReason = new ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason();
                if (obj.WorkingContractAllowedAbsenceReasonID != Guid.Empty)
                {
                    ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason.Query contractToabsenceReasonQuery = new ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason.Query();
                    contractToabsenceReasonQuery.CMN_BPT_EMP_WorkingContract_AllowedAbsenceReasonID = obj.WorkingContractAllowedAbsenceReasonID;
                    contractToabsenceReasonQuery.IsDeleted    = false;
                    contractToabsenceReasonQuery.Tenant_RefID = securityTicket.TenantID;

                    contractToabsenceReason = ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason.Query.Search(Connection, Transaction, contractToabsenceReasonQuery).FirstOrDefault();
                }
                contractToabsenceReason.ContractAllowedAbsence_per_Month = obj.ContractAllowedAbsence;
                contractToabsenceReason.WorkingContract_RefID            = workingContract.CMN_BPT_EMP_WorkingContractID;
                contractToabsenceReason.IsAbsenceCalculated_InDays       = Parameter.IsWorkTimeCalculated_InDays;
                contractToabsenceReason.IsAbsenceCalculated_InHours      = Parameter.IsWorkTimeCalculated_InHours;
                contractToabsenceReason.STA_AbsenceReason_RefID          = obj.AbsenceReasonRefID;
                contractToabsenceReason.Tenant_RefID = securityTicket.TenantID;
                contractToabsenceReason.Save(Connection, Transaction);
            }

            ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay.Query query = new ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay.Query();
            query.CMN_BPT_EMP_WorkingContract_RefID = workingContract.CMN_BPT_EMP_WorkingContractID;

            foreach (ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay obj in ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay.Query.Search(Connection, Transaction, query))
            {
                ORM_CMN_CAL_WeeklyOfficeHours_Interval.Query intervalQuery = new ORM_CMN_CAL_WeeklyOfficeHours_Interval.Query();
                intervalQuery.CMN_CAL_WeeklyOfficeHours_IntervalID = obj.CMN_CAL_WeeklyOfficeHours_Interval_RefID;
                ORM_CMN_CAL_WeeklyOfficeHours_Interval.Query.SoftDelete(Connection, Transaction, intervalQuery);
            }
            ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay.Query.SoftDelete(Connection, Transaction, query);
            foreach (P_L5CT_SECT_1810_WeeklyOfficeHours obj in Parameter.WeeklyOfficeHours)
            {
                ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay workingContractToWorkingDay = new ORM_CMN_BPT_EMP_WorkingContract_2_WorkingDay();
                workingContractToWorkingDay.CMN_BPT_EMP_WorkingContract_RefID = workingContract.CMN_BPT_EMP_WorkingContractID;
                ORM_CMN_CAL_WeeklyOfficeHours_Interval weeklyOfficeHoursInterval = new ORM_CMN_CAL_WeeklyOfficeHours_Interval();
                weeklyOfficeHoursInterval.IsMonday           = obj.IsMonday;
                weeklyOfficeHoursInterval.IsTuesday          = obj.IsTuesday;
                weeklyOfficeHoursInterval.IsWednesday        = obj.IsWednesday;
                weeklyOfficeHoursInterval.IsThursday         = obj.IsThursday;
                weeklyOfficeHoursInterval.IsFriday           = obj.IsFriday;
                weeklyOfficeHoursInterval.IsSaturday         = obj.IsSaturday;
                weeklyOfficeHoursInterval.IsSunday           = obj.IsSunday;
                weeklyOfficeHoursInterval.TimeFrom_InMinutes = obj.TimeFrom_InMinutes;
                weeklyOfficeHoursInterval.TimeTo_InMinutes   = obj.TimeTo_InMinutes;
                weeklyOfficeHoursInterval.Tenant_RefID       = securityTicket.TenantID;
                weeklyOfficeHoursInterval.IsWholeDay         = obj.IsWholeDay;
                weeklyOfficeHoursInterval.Save(Connection, Transaction);
                workingContractToWorkingDay.CMN_CAL_WeeklyOfficeHours_Interval_RefID = weeklyOfficeHoursInterval.CMN_CAL_WeeklyOfficeHours_IntervalID;
                workingContractToWorkingDay.Tenant_RefID = securityTicket.TenantID;
                workingContractToWorkingDay.Save(Connection, Transaction);
            }


            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 = workingContract.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.Query employmentTypeQuery = new ORM_CMN_BPT_EMP_WorkingContract_EmploymentType.Query();
                employmentTypeQuery.Tenant_RefID             = securityTicket.TenantID;
                employmentTypeQuery.IsDeleted                = false;
                employmentTypeQuery.GlobalPropertyMatchingID = Parameter.TypeOfEmployment.ToString();
                ORM_CMN_BPT_EMP_WorkingContract_EmploymentType newEmploymentType = ORM_CMN_BPT_EMP_WorkingContract_EmploymentType.Query.Search(Connection, Transaction, employmentTypeQuery).FirstOrDefault();
                if (newEmploymentType != null)
                {
                    workingContract_2_ContractEmploymentType.CMN_BPT_EMP_WorkingContract_EmploymentTypeID = newEmploymentType.CMN_BPT_EMP_Employee_WorkingContract_EmploymentTypeID;
                    workingContract_2_ContractEmploymentType.Save(Connection, Transaction);
                }
            }
            else
            {
                ORM_CMN_BPT_EMP_WorkingContract_EmploymentType.Query employmentTypeQuery = new ORM_CMN_BPT_EMP_WorkingContract_EmploymentType.Query();
                employmentTypeQuery.Tenant_RefID = securityTicket.TenantID;
                employmentTypeQuery.IsDeleted    = false;
                List <ORM_CMN_BPT_EMP_WorkingContract_EmploymentType> employmentTypes   = ORM_CMN_BPT_EMP_WorkingContract_EmploymentType.Query.Search(Connection, Transaction, employmentTypeQuery);
                ORM_CMN_BPT_EMP_WorkingContract_EmploymentType        newEmploymentType = new ORM_CMN_BPT_EMP_WorkingContract_EmploymentType();
                if (employmentTypes.Count == 0)
                {
                    Guid            german       = Guid.Empty;
                    Guid            english      = Guid.Empty;
                    L2LN_GAL_1526[] AllLanguages = cls_Get_All_Languages.Invoke(Connection, Transaction, securityTicket).Result;
                    foreach (var language in AllLanguages)
                    {
                        if (language.ISO_639_1.ToUpper() == "DE")
                        {
                            german = language.CMN_LanguageID;
                        }
                        else if (language.ISO_639_1.ToUpper() == "EN")
                        {
                            english = language.CMN_LanguageID;
                        }
                    }



                    newEmploymentType.CMN_BPT_EMP_Employee_WorkingContract_EmploymentTypeID = Guid.NewGuid();
                    newEmploymentType.EmploymentType_Description = new Dict("CMN_BPT_EMP_WorkingContract_EmploymentType");
                    newEmploymentType.EmploymentType_Description.DictionaryID = Guid.NewGuid();
                    newEmploymentType.EmploymentType_Description.AddEntry(german, "Festangestellte");
                    newEmploymentType.EmploymentType_Description.AddEntry(english, "permanent worker");
                    newEmploymentType.EmploymentType_Name = new Dict("CMN_BPT_EMP_WorkingContract_EmploymentType");
                    newEmploymentType.EmploymentType_Name.DictionaryID = Guid.NewGuid();
                    newEmploymentType.EmploymentType_Name.AddEntry(german, "Festangestellte");
                    newEmploymentType.EmploymentType_Name.AddEntry(english, "permanent worker");
                    newEmploymentType.GlobalPropertyMatchingID = "0";
                    newEmploymentType.Tenant_RefID             = securityTicket.TenantID;
                    newEmploymentType.Save(Connection, Transaction);

                    newEmploymentType = new ORM_CMN_BPT_EMP_WorkingContract_EmploymentType();
                    newEmploymentType.CMN_BPT_EMP_Employee_WorkingContract_EmploymentTypeID = Guid.NewGuid();
                    newEmploymentType.EmploymentType_Description = new Dict("CMN_BPT_EMP_WorkingContract_EmploymentType");
                    newEmploymentType.EmploymentType_Description.DictionaryID = Guid.NewGuid();
                    newEmploymentType.EmploymentType_Description.AddEntry(german, "Aushilfe");
                    newEmploymentType.EmploymentType_Description.AddEntry(english, "temporary worker");
                    newEmploymentType.EmploymentType_Name = new Dict("CMN_BPT_EMP_WorkingContract_EmploymentType");
                    newEmploymentType.EmploymentType_Name.DictionaryID = Guid.NewGuid();
                    newEmploymentType.EmploymentType_Name.AddEntry(german, "Aushilfe");
                    newEmploymentType.EmploymentType_Name.AddEntry(english, "temporary worker");
                    newEmploymentType.GlobalPropertyMatchingID = "1";
                    newEmploymentType.Tenant_RefID             = securityTicket.TenantID;
                    newEmploymentType.Save(Connection, Transaction);

                    newEmploymentType = new ORM_CMN_BPT_EMP_WorkingContract_EmploymentType();
                    newEmploymentType.CMN_BPT_EMP_Employee_WorkingContract_EmploymentTypeID = Guid.NewGuid();
                    newEmploymentType.EmploymentType_Description = new Dict("CMN_BPT_EMP_WorkingContract_EmploymentType");
                    newEmploymentType.EmploymentType_Description.DictionaryID = Guid.NewGuid();
                    newEmploymentType.EmploymentType_Description.AddEntry(german, "Contract worker");
                    newEmploymentType.EmploymentType_Description.AddEntry(english, "Leiharbeiter");
                    newEmploymentType.EmploymentType_Name = new Dict("CMN_BPT_EMP_WorkingContract_EmploymentType");
                    newEmploymentType.EmploymentType_Name.DictionaryID = Guid.NewGuid();
                    newEmploymentType.EmploymentType_Name.AddEntry(german, "Contract worker");
                    newEmploymentType.EmploymentType_Name.AddEntry(english, "Leiharbeiter");
                    newEmploymentType.GlobalPropertyMatchingID = "2";
                    newEmploymentType.Tenant_RefID             = securityTicket.TenantID;
                    newEmploymentType.Save(Connection, Transaction);
                }

                ORM_CMN_BPT_EMP_WorkingContract_2_ContractEmploymentType employmentType2Contract = new ORM_CMN_BPT_EMP_WorkingContract_2_ContractEmploymentType();
                employmentType2Contract.Tenant_RefID = securityTicket.TenantID;
                employmentType2Contract.IsDeleted    = false;
                employmentType2Contract.CMN_BPT_EMP_Employee_WorkingContract_RefID = workingContract.CMN_BPT_EMP_WorkingContractID;

                ORM_CMN_BPT_EMP_WorkingContract_EmploymentType.Query newEmploymentTypeQuery = new ORM_CMN_BPT_EMP_WorkingContract_EmploymentType.Query();
                newEmploymentTypeQuery.Tenant_RefID             = securityTicket.TenantID;
                newEmploymentTypeQuery.IsDeleted                = false;
                newEmploymentTypeQuery.GlobalPropertyMatchingID = Parameter.TypeOfEmployment.ToString();
                newEmploymentType = ORM_CMN_BPT_EMP_WorkingContract_EmploymentType.Query.Search(Connection, Transaction, newEmploymentTypeQuery).FirstOrDefault();
                if (newEmploymentType != null)
                {
                    employmentType2Contract.CMN_BPT_EMP_WorkingContract_EmploymentTypeID = newEmploymentType.CMN_BPT_EMP_Employee_WorkingContract_EmploymentTypeID;
                    employmentType2Contract.Save(Connection, Transaction);
                }
            }

            return(returnValue);

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            return(returnValue);

            #endregion UserCode
        }