using AutoMapper; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using TTSW.EF; using TTSW.Utils; using TTSW.Constant; using TTSW.Common; using TodoAPI2.Models; using System.IO; using System.Web; using System.Net; using TTSW.Configure; using Microsoft.Extensions.Options; using System.Data; using System.Globalization; namespace TodoAPI2.Models { public class external_linkageService : Iexternal_linkageService { private IMyDatabase db; private IBaseRepository2 _repository; public external_linkageService(IMyDatabase mydb, IBaseRepository2 repository) { db = mydb; _repository = repository; } public List Getcreate_evaluationDetail() { var item_create_evaluation_id = (from x in _repository.Context.eva_create_evaluation select x); var result = new List(); foreach(var x in item_create_evaluation_id) { var i = new external_linkageViewModel(); i.external_id = x.id; i.external_code = x.id.ToString(); i.external_name = x.eva_evaluation_group.thegroup + " ปี " + x.eva_performance_plan.fiscal_year.ToString(); result.Add(i); } return result; } public List Gethrm_employee_types() { var sql = "SELECT * FROM public.hrm_employee_types where deleted_at is null and employee_type_id != '05' order by employee_type_id"; var para = db.GetParameterListNpgsql(); DataTable dt = db.ExecuteDataTableNpgsql(sql, para); var result = new List(); foreach (DataRow dr in dt.Rows) { var i = new external_linkageViewModel(); i.external_id = Convert.ToInt32(dr["id"]); i.external_code = dr["employee_type_id"].ToString(); i.external_name = dr["employee_type_id"].ToString() + " " + dr["employee_type_name"].ToString(); result.Add(i); } return result; } public List Gethrm_position_types() { var sql = "SELECT * FROM public.hrm_position_types where deleted_at is null order by position_type_id"; var para = db.GetParameterListNpgsql(); DataTable dt = db.ExecuteDataTableNpgsql(sql, para); var result = new List(); foreach (DataRow dr in dt.Rows) { var i = new external_linkageViewModel(); i.external_id = Convert.ToInt32(dr["id"]); i.external_code = dr["position_type_id"].ToString(); i.external_name = dr["position_type_id"].ToString() + " " + dr["position_type_name"].ToString(); result.Add(i); } return result; } public List Gethrm_position_levels() { var sql = "SELECT * FROM public.hrm_position_levels where deleted_at is null order by position_level_id"; var para = db.GetParameterListNpgsql(); DataTable dt = db.ExecuteDataTableNpgsql(sql, para); var result = new List(); foreach (DataRow dr in dt.Rows) { var i = new external_linkageViewModel(); i.external_id = Convert.ToInt32(dr["id"]); i.external_code = dr["position_level_id"].ToString(); i.external_name = dr["position_level_id"].ToString() + " " + dr["position_level_name"].ToString(); result.Add(i); } return result; } public List GetYesNo() { var result = new List(); var i = new external_linkageViewModel(); i.external_id = 1; i.external_code = "yes"; i.external_name = "ใช่"; result.Add(i); var j = new external_linkageViewModel(); j.external_id = 2; j.external_code = "no"; j.external_name = "ไม่ใช่"; result.Add(j); return result; } public List GetChoice(int start, int end) { var result = new List(); for(int i=start; i<=end; i++) { var x = new external_linkageViewModel(); x.external_id = i; x.external_code = i.ToString(); x.external_name = i.ToString(); result.Add(x); } return result; } public List GetDataType() { var result = new List(); var i = new external_linkageViewModel(); i.external_id = 1; i.external_code = "01"; i.external_name = "ส่วนที่ 1 ผลงาน"; result.Add(i); var j = new external_linkageViewModel(); j.external_id = 2; j.external_code = "02"; j.external_name = "ส่วนที่ 2 การปฏิบัติ"; result.Add(j); return result; } //i.item_evaluation_type = (from x in _repository.Context.external_linkage select x).ToList(); //i.item_evaluation_status = (from x in _repository.Context.external_linkage select x).ToList(); //i.item_grantee_id = (from x in _repository.Context.external_linkage select x).ToList(); //i.item_evaluation_accept = (from x in _repository.Context.external_linkage select x).ToList(); public List Getevaluation_type() { var result = new List(); var i = new external_linkageViewModel(); i.external_id = 1; i.external_code = "01"; i.external_name = "ผู้ถูกประเมิน"; result.Add(i); var j = new external_linkageViewModel(); j.external_id = 2; j.external_code = "02"; j.external_name = "ผู้ประเมิน"; result.Add(j); var l = new external_linkageViewModel(); l.external_id = 3; l.external_code = "03"; l.external_name = "ผู้บังคับบัญชาสูงขึ้นไปหนึ่งระดับ"; result.Add(l); var m = new external_linkageViewModel(); m.external_id = 4; m.external_code = "04"; m.external_name = "ผู้บังคับบัญชาสูงขึ้นไปสองระดับ"; result.Add(m); return result; } public List Getevaluation_status() { var result = new List(); var i = new external_linkageViewModel(); i.external_id = 1; i.external_code = "N"; i.external_name = "ยังไม่ส่ง"; result.Add(i); var j = new external_linkageViewModel(); j.external_id = 2; j.external_code = "Y"; j.external_name = "ส่งแล้ว"; result.Add(j); return result; } public List Getevaluation_accept() { var result = new List(); var i = new external_linkageViewModel(); i.external_id = 10; i.external_code = "N1"; i.external_name = "ยังไม่แจ้งผล"; result.Add(i); var j = new external_linkageViewModel(); j.external_id = 11; j.external_code = "Y1"; j.external_name = "แจ้งผลแล้ว"; result.Add(j); var k = new external_linkageViewModel(); k.external_id = 20; k.external_code = "N2"; k.external_name = "ยังไม่ทราบผล"; result.Add(k); var l = new external_linkageViewModel(); l.external_id = 21; l.external_code = "Y2"; l.external_name = "ทราบผลแล้ว"; result.Add(l); return result; } public List GetAgreeDisagree() { var result = new List(); var i = new external_linkageViewModel(); i.external_id = 1; i.external_code = "Y"; i.external_name = "เห็นด้วยกับผลการประเมิน"; result.Add(i); var j = new external_linkageViewModel(); j.external_id = 2; j.external_code = "N"; j.external_name = "ไม่เห็นด้วยและมีความเห็นต่าง"; result.Add(j); return result; } 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 result = new List(); foreach (DataRow dr in dt.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(); result.Add(i); } return result; } // FOR REPORT public List GetDepartmentDataForReport() { var sql = string.Format("select {0}a{0}.{0}chart_detail_id{0}, {0}a{0}.{0}organization_chart_id{0}, {0}a{0}.{0}department_id{0}, (CASE WHEN a.department_id IS NOT null THEN (SELECT org_short.department_name FROM org_department_version_names AS org_short WHERE org_short.deleted_at IS null AND org_short.department_id = a.department_id AND org_short.effective_date <= now() ORDER BY org_short.effective_date DESC LIMIT 1) ELSE null END) AS department_name, {0}c{0}.{0}effective_date{0}, {0}c{0}.{0}expry_date{0}, CASE WHEN CAST(a.parent_department_id AS int) < 0 THEN (SELECT organization_name FROM org_organization_datas WHERE deleted_at IS null AND organization_id = ABS(a.parent_department_id)) ELSE (SELECT org_department_version.department_name FROM org_department_version_names AS org_department_version WHERE org_department_version.deleted_at IS null AND org_department_version.department_id = ABS(a.parent_department_id) AND org_department_version.effective_date <= now() ORDER BY org_department_version.effective_date DESC LIMIT 1) END AS parent_name_datas, CAST(a.parent_department_id AS int) AS parent_department_id, {0}b{0}.{0}organization_chart_name{0}, {0}b{0}.{0}version{0}, {0}a{0}.{0}created_at{0}, {0}a{0}.{0}updated_at{0} from {0}org_organization_chart_details{0} as {0}a{0} left join {0}org_organization_charts{0} as {0}b{0} on {0}b{0}.{0}id{0} = {0}a{0}.{0}organization_chart_id{0} left join {0}org_department_datas{0} as {0}c{0} on {0}a{0}.{0}department_id{0} = {0}c{0}.{0}id{0} where ({0}b{0}.{0}version{0} = (SELECT MAX(version) FROM org_organization_charts WHERE deleted_at IS null AND effective_date <= now())) and {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", '"'.ToString()); var para = db.GetParameterListNpgsql(); DataTable dt = db.ExecuteDataTableNpgsql(sql, para); var result = new List(); foreach (DataRow dr in dt.Rows) { var i = new external_linkageViewModel(); i.external_id = Convert.ToInt32(dr["department_id"]); i.external_code = dr["department_id"].ToString(); i.external_name = dr["department_name"].ToString(); result.Add(i); } return result; } public List GetPositionForReport() { var sql = string.Format("select * from {0}org_position_datas{0} order by position_name", '"'.ToString()); var para = db.GetParameterListNpgsql(); DataTable dt = db.ExecuteDataTableNpgsql(sql, para); var result = new List(); foreach (DataRow dr in dt.Rows) { var i = new external_linkageViewModel(); i.external_id = Convert.ToInt32(dr["position_id"]); i.external_code = dr["position_id"].ToString(); i.external_name = dr["position_name"].ToString(); result.Add(i); } return result; } public List GetEducationForReport() { var sql = string.Format("SELECT * FROM hrm_education_masters;", '"'.ToString()); var para = db.GetParameterListNpgsql(); DataTable dt = db.ExecuteDataTableNpgsql(sql, para); var result = new List(); foreach (DataRow dr in dt.Rows) { var i = new external_linkageViewModel(); i.external_id = Convert.ToInt32(dr["id"]); i.external_code = dr["id"].ToString(); i.external_name = dr["edu_name"].ToString(); result.Add(i); } return result; } public List GetRelationshipForReport() { var sql = string.Format("SELECT * FROM hrm_relationship_masters;", '"'.ToString()); var para = db.GetParameterListNpgsql(); DataTable dt = db.ExecuteDataTableNpgsql(sql, para); var result = new List(); foreach (DataRow dr in dt.Rows) { var i = new external_linkageViewModel(); i.external_id = Convert.ToInt32(dr["id"]); i.external_code = dr["id"].ToString(); i.external_name = dr["relationship_name"].ToString(); result.Add(i); } return result; } public List GetFiscalYear() { int start_year = DateTime.Now.Year - 10; if (start_year < 2400) start_year += 543; int end_year = DateTime.Now.Year + 3; if (end_year < 2400) end_year += 543; var result = new List(); for (int x = start_year; x<=end_year; x++) { var i = new external_linkageViewModel(); i.external_id = x; i.external_code = x.ToString(); i.external_name = x.ToString(); result.Add(i); } return result; } public List GetFiscalYear2() { int start_year = DateTime.Now.Year - 10; if (start_year < 2400) start_year += 543; int end_year = DateTime.Now.Year + 3; if (end_year < 2400) end_year += 543; var result = new List(); for (int x = start_year; x <= end_year; x++) { var i = new external_linkageViewModel(); i.external_id = x - 543; i.external_code = x.ToString(); i.external_name = x.ToString(); result.Add(i); } return result; } //public List GetEvaRound() //{ // var sql = string.Format("select distinct eva_performance_plan.id,eva_performance_plan.{0}theTime{0} , eva_performance_plan.fiscal_year from eva_performance_plan order by eva_performance_plan.fiscal_year,eva_performance_plan.{0}theTime{0}", '"'.ToString()); // var para = db.GetParameterListNpgsql(); // DataTable dt = db.ExecuteDataTableNpgsql(sql, para); // var result = new List(); // foreach (DataRow dr in dt.Rows) // { // var i = new external_linkageViewModel(); // i.external_id = Convert.ToInt32(dr["theTime"]); // i.id_guid = Guid.Parse(dr["id"].ToString()); // i.external_code = dr["theTime"].ToString(); // i.external_name = dr["theTime"].ToString() + "/" + dr["fiscal_year"].ToString(); // result.Add(i); // } // return result; //} public List GetEvaRound() { var sql = string.Format("select id,fiscal_year,{0}theRound{0} from eva_adjust_postponement where create_evaluation_id is null order by fiscal_year,{0}theRound{0}", '"'.ToString()); var para = db.GetParameterListNpgsql(); DataTable dt = db.ExecuteDataTableNpgsql(sql, para); var result = new List(); foreach (DataRow dr in dt.Rows) { var i = new external_linkageViewModel(); i.external_id = Convert.ToInt32(dr["id"]); //i.id_guid = Guid.Parse(dr["id"].ToString()); i.external_code = dr["theRound"].ToString(); i.external_name = dr["theRound"].ToString() + "/" + dr["fiscal_year"].ToString(); result.Add(i); } return result; } public List GetAllChildInDep(int? dep_id) { var all_result = new List(); if (dep_id.HasValue) { var result = GetChildInDep(dep_id); all_result.AddRange(result); foreach (var i in result) { var result2 = GetChildInDep(i.id.Value); all_result.AddRange(result2); } } return all_result; } public string GetMainDept(int? dep_id) { var sql = string.Format(@"select data1.id,data1.department_name as p1,data2.department_name as p2 from public.{0}DepartmentData{0} data1 left join org_organization_chart_details detail on data1.id=detail.department_id left join public.{0}DepartmentData{0} data2 on data2.id=detail.parent_department_id where data1.id={1};", '"'.ToString(), dep_id.ToString()); var para = db.GetParameterListNpgsql(); DataTable dt = db.ExecuteDataTableNpgsql(sql, para); var result = ""; foreach (DataRow dr in dt.Rows) { if(dr["p2"] != null) { result = dr["p2"].ToString(); } } return result; } public List GetChildInDep(int? dep_id) { var sql = string.Format(@"select data1.id,data1.department_name from public.{0}DepartmentData{0} data1 left join org_organization_chart_details detail on data1.id=detail.department_id where detail.parent_department_id={1} or data1.id={1};", '"'.ToString(), dep_id.ToString()); var para = db.GetParameterListNpgsql(); DataTable dt = db.ExecuteDataTableNpgsql(sql, para); var result = new List(); foreach (DataRow dr in dt.Rows) { var i = new external_linkageViewModel(); i.external_id = Convert.ToInt32(dr["id"]); i.external_code = dr["id"].ToString(); i.external_name = dr["department_name"].ToString(); result.Add(i); } return result; } public List GetThaiMonth() { var result = new List(); for (int monthNo = 1; monthNo <= 12; monthNo++) { var bar = new DateTime(DateTime.Now.Year, monthNo, 1); string month = bar.ToString("MMMM", new CultureInfo("th-TH")); var i = new external_linkageViewModel(); //i.external_guid = null; i.external_id = monthNo; i.external_code = monthNo.ToString(); i.external_name = month; result.Add(i); } return result; } public List GetSortingDep() { var sql = string.Format(@" select orgdata.id, case when orgdata2.department_name is not null then concat(orgdata2.department_name,' - ',orgdata.department_name) else orgdata.department_name end as full_dep, orgdata.department_name, orgdata.department_code,detail.parent_department_id, case when org_type_depart.department_degree_id = 1 then orgdata.department_code::int*1000 when detail.parent_department_id is not null and detail.parent_department_id>0 then orgdata2.department_code::int*1000+orgdata.department_code::int else orgdata.department_code::int*100000 end as sort_order,org_type_depart.department_degree_id from public.{0}DepartmentData{0} orgdata left join org_organization_chart_details detail on orgdata.id = detail.department_id left join public.{0}DepartmentData{0} orgdata2 on orgdata2.id = detail.parent_department_id left join public.org_type_departments as org_type_depart on orgdata.department_type_id = org_type_depart.id left join public.org_type_department_colors as org_depart_color on org_type_depart.department_degree_id = org_depart_color.id where orgdata.department_name is not null and orgdata.deleted_at is null and orgdata2.deleted_at is null order by case when org_type_depart.department_degree_id = 1 then orgdata.department_code::int*1000 when detail.parent_department_id is not null and detail.parent_department_id>0 then orgdata2.department_code::int*1000+orgdata.department_code::int else orgdata.department_code::int*100000 end ", '"'.ToString()); var para = db.GetParameterListNpgsql(); DataTable dt = db.ExecuteDataTableNpgsql(sql, para); var result = new List(); foreach (DataRow dr in dt.Rows) { var i = new external_linkageViewModel(); i.external_id = Convert.ToInt32(dr["id"]); i.external_code = dr["sort_order"].ToString(); i.external_name = dr["full_dep"].ToString(); result.Add(i); } return result; } } }