【開発ログ⑫】有休未消化のアラートを実装


前提について

はじめまして、
プログラミングスクールに通ういりふねと申します。この記事は、スクールの課題である個人アプリの開発の記録を書くことで、自身のアウトプットに利用しています。もし、読んでいただけた方がいましたら、フィードバックをしていただけたら嬉しいです。

開発するのは「有給休暇管理ツール」です。仕様は過去記事をどうぞ。

アプリはデプロイまで行いますが、サービスとして提供するものではありません。あくまでも自学習の一環ですので、ご理解下さい。では本題へどうぞ。

今回実施する内容

前回までで、有休に関する簡単な計算までが終了しましたので、今回は有給休暇の未消化アラートを実装したいと思っています。以下の手順で実施します。今回は軽め。

  • 未消化アラートとは?
  • 未消化アラートの実装
  • ビューに表示

未消化アラートとは?

働き方改革法案により、2019年4月1日より有給休暇を消化させることが、義務化されました。条件は有休を10日以上持つ社員に対して、毎年5日以上は時期を指定して計画的に消化させるというものです。毎年の期間については、就業規則により変わると考えられますが、今回は「直近付与日から次回付与日までの間」に5日未満しか消化していない社員については、有給休暇管理表のアラートカラムに「未消化」を表示させることにします。

未消化アラートの実装

今回も、モデルファイルに未消化アラートを表示させるメソッドを記述しておきます。

employee.rb
class Employee < ApplicationRecord
〜中略〜
  def delete_days_alert
    a = total_delete_day
    b = total_add_day

    if b >= 10 && a < 5
      "未消化"
    else
      "-"
    end
  end
end

IF文の前のメソッド、total_delete_dayとtotal_add_dayは、前回の記事で定義済みです。これは、直近の付与日から現在までの日数を計算するメソッドになります。

そして、IF文の条件は、b(付与日数の合計)が10以上、かつ、a(消化日数の合計)が5未満のとき、ということになります。有休の付与日数が10日未満の方やすでに今年5日以上消化している方は対象外となります。

ビューに表示

branches/index.html.haml
.main
  =render 'branches/mainheader'
〜中略〜
        %th{id: "short", class: "bgc"}
          5日消化
〜中略〜
        - @employees.each do |employee|
          %tr
〜中略〜
            %th{id: "short", class: "bgc"}
              = employee.delete_days_alert
〜中略〜

結果は、以下のとおりです。

未消化アラートは、目立ったほうが良いと思ったので、5日消化カラムには、class名bgcを追加し、黄色の背景色を設定しました。

今日の積み上げ

本来であれば、「未消化」と表示されている方だけに黄色を表示させたかったのですが、私の能力では調べても実装できませんでした。一応、hamlでclassを定義する際にIF文で条件を定義し、条件に合う時、classを追加するという方法があるようです。まだまだ未熟であると感じましたが、できる限りで頑張りたいと思います。

参考にさせていただいた記事
「【Haml】条件(if)に応じてClassを変更させる方法」@nishina555
「Hamlで条件に合わせてclassを追加する方法」@day-1
「Hamlで条件に合う時だけ特定のクラスを加えたい」@aprikip