採用・人材支援について
採用・人材支援チームによる一般のチームへの人材支援の概念
採用・人材支援チームによるチーム支援の概念については概念ER図 ユーザーとチーム参照
人材支援のリレーションは支援を受ける側から支援する側への支援依頼により発生する。 発生後のステータス遷移を以下に示す。
stateDiagram-v2
[*] --> 依頼中
依頼中 --> 支援中
支援中 --> 支援終了
依頼中 --> 支援拒否
人材支援関係のリレーションかつ、状態管理スキーマであるteam_supporter_teamsは 支援終了後も履歴参照可能とする要件によりステータスの他に支援の開始終了日を持つ履歴テーブルとし、支援終了後も削除は行わない。
erDiagram
team_supporter_teams {
id team_supporter_team_id PK "サロゲートキー"
id supportee_team_id FK "支援されるチームのチームID"
id supporter_team_id FK "支援するチームのチームID"
id request_from_user_id FK"支援依頼の依頼元ユーザーID"
id request_to_user_id FK "支援依頼の依頼先ユーザーID"
string status "enum(requesting: 依頼中, supporting: 支援中, support_ended: 支援終了, reject: 支援拒否)"
datetime request_datetime "依頼日時"
datetime start_datetime "支援開始日時 (依頼中はnil)"
datetime end_datetime "支援終了日時(支援終了まではnil)"
}
支援依頼に関するTeams関数
前提情報の取得
alias Bright.Accounts
alias Bright.Teams
# 支援依頼するユーザー
supportee_user = Accounts.get_user_by_name_or_email("name or email")
# 支援依頼先のユーザー
supporter_user = Accounts.get_user_by_name_or_email("name or email")
# 支援されるチームのチームID(支援されるユーザーが所属しているチーム一覧の取得)
Teams.list_joined_teams_by_user_id(supportee_user.id)
# 支援するチームのチームID(支援するユーザーが所属しているチーム一覧の取得)
# 実際にはそのうちenable_hr_functions == true のチームが対象となる
Teams.list_joined_teams_by_user_id(supporter_user.id)
登録、ステータス更新系
# 人材支援を受けるチームをキーに支援依頼を作成する
supportee_team_id = "supportee_team_id"
{:ok, team_support_team} =
Teams.request_support_from_suportee_team(
supportee_team_id,
supportee_user.id,
supporter_user.id
)
# 人材支援依頼を承諾ステータスに更新する
supporter_team_id = "supporter_team_id"
{:ok, accept_team_support_team} =
Teams.accept_support_by_supporter_team(team_support_team, supporter_team_id)
# 人材支援を終了ステータスに更新する
{:ok, end_support_team} = Teams.end_support_by_supporter_team(accept_team_support_team)
# 人材支援を拒否ステータスに更新する
{:ok, reject_support_team} = Teams.reject_support_by_supporter_team(team_support_team)
取得、チェック系
# ユーザーIDをキーにリクエストを受けた支援依頼一覧を取得する
Teams.list_support_request_by_supporter_user_id(supporter_user.id)
# ユーザーIDをキーに支援先のチーム一覧を取得する
Teams.list_supportee_teams_by_supporter_user_id(supporter_user.id)
# 自身の所属チームの支援元、支援先のチームに所属しているかを確認
Teams.joined_teams_or_supportee_teams_or_supporter_teams_by_user_id!(
supporter_user.id,
supporter_user.id
)