月の残業時間がn時間を超えている人にアラートを出す【Laravel】【PHP】

未分類
この記事は約2分で読めます。
ホワイト企業のイラスト

超過残業ダメ!ゼッタイ!目指せホワイト企業!!

月の残業時間がn時間を超えている人にアラートを出す

user_idwork_timework_date
108:00:002020-03-01
109:00:002020-03-02
212:00:002020-03-01
209:00:002020-03-02
308:00:002020-03-01
310:00:002020-03-02

このようなデータがあります。

残業時間がn時間を超えている人のuser_idを取り出します。

/**
* 今月(3月)の残業時間が45時間以上の人のuser_idを返却
*
*
* @return array
*/
public function getRequiredControlUserIdAttribute()
{
 $todayDate = Carbon::now();//本日の日時取得
 $sql = <<< SQL
  SELECT
   user_id,
   SEC_TO_TIME(
    SUM(
     TIME_TO_SEC(work_time) - TIME_TO_SEC('8:00:00')
    )
   ) AS total_overtime
  FROM
   tb_user_work_time
  WHERE
   work_time > CAST('8:00:00' AS TIME) 
  AND 
   work_date BETWEEN ? AND ?//2020-03-01 00:00:00〜2020-03-31 00:00:00'月の間の条件で取り出す
  GROUP BY
   user_id
  HAVING
   total_overtime >= CAST('2:00:00' AS TIME)
SQL;
  $results = DB::select($sql, [
        // $todayDate->firstOfMonth(),
        // $todayDate->lastOfMonth(),
             '2020-03-01 00:00:00',
             '2020-03-31 00:00:00',
             ]);
  $requiredControlUserId = [];
  foreach ($results as $index => $result) {
   $requiredControlUserId[$index] =  $result->user_id;
  }
 return $requiredControlUserId;//2,3
}

このようになります。

コメント

タイトルとURLをコピーしました