Add experience sync: VRW_EXPERIENCE, clear first_name on teacher sync
This commit is contained in:
parent
05f060abb4
commit
d28599d3d0
|
|
@ -227,6 +227,18 @@ app.get('/api/techtrans/:id', async (req, res) => {
|
|||
}
|
||||
});
|
||||
|
||||
// 教師經歷
|
||||
app.get('/api/experiences/:id', async (req, res) => {
|
||||
try {
|
||||
const teacherId = req.params.id;
|
||||
const sql = `SELECT * FROM VRW_EXPERIENCE WHERE T_ID = '${teacherId}'`;
|
||||
const result = await executeQuery(sql);
|
||||
res.json(result);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
// 健康檢查
|
||||
app.get('/health', (req, res) => {
|
||||
res.json({ status: 'ok' });
|
||||
|
|
|
|||
|
|
@ -277,6 +277,18 @@ module NfuSyncPlugin
|
|||
}
|
||||
end
|
||||
|
||||
# 教師經歷
|
||||
result["experience"] = query_api('experiences', member.sid).map do |row|
|
||||
{
|
||||
"ukey" => row[0],
|
||||
"exp_unit" => row[2],
|
||||
"exp_dept" => row[3],
|
||||
"exp_gnam_name" => row[4],
|
||||
"exp_stardate" => row[5],
|
||||
"exp_enddate" => row[6]
|
||||
}
|
||||
end
|
||||
|
||||
# 教師基本資料
|
||||
result["teacher"] = query_api('teachers', member.sid).map do |row|
|
||||
{
|
||||
|
|
@ -645,6 +657,27 @@ module NfuSyncPlugin
|
|||
end
|
||||
end
|
||||
|
||||
def sync_experiences(query_result, member)
|
||||
puts "Experiences for user: #{member.email}"
|
||||
query_result["experience"].to_a.each do |exp|
|
||||
old_uid = Experience.where(:rss2_id => exp["ukey"]).first&.uid
|
||||
|
||||
experience = Experience.where(:rss2_id => exp["ukey"]).first
|
||||
experience.delete if experience
|
||||
|
||||
experience = Experience.new
|
||||
experience.rss2_id = exp["ukey"]
|
||||
experience.uid = old_uid
|
||||
experience.organizationt_title_translations = localize_data(exp["exp_unit"])
|
||||
experience.department_translations = localize_data(exp["exp_dept"])
|
||||
experience.job_title_translations = localize_data(exp["exp_gnam_name"])
|
||||
experience.start_date = DateTime.parse(exp["exp_stardate"]).to_date if exp["exp_stardate"].present?
|
||||
experience.end_date = DateTime.parse(exp["exp_enddate"]).to_date if exp["exp_enddate"].present?
|
||||
experience.member_profile_id = member.id
|
||||
puts "Experience #{experience.id} saved" if experience.save
|
||||
end
|
||||
end
|
||||
|
||||
def sync_teachers(query_result, member)
|
||||
puts "Teachers for user: #{member.email}"
|
||||
return if query_result["teacher"].to_a.empty?
|
||||
|
|
@ -653,6 +686,7 @@ module NfuSyncPlugin
|
|||
|
||||
# 更新 MemberProfile 基本欄位
|
||||
member.last_name_translations = { zh_tw: teacher["chinese_name"], en: teacher["english_name"] }
|
||||
member.first_name_translations = { zh_tw: "", en: "" }
|
||||
member.email = teacher["email"]
|
||||
member.office_tel = teacher["phone"]
|
||||
|
||||
|
|
@ -793,6 +827,7 @@ namespace :sync_nfu_personal_plugins do
|
|||
NfuSyncPlugin.sync_activities(query_result, member)
|
||||
NfuSyncPlugin.sync_technology_transfers(query_result, member)
|
||||
NfuSyncPlugin.sync_volunteer_services(query_result, member)
|
||||
NfuSyncPlugin.sync_experiences(query_result, member)
|
||||
NfuSyncPlugin.sync_teachers(query_result, member)
|
||||
NfuSyncPlugin.sync_dissertations(query_result, member)
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue