利用するには会員登録が必要となります。
【勤務開始前の状態】
【勤務開始後の状態/休憩終了後の状態】
【休憩開始後の状態】
※ セッション保持が未完成のため、一旦ページを離れると勤務開始前の画面状態に戻ってしまいます。
そのため、ボタンは非活性にせずグレー文字の場合でもデータを保存できる状態にしています。
(ページを離れずに打刻していく場合は上記デザイン通りの仕様です)
模擬案件(初級)として作成しました。
http://54.168.148.66/login
※ エラー対応が出来ておらずlogin画面・会員登録画面の表示のみ
- 会員登録機能(メール認証未完成)
- ログイン機能
- ログアウト機能
- 勤怠開始機能
- 勤怠終了機能
- 休憩開始機能(1日に何度でも可能)
- 休憩終了機能(1日に何度でも可能)
- 日付別勤怠情報取得機能
- ユーザー別勤怠情報取得機能
- ページネーション機能(5件ずつ取得)
0時をまたいで勤務・休憩を終了する際の仕様について
- 勤務終了
- 勤務を開始する際に作成されたworkレコードのwork_endを24:00:00で更新
- 新しいworkレコードをwork_startを00:00:00、work_endを現在時刻で作成
- 休憩終了
- 休憩を開始する際に作成されたrestレコードのrest_endを24:00:00で更新
- 勤務を開始する際に作成されたworkレコードのwork_endを24:00:00で更新
- 新しいworkレコードをwork_startを00:00:00、work_endをnullで作成
- 新しいrestレコードをrest_startを00:00:00、rest_endを現在時刻で作成
ユーザー別勤怠情報取得(個別勤怠表ページの表示)方法について
- 打刻ページ右上【日付一覧】をクリック
- 日付一覧ページ右上【ユーザー一覧】をクリック
- ユーザー一覧ページのユーザー名をクリック
- Laravel 8.x
- Laravel Fortify
- PHP 7.4.9
- MySQL 8.0.26
- Niginx
- Docker/Docker-compose
- Node.js
- bootstrap
- AWS(EC2, RDS)
Column | Type | Options |
---|---|---|
name | varchar(191) | null: false |
varchar(191) | null: false | |
password | varchar(191) | null: false |
created_at | timestamp | ——— |
updated_at | timestamp | ——— |
Column | Type | Options |
---|---|---|
user_id | bigint | null: false |
date | date | null: false |
work_start | time | ——— |
work_end | time | ——— |
created_at | timestamp | ——— |
updated_at | timestamp | ——— |
Column | Type | Options |
---|---|---|
work_id | bigint | null: false |
date | date | null: false |
rest_start | time | ——— |
rest_end | time | ——— |
created_at | timestamp | ——— |
updated_at | timestamp | ——— |
![Attendance ER図](https://private-user-images.githubusercontent.com/141505803/298119019-56448644-3bd3-4f7e-805e-640411975026.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ4MDg2MDcsIm5iZiI6MTcyNDgwODMwNywicGF0aCI6Ii8xNDE1MDU4MDMvMjk4MTE5MDE5LTU2NDQ4NjQ0LTNiZDMtNGY3ZS04MDVlLTY0MDQxMTk3NTAyNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyOFQwMTI1MDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03NTc5YzBiNjM5Nzc1OWVhMDBhZjE2OTA1NDQxNjJmZDA0ZmYzODM3Mzc3MWU2MTIwZjk0NTRmOGI4OTQyN2Y1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.dXSJG_5K0RStT5UDizx2wyL_UA7zRUAG5wwge6NGNEQ)