|
|
|
|
@@ -312,112 +312,63 @@ and u.id=@user_id;
|
|
|
|
|
public employee_leaveViewModel GetLeaveOfEmployee(int employee_id, DateTime? start_date, DateTime? end_date)
|
|
|
|
|
{
|
|
|
|
|
var sql = string.Format(@"
|
|
|
|
|
select {0}b{0}.{0}employee_id{0}, (
|
|
|
|
|
SELECT SUM((select count(d::date) as d from generate_series(case when start_date<@start_date then @start_date else start_date end,case when end_date>@end_date then @end_date else end_date end, '1 day'::interval) d where extract('dow' from d) not in (0, 6))) FROM tad_general_leaves as tad_general
|
|
|
|
|
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
|
|
|
|
|
WHERE tad_general.deleted_at is null
|
|
|
|
|
AND leave_type.deleted_at is null
|
|
|
|
|
AND leave_type.id = 2
|
|
|
|
|
AND tad_general.employee_id = b.employee_id
|
|
|
|
|
AND tad_general.status = '3'
|
|
|
|
|
AND ((tad_general.start_date between @start_date and @end_date)
|
|
|
|
|
or (tad_general.end_date between @start_date and @end_date))
|
|
|
|
|
) as sum_day_sick_leave, (
|
|
|
|
|
SELECT COUNT(tad_general.*) FROM tad_general_leaves as tad_general
|
|
|
|
|
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
|
|
|
|
|
WHERE tad_general.deleted_at is null
|
|
|
|
|
AND leave_type.deleted_at is null
|
|
|
|
|
AND leave_type.id = 2
|
|
|
|
|
AND tad_general.employee_id = b.employee_id
|
|
|
|
|
AND tad_general.status = '3'
|
|
|
|
|
AND ((tad_general.start_date between @start_date and @end_date)
|
|
|
|
|
or (tad_general.end_date between @start_date and @end_date))
|
|
|
|
|
) as count_sick_leave, (
|
|
|
|
|
SELECT SUM((select count(d::date) as d from generate_series(case when start_date<@start_date then @start_date else start_date end,case when end_date>@end_date then @end_date else end_date end, '1 day'::interval) d where extract('dow' from d) not in (0, 6))) FROM tad_general_leaves as tad_general
|
|
|
|
|
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
|
|
|
|
|
WHERE tad_general.deleted_at is null
|
|
|
|
|
AND leave_type.deleted_at is null
|
|
|
|
|
AND leave_type.id = 4
|
|
|
|
|
AND tad_general.employee_id = b.employee_id
|
|
|
|
|
AND tad_general.status = '3'
|
|
|
|
|
AND ((tad_general.start_date between @start_date and @end_date)
|
|
|
|
|
or (tad_general.end_date between @start_date and @end_date))
|
|
|
|
|
) as sum_day_personal_leave, (
|
|
|
|
|
SELECT COUNT(tad_general.*) FROM tad_general_leaves as tad_general
|
|
|
|
|
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
|
|
|
|
|
WHERE tad_general.deleted_at is null
|
|
|
|
|
AND leave_type.deleted_at is null
|
|
|
|
|
AND leave_type.id = 4
|
|
|
|
|
AND tad_general.employee_id = b.employee_id
|
|
|
|
|
AND tad_general.status = '3'
|
|
|
|
|
AND ((tad_general.start_date between @start_date and @end_date)
|
|
|
|
|
or (tad_general.end_date between @start_date and @end_date))
|
|
|
|
|
) as count_personal_leave, (
|
|
|
|
|
SELECT SUM((select count(d::date) as d from generate_series(case when start_date<@start_date then @start_date else start_date end,case when end_date>@end_date then @end_date else end_date end, '1 day'::interval) d where extract('dow' from d) not in (0, 6))) FROM tad_general_leaves as tad_general
|
|
|
|
|
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
|
|
|
|
|
WHERE tad_general.deleted_at is null
|
|
|
|
|
AND leave_type.deleted_at is null
|
|
|
|
|
AND leave_type.id = 1
|
|
|
|
|
AND tad_general.employee_id = b.employee_id
|
|
|
|
|
AND tad_general.status = '3'
|
|
|
|
|
AND ((tad_general.start_date between @start_date and @end_date)
|
|
|
|
|
or (tad_general.end_date between @start_date and @end_date))
|
|
|
|
|
) as sum_day_vacation_leave, (
|
|
|
|
|
SELECT COUNT(tad_general.*) FROM tad_general_leaves as tad_general
|
|
|
|
|
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
|
|
|
|
|
WHERE tad_general.deleted_at is null
|
|
|
|
|
AND leave_type.deleted_at is null
|
|
|
|
|
AND leave_type.id = 1
|
|
|
|
|
AND tad_general.employee_id = b.employee_id
|
|
|
|
|
AND tad_general.status = '3'
|
|
|
|
|
AND ((tad_general.start_date between @start_date and @end_date)
|
|
|
|
|
or (tad_general.end_date between @start_date and @end_date))
|
|
|
|
|
) as count_vacation_leave, (
|
|
|
|
|
SELECT COUNT(DISTINCT tad_stop.date) FROM tad_stop_workings as tad_stop
|
|
|
|
|
WHERE tad_stop.deleted_at is null
|
|
|
|
|
AND tad_stop.employee_id = b.employee_id
|
|
|
|
|
AND tad_stop.date BETWEEN @start_date AND @end_date
|
|
|
|
|
) as count_stop_working, (
|
|
|
|
|
SELECT COUNT(prs_time_result.id) FROM tad_processing_time_results as prs_time_result
|
|
|
|
|
LEFT JOIN tad_processing_times as prs_time ON prs_time_result.processing_time_id = prs_time.id
|
|
|
|
|
WHERE prs_time_result.deleted_at is null
|
|
|
|
|
AND prs_time.deleted_at is null
|
|
|
|
|
AND prs_time_result.employee_id = b.employee_id
|
|
|
|
|
AND prs_time_result.time_in is not null
|
|
|
|
|
AND prs_time_result.time_out is not null
|
|
|
|
|
AND prs_time_result.late is not null
|
|
|
|
|
AND prs_time_result.date BETWEEN @start_date AND @end_date
|
|
|
|
|
) as count_late_tad_processing_time_results, (
|
|
|
|
|
SELECT COUNT(prs_time_result.id) FROM tad_processing_time_results as prs_time_result
|
|
|
|
|
LEFT JOIN tad_processing_times as prs_time ON prs_time_result.processing_time_id = prs_time.id
|
|
|
|
|
WHERE prs_time_result.deleted_at is null
|
|
|
|
|
AND prs_time.deleted_at is null
|
|
|
|
|
AND prs_time_result.employee_id = b.employee_id
|
|
|
|
|
AND prs_time_result.time_in is null
|
|
|
|
|
AND prs_time_result.time_out is null
|
|
|
|
|
AND prs_time_result.record_type = 'Absence'
|
|
|
|
|
AND prs_time_result.date BETWEEN @start_date AND @end_date
|
|
|
|
|
) as count_absence_tad_processing_time_results, (
|
|
|
|
|
SELECT SUM((select count(d::date) as d from generate_series(case when start_date<@start_date then @start_date else start_date end,case when end_date>@end_date then @end_date else end_date end, '1 day'::interval) d where extract('dow' from d) not in (0, 6))) FROM tad_general_leaves as tad_general
|
|
|
|
|
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
|
|
|
|
|
WHERE tad_general.deleted_at is null
|
|
|
|
|
AND leave_type.deleted_at is null
|
|
|
|
|
AND leave_type.id in (2,4)
|
|
|
|
|
AND tad_general.employee_id = b.employee_id
|
|
|
|
|
AND tad_general.status = '3'
|
|
|
|
|
AND ((tad_general.start_date between @start_date and @end_date)
|
|
|
|
|
or (tad_general.end_date between @start_date and @end_date))
|
|
|
|
|
) as sum_day_sick_personal_leave, (
|
|
|
|
|
SELECT COUNT(tad_general.*) FROM tad_general_leaves as tad_general
|
|
|
|
|
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
|
|
|
|
|
WHERE tad_general.deleted_at is null
|
|
|
|
|
AND leave_type.deleted_at is null
|
|
|
|
|
AND leave_type.id in (2,4)
|
|
|
|
|
AND tad_general.employee_id = b.employee_id
|
|
|
|
|
AND tad_general.status = '3'
|
|
|
|
|
AND ((tad_general.start_date between @start_date and @end_date)
|
|
|
|
|
or (tad_general.end_date between @start_date and @end_date))
|
|
|
|
|
) as count_sick_personal_leave from {0}tad_table_workings{0} as {0}a{0} left join {0}hrm_employees{0} as {0}b{0} on {0}a{0}.{0}employee_id{0} = {0}b{0}.{0}employee_id{0} left join {0}tad_workshifts{0} as {0}c{0} on {0}a{0}.{0}workshift_id{0} = {0}c{0}.{0}id{0} where {0}a{0}.{0}deleted_at{0} is null and {0}b{0}.{0}deleted_at{0} is null and {0}c{0}.{0}deleted_at{0} is null and {0}b{0}.{0}employee_id{0} = @employee_id
|
|
|
|
|
SELECT
|
|
|
|
|
|
|
|
|
|
SUM(CASE WHEN tad_general.leave_type_id = '2' THEN tad_general_detail.dayoff_qty END) as sum_day_sick_leave,
|
|
|
|
|
COUNT(DISTINCT CASE WHEN tad_general.leave_type_id = '2' THEN tad_general_detail.general_leave_id END) as count_sick_leave,
|
|
|
|
|
|
|
|
|
|
SUM(CASE WHEN tad_general.leave_type_id = '4' THEN tad_general_detail.dayoff_qty END) as sum_day_personal_leave,
|
|
|
|
|
COUNT(DISTINCT CASE WHEN tad_general.leave_type_id = '4' THEN tad_general_detail.general_leave_id END) as count_personal_leave,
|
|
|
|
|
|
|
|
|
|
SUM(CASE WHEN tad_general.leave_type_id = '1' THEN tad_general_detail.dayoff_qty END) as sum_day_vacation_leave,
|
|
|
|
|
COUNT(DISTINCT CASE WHEN tad_general.leave_type_id = '1' THEN tad_general_detail.general_leave_id END) as count_vacation_leave,
|
|
|
|
|
|
|
|
|
|
(
|
|
|
|
|
SELECT COUNT(DISTINCT tad_stop.date) FROM public.tad_stop_workings as tad_stop
|
|
|
|
|
WHERE tad_stop.deleted_at is null
|
|
|
|
|
AND tad_stop.status = 3
|
|
|
|
|
|
|
|
|
|
AND tad_stop.employee_id = @employee_id
|
|
|
|
|
AND tad_stop.date BETWEEN @start_date AND @end_date
|
|
|
|
|
) as count_stop_working,
|
|
|
|
|
|
|
|
|
|
(
|
|
|
|
|
SELECT COUNT(prs_time_result.id) FROM tad_processing_time_results as prs_time_result
|
|
|
|
|
INNER JOIN tad_processing_times as prs_time ON prs_time_result.processing_time_id = prs_time.id
|
|
|
|
|
WHERE prs_time_result.deleted_at is null
|
|
|
|
|
AND prs_time.deleted_at is null
|
|
|
|
|
AND prs_time_result.time_in is not null
|
|
|
|
|
AND prs_time_result.time_out is not null
|
|
|
|
|
AND prs_time_result.late is not null
|
|
|
|
|
|
|
|
|
|
AND prs_time_result.employee_id = @employee_id
|
|
|
|
|
AND prs_time_result.date BETWEEN @start_date AND @end_date
|
|
|
|
|
) as count_late_tad_processing_time_results,
|
|
|
|
|
|
|
|
|
|
(
|
|
|
|
|
SELECT COUNT(prs_time_result.id) FROM tad_processing_time_results as prs_time_result
|
|
|
|
|
INNER JOIN tad_processing_times as prs_time ON prs_time_result.processing_time_id = prs_time.id
|
|
|
|
|
WHERE prs_time_result.deleted_at is null
|
|
|
|
|
AND prs_time.deleted_at is null
|
|
|
|
|
AND prs_time_result.time_in is null
|
|
|
|
|
AND prs_time_result.time_out is null
|
|
|
|
|
AND prs_time_result.record_type = 'Absence'
|
|
|
|
|
|
|
|
|
|
AND prs_time_result.employee_id = @employee_id
|
|
|
|
|
AND prs_time_result.date BETWEEN @start_date AND @end_date
|
|
|
|
|
) as count_absence_tad_processing_time_results,
|
|
|
|
|
|
|
|
|
|
SUM(CASE WHEN tad_general.leave_type_id = '2' OR tad_general.leave_type_id = '4' THEN tad_general_detail.dayoff_qty END) as sum_day_sick_personal_leave,
|
|
|
|
|
COUNT(DISTINCT CASE WHEN tad_general.leave_type_id = '2' OR tad_general.leave_type_id = '4' THEN tad_general_detail.general_leave_id END) as count_sick_personal_leave
|
|
|
|
|
|
|
|
|
|
FROM public.tad_general_leave_details as tad_general_detail
|
|
|
|
|
inner join public.tad_general_leaves as tad_general on tad_general_detail.general_leave_id = tad_general.id
|
|
|
|
|
where tad_general_detail.deleted_at is null
|
|
|
|
|
and tad_general.deleted_at is null
|
|
|
|
|
and tad_general.status = '3'
|
|
|
|
|
|
|
|
|
|
and tad_general.employee_id = @employee_id
|
|
|
|
|
and tad_general_detail.date BETWEEN @start_date AND @end_date
|
|
|
|
|
", '"'.ToString());
|
|
|
|
|
|
|
|
|
|
var para = db.GetParameterListNpgsql();
|
|
|
|
|
|