protected static FR_Base Execute(DbConnection Connection, DbTransaction Transaction, P_L6DWS_DDWSDFIDL_1014 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { //Leave UserCode region to enable user code saving #region UserCode var returnValue = new FR_Base(); L6TN_GSFT_1017 settings = cls_Get_Settings_For_Tenant.Invoke(Connection, Transaction, securityTicket).Result; ORM_CMN_STR_PPS_DailyWorkSchedule_Detail scheduleDetail = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail(); var result = scheduleDetail.Load(Connection, Transaction, Parameter.DailyWorkSchedule_DetailID); if (result.Status != FR_Status.Success || scheduleDetail.CMN_STR_PPS_DailyWorkSchedule_DetailID == Guid.Empty) { var error = new FR_Guid(); error.ErrorMessage = "No Such ID."; error.Status = FR_Status.Error_Internal; return(error); } ORM_CMN_CAL_Event calEvent = new ORM_CMN_CAL_Event(); calEvent.Load(Connection, Transaction, scheduleDetail.CMN_CAL_Event_RefID); if (scheduleDetail.CMN_BPT_EMP_Employee_LeaveRequest_RefID != Guid.Empty) { ORM_CMN_BPT_EMP_Employee_LeaveRequest leaveRequest = new ORM_CMN_BPT_EMP_Employee_LeaveRequest(); leaveRequest.Load(Connection, Transaction, scheduleDetail.CMN_BPT_EMP_Employee_LeaveRequest_RefID); Guid oldLeaveRequestID = leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID; ORM_CMN_CAL_Event leaveRequestEvent = new ORM_CMN_CAL_Event(); leaveRequestEvent.Load(Connection, Transaction, leaveRequest.CMN_CAL_Event_RefID); var calQuery = new ORM_CMN_CAL_Event.Query(); calQuery.CMN_CAL_EventID = leaveRequest.CMN_CAL_Event_RefID; var calendarRes = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, calQuery); ORM_CMN_CAL_Event calendarEvent = calendarRes[0]; var timeFrame = cls_Get_CalculationTimeFramesForTenant.Invoke(Connection, Transaction, securityTicket).Result.Where(x => x.CalculationTimeframe_StartDate.Year == calendarEvent.StartTime.Year).FirstOrDefault(); if (leaveRequestEvent.StartTime.Date != leaveRequestEvent.EndTime.Date) { DateTimeRange firstRange = null; DateTimeRange secondRange = null; DateTimeRange thirdRange = null; ORM_CMN_STR_PPS_DailyWorkSchedule dailySchedule = new ORM_CMN_STR_PPS_DailyWorkSchedule(); dailySchedule.Load(Connection, Transaction, scheduleDetail.DailyWorkSchedule_RefID); if (leaveRequestEvent.StartTime.Date == dailySchedule.WorkSheduleDate) { P_L5DWS_GDWSWDFT_0946 dailyScheduleDetailsPar = new P_L5DWS_GDWSWDFT_0946(); dailyScheduleDetailsPar.WorkSheduleDate = dailySchedule.WorkSheduleDate.AddDays(1).Date; var schedule = cls_Get_DailyWorkSchedules_WithDetails_For_Date.Invoke(Connection, Transaction, dailyScheduleDetailsPar, securityTicket).Result.FirstOrDefault(i => i.Employee_RefID == dailySchedule.Employee_RefID); secondRange = new DateTimeRange(); if (schedule != null && schedule.Details.Any(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID)) { secondRange.Start = schedule.Details.FirstOrDefault(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID).FromTime_as_DateTime; secondRange.End = leaveRequestEvent.EndTime; } else { secondRange = null; } } else if (leaveRequestEvent.EndTime.Date == dailySchedule.WorkSheduleDate) { firstRange = new DateTimeRange(); firstRange.Start = leaveRequestEvent.StartTime; P_L5DWS_GDWSWDFT_0946 dailyScheduleDetailsPar = new P_L5DWS_GDWSWDFT_0946(); dailyScheduleDetailsPar.WorkSheduleDate = dailySchedule.WorkSheduleDate.AddDays(-1).Date; var schedule = cls_Get_DailyWorkSchedules_WithDetails_For_Date.Invoke(Connection, Transaction, dailyScheduleDetailsPar, securityTicket).Result.FirstOrDefault(i => i.Employee_RefID == dailySchedule.Employee_RefID); if (schedule != null && schedule.Details.Any(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID)) { firstRange.End = schedule.Details.FirstOrDefault(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID).ToTime_as_DateTime; } else { firstRange = null; } } else { firstRange = new DateTimeRange(); firstRange.Start = leaveRequestEvent.StartTime; P_L5DWS_GDWSWDFT_0946 dailyScheduleDetailsPar = new P_L5DWS_GDWSWDFT_0946(); dailyScheduleDetailsPar.WorkSheduleDate = dailySchedule.WorkSheduleDate.AddDays(-1).Date; var schedule = cls_Get_DailyWorkSchedules_WithDetails_For_Date.Invoke(Connection, Transaction, dailyScheduleDetailsPar, securityTicket).Result.FirstOrDefault(i => i.Employee_RefID == dailySchedule.Employee_RefID); if (schedule != null && schedule.Details.Any(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID)) { firstRange.End = schedule.Details.FirstOrDefault(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID).ToTime_as_DateTime; } else { firstRange = null; } P_L5DWS_GDWSWDFT_0946 dailyScheduleDetailsParSecond = new P_L5DWS_GDWSWDFT_0946(); dailyScheduleDetailsParSecond.WorkSheduleDate = dailySchedule.WorkSheduleDate.AddDays(1).Date; var scheduleSecond = cls_Get_DailyWorkSchedules_WithDetails_For_Date.Invoke(Connection, Transaction, dailyScheduleDetailsParSecond, securityTicket).Result.FirstOrDefault(i => i.Employee_RefID == dailySchedule.Employee_RefID); secondRange = new DateTimeRange(); if (scheduleSecond != null && scheduleSecond.Details.Any(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID)) { secondRange.End = leaveRequestEvent.EndTime; secondRange.Start = scheduleSecond.Details.FirstOrDefault(i => i.LeaveRequest_RefID == leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID).FromTime_as_DateTime; } else { secondRange = null; } } #region cancelLeaveRequest P_L5LR_SEAA_1351 ApprovalActionParam = new P_L5LR_SEAA_1351(); ApprovalActionParam.Approval_Action_Commnet = ""; ApprovalActionParam.CMN_CAL_Event_Approval_ActionID = Guid.Empty; ApprovalActionParam.EventApproval_RefID = leaveRequest.CMN_CAL_Event_Approval_RefID; ApprovalActionParam.IsApproval = false; ApprovalActionParam.IsDenial = false; ApprovalActionParam.IsRevocation = true; cls_Save_Employee_ApprovalAction.Invoke(Connection, Transaction, ApprovalActionParam, securityTicket); var approvalItem = new ORM_CMN_CAL_Event_Approval(); if (leaveRequest.CMN_CAL_Event_Approval_RefID != Guid.Empty) { var approvalResult = approvalItem.Load(Connection, Transaction, leaveRequest.CMN_CAL_Event_Approval_RefID); if (approvalResult.Status != FR_Status.Success || approvalItem.CMN_CAL_Event_ApprovalID == Guid.Empty) { var error = new FR_Guid(); error.ErrorMessage = "No Such ID"; error.Status = FR_Status.Error_Internal; return(error); } } bool isApprovedBefore = approvalItem.IsApproved; approvalItem.IsApprovalProcessDenied = false; approvalItem.IsApprovalProcessOpened = false; approvalItem.IsApprovalProcessCanceledByUser = true; approvalItem.IsApproved = false; approvalItem.Save(Connection, Transaction); P_L5EM_GEATFSbRTFE_1423 statParam = new P_L5EM_GEATFSbRTFE_1423(); statParam.absenceReasonID = leaveRequest.CMN_BPT_STA_AbsenceReason_RefID; statParam.employeeID = leaveRequest.RequestedFor_Employee_RefID; statParam.timeFrameID = timeFrame.CMN_CAL_CalculationTimeframeID; var statistics = cls_Get_Employee_AbsenceReason_TimeframeStatistic_byReasonTimeFrameEmployee.Invoke(Connection, Transaction, statParam, securityTicket).Result; if (statistics != null) { P_L5EM_SEARTFS_1356 updateStatisticsParam = new P_L5EM_SEARTFS_1356(); updateStatisticsParam.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID = statistics.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID; updateStatisticsParam.Employee_RefID = statistics.Employee_RefID; updateStatisticsParam.CalculationTimeframe_RefID = statistics.CalculationTimeframe_RefID; updateStatisticsParam.AbsenceReason_RefID = statistics.AbsenceReason_RefID; if (isApprovedBefore) { updateStatisticsParam.R_RequestReservedAbsence_InDays = statistics.R_RequestReservedAbsence_InDays; updateStatisticsParam.R_RequestReservedAbsence_InHours = statistics.R_RequestReservedAbsence_InHours; updateStatisticsParam.R_AbsenceTimeUsed_InDays = statistics.R_AbsenceTimeUsed_InDays - Parameter.durationInDays; updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours - Parameter.durationInHours; updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays = statistics.R_TotalAllowedAbsenceTime_InDays + Parameter.durationInDays; updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours + Parameter.durationInHours; } else { updateStatisticsParam.R_RequestReservedAbsence_InDays = statistics.R_RequestReservedAbsence_InDays - Parameter.durationInDays; updateStatisticsParam.R_RequestReservedAbsence_InHours = statistics.R_RequestReservedAbsence_InHours - Parameter.durationInHours; updateStatisticsParam.R_AbsenceTimeUsed_InDays = statistics.R_AbsenceTimeUsed_InDays; updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours; updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays = statistics.R_TotalAllowedAbsenceTime_InDays; updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours; } var res = cls_Save_Employee_AbsenceReason_TimeframeStatistic.Invoke(Connection, Transaction, updateStatisticsParam, securityTicket); } leaveRequest.Save(Connection, Transaction); Guid absenceReasonID = leaveRequest.CMN_BPT_STA_AbsenceReason_RefID; #endregion #region FirstRange var authRequired = true; var absenceReasons = cls_get_Active_AbsenceReason_For_TenantID.Invoke(Connection, Transaction, securityTicket).Result; if (absenceReasons != null) { if (absenceReasons.Any(r => r.CMN_BPT_STA_AbsenceReasonID == absenceReasonID)) { var reason = absenceReasons.FirstOrDefault(r => r.CMN_BPT_STA_AbsenceReasonID == absenceReasonID); if (reason != null) { authRequired = reason.IsAuthorizationRequired; } } } if (firstRange != null) { leaveRequestEvent = new ORM_CMN_CAL_Event(); leaveRequestEvent.CMN_CAL_EventID = Guid.NewGuid(); leaveRequestEvent.StartTime = firstRange.Start; leaveRequestEvent.EndTime = firstRange.End; leaveRequestEvent.R_EventDuration_sec = (int)firstRange.End.Subtract(firstRange.Start).TotalSeconds; leaveRequestEvent.IsRepetitive = false; leaveRequestEvent.IsWholeDayEvent = false; leaveRequestEvent.IsCalendarEvent_Editable = true; leaveRequestEvent.Tenant_RefID = securityTicket.TenantID; leaveRequestEvent.Save(Connection, Transaction); approvalItem = new ORM_CMN_CAL_Event_Approval(); approvalItem.CMN_CAL_Event_ApprovalID = Guid.NewGuid(); approvalItem.Event_RefID = leaveRequestEvent.CMN_CAL_EventID; approvalItem.IsApprovalProcessDenied = false; approvalItem.IsApprovalProcessOpened = false; if (settings.NumberOfResponsiblePersonsRequiredToApprove == 0 || !authRequired) { approvalItem.IsApproved = true; approvalItem.IsApprovalProcessOpened = false; } else { approvalItem.IsApproved = false; approvalItem.IsApprovalProcessOpened = true; } approvalItem.IsApprovalProcessCanceledByUser = false; approvalItem.IsDeleted = false; approvalItem.Creation_Timestamp = DateTime.Now; approvalItem.Tenant_RefID = securityTicket.TenantID; approvalItem.Save(Connection, Transaction); leaveRequest = new ORM_CMN_BPT_EMP_Employee_LeaveRequest(); leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID = Guid.NewGuid(); leaveRequest.CMN_BPT_STA_AbsenceReason_RefID = absenceReasonID; leaveRequest.CMN_CAL_Event_Approval_RefID = approvalItem.CMN_CAL_Event_ApprovalID; leaveRequest.CMN_CAL_Event_RefID = leaveRequestEvent.CMN_CAL_EventID; leaveRequest.IsDeleted = false; leaveRequest.RequestedFor_Employee_RefID = dailySchedule.Employee_RefID; leaveRequest.Tenant_RefID = securityTicket.TenantID; leaveRequest.Creation_Timestamp = DateTime.Now; leaveRequest.LeaveRequestCreationSource = "plannico.time"; leaveRequest.Save(Connection, Transaction); P_L5DWS_GDWSWDFP_1225 par = new P_L5DWS_GDWSWDFP_1225(); par.StartDate = firstRange.Start; par.EndDate = firstRange.End; var schedulesWithDetails = cls_Get_DailyWorkSchedules_WithDetails_For_Period.Invoke(Connection, Transaction, par, securityTicket).Result.DailyWorkSchedulesWithDetails; foreach (var schedule in schedulesWithDetails) { if (schedule.Details.Any(i => i.LeaveRequest_RefID == oldLeaveRequestID)) { foreach (var detailItem in schedule.Details.Where(i => i.LeaveRequest_RefID == oldLeaveRequestID).ToArray()) { ORM_CMN_STR_PPS_DailyWorkSchedule_Detail detail = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail(); detail.Load(Connection, Transaction, detailItem.CMN_STR_PPS_DailyWorkSchedule_DetailID); detail.CMN_BPT_EMP_Employee_LeaveRequest_RefID = leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID; detail.Save(Connection, Transaction); } } } } #endregion #region secondRange if (secondRange != null) { leaveRequestEvent = new ORM_CMN_CAL_Event(); leaveRequestEvent.CMN_CAL_EventID = Guid.NewGuid(); leaveRequestEvent.StartTime = secondRange.Start; leaveRequestEvent.EndTime = secondRange.End; leaveRequestEvent.R_EventDuration_sec = (int)secondRange.End.Subtract(secondRange.Start).TotalSeconds; leaveRequestEvent.IsRepetitive = false; leaveRequestEvent.IsWholeDayEvent = false; leaveRequestEvent.IsCalendarEvent_Editable = true; leaveRequestEvent.Tenant_RefID = securityTicket.TenantID; leaveRequestEvent.Save(Connection, Transaction); approvalItem = new ORM_CMN_CAL_Event_Approval(); approvalItem.CMN_CAL_Event_ApprovalID = Guid.NewGuid(); approvalItem.Event_RefID = leaveRequestEvent.CMN_CAL_EventID; approvalItem.IsApprovalProcessDenied = false; approvalItem.IsApprovalProcessOpened = false; if (settings.NumberOfResponsiblePersonsRequiredToApprove == 0 || !authRequired) { approvalItem.IsApproved = true; approvalItem.IsApprovalProcessOpened = false; } else { approvalItem.IsApprovalProcessOpened = true; approvalItem.IsApproved = false; } approvalItem.IsApprovalProcessCanceledByUser = false; approvalItem.IsDeleted = false; approvalItem.Creation_Timestamp = DateTime.Now; approvalItem.Tenant_RefID = securityTicket.TenantID; approvalItem.Save(Connection, Transaction); leaveRequest = new ORM_CMN_BPT_EMP_Employee_LeaveRequest(); leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID = Guid.NewGuid(); leaveRequest.CMN_BPT_STA_AbsenceReason_RefID = absenceReasonID; leaveRequest.CMN_CAL_Event_Approval_RefID = approvalItem.CMN_CAL_Event_ApprovalID; leaveRequest.CMN_CAL_Event_RefID = leaveRequestEvent.CMN_CAL_EventID; leaveRequest.IsDeleted = false; leaveRequest.RequestedFor_Employee_RefID = dailySchedule.Employee_RefID; leaveRequest.Tenant_RefID = securityTicket.TenantID; leaveRequest.Creation_Timestamp = DateTime.Now; leaveRequest.LeaveRequestCreationSource = "plannico.time"; leaveRequest.Save(Connection, Transaction); P_L5DWS_GDWSWDFP_1225 par = new P_L5DWS_GDWSWDFP_1225(); par.StartDate = secondRange.Start; par.EndDate = secondRange.End; var schedulesWithDetails = cls_Get_DailyWorkSchedules_WithDetails_For_Period.Invoke(Connection, Transaction, par, securityTicket).Result.DailyWorkSchedulesWithDetails; foreach (var schedule in schedulesWithDetails) { if (schedule.Details.Any(i => i.LeaveRequest_RefID == oldLeaveRequestID)) { foreach (var detailItem in schedule.Details.Where(i => i.LeaveRequest_RefID == oldLeaveRequestID).ToArray()) { ORM_CMN_STR_PPS_DailyWorkSchedule_Detail detail = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail(); detail.Load(Connection, Transaction, detailItem.CMN_STR_PPS_DailyWorkSchedule_DetailID); detail.CMN_BPT_EMP_Employee_LeaveRequest_RefID = leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID; detail.Save(Connection, Transaction); } } } } #endregion #region thirdRange if (thirdRange != null) { leaveRequestEvent = new ORM_CMN_CAL_Event(); leaveRequestEvent.CMN_CAL_EventID = Guid.NewGuid(); leaveRequestEvent.StartTime = thirdRange.Start; leaveRequestEvent.EndTime = thirdRange.End; leaveRequestEvent.R_EventDuration_sec = (int)thirdRange.End.Subtract(thirdRange.Start).TotalSeconds; leaveRequestEvent.IsRepetitive = false; leaveRequestEvent.IsWholeDayEvent = false; leaveRequestEvent.IsCalendarEvent_Editable = true; leaveRequestEvent.Tenant_RefID = securityTicket.TenantID; leaveRequestEvent.Save(Connection, Transaction); approvalItem = new ORM_CMN_CAL_Event_Approval(); approvalItem.CMN_CAL_Event_ApprovalID = Guid.NewGuid(); approvalItem.Event_RefID = leaveRequestEvent.CMN_CAL_EventID; approvalItem.IsApprovalProcessDenied = false; approvalItem.IsApprovalProcessOpened = false; if (settings.NumberOfResponsiblePersonsRequiredToApprove == 0 || !authRequired) { approvalItem.IsApprovalProcessOpened = false; approvalItem.IsApproved = true; } else { approvalItem.IsApprovalProcessOpened = true; approvalItem.IsApproved = false; } approvalItem.IsApprovalProcessCanceledByUser = false; approvalItem.IsDeleted = false; approvalItem.Creation_Timestamp = DateTime.Now; approvalItem.Tenant_RefID = securityTicket.TenantID; approvalItem.Save(Connection, Transaction); leaveRequest = new ORM_CMN_BPT_EMP_Employee_LeaveRequest(); leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID = Guid.NewGuid(); leaveRequest.CMN_BPT_STA_AbsenceReason_RefID = absenceReasonID; leaveRequest.CMN_CAL_Event_Approval_RefID = approvalItem.CMN_CAL_Event_ApprovalID; leaveRequest.CMN_CAL_Event_RefID = leaveRequestEvent.CMN_CAL_EventID; leaveRequest.IsDeleted = false; leaveRequest.RequestedFor_Employee_RefID = dailySchedule.Employee_RefID; leaveRequest.Tenant_RefID = securityTicket.TenantID; leaveRequest.Creation_Timestamp = DateTime.Now; leaveRequest.LeaveRequestCreationSource = "plannico.time"; leaveRequest.Save(Connection, Transaction); P_L5DWS_GDWSWDFP_1225 par = new P_L5DWS_GDWSWDFP_1225(); par.StartDate = thirdRange.Start; par.EndDate = thirdRange.End; var schedulesWithDetails = cls_Get_DailyWorkSchedules_WithDetails_For_Period.Invoke(Connection, Transaction, par, securityTicket).Result.DailyWorkSchedulesWithDetails; foreach (var schedule in schedulesWithDetails) { if (schedule.Details.Any(i => i.LeaveRequest_RefID == oldLeaveRequestID)) { foreach (var detailItem in schedule.Details.Where(i => i.LeaveRequest_RefID == oldLeaveRequestID).ToArray()) { ORM_CMN_STR_PPS_DailyWorkSchedule_Detail detail = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail(); detail.Load(Connection, Transaction, detailItem.CMN_STR_PPS_DailyWorkSchedule_DetailID); detail.CMN_BPT_EMP_Employee_LeaveRequest_RefID = leaveRequest.CMN_BPT_EMP_Employee_LeaveRequestID; detail.Save(Connection, Transaction); } } } } #endregion } else { leaveRequestEvent.Remove(Connection, Transaction); leaveRequest.Remove(Connection, Transaction); var approvalItem = new ORM_CMN_CAL_Event_Approval(); if (leaveRequest.CMN_CAL_Event_Approval_RefID != Guid.Empty) { var approvalResult = approvalItem.Load(Connection, Transaction, leaveRequest.CMN_CAL_Event_Approval_RefID); if (approvalResult.Status != FR_Status.Success || approvalItem.CMN_CAL_Event_ApprovalID == Guid.Empty) { var error = new FR_Guid(); error.ErrorMessage = "No Such ID"; error.Status = FR_Status.Error_Internal; return(error); } } bool isApprovedBefore = approvalItem.IsApproved; P_L5EM_GEATFSbRTFE_1423 statParam = new P_L5EM_GEATFSbRTFE_1423(); statParam.absenceReasonID = leaveRequest.CMN_BPT_STA_AbsenceReason_RefID; statParam.employeeID = leaveRequest.RequestedFor_Employee_RefID; statParam.timeFrameID = timeFrame.CMN_CAL_CalculationTimeframeID; var statistics = cls_Get_Employee_AbsenceReason_TimeframeStatistic_byReasonTimeFrameEmployee.Invoke(Connection, Transaction, statParam, securityTicket).Result; if (statistics != null) { P_L5EM_SEARTFS_1356 updateStatisticsParam = new P_L5EM_SEARTFS_1356(); updateStatisticsParam.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID = statistics.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID; updateStatisticsParam.Employee_RefID = statistics.Employee_RefID; updateStatisticsParam.CalculationTimeframe_RefID = statistics.CalculationTimeframe_RefID; updateStatisticsParam.AbsenceReason_RefID = statistics.AbsenceReason_RefID; if (isApprovedBefore) { updateStatisticsParam.R_RequestReservedAbsence_InDays = statistics.R_RequestReservedAbsence_InDays; updateStatisticsParam.R_RequestReservedAbsence_InHours = statistics.R_RequestReservedAbsence_InHours; updateStatisticsParam.R_AbsenceTimeUsed_InDays = statistics.R_AbsenceTimeUsed_InDays - Parameter.durationInDays; updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours - Parameter.durationInHours; updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays = statistics.R_TotalAllowedAbsenceTime_InDays + Parameter.durationInDays; updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours + Parameter.durationInHours; } else { updateStatisticsParam.R_RequestReservedAbsence_InDays = statistics.R_RequestReservedAbsence_InDays - Parameter.durationInDays; updateStatisticsParam.R_RequestReservedAbsence_InHours = statistics.R_RequestReservedAbsence_InHours - Parameter.durationInHours; updateStatisticsParam.R_AbsenceTimeUsed_InDays = statistics.R_AbsenceTimeUsed_InDays; updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours; updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays = statistics.R_TotalAllowedAbsenceTime_InDays; updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours; } var res = cls_Save_Employee_AbsenceReason_TimeframeStatistic.Invoke(Connection, Transaction, updateStatisticsParam, securityTicket); } } } P_L5DWS_DDWSDFIDL_1014 param = new P_L5DWS_DDWSDFIDL_1014(); param.DailyWorkSchedule_DetailID = Parameter.DailyWorkSchedule_DetailID; cls_Delete_Employee_DailyWorkSchedule_Detail.Invoke(Connection, Transaction, param, securityTicket); //Put your code here return(returnValue); #endregion UserCode }
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 }
protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L6LR_SLRCA_1055 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); if (Parameter.LeaveRequestID != Guid.Empty) { var lrQuery = new ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query(); lrQuery.CMN_BPT_EMP_Employee_LeaveRequestID = Parameter.LeaveRequestID; lrQuery.Tenant_RefID = securityTicket.TenantID; lrQuery.IsDeleted = false; var leaveRequestsRes = ORM_CMN_BPT_EMP_Employee_LeaveRequest.Query.Search(Connection, Transaction, lrQuery); ORM_CMN_BPT_EMP_Employee_LeaveRequest leaveRequest = leaveRequestsRes[0]; P_L5LR_SEAA_1351 ApprovalActionParam = new P_L5LR_SEAA_1351(); ApprovalActionParam.Approval_Action_Commnet = ""; ApprovalActionParam.CMN_CAL_Event_Approval_ActionID = Guid.Empty; ApprovalActionParam.EventApproval_RefID = leaveRequest.CMN_CAL_Event_Approval_RefID; ApprovalActionParam.IsApproval = false; ApprovalActionParam.IsDenial = false; ApprovalActionParam.IsRevocation = true; cls_Save_Employee_ApprovalAction.Invoke(Connection, Transaction, ApprovalActionParam, securityTicket); var approvalItem = new ORM_CMN_CAL_Event_Approval(); if (leaveRequest.CMN_CAL_Event_Approval_RefID != Guid.Empty) { var result = approvalItem.Load(Connection, Transaction, leaveRequest.CMN_CAL_Event_Approval_RefID); if (result.Status != FR_Status.Success || approvalItem.CMN_CAL_Event_ApprovalID == Guid.Empty) { var error = new FR_Guid(); error.ErrorMessage = "No Such ID"; error.Status = FR_Status.Error_Internal; return(error); } } bool isApprovedBefore = approvalItem.IsApproved; approvalItem.IsApprovalProcessDenied = false; approvalItem.IsApprovalProcessOpened = false; approvalItem.IsApprovalProcessCanceledByUser = true; approvalItem.IsApproved = false; approvalItem.Save(Connection, Transaction); // update statistics ************************************************ var calQuery = new ORM_CMN_CAL_Event.Query(); calQuery.CMN_CAL_EventID = leaveRequest.CMN_CAL_Event_RefID; var calendarRes = ORM_CMN_CAL_Event.Query.Search(Connection, Transaction, calQuery); ORM_CMN_CAL_Event calendarEvent = calendarRes[0]; var timeFrame = cls_Get_CalculationTimeFramesForTenant.Invoke(Connection, Transaction, securityTicket).Result.Where(x => x.CalculationTimeframe_StartDate.Year == calendarEvent.StartTime.Year).FirstOrDefault(); P_L5EM_GEATFSbRTFE_1423 statParam = new P_L5EM_GEATFSbRTFE_1423(); statParam.absenceReasonID = leaveRequest.CMN_BPT_STA_AbsenceReason_RefID; statParam.employeeID = leaveRequest.RequestedFor_Employee_RefID; statParam.timeFrameID = timeFrame.CMN_CAL_CalculationTimeframeID; var statistics = cls_Get_Employee_AbsenceReason_TimeframeStatistic_byReasonTimeFrameEmployee.Invoke(Connection, Transaction, statParam, securityTicket).Result; if (statistics != null) { P_L5EM_SEARTFS_1356 updateStatisticsParam = new P_L5EM_SEARTFS_1356(); updateStatisticsParam.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID = statistics.CMN_BPT_EMP_Employee_AbsenceReason_TimeframeStatisticsID; updateStatisticsParam.Employee_RefID = statistics.Employee_RefID; updateStatisticsParam.CalculationTimeframe_RefID = statistics.CalculationTimeframe_RefID; updateStatisticsParam.AbsenceReason_RefID = statistics.AbsenceReason_RefID; updateStatisticsParam.R_AbsenceCarryOver_InDays = statistics.R_AbsenceCarryOver_InDays; updateStatisticsParam.R_AbsenceCarryOver_InHours = statistics.R_AbsenceCarryOver_InHours; if (isApprovedBefore) { updateStatisticsParam.R_RequestReservedAbsence_InDays = statistics.R_RequestReservedAbsence_InDays; updateStatisticsParam.R_RequestReservedAbsence_InHours = statistics.R_RequestReservedAbsence_InHours; updateStatisticsParam.R_AbsenceTimeUsed_InDays = statistics.R_AbsenceTimeUsed_InDays - Parameter.durationInDays; updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours - Parameter.durationInHours; updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays = statistics.R_TotalAllowedAbsenceTime_InDays + Parameter.durationInDays; updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours + Parameter.durationInHours; } else { updateStatisticsParam.R_RequestReservedAbsence_InDays = statistics.R_RequestReservedAbsence_InDays - Parameter.durationInDays; updateStatisticsParam.R_RequestReservedAbsence_InHours = statistics.R_RequestReservedAbsence_InHours - Parameter.durationInHours; updateStatisticsParam.R_AbsenceTimeUsed_InDays = statistics.R_AbsenceTimeUsed_InDays; updateStatisticsParam.R_AbsenceTimeUsed_InHours = statistics.R_AbsenceTimeUsed_InHours; updateStatisticsParam.R_TotalAllowedAbsenceTime_InDays = statistics.R_TotalAllowedAbsenceTime_InDays; updateStatisticsParam.R_TotalAllowedAbsenceTime_InHours = statistics.R_TotalAllowedAbsenceTime_InHours; } var res = cls_Save_Employee_AbsenceReason_TimeframeStatistic.Invoke(Connection, Transaction, updateStatisticsParam, securityTicket); // statistics update end :) } DateTime startTime = calendarEvent.StartTime; while (startTime.Date <= calendarEvent.EndTime.Date) { ORM_CMN_STR_PPS_DailyWorkSchedule.Query scheduleQuery = new ORM_CMN_STR_PPS_DailyWorkSchedule.Query(); scheduleQuery.Tenant_RefID = securityTicket.TenantID; scheduleQuery.IsDeleted = false; scheduleQuery.WorkSheduleDate = startTime.Date; scheduleQuery.Employee_RefID = leaveRequest.RequestedFor_Employee_RefID; List <ORM_CMN_STR_PPS_DailyWorkSchedule> workSechedules = ORM_CMN_STR_PPS_DailyWorkSchedule.Query.Search(Connection, Transaction, scheduleQuery); if (workSechedules.Count != 0) { var dwsParam = new P_L5DWS_GDWSWDFT_0946(); dwsParam.WorkSheduleDate = startTime.Date; var resultDailyWorkSchedule = cls_Get_DailyWorkSchedules_WithDetails_For_Date.Invoke(Connection, Transaction, dwsParam, securityTicket); var dailySchedule = resultDailyWorkSchedule.Result.FirstOrDefault(i => i.Employee_RefID == leaveRequest.RequestedFor_Employee_RefID); foreach (var detail in dailySchedule.Details) { P_L5DWS_DDWSDFIDL_1014 deleteParam = new P_L5DWS_DDWSDFIDL_1014(); deleteParam.DailyWorkSchedule_DetailID = detail.CMN_STR_PPS_DailyWorkSchedule_DetailID; var scheduleID = cls_Delete_Employee_DailyWorkSchedule_Detail.Invoke(Connection, Transaction, deleteParam, securityTicket); } ORM_CMN_STR_PPS_DailyWorkSchedule schedule = new ORM_CMN_STR_PPS_DailyWorkSchedule(); if (dailySchedule.CMN_STR_PPS_DailyWorkScheduleID != Guid.Empty) { var result = schedule.Load(Connection, Transaction, dailySchedule.CMN_STR_PPS_DailyWorkScheduleID); if (result.Status != FR_Status.Success || schedule.CMN_STR_PPS_DailyWorkScheduleID == Guid.Empty) { var error = new FR_Guid(); error.ErrorMessage = "No Such ID."; error.Status = FR_Status.Error_Internal; return(error); } } schedule.IsDeleted = true; schedule.Save(Connection, Transaction); } startTime = startTime.AddDays(1); } } return(returnValue); #endregion UserCode }
///<summary> /// Method Invocation of wrapper classes ///<summary> protected static FR_Base Invoke(DbConnection Connection, DbTransaction Transaction, string ConnectionString, P_L5DWS_DDWSDFIDL_1014 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { bool cleanupConnection = Connection == null; bool cleanupTransaction = Transaction == null; FR_Base functionReturn = new FR_Base(); try { if (cleanupConnection == true) { Connection = CSV2Core_MySQL.Support.DBSQLSupport.CreateConnection(ConnectionString); Connection.Open(); } if (cleanupTransaction == true) { Transaction = Connection.BeginTransaction(); } functionReturn = Execute(Connection, Transaction, Parameter, securityTicket); #region Cleanup Connection/Transaction //Commit the transaction if (cleanupTransaction == true) { Transaction.Commit(); } //Close the connection if (cleanupConnection == true) { Connection.Close(); } #endregion } catch (Exception ex) { try { if (cleanupTransaction == true && Transaction != null) { Transaction.Rollback(); } } catch { } try { if (cleanupConnection == true && Connection != null) { Connection.Close(); } } catch { } Guid errorID = Guid.NewGuid(); ServerLog.Instance.Fatal("Application error occured. ErrorID = " + errorID, ex); throw new Exception("Exception occured in method cls_Delete_Employee_DailyWorkSchedule_Detail", ex); } return(functionReturn); }
///<summary> /// Invokes the method for the given Connection, and Transaction, leaving them open/not commited if no exceptions occured ///<summary> public static FR_Base Invoke(DbConnection Connection, DbTransaction Transaction, P_L5DWS_DDWSDFIDL_1014 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { return(Invoke(Connection, Transaction, null, Parameter, securityTicket)); }
///<summary> /// Opens the connection/transaction for the given connectionString, and closes them when complete ///<summary> public static FR_Base Invoke(string ConnectionString, P_L5DWS_DDWSDFIDL_1014 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { return(Invoke(null, null, ConnectionString, Parameter, securityTicket)); }
protected static FR_Base Execute(DbConnection Connection, DbTransaction Transaction, P_L5DWS_DDWSDFIDL_1014 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { //Leave UserCode region to enable user code saving #region UserCode var returnValue = new FR_Base(); //Put your code here ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query detailQuery = new ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query(); detailQuery.CMN_STR_PPS_DailyWorkSchedule_DetailID = Parameter.DailyWorkSchedule_DetailID; detailQuery.IsDeleted = false; detailQuery.Tenant_RefID = securityTicket.TenantID; var detail = ORM_CMN_STR_PPS_DailyWorkSchedule_Detail.Query.Search(Connection, Transaction, detailQuery).FirstOrDefault(); if (detail != null) { detail.IsDeleted = true; detail.Save(Connection, Transaction); } else { return(returnValue); } return(returnValue); #endregion UserCode }