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_L6LR_SLR_1142 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); ORM_CMN_BPT_STA_AbsenceReason.Query selectedLeaveTypeQuery = new ORM_CMN_BPT_STA_AbsenceReason.Query(); selectedLeaveTypeQuery.Tenant_RefID = securityTicket.TenantID; selectedLeaveTypeQuery.CMN_BPT_STA_AbsenceReasonID = Parameter.LeaveRequest.AbsenceReason_RefID; selectedLeaveTypeQuery.IsDeleted = false; var selectedLeaveType = ORM_CMN_BPT_STA_AbsenceReason.Query.Search(Connection, Transaction, selectedLeaveTypeQuery).FirstOrDefault(); LeaveRequestUtils leaveRequestUtils = new LeaveRequestUtils(); P_L5LR_SELR_255 par = Parameter.LeaveRequest; L6TN_GSFT_1017 settings = cls_Get_Settings_For_Tenant.Invoke(Connection, Transaction, securityTicket).Result; par.NumberOfResponsiblePersonsRequiredToApprove = settings.NumberOfResponsiblePersonsRequiredToApprove; if (settings.NumberOfResponsiblePersonsRequiredToApprove == 0 || !Parameter.IsAuthRequired) { par.IsApprovalProcessOpened = false; par.IsApproved = true; } Guid leaveRequestID = cls_Save_Employee_LeaveRequest.Invoke(Connection, Transaction, par, securityTicket).Result; returnValue.Result = leaveRequestID; P_L5CT_GER2AAR_1258 getParam = new P_L5CT_GER2AAR_1258(); getParam.AbsenceReasonID = Parameter.LeaveRequest.AbsenceReason_RefID; getParam.ForEmployeeID = Parameter.LeaveRequest.RequestedFor_Employee_RefID; L5CT_GER2AAR_1258 wc2aar = cls_Get_EmploymentRelationships_2_AllowedAbsenceReasons.Invoke(Connection, Transaction, getParam, securityTicket).Result; L5EM_GEFE_1150_WorkingContract activeWorkingContract = new L5EM_GEFE_1150_WorkingContract(); P_L5EM_GEFE_1150 param = new P_L5EM_GEFE_1150(); param.EmployeeID = Parameter.LeaveRequest.RequestedFor_Employee_RefID; var employeeData = cls_Get_Employee_For_EmployeeID.Invoke(Connection, Transaction, param, securityTicket).Result; if (employeeData != null && employeeData.WorkingContracts != null) { activeWorkingContract = employeeData.WorkingContracts.FirstOrDefault(t => t.IsContract_Active == true); if (wc2aar == null) { if (activeWorkingContract != null) { ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason workingContractToabsenceReason = new ORM_CMN_BPT_EMP_WorkingContract_AllowedAbsenceReason(); workingContractToabsenceReason.ContractAllowedAbsence_per_Month = 0; workingContractToabsenceReason.WorkingContract_RefID = activeWorkingContract.CMN_BPT_EMP_WorkingContractID; workingContractToabsenceReason.IsAbsenceCalculated_InDays = activeWorkingContract.IsWorkTimeCalculated_InDays; workingContractToabsenceReason.IsAbsenceCalculated_InHours = activeWorkingContract.IsWorkTimeCalculated_InHours; workingContractToabsenceReason.ContractAllowedAbsence_per_Month = 0; workingContractToabsenceReason.STA_AbsenceReason_RefID = Parameter.LeaveRequest.AbsenceReason_RefID; workingContractToabsenceReason.Tenant_RefID = securityTicket.TenantID; workingContractToabsenceReason.Save(Connection, Transaction); } } } // update statistics ************************************************ var timeFrame = cls_Get_CalculationTimeFramesForTenant.Invoke(Connection, Transaction, securityTicket).Result.Where(x => x.CalculationTimeframe_StartDate.Year == par.StartTime.Year).FirstOrDefault(); if (timeFrame == null) { ORM_CMN_CAL_CalculationTimeframe timeFramePar = new ORM_CMN_CAL_CalculationTimeframe(); timeFramePar.CalculationTimeframe_StartDate = new DateTime(par.StartTime.Year, 1, 1); timeFramePar.CalculationTimefrate_EndDate = new DateTime(0); timeFramePar.CalculationTimeframe_EstimatedEndDate = new DateTime(par.StartTime.Year, 12, 31); timeFramePar.IsCalculationTimeframe_Active = false; timeFramePar.Tenant_RefID = securityTicket.TenantID; timeFramePar.Save(Connection, Transaction); L5EM_GEFT_0959[] employees = cls_Get_Employees_For_Tenant.Invoke(Connection, Transaction, securityTicket).Result; foreach (var emp in employees) { ORM_CMN_BPT_EMP_EmploymentRelationship_Timeframe workingContactTimeFrame = new ORM_CMN_BPT_EMP_EmploymentRelationship_Timeframe(); workingContactTimeFrame.CalculationTimeframe_RefID = timeFramePar.CMN_CAL_CalculationTimeframeID; workingContactTimeFrame.CMN_BPT_EMP_EmploymentRelationship_TimeframeID = emp.CMN_BPT_EMP_EmploymentRelationshipID; workingContactTimeFrame.Tenant_RefID = securityTicket.TenantID; workingContactTimeFrame.Save(Connection, Transaction); } ORM_CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatistic timeFrameStatisticsPar = new ORM_CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatistic(); timeFrameStatisticsPar.AbsenceReason_RefID = par.AbsenceReason_RefID; timeFrameStatisticsPar.CalculationTimeframe_RefID = timeFramePar.CMN_CAL_CalculationTimeframeID; timeFrameStatisticsPar.Employee_RefID = par.RequestedFor_Employee_RefID; timeFrameStatisticsPar.R_AbsenceCarryOver_InDays = 0; timeFrameStatisticsPar.R_AbsenceCarryOver_InHours = 0; double timeToSubtractDays = 0; double timeToSubtractHours = 0; if (par.IsApproved) { timeToSubtractDays = Parameter.durationInDays; timeToSubtractHours = Parameter.durationInHours; timeFrameStatisticsPar.R_RequestReservedAbsence_InDays = 0; timeFrameStatisticsPar.R_RequestReservedAbsence_InHours = 0; timeFrameStatisticsPar.R_AbsenceTimeUsed_InDays = Parameter.durationInDays; timeFrameStatisticsPar.R_AbsenceTimeUsed_InHours = Parameter.durationInHours; } else { timeFrameStatisticsPar.R_RequestReservedAbsence_InDays = Parameter.durationInDays; timeFrameStatisticsPar.R_RequestReservedAbsence_InHours = Parameter.durationInDays; timeFrameStatisticsPar.R_AbsenceTimeUsed_InDays = 0; timeFrameStatisticsPar.R_AbsenceTimeUsed_InHours = 0; } if (wc2aar != null && activeWorkingContract != null) { if (wc2aar.IsAbsenceCalculated_InDays) { timeFrameStatisticsPar.R_TotalAllowedAbsenceTime_InDays = wc2aar.ContractAllowedAbsence_per_Month - timeToSubtractDays; timeFrameStatisticsPar.R_TotalAllowedAbsenceTime_InHours = WeeklyOfficeHoursUtils.DaysToHoursPeriod(leaveRequestUtils.PresiPatch(activeWorkingContract.WeeklyOfficeHours), wc2aar.ContractAllowedAbsence_per_Month - timeToSubtractHours); } else { timeFrameStatisticsPar.R_TotalAllowedAbsenceTime_InDays = WeeklyOfficeHoursUtils.HoursToDaysPeriod(leaveRequestUtils.PresiPatch(activeWorkingContract.WeeklyOfficeHours), wc2aar.ContractAllowedAbsence_per_Month - timeToSubtractDays); timeFrameStatisticsPar.R_TotalAllowedAbsenceTime_InHours = wc2aar.ContractAllowedAbsence_per_Month - timeToSubtractHours; } } else { timeFrameStatisticsPar.R_TotalAllowedAbsenceTime_InDays = 0; timeFrameStatisticsPar.R_TotalAllowedAbsenceTime_InHours = 0; } timeFrameStatisticsPar.Tenant_RefID = securityTicket.TenantID; timeFrameStatisticsPar.Save(Connection, Transaction); } else { P_L5EM_GEATFSbRTFE_1423 statParam = new P_L5EM_GEATFSbRTFE_1423(); statParam.absenceReasonID = Parameter.LeaveRequest.AbsenceReason_RefID; statParam.employeeID = Parameter.LeaveRequest.RequestedFor_Employee_RefID; statParam.timeFrameID = timeFrame.CMN_CAL_CalculationTimeframeID; var statistics = cls_Get_Employee_AbsenceReason_TimeframeStatistic_byReasonTimeFrameEmployee.Invoke(Connection, Transaction, statParam, securityTicket).Result; if (statistics != null) { P_L5EM_SEARTFS_1356 updateStatisticsParam = new P_L5EM_SEARTFS_1356(); updateStatisticsParam.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID = statistics.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID; updateStatisticsParam.Employee_RefID = statistics.Employee_RefID; updateStatisticsParam.CalculationTimeframe_RefID = statistics.CalculationTimeframe_RefID; updateStatisticsParam.AbsenceReason_RefID = statistics.AbsenceReason_RefID; updateStatisticsParam.R_AbsenceCarryOver_InDays = statistics.R_AbsenceCarryOver_InDays; updateStatisticsParam.R_AbsenceCarryOver_InHours = statistics.R_AbsenceCarryOver_InHours; if (par.IsApproved) { updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays = statistics.R_TotalAllowedAbsenceTime_InDays - Parameter.durationInDays; updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours - Parameter.durationInHours; updateStatisticsParam.R_RequestReservedAbsence_InDays = statistics.R_RequestReservedAbsence_InDays; updateStatisticsParam.R_RequestReservedAbsence_InHours = statistics.R_RequestReservedAbsence_InHours; updateStatisticsParam.R_AbsenceTimeUsed_InDays = statistics.R_AbsenceTimeUsed_InDays + Parameter.durationInDays; updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours + Parameter.durationInHours; } else { updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays = statistics.R_TotalAllowedAbsenceTime_InDays; updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours; updateStatisticsParam.R_RequestReservedAbsence_InDays = statistics.R_RequestReservedAbsence_InDays + Parameter.durationInDays; updateStatisticsParam.R_RequestReservedAbsence_InHours = statistics.R_RequestReservedAbsence_InHours + Parameter.durationInHours; updateStatisticsParam.R_AbsenceTimeUsed_InDays = statistics.R_AbsenceTimeUsed_InDays; updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours; } var res = cls_Save_Employee_AbsenceReason_TimeframeStatistic.Invoke(Connection, Transaction, updateStatisticsParam, securityTicket); } else { ORM_CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatistic timeFrameStatisticsPar = new ORM_CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatistic(); timeFrameStatisticsPar.AbsenceReason_RefID = par.AbsenceReason_RefID; timeFrameStatisticsPar.CalculationTimeframe_RefID = timeFrame.CMN_CAL_CalculationTimeframeID; timeFrameStatisticsPar.Employee_RefID = par.RequestedFor_Employee_RefID; timeFrameStatisticsPar.R_AbsenceCarryOver_InDays = 0; timeFrameStatisticsPar.R_AbsenceCarryOver_InHours = 0; double timeToSubtractDays = 0; double timeToSubtractHours = 0; if (par.IsApproved) { timeToSubtractDays = Parameter.durationInDays; timeToSubtractHours = Parameter.durationInHours; timeFrameStatisticsPar.R_RequestReservedAbsence_InDays = 0; timeFrameStatisticsPar.R_RequestReservedAbsence_InHours = 0; timeFrameStatisticsPar.R_AbsenceTimeUsed_InDays = Parameter.durationInDays; timeFrameStatisticsPar.R_AbsenceTimeUsed_InHours = Parameter.durationInHours; } else { timeFrameStatisticsPar.R_RequestReservedAbsence_InDays = Parameter.durationInDays; timeFrameStatisticsPar.R_RequestReservedAbsence_InHours = Parameter.durationInDays; timeFrameStatisticsPar.R_AbsenceTimeUsed_InDays = 0; timeFrameStatisticsPar.R_AbsenceTimeUsed_InHours = 0; } if (wc2aar != null && activeWorkingContract != null) { timeFrameStatisticsPar.R_TotalAllowedAbsenceTime_InDays = 0; timeFrameStatisticsPar.R_TotalAllowedAbsenceTime_InHours = 0; timeFrameStatisticsPar.R_TotalAllowedAbsenceTime_InDays = 0; timeFrameStatisticsPar.R_TotalAllowedAbsenceTime_InHours = 0; } else { timeFrameStatisticsPar.R_TotalAllowedAbsenceTime_InDays = 0; timeFrameStatisticsPar.R_TotalAllowedAbsenceTime_InHours = 0; } timeFrameStatisticsPar.Tenant_RefID = securityTicket.TenantID; timeFrameStatisticsPar.Save(Connection, Transaction); } } //cls_get // statistics update end :) //Create daily work schedule DateTime startTime = Parameter.LeaveRequest.StartTime; while (startTime.Date <= Parameter.LeaveRequest.EndTime.Date) { ORM_CMN_STR_PPS_DailyWorkSchedule.Query scheduleQuery = new ORM_CMN_STR_PPS_DailyWorkSchedule.Query(); scheduleQuery.Tenant_RefID = securityTicket.TenantID; scheduleQuery.IsDeleted = false; scheduleQuery.WorkSheduleDate = startTime.Date; scheduleQuery.Employee_RefID = Parameter.LeaveRequest.RequestedFor_Employee_RefID; List <ORM_CMN_STR_PPS_DailyWorkSchedule> workSechedules = ORM_CMN_STR_PPS_DailyWorkSchedule.Query.Search(Connection, Transaction, scheduleQuery); if (workSechedules.Count == 0) { ORM_CMN_STR_PPS_DailyWorkSchedule schedule = new ORM_CMN_STR_PPS_DailyWorkSchedule(); var workingTimeInHours = 0.0; var daysFromContractTerm = WeeklyOfficeHoursUtils.DaysFromContractTerm(leaveRequestUtils.PresiPatch(activeWorkingContract.WeeklyOfficeHours)); var dayFromContractTerm = daysFromContractTerm.FirstOrDefault(x => x.dayOfWeek == startTime.DayOfWeek); if (dayFromContractTerm != null) { workingTimeInHours = (double)dayFromContractTerm.hours; } TimeSpan workingTimeSpan = TimeSpan.FromHours(workingTimeInHours); var workingHours = workingTimeSpan.Hours; var workingMinutes = workingTimeSpan.Minutes; var workingSeconds = workingTimeSpan.Seconds; DateTime detailStartTime;; DateTime detailEndTime; if (startTime.Date == Parameter.LeaveRequest.StartTime.Date) { detailStartTime = startTime; if (startTime.Hour + workingTimeInHours < 24) { var newEndTime = startTime.TimeOfDay + workingTimeSpan; detailEndTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, newEndTime.Hours, newEndTime.Minutes, newEndTime.Seconds); } else { detailEndTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, 23, 59, 59); } } else if (startTime.Date == Parameter.LeaveRequest.EndTime.Date) { if (Parameter.LeaveRequest.EndTime.TimeOfDay > workingTimeSpan) { var newStartTime = Parameter.LeaveRequest.EndTime.TimeOfDay - workingTimeSpan; detailStartTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, newStartTime.Hours, newStartTime.Minutes, newStartTime.Seconds); } else { detailStartTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, 0, 0, 0); } detailEndTime = Parameter.LeaveRequest.EndTime; } else { int hours = (int)Parameter.WorkTimeStart / (int)60; int mintues = Parameter.WorkTimeStart - hours * 60; detailStartTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, hours, mintues, 0); if (hours + workingTimeSpan.Hours >= 24) { if (mintues + workingTimeSpan.Minutes >= 60) { detailEndTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, hours + workingTimeSpan.Hours - 24, workingTimeSpan.Minutes, workingTimeSpan.Seconds); } else { detailEndTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, hours + workingTimeSpan.Hours - 24, workingTimeSpan.Minutes - 60, workingTimeSpan.Seconds); } } else { if (mintues + workingTimeSpan.Minutes >= 60) { detailEndTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, hours + workingTimeSpan.Hours, workingTimeSpan.Minutes - 60, workingTimeSpan.Seconds); } else { detailEndTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, hours + workingTimeSpan.Hours, workingTimeSpan.Minutes, workingTimeSpan.Seconds); } } } schedule.Employee_RefID = Parameter.LeaveRequest.RequestedFor_Employee_RefID; schedule.ContractWorkerText = ""; schedule.BreakDurationTime_in_sec = 0; schedule.IsBreakTimeManualySpecified = false; schedule.IsWorkShedule_Confirmed = false; schedule.R_ContractSpecified_WorkingTime_in_sec = (int)workingTimeSpan.TotalSeconds; if (selectedLeaveType.IsLeaveTimeReducing_WorkingHours) { schedule.R_WorkDay_Duration_in_sec = (int)detailEndTime.Subtract(detailStartTime).TotalSeconds; } else { schedule.R_WorkDay_Duration_in_sec = 0; } schedule.R_WorkDay_Start_in_sec = (int)new TimeSpan(detailStartTime.Hour, detailStartTime.Minute, detailStartTime.Second).TotalSeconds; schedule.R_WorkDay_End_in_sec = (int)detailEndTime.Subtract(detailStartTime).TotalSeconds; schedule.SheduleBreakTemplate_RefID = Guid.Empty; schedule.Tenant_RefID = securityTicket.TenantID; schedule.WorkingSheduleComment = ""; schedule.WorkShedule_ConfirmedBy_Account_RefID = Guid.Empty; schedule.WorkSheduleDate = startTime.Date; schedule.InstantiatedWithShiftTemplate_RefID = Guid.Empty; schedule.Save(Connection, Transaction); P_L5DWS_SDWSD_1130 detailParam = new P_L5DWS_SDWSD_1130(); detailParam.WorkTime_Start = detailStartTime; detailParam.WorkTime_End = detailEndTime; detailParam.DailyWorkSchedule_RefID = schedule.CMN_STR_PPS_DailyWorkScheduleID; detailParam.IsWorkBreak = false; detailParam.SheduleForWorkplace_RefID = Guid.Empty; detailParam.AbsenceReason_RefID = Parameter.LeaveRequest.AbsenceReason_RefID; detailParam.RequestedBy_Employee_RefID = Parameter.LeaveRequest.RequestedBy_Employee_RefID; detailParam.RequestedFor_Employee_RefID = Parameter.LeaveRequest.RequestedFor_Employee_RefID; detailParam.CMN_BPT_EMP_Employee_LeaveRequest_RefID = leaveRequestID; detailParam.createRequest = false; cls_Save_Employee_DailyWorkSchedule_Detail.Invoke(Connection, Transaction, detailParam, securityTicket); } else { var dwsParam = new P_L5DWS_GDWSWDFT_0946(); dwsParam.WorkSheduleDate = startTime.Date; var resultDailyWorkSchedule = cls_Get_DailyWorkSchedules_WithDetails_For_Date.Invoke(Connection, Transaction, dwsParam, securityTicket); LeaveRequestUtils leaveRequestUtil = new LeaveRequestUtils(); var dailySchedule = resultDailyWorkSchedule.Result.FirstOrDefault(i => i.Employee_RefID == Parameter.LeaveRequest.RequestedFor_Employee_RefID); foreach (var detail in dailySchedule.Details) { var durationInDays = leaveRequestUtil.LeaveRequestDuration(detail.FromTime_as_DateTime, detail.ToTime_as_DateTime, Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == Parameter.LeaveRequest.RequestedFor_Employee_RefID), true); var durationInHours = leaveRequestUtil.LeaveRequestDuration(detail.FromTime_as_DateTime, detail.ToTime_as_DateTime, Parameter.Events, Parameter.Employees.FirstOrDefault(x => x.CMN_BPT_EMP_EmployeeID == Parameter.LeaveRequest.RequestedFor_Employee_RefID), false); P_L5DWS_DDWSDFIDL_1014 deleteParam = new P_L5DWS_DDWSDFIDL_1014(); deleteParam.DailyWorkSchedule_DetailID = detail.CMN_STR_PPS_DailyWorkSchedule_DetailID; var scheduleID = cls_Delete_Employee_DailyWorkSchedule_Detail.Invoke(Connection, Transaction, deleteParam, securityTicket); } ORM_CMN_STR_PPS_DailyWorkSchedule schedule = new ORM_CMN_STR_PPS_DailyWorkSchedule(); schedule.Load(Connection, Transaction, dailySchedule.CMN_STR_PPS_DailyWorkScheduleID); var workingTimeInHours = 0; var daysFromContractTerm = WeeklyOfficeHoursUtils.DaysFromContractTerm(leaveRequestUtils.PresiPatch(activeWorkingContract.WeeklyOfficeHours)); var dayFromContractTerm = daysFromContractTerm.FirstOrDefault(x => x.dayOfWeek == startTime.DayOfWeek); if (dayFromContractTerm != null) { workingTimeInHours = (int)dayFromContractTerm.hours; } DateTime detailStartTime;; DateTime detailEndTime; if (startTime.Date == Parameter.LeaveRequest.StartTime.Date) { detailStartTime = startTime; detailEndTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, 23, 59, 59); } else if (startTime.Date == Parameter.LeaveRequest.EndTime.Date) { detailStartTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, 0, 0, 0); detailEndTime = Parameter.LeaveRequest.EndTime; } else { detailStartTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, 0, 0, 0); detailEndTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, 23, 59, 59); } schedule.Employee_RefID = Parameter.LeaveRequest.RequestedFor_Employee_RefID; schedule.ContractWorkerText = ""; schedule.BreakDurationTime_in_sec = 0; schedule.IsBreakTimeManualySpecified = false; schedule.IsWorkShedule_Confirmed = false; schedule.R_ContractSpecified_WorkingTime_in_sec = workingTimeInHours * 360; if (selectedLeaveType.IsLeaveTimeReducing_WorkingHours) { schedule.R_WorkDay_Duration_in_sec = (int)detailEndTime.Subtract(detailStartTime).TotalSeconds; } else { schedule.R_WorkDay_Duration_in_sec = 0; } schedule.R_WorkDay_Start_in_sec = (int)new TimeSpan(detailStartTime.Hour, detailStartTime.Minute, detailStartTime.Second).TotalSeconds; schedule.R_WorkDay_End_in_sec = schedule.R_WorkDay_Start_in_sec + (int)detailEndTime.Subtract(detailStartTime).TotalSeconds; schedule.SheduleBreakTemplate_RefID = Guid.Empty; schedule.Tenant_RefID = securityTicket.TenantID; schedule.WorkingSheduleComment = ""; schedule.WorkShedule_ConfirmedBy_Account_RefID = Guid.Empty; schedule.WorkSheduleDate = startTime.Date; schedule.InstantiatedWithShiftTemplate_RefID = Guid.Empty; schedule.Save(Connection, Transaction); P_L5DWS_SDWSD_1130 detailParam = new P_L5DWS_SDWSD_1130(); detailParam.WorkTime_Start = detailStartTime; detailParam.WorkTime_End = detailEndTime; detailParam.DailyWorkSchedule_RefID = schedule.CMN_STR_PPS_DailyWorkScheduleID; detailParam.IsWorkBreak = false; detailParam.SheduleForWorkplace_RefID = Guid.Empty; detailParam.AbsenceReason_RefID = Parameter.LeaveRequest.AbsenceReason_RefID; detailParam.RequestedBy_Employee_RefID = Parameter.LeaveRequest.RequestedBy_Employee_RefID; detailParam.RequestedFor_Employee_RefID = Parameter.LeaveRequest.RequestedFor_Employee_RefID; detailParam.CMN_BPT_EMP_Employee_LeaveRequest_RefID = leaveRequestID; detailParam.createRequest = false; cls_Save_Employee_DailyWorkSchedule_Detail.Invoke(Connection, Transaction, detailParam, securityTicket); } startTime = startTime.AddDays(1); } return(returnValue); #endregion UserCode }