From 93f58f0be32db8b9ed20c1e5245c38e3ae0f31d1 Mon Sep 17 00:00:00 2001 From: Pairat Sangprasert Date: Thu, 8 Jul 2021 00:03:29 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=97=E0=B8=B3=E0=B8=AB=E0=B8=99=E0=B9=89?= =?UTF-8?q?=E0=B8=B2=20=E0=B8=9B=E0=B8=A3=E0=B8=B1=E0=B8=9A=E0=B9=80?= =?UTF-8?q?=E0=B8=A5=E0=B8=B7=E0=B9=88=E0=B8=AD=E0=B8=99=E0=B8=84=E0=B9=88?= =?UTF-8?q?=E0=B8=B2=E0=B8=95=E0=B8=AD=E0=B8=9A=E0=B9=81=E0=B8=97=E0=B8=99?= =?UTF-8?q?=20dropdown=20=E0=B9=81=E0=B8=81=E0=B9=89=E0=B8=9B=E0=B9=87?= =?UTF-8?q?=E0=B8=99=20autocomplete=20=E0=B9=81=E0=B8=A5=E0=B8=B0=20?= =?UTF-8?q?=E0=B8=88=E0=B8=B1=E0=B8=94=E0=B9=80=E0=B8=A3=E0=B8=B5=E0=B8=A2?= =?UTF-8?q?=E0=B8=87=20=E0=B8=AB=E0=B8=99=E0=B9=88=E0=B8=A7=E0=B8=A2?= =?UTF-8?q?=E0=B8=87=E0=B8=B2=E0=B8=99=20=E0=B8=95=E0=B8=B2=E0=B8=A1=20org?= =?UTF-8?q?=20=E0=B8=97=E0=B8=B3=20=E0=B8=A7=E0=B8=B1=E0=B8=99=20=E0=B8=9E?= =?UTF-8?q?=E0=B8=B8=E0=B8=98=20=E0=B8=97=E0=B8=B5=E0=B9=88=2007/07/2564?= =?UTF-8?q?=20=E0=B9=80=E0=B8=A7=E0=B8=A5=E0=B8=B2=2020.00=20-=2012.00=20?= =?UTF-8?q?=E0=B8=99.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eva_adjust_postponement_normalService.cs | 9 ++ .../external_linkageService.cs | 118 ++++++++++++++++-- .../eva_adjust_postponement_normal.cshtml | 2 +- 3 files changed, 121 insertions(+), 8 deletions(-) diff --git a/Models/eva_adjust_postponement_normal/eva_adjust_postponement_normalService.cs b/Models/eva_adjust_postponement_normal/eva_adjust_postponement_normalService.cs index 57114ca..eb783b5 100644 --- a/Models/eva_adjust_postponement_normal/eva_adjust_postponement_normalService.cs +++ b/Models/eva_adjust_postponement_normal/eva_adjust_postponement_normalService.cs @@ -96,6 +96,15 @@ namespace TodoAPI2.Models where j.employee_id == emp_id select j.id).ToList(); + var data_fiscal_year = (from f_y in _repository.Context.eva_adjust_postponement + group f_y by f_y.fiscal_year into new_group + orderby new_group.Key descending + select new + { + fiscal_year = new_group.Key + } + ).ToList(); + var i = new eva_adjust_postponement_normalWithSelectionViewModel(); var temp = create.GetListBySearch(new eva_create_evaluationSearchModel()); i.item_create_evaluation_id = (from x in temp where avaliable_eva.Contains(x.id) select x).ToList(); diff --git a/Models/external_linkage/external_linkageService.cs b/Models/external_linkage/external_linkageService.cs index 8bf3020..7af4960 100644 --- a/Models/external_linkage/external_linkageService.cs +++ b/Models/external_linkage/external_linkageService.cs @@ -286,21 +286,125 @@ namespace TodoAPI2.Models public List GetDepartmentData() { - var sql = string.Format("select * from public.{0}DepartmentData{0} where department_name != '' and deleted_at is null order by department_name; ", '"'.ToString()); - var para = db.GetParameterListNpgsql(); - DataTable dt = db.ExecuteDataTableNpgsql(sql, para); + var sql_parent = string.Format("select" + + " org_chart_detail.department_id," + + " org_depart.department_code," + + + " (case when org_chart_detail.department_id is not null then" + + " (select org_short.department_name" + + " from public.org_department_version_names as org_short" + + " where org_short.deleted_at is null" + + " and org_short.department_id = org_chart_detail.department_id" + + " and org_short.effective_date <= now()" + + " order by org_short.effective_date desc limit 1) else null end) as department_name," + + + " (case when cast(org_chart_detail.parent_department_id AS int) < 0 then" + + " (select org.organization_name from public.org_organization_datas as org" + + " where org.deleted_at is null" + + " and org.organization_id = ABS(org_chart_detail.parent_department_id))" + + " else (select org_department_version.department_name from public.org_department_version_names as org_department_version" + + " where org_department_version.deleted_at is null" + + " and org_department_version.department_id = ABS(org_chart_detail.parent_department_id)" + + " and org_department_version.effective_date <= now()" + + " order by org_department_version.effective_date desc limit 1)" + + " end) as parent_name," + + + " cast(org_chart_detail.parent_department_id as int) as parent_department_id" + + + " from public.org_organization_chart_details as org_chart_detail" + + " left join public.org_organization_charts as org_chart on org_chart_detail.organization_chart_id = org_chart.id" + + " left join public.org_department_datas as org_depart on org_chart_detail.department_id = org_depart.id" + + " left join public.org_type_departments as org_type_depart on org_depart.department_type_id = org_type_depart.id" + + " where org_chart_detail.deleted_at is null" + + " and org_chart.deleted_at is null" + + " and org_depart.deleted_at is null" + + " and org_type_depart.deleted_at is null" + + " and org_chart.version = (select max(max_org_chart.version) from public.org_organization_charts as max_org_chart where max_org_chart.deleted_at is null and max_org_chart.effective_date <= now())" + + " and org_chart_detail.parent_department_id <= 0" + + " order by cast(org_depart.department_code as int) asc;", '"'.ToString()); + + var sql_childs = string.Format("select" + + " org_chart_detail.department_id," + + " org_depart.department_code," + + + " (case when org_chart_detail.department_id is not null then" + + " (select org_short.department_name" + + " from public.org_department_version_names as org_short" + + " where org_short.deleted_at is null" + + " and org_short.department_id = org_chart_detail.department_id" + + " and org_short.effective_date <= now()" + + " order by org_short.effective_date desc limit 1) else null end) as department_name," + + + " (case when cast(org_chart_detail.parent_department_id AS int) < 0 then" + + " (select org.organization_name from public.org_organization_datas as org" + + " where org.deleted_at is null" + + " and org.organization_id = ABS(org_chart_detail.parent_department_id))" + + " else (select org_department_version.department_name from public.org_department_version_names as org_department_version" + + " where org_department_version.deleted_at is null" + + " and org_department_version.department_id = ABS(org_chart_detail.parent_department_id)" + + " and org_department_version.effective_date <= now()" + + " order by org_department_version.effective_date desc limit 1)" + + " end) as parent_name," + + + " cast(org_chart_detail.parent_department_id as int) as parent_department_id" + + + " from public.org_organization_chart_details as org_chart_detail" + + " left join public.org_organization_charts as org_chart on org_chart_detail.organization_chart_id = org_chart.id" + + " left join public.org_department_datas as org_depart on org_chart_detail.department_id = org_depart.id" + + " left join public.org_type_departments as org_type_depart on org_depart.department_type_id = org_type_depart.id" + + " where org_chart_detail.deleted_at is null" + + " and org_chart.deleted_at is null" + + " and org_depart.deleted_at is null" + + " and org_type_depart.deleted_at is null" + + " and org_chart.version = (select max(max_org_chart.version) from public.org_organization_charts as max_org_chart where max_org_chart.deleted_at is null and max_org_chart.effective_date <= now())" + + " and org_chart_detail.parent_department_id > 0" + + " order by cast(org_depart.department_code as int) asc;", '"'.ToString()); + + var p_para = db.GetParameterListNpgsql(); + DataTable data_parent = db.ExecuteDataTableNpgsql(sql_parent, p_para); + + var c_para = db.GetParameterListNpgsql(); + DataTable data_childs = db.ExecuteDataTableNpgsql(sql_childs, c_para); + var result = new List(); - foreach (DataRow dr in dt.Rows) + foreach (DataRow parent_depart in data_parent.Rows) { var i = new external_linkageViewModel(); - i.external_id = Convert.ToInt32(dr["id"]); - i.external_code = dr["department_code"].ToString(); - i.external_name = dr["department_name"].ToString(); + i.external_id = Convert.ToInt32(parent_depart["department_id"]); + i.external_code = parent_depart["department_code"].ToString(); + i.external_name = parent_depart["department_name"].ToString(); result.Add(i); + + var val_department_id = Convert.ToInt32(parent_depart["department_id"]); + var val_department_name = parent_depart["department_name"].ToString(); + RecursiveLoopDepartmentParentToChilds(result, val_department_id, val_department_name, data_childs); } + return result; } + public void RecursiveLoopDepartmentParentToChilds(List result, int param_department_id, string param_department_name, DataTable data_childs) + { + foreach(DataRow childs_parent in data_childs.Rows) + { + var val_parent_department_id = Convert.ToInt32(childs_parent["parent_department_id"]); + if (val_parent_department_id == param_department_id) + { + var i = new external_linkageViewModel(); + i.external_id = Convert.ToInt32(childs_parent["department_id"]); + i.external_code = childs_parent["department_code"].ToString(); + i.external_name = param_department_name + " - " + childs_parent["department_name"].ToString(); + result.Add(i); + + var val_child_department_id = Convert.ToInt32(childs_parent["department_id"]); + var val_child_department_name = childs_parent["department_name"].ToString(); + RecursiveLoopDepartmentParentToChilds(result, val_child_department_id, val_child_department_name, data_childs); + } + } + + return; + } + // FOR REPORT public List GetDepartmentDataForReport() diff --git a/Views/eva_adjust_postponement_normalView/eva_adjust_postponement_normal.cshtml b/Views/eva_adjust_postponement_normalView/eva_adjust_postponement_normal.cshtml index 107fa18..6b6b529 100644 --- a/Views/eva_adjust_postponement_normalView/eva_adjust_postponement_normal.cshtml +++ b/Views/eva_adjust_postponement_normalView/eva_adjust_postponement_normal.cshtml @@ -131,7 +131,7 @@ eva_adjust_postponement_normal_InitiateDataTable(); eva_adjust_postponement_normal_InitialForm(); SetupValidationRemark("eva_adjust_postponement_normal"); - //$("#s_eva_adjust_postponement_normal_org_id").select2(); + $("#s_eva_adjust_postponement_normal_org_id").select2(); }); }