182 lines
9.7 KiB
PHP
Executable File
182 lines
9.7 KiB
PHP
Executable File
<?php
|
|
|
|
use Morilog\Jalali\Jalalian;
|
|
use Carbon\Carbon;
|
|
|
|
$usersChunked = $users->chunk(3);
|
|
?>
|
|
|
|
|
|
@extends('app')
|
|
@section('content')
|
|
<div class="container w-full flex flex-col items-center">
|
|
|
|
@if(!collect($reqs)->pluck('attendances')->flatten()->isEmpty())
|
|
<div class="ui-requests-card flex flex-col items-center">
|
|
<p>درخواست ها</p>
|
|
|
|
@foreach ($reqs as $u)
|
|
@if(!empty($u['attendances']))
|
|
<button type="button"
|
|
class="ui-chip-btn"
|
|
onclick="togglerequests('attendance-{{ $loop->index }}')">
|
|
{{ $u['name'] }}
|
|
</button>
|
|
@endif
|
|
<div id="attendance-{{ $loop->index }}" class="hidden-content pt-4 w-full">
|
|
<div class="ui-table-wrap">
|
|
<table class="w-full table-auto">
|
|
|
|
<thead>
|
|
<tr>
|
|
<th class="px-2 py-2 w-1/6">درخواست</th>
|
|
<th class="px-2 py-2 w-1/6">تاریخ</th>
|
|
<th class="px-2 py-2 w-1/6">ورود</th>
|
|
<th class="px-2 py-2 w-1/6">خروج</th>
|
|
<th class="px-2 py-2 w-1/6">تعیین وضعیت</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
{{-- {{dd($u['attendances'])}}--}}
|
|
@forelse($u['attendances'] as $rec)
|
|
<tr class="{{ $rec->id=='new' ? 'is-new' : '' }}">
|
|
{{--{{dd($rec)}}--}}
|
|
<td class="px-4 py-2 border">{{ match ($rec->function) {
|
|
'edit' => "تغییر ساعت",
|
|
'delete' => "حذف",
|
|
'new' => "جدید",
|
|
default => "نامشخص",
|
|
} }}</td>
|
|
<td class="px-4 py-2 border">{{ !empty($rec->date) ? Jalalian::fromCarbon(Carbon::parse($rec->date))->format('Y/m/d')
|
|
: Jalalian::fromCarbon(Carbon::parse($rec->oldenter))->format('Y/m/d')}}</td>
|
|
@php
|
|
$oldEnter = $rec->oldenter ? Carbon::parse($rec->oldenter)->format('H:i') : null;
|
|
$newEnter = $rec->newenter ? Carbon::parse($rec->newenter)->format('H:i') : null;
|
|
$oldExit = $rec->oldexit ? Carbon::parse($rec->oldexit)->format('H:i') : null;
|
|
$newExit = $rec->newexit ? Carbon::parse($rec->newexit)->format('H:i') : null;
|
|
@endphp
|
|
|
|
@if( $oldEnter == $newEnter || $newEnter == null)
|
|
<td class="px-4 py-2 border">{{ $oldEnter ?? '-' }}</td>
|
|
@else
|
|
<td class="px-4 py-2 border">{{ $oldEnter || $newEnter ? ($rec->id=='new' || $oldEnter==($newEnter ?? '') ? $oldEnter : $oldEnter.'👇🏻'.$newEnter) : '-' }}</td>
|
|
@endif
|
|
|
|
@if($oldExit == $newExit || $newExit == null)
|
|
<td class="px-4 py-2 border">{{$oldExit ? ($oldExit ?? $newExit) : '-'}}</td>
|
|
@else
|
|
<td class="px-4 py-2 border">{{ $oldExit || $newExit ? ($rec->id=='new' || $oldExit==($newExit ?? '') ? $oldExit : $oldExit.'👇🏻'.$newExit) : '-' }}</td>
|
|
@endif
|
|
|
|
{{-- @if($userType == 'admin')--}}
|
|
<td class="px-4 py-2 border">
|
|
<form method="post" action="{{route('admin.update')}}">
|
|
@csrf
|
|
<input type="hidden" name="update" id="update" value="approve">
|
|
<input type="hidden" name="data" id="data"
|
|
value="{{json_encode($rec)}}">
|
|
<button type="submit" class="ui-btn-approve">
|
|
تایید
|
|
</button>
|
|
</form>
|
|
<form method="post" action="{{route('admin.update')}}">
|
|
@csrf
|
|
<input type="hidden" name="update" id="update" value="reject">
|
|
<input type="hidden" name="data" id="data"
|
|
value="{{json_encode($rec)}}">
|
|
<button type="submit" class="ui-btn-reject">
|
|
رد
|
|
</button>
|
|
</form>
|
|
</td>
|
|
{{-- @endif--}}
|
|
</tr>
|
|
@empty
|
|
<tr>
|
|
<td class="px-4 py-2 border text-center" colspan="6">هیچ رکوردی ثبت نشده</td>
|
|
</tr>
|
|
@endforelse
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
@endforeach
|
|
{{-- @if(collect($reqs)->pluck('attendances')->flatten()->isEmpty())--}}
|
|
{{-- <p class="text-stone-400" style="text-align: center">درخواستی ثبت نشده</p>--}}
|
|
</div>
|
|
@endif
|
|
|
|
|
|
<div class="container" style="padding-top: 20px">
|
|
<div class="grid grid-cols-2 grid-rows-none ">
|
|
@foreach ($usersChunked as $chunk)
|
|
@foreach ($chunk as $u)
|
|
@php
|
|
$cardClass = 'ui-user-card m-3';
|
|
if ($u->active_task) {
|
|
$cardClass .= ' is-active';
|
|
} elseif ($u->working == 1) {
|
|
$cardClass .= ' is-working';
|
|
} elseif ($u->working == 2) {
|
|
$cardClass .= ' is-break';
|
|
}
|
|
@endphp
|
|
<div class="{{ $cardClass }}">
|
|
<a href="/admin/{{ $u->user_name }}">
|
|
<p class="ui-user-name">{{ $u->name ?? $u->user_name }}</p>
|
|
@if($u->active_task)
|
|
<p>وظیفه: {{ $u->active_task }}</p>
|
|
@endif
|
|
<p>کارکرد ماه جاری: {{ $u->totaltime }}</p>
|
|
<p>تعداد درخواست ها: {{ $u->req_counts }}</p>
|
|
</a>
|
|
@if($userType == 'admin')
|
|
<button type="button"
|
|
class="ui-chip-btn mt-2 !min-w-0 !w-auto !text-sm"
|
|
onclick="window.location.href='{{ url('attendance/profile').'?username='.$u->user_name }}'">
|
|
ویرایش
|
|
</button>
|
|
@endif
|
|
</div>
|
|
|
|
@endforeach
|
|
@endforeach
|
|
<a class="ui-user-card m-3 flex items-center justify-center min-h-[140px]" href="{{route('admin.new')}}">
|
|
<i class="fa-regular fa-plus text-5xl text-gray-400"></i>
|
|
</a>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
{{-- {{dd($reqs)}}--}}
|
|
|
|
|
|
|
|
{{--MODAL--}}
|
|
|
|
@endsection
|
|
|
|
@section('script')
|
|
<script>
|
|
// این تابع اکنون یک DIV را باز و بسته میکند
|
|
function togglerequests(elementId) {
|
|
var contentDiv = document.getElementById(elementId);
|
|
|
|
// بررسی میکند اگر عنصر دارای کلاس 'hidden-content' هست، آن را حذف و نمایش دهد، وگرنه اضافه و پنهان کند.
|
|
if (contentDiv.classList.contains('hidden-content')) {
|
|
contentDiv.classList.remove('hidden-content');
|
|
// اگر از Tailwind استفاده میکنید، ممکن است بخواهید: contentDiv.classList.remove('hidden');
|
|
} else {
|
|
contentDiv.classList.add('hidden-content');
|
|
// contentDiv.classList.add('hidden');
|
|
}
|
|
}
|
|
</script>
|
|
<style>
|
|
/* نیاز به این کلاس برای پنهان کردن اولیه محتوا */
|
|
.hidden-content {
|
|
display: none;
|
|
}
|
|
</style>
|
|
@endsection
|