update addon HRM
Some checks failed
Some checks failed
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
|
||||
<div class="modal fade common-validation-modal" id="attendances-create-modal">
|
||||
<div class="modal-dialog modal-lg modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5">{{ __('Create Attendance') }}</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="personal-info">
|
||||
<form action="{{ route('hrm.attendances.store') }}" method="post" enctype="multipart/form-data"
|
||||
class="ajaxform_instant_reload">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label>{{ __('Employee') }}</label>
|
||||
<div class="gpt-up-down-arrow position-relative">
|
||||
<select name="employee_id" required class="form-control get-employee-shift">
|
||||
<option value="">{{ __('Select a One') }}</option>
|
||||
@foreach ($employees as $employee)
|
||||
<option value="{{ $employee->id }}">{{ $employee->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<span></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label>{{ __('Shift') }}</label>
|
||||
<div class="gpt-up-down-arrow position-relative">
|
||||
<select name="shift_id" required class="form-control shift-select" @readonly(true)>
|
||||
<option value="">{{ __('Select a One') }}</option>
|
||||
{{-- Options will be populated via JS --}}
|
||||
</select>
|
||||
<span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label class="required">{{__('Date')}}</label>
|
||||
<input type="date" name="date" required value="{{ date('Y-m-d') }}" class="form-control">
|
||||
</div>
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label class="required">{{ __('Time In') }}</label>
|
||||
<input type="time" name="time_in" required value="{{ date('H:i') }}" class="form-control">
|
||||
</div>
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label class="required">{{ __('Time Out') }}</label>
|
||||
<input type="time" name="time_out" required value="{{ date('H:i') }}" class="form-control">
|
||||
</div>
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label>{{__('Note')}}</label>
|
||||
<textarea name="note" class="form-control" placeholder="{{ __('Enter note') }}"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="button-group text-center mt-5">
|
||||
<button type="reset" class="theme-btn border-btn m-2">{{ __('Reset') }}</button>
|
||||
@usercan('attendances.create')
|
||||
<button class="theme-btn m-2 submit-btn">{{ __('Save') }}</button>
|
||||
@endusercan
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" value="{{ route('hrm.attendances.getShift') }}" id="get-shift">
|
||||
|
||||
79
Modules/HrmAddon/resources/views/attendances/datas.blade.php
Normal file
79
Modules/HrmAddon/resources/views/attendances/datas.blade.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<div class="responsive-table m-0">
|
||||
<table class="table" id="datatable">
|
||||
<thead>
|
||||
<tr>
|
||||
@usercan('attendances.delete')
|
||||
<th class="w-60">
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<input type="checkbox" class="select-all-delete multi-delete">
|
||||
</div>
|
||||
</th>
|
||||
@endusercan
|
||||
<th>{{ __('SL') }}.</th>
|
||||
<th class="text-start">{{ __('Employee') }}</th>
|
||||
<th class="text-start">{{ __('Month') }}</th>
|
||||
<th class="text-start">{{ __('Shift') }}</th>
|
||||
<th class="text-start">{{ __('date') }}</th>
|
||||
<th class="text-start">{{ __('Time In') }}</th>
|
||||
<th class="text-start">{{ __('Time Out') }}</th>
|
||||
<th class="text-start">{{ __('Duration') }}</th>
|
||||
<th>{{ __('Action') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($attendances as $attendance)
|
||||
<tr>
|
||||
@usercan('attendances.delete')
|
||||
<td class="w-60 checkbox">
|
||||
<input type="checkbox" name="ids[]" class="delete-checkbox-item multi-delete" value="{{ $attendance->id }}">
|
||||
</td>
|
||||
@endusercan
|
||||
<td>{{ ($attendances->currentPage() - 1) * $attendances->perPage() + $loop->iteration }}</td>
|
||||
|
||||
<td class="text-start">{{ $attendance->employee->name ?? '' }}</td>
|
||||
<td class="text-start">{{ ucfirst($attendance->month ?? '') }}</td>
|
||||
<td class="text-start">{{ $attendance->shift->name ?? '' }}</td>
|
||||
<td class="text-start">{{ formatted_date($attendance->date) }}</td>
|
||||
<td class="text-start">{{ formatted_time($attendance->time_in) }}</td>
|
||||
<td class="text-start">{{ formatted_time($attendance->time_out) }}</td>
|
||||
<td class="text-start">{{ formatTimeToWords($attendance->duration) }}</td>
|
||||
<td class="print-d-none">
|
||||
<div class="dropdown table-action">
|
||||
<button type="button" data-bs-toggle="dropdown">
|
||||
<i class="far fa-ellipsis-v"></i>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
@usercan('attendances.update')
|
||||
<li>
|
||||
<a href="#attendances-edit-modal" data-bs-toggle="modal"
|
||||
class="attendances-edit-btn"
|
||||
data-url="{{ route('hrm.attendances.update', $attendance->id) }}"
|
||||
data-employee-id="{{ $attendance->employee_id }}"
|
||||
data-month="{{ $attendance->month }}" data-date="{{ $attendance->date }}"
|
||||
data-time-in="{{ $attendance->time_in }}"
|
||||
data-time-out="{{ $attendance->time_out }}"
|
||||
data-note="{{ $attendance->note }}">
|
||||
<i class="fal fa-pencil-alt"></i>{{ __('Edit') }}</a>
|
||||
</li>
|
||||
@endusercan
|
||||
@usercan('attendances.delete')
|
||||
<li>
|
||||
<a href="{{ route('hrm.attendances.destroy', $attendance->id) }}"
|
||||
class="confirm-action" data-method="DELETE">
|
||||
<i class="fal fa-trash-alt"></i>
|
||||
{{ __('Delete') }}
|
||||
</a>
|
||||
</li>
|
||||
@endusercan
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="mt-3">
|
||||
{{ $attendances->links('vendor.pagination.bootstrap-5') }}
|
||||
</div>
|
||||
69
Modules/HrmAddon/resources/views/attendances/edit.blade.php
Normal file
69
Modules/HrmAddon/resources/views/attendances/edit.blade.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<div class="modal fade common-validation-modal editModal" id="attendances-edit-modal">
|
||||
<div class="modal-dialog modal-lg modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5">{{ __('Edit Attendance') }}</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="personal-info">
|
||||
<form action="" method="post" enctype="multipart/form-data"
|
||||
class="ajaxform_instant_reload editAttendanceForm">
|
||||
@csrf
|
||||
@method('put')
|
||||
<div class="row">
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label>{{ __('Employee') }}</label>
|
||||
<div class="gpt-up-down-arrow position-relative">
|
||||
<select name="employee_id" id="employee_id" required class="form-control get-employee-shift">
|
||||
<option value="">{{ __('Select a One') }}</option>
|
||||
@foreach ($employees as $employee)
|
||||
<option value="{{ $employee->id }}">{{ $employee->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<span></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label>{{ __('Shift') }}</label>
|
||||
<div class="gpt-up-down-arrow position-relative">
|
||||
<select name="shift_id" required class="form-control shift-select" @readonly(true)>
|
||||
<option value="">{{ __('Select a One') }}</option>
|
||||
{{-- Options will be populated via JS --}}
|
||||
</select>
|
||||
<span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label class="required">{{__('Date')}}</label>
|
||||
<input type="date" name="date" required value="{{ date('Y-m-d') }}" id="date" class="form-control">
|
||||
</div>
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label class="required">{{ __('Time In') }}</label>
|
||||
<input type="time" name="time_in" value="{{ date('H:i') }}" id="time_in" required class="form-control">
|
||||
</div>
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label class="required">{{ __('Time Out') }}</label>
|
||||
<input type="time" name="time_out" value="{{ date('H:i') }}" id="time_out" required class="form-control">
|
||||
</div>
|
||||
<div class="col-lg-6 mb-2">
|
||||
<label>{{__('Note')}}</label>
|
||||
<textarea name="note" id="note" class="form-control" placeholder="{{ __('Enter note') }}"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="button-group text-center mt-5">
|
||||
<button type="reset" class="theme-btn border-btn m-2">{{ __('Reset') }}</button>
|
||||
@usercan('attendances.update')
|
||||
<button class="theme-btn m-2 submit-btn">{{ __('Save') }}</button>
|
||||
@endusercan
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" value="{{ route('hrm.attendances.getShift') }}" id="get-shift">
|
||||
94
Modules/HrmAddon/resources/views/attendances/index.blade.php
Normal file
94
Modules/HrmAddon/resources/views/attendances/index.blade.php
Normal file
@@ -0,0 +1,94 @@
|
||||
@extends('layouts.business.master')
|
||||
|
||||
@section('title')
|
||||
{{ __('Attendance List') }}
|
||||
@endsection
|
||||
|
||||
@section('main_content')
|
||||
<div class="erp-table-section">
|
||||
<div class="container-fluid">
|
||||
<div class="card">
|
||||
<div class="card-bodys">
|
||||
<div class="table-header p-16">
|
||||
<h4>{{ __('Attendance List') }}</h4>
|
||||
@usercan('attendances.create')
|
||||
<a type="button" href="#attendances-create-modal" data-bs-toggle="modal" class="add-order-btn rounded-2"><i class="fas fa-plus-circle me-1"></i>{{ __('Add new Attendance') }}</a>
|
||||
@endusercan
|
||||
</div>
|
||||
<div class="table-top-form p-16-0">
|
||||
<div class="d-flex align-items-center gap-1 flex-wrap">
|
||||
<form action="{{ route('hrm.attendances.index') }}" method="GET" class="filter-form" table="#attendances-data">
|
||||
|
||||
<div class="table-top-left d-flex gap-3 margin-l-16">
|
||||
<div class="gpt-up-down-arrow position-relative">
|
||||
<select name="per_page" class="form-control">
|
||||
<option @selected(request('per_page') == 20) value="20">{{ __('Show 20') }}</option>
|
||||
<option @selected(request('per_page') == 50) value="50">{{ __('Show 50') }}</option>
|
||||
<option @selected(request('per_page') == 100) value="100">{{ __('Show 100') }}</option>
|
||||
<option @selected(request('per_page') == 500) value="500">{{ __('Show 500') }}</option>
|
||||
</select>
|
||||
<span></span>
|
||||
</div>
|
||||
<div class="table-search position-relative">
|
||||
<input type="text" name="search" class="form-control" placeholder="{{ __('Search...') }}" value="{{ request('search') }}">
|
||||
<span class="position-absolute">
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M14.582 14.582L18.332 18.332" stroke="#4D4D4D" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M16.668 9.16797C16.668 5.02584 13.3101 1.66797 9.16797 1.66797C5.02584 1.66797 1.66797 5.02584 1.66797 9.16797C1.66797 13.3101 5.02584 16.668 9.16797 16.668C13.3101 16.668 16.668 13.3101 16.668 9.16797Z" stroke="#4D4D4D" stroke-width="1.25" stroke-linejoin="round" />
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="gpt-up-down-arrow position-relative d-print-none employee-select ">
|
||||
<select name="employee" class="form-control">
|
||||
<option value="">{{ __('Select employee') }}</option>
|
||||
@foreach ($employees as $employee)
|
||||
<option value="{{ $employee->id }}" @selected(request('employee') == $employee->id) >{{ $employee->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<span></span>
|
||||
</div>
|
||||
|
||||
<div class="gpt-up-down-arrow position-relative d-print-none">
|
||||
<select name="month" class="form-control">
|
||||
<option value="">{{__('All month')}}</option>
|
||||
@for ($month = 1; $month <= 12; $month++)
|
||||
@php
|
||||
$monthSlug = strtolower(date('F', mktime(0, 0, 0, $month, 1)));
|
||||
@endphp
|
||||
<option value="{{ $monthSlug }}">
|
||||
{{ date('F', mktime(0, 0, 0, $month, 1)) }}
|
||||
</option>
|
||||
@endfor
|
||||
</select>
|
||||
<span></span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="delete-item delete-show d-none">
|
||||
<div class="delete-item-show">
|
||||
<p class="fw-bold"><span class="selected-count"></span> {{ __('items show') }}</p>
|
||||
<button data-bs-toggle="modal" class="trigger-modal" data-bs-target="#multi-delete-modal" data-url="{{ route('hrm.attendances.delete-all') }}">{{ __('Delete') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="attendances-data">
|
||||
@include('hrmaddon::attendances.datas')
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('modal')
|
||||
@include('hrmaddon::component.delete-modal')
|
||||
@include('hrmaddon::attendances.create')
|
||||
@include('hrmaddon::attendances.edit')
|
||||
@endpush
|
||||
Reference in New Issue
Block a user