1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

前提について

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

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

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

今回実施する内容

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

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

未消化アラートとは?

働き方改革法案により、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
〜中略〜

結果は、以下のとおりです。
スクリーンショット 2020-05-17 13.28.48.png
未消化アラートは、目立ったほうが良いと思ったので、5日消化カラムには、class名bgcを追加し、黄色の背景色を設定しました。

今日の積み上げ

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

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?