AI Review Center
Commit Review Workspace ?
Select a commit on the left to inspect quality, security, business value, findings, and suggested code changes.
Project AI Score
?
67%
Quality Avg
?
72%
Security Avg
?
54%
Reviews
?
37
Review Result ?
jattin01/army · 7e4b3af2
The commit adds multiple import functions for various controllers and improves user validation rules. However, the commit message is vague ('cod hecnages'). The import methods lack error handling and do not check file content integrity. Password validation improves form security, but the overall validation and error handling can be further improved.
Quality
?
70%
Security
?
50%
Business Value
?
80%
Maintainability
?
65%
Issues & Suggested Fixes
?
1AI detects the issue
2Shows file, line, or evidence
3Suggests the fix to apply
Very Vague And Contains Typos
Where
commit message
Issue / Evidence
very vague and contains typos
Suggested Fix
provide a clear, descriptive commit message summarizing the changes
No Error Handling For Excel Import
Where
app/Http/Controllers/Admin/StaffController.php:48
Issue / Evidence
no error handling for Excel import
Suggested Fix
add try-catch to handle import errors gracefully
Missing Error Handling On Import
Where
app/Http/Controllers/BdeController.php:36
Issue / Evidence
missing error handling on import
Suggested Fix
add validation of import process and exception handling
Missing Error Handling On Import
Where
app/Http/Controllers/CoController.php:40
Issue / Evidence
missing error handling on import
Suggested Fix
add try-catch block to catch import exceptions
No Error Response If Import Fails
Where
app/Http/Controllers/CorpController.php:33
Issue / Evidence
no error response if import fails
Suggested Fix
handle failures with proper error responses
No Exception Handling During Import
Where
app/Http/Controllers/DivController.php:41
Issue / Evidence
no exception handling during import
Suggested Fix
implement error handling for import process
Lack Of Import Error Handling
Where
app/Http/Controllers/EqptTargetController.php:32
Issue / Evidence
lack of import error handling
Suggested Fix
wrap import call in try-catch and return error messages if needed
Import Lacks Error Management
Where
app/Http/Controllers/EquipmentController.php:98
Issue / Evidence
import lacks error management
Suggested Fix
add exception handling to improve robustness
Message Returned Is Inconsistent ('Co Impo...
Where
app/Http/Controllers/LeaveTypeController.php:40
Issue / Evidence
message returned is inconsistent ('CO imported successfully')
Suggested Fix
fix return message to reflect correct entity imported
No Import Error Handling
Where
app/Http/Controllers/MasterCommandController.php:37
Issue / Evidence
no import error handling
Suggested Fix
add try-catch block to detect import issues
Missing Import Error Handling
Where
app/Http/Controllers/RepairClassController.php:44
Issue / Evidence
missing import error handling
Suggested Fix
add exception management
No Error Handling On Import
Where
app/Http/Controllers/SubAssyEquipmentController.php:42
Issue / Evidence
no error handling on import
Suggested Fix
improve import robustness by handling exceptions properly
Missing Import Error Handling
Where
app/Http/Controllers/UnitController.php:41
Issue / Evidence
missing import error handling
Suggested Fix
add try-catch for import method
Missing Validation
Where
app/Http/Controllers/UserController.php:100
Issue / Evidence
password validation could be improved with stronger password policy
Suggested Fix
consider increasing minimum length and complexity requirements
Missing Validation
Where
app/Http/Controllers/UserController.php:112
Issue / Evidence
inline closure for validation is harder to maintain
Suggested Fix
extract validation logic into a dedicated validation method for clarity and reuse
Code Change Preview · app/Http/Controllers/Admin/StaffController.php
?
Removed / Before Commit
- use App\Models\EmployeeStatus; - use App\Models\EmployeeCategory; - use Illuminate\Support\Facades\Storage; - - class StaffController extends Controller - { - - return view('admin.staff.index', compact('staffs', 'employeeCategories', 'departments')); - } - - - // Show create form
Added / After Commit
+ use App\Models\EmployeeStatus; + use App\Models\EmployeeCategory; + use Illuminate\Support\Facades\Storage; + use App\Imports\StaffImport; + use Maatwebsite\Excel\Facades\Excel; + + class StaffController extends Controller + { + + return view('admin.staff.index', compact('staffs', 'employeeCategories', 'departments')); + } + public function import(Request $request) + { + $request->validate([ + 'file' => 'required|mimes:xlsx,xls,csv' + ]); + + Excel::import(new StaffImport, $request->file('file'));
Removed / Before Commit
- use App\Models\Designation; - use App\Models\Shift; - use App\Models\Group; - - - class AttendanceController extends Controller - if (!$employee) { - continue; // skip if employee not found - } - - $date = Carbon::parse($row[2])->format('Y-m-d'); - $checkIn = isset($row[3]) ? Carbon::parse($row[3]) : null; - $checkOut = isset($row[4]) ? Carbon::parse($row[4]) : null;
Added / After Commit
+ use App\Models\Designation; + use App\Models\Shift; + use App\Models\Group; + use App\Models\LeaveType; + use App\Models\Leave; + use PhpOffice\PhpSpreadsheet\Shared\Date; + + + class AttendanceController extends Controller + if (!$employee) { + continue; // skip if employee not found + } + $date = Date::excelToDateTimeObject($row[2])->format('Y-m-d'); + $checkIn = isset($row[3]) ? Carbon::parse($row[3]) : null; + $checkOut = isset($row[4]) ? Carbon::parse($row[4]) : null;
Removed / Before Commit
- - use App\Models\Bde; - use Illuminate\Http\Request; - - class BdeController extends Controller - { - return view('bdes.index', compact('bdes', 'filters', 'bdeNames')); - } - - - // public function index() - // {
Added / After Commit
+ + use App\Models\Bde; + use Illuminate\Http\Request; + use App\Imports\BdeImport; + use Maatwebsite\Excel\Facades\Excel; + + class BdeController extends Controller + { + return view('bdes.index', compact('bdes', 'filters', 'bdeNames')); + } + + public function import(Request $request) + { + $request->validate([ + 'file' => 'required|mimes:xlsx,xls,csv' + ]); + + Excel::import(new BdeImport, $request->file('file'));
Removed / Before Commit
- - use App\Models\Co; - use Illuminate\Http\Request; - - class CoController extends Controller - { - return view('cos.index', compact('cos', 'filters', 'coNames')); - } - - - public function store(Request $request) - {
Added / After Commit
+ + use App\Models\Co; + use Illuminate\Http\Request; + use App\Imports\COImport; + use Maatwebsite\Excel\Facades\Excel; + + class CoController extends Controller + { + return view('cos.index', compact('cos', 'filters', 'coNames')); + } + + public function import(Request $request) + { + $request->validate([ + 'file' => 'required|mimes:xlsx,xls,csv' + ]); + + Excel::import(new COImport, $request->file('file'));
Removed / Before Commit
- - use App\Models\Corp; - use Illuminate\Http\Request; - - class CorpController extends Controller - { - // Status filter (if you have a status column) - - - $corps = $query->latest()->paginate(10)->appends($request->all()); - - $corpOptions = Corp::orderBy('name')->get(); - - return view('corps.index', compact('corps','corpOptions')); - } - - - // public function index()
Added / After Commit
+ + use App\Models\Corp; + use Illuminate\Http\Request; + use App\Imports\CorpsImport; + use Maatwebsite\Excel\Facades\Excel; + + class CorpController extends Controller + { + // Status filter (if you have a status column) + + + $corps = $query->orderBy('id', 'desc')->paginate(10)->appends($request->all()); + + $corpOptions = Corp::orderBy('name')->get(); + + return view('corps.index', compact('corps','corpOptions')); + } + public function import(Request $request)
Removed / Before Commit
- - use App\Models\Div; - use Illuminate\Http\Request; - - class DivController extends Controller - { - - return view('divs.index', compact('divs', 'filters', 'divisionNames')); - } - - - public function store(Request $request) - {
Added / After Commit
+ + use App\Models\Div; + use Illuminate\Http\Request; + use App\Imports\DivImport; + use Maatwebsite\Excel\Facades\Excel; + + class DivController extends Controller + { + + return view('divs.index', compact('divs', 'filters', 'divisionNames')); + } + public function import(Request $request) + { + $request->validate([ + 'file' => 'required|mimes:xlsx,xls,csv' + ]); + + Excel::import(new DivImport, $request->file('file'));
Removed / Before Commit
- use App\Models\Equipment; - use App\Models\Group; - use App\Models\ProductionYear; - - class EqptTargetController extends Controller - { - return view('eqpt_targets.index', compact('targets', 'groups','years')); - } - - public function store(Request $request) - { - $request->validate([
Added / After Commit
+ use App\Models\Equipment; + use App\Models\Group; + use App\Models\ProductionYear; + use App\Imports\EqptTargetImport; + use Maatwebsite\Excel\Facades\Excel; + + class EqptTargetController extends Controller + { + return view('eqpt_targets.index', compact('targets', 'groups','years')); + } + + public function import(Request $request) + { + $request->validate([ + 'file' => 'required|mimes:xlsx,xls,csv' + ]); + + Excel::import(new EqptTargetImport, $request->file('file'));
Removed / Before Commit
- use App\Models\Group; - use App\Models\SubAssyEquipment; - use Illuminate\Http\Request; - - class EquipmentController extends Controller - { - return view('equipment.index', compact('equipments', 'groups', 'allEquipments', 'allCodes')); - } -
Added / After Commit
+ use App\Models\Group; + use App\Models\SubAssyEquipment; + use Illuminate\Http\Request; + use App\Imports\EquipmentsImport; + use Maatwebsite\Excel\Facades\Excel; + + class EquipmentController extends Controller + { + return view('equipment.index', compact('equipments', 'groups', 'allEquipments', 'allCodes')); + } + + public function import(Request $request) + { + $request->validate([ + 'file' => 'required|mimes:xlsx,xls,csv' + ]); + + Excel::import(new EquipmentsImport, $request->file('file'));
Removed / Before Commit
- - use App\Models\LeaveType; - use Illuminate\Http\Request; - - class LeaveTypeController extends Controller - { - - return view('leave_types.index', compact('leaveTypes')); - } - - - - public function create()
Added / After Commit
+ + use App\Models\LeaveType; + use Illuminate\Http\Request; + use App\Imports\LeaveTypeImport; + use Maatwebsite\Excel\Facades\Excel; + + class LeaveTypeController extends Controller + { + + return view('leave_types.index', compact('leaveTypes')); + } + public function import(Request $request) + { + $request->validate([ + 'file' => 'required|mimes:xlsx,xls,csv' + ]); + + Excel::import(new LeaveTypeImport, $request->file('file'));
Removed / Before Commit
- - use App\Models\MasterCommand; - use Illuminate\Http\Request; - - class MasterCommandController extends Controller - { - return view('master_command.index', compact('commands','commandsOptions')); - } - - - - // public function index()
Added / After Commit
+ + use App\Models\MasterCommand; + use Illuminate\Http\Request; + use Maatwebsite\Excel\Facades\Excel; + use App\Imports\MasterCommandImport; + + class MasterCommandController extends Controller + { + return view('master_command.index', compact('commands','commandsOptions')); + } + + public function import(Request $request) + { + $request->validate([ + 'file' => 'required|mimes:xlsx,csv,xls' + ]); + + Excel::import(new MasterCommandImport, $request->file('file'));
Removed / Before Commit
- - use App\Models\RepairClass; - use Illuminate\Http\Request; - - class RepairClassController extends Controller - { - - return view('repair_class.index', compact('repairClasses', 'filters', 'repairClassNames')); - } - - - public function store(Request $request) - {
Added / After Commit
+ + use App\Models\RepairClass; + use Illuminate\Http\Request; + use App\Imports\RepairClassImport; + use Maatwebsite\Excel\Facades\Excel; + + class RepairClassController extends Controller + { + + return view('repair_class.index', compact('repairClasses', 'filters', 'repairClassNames')); + } + public function import(Request $request) + { + $request->validate([ + 'file' => 'required|mimes:xlsx,xls,csv' + ]); + + Excel::import(new RepairClassImport, $request->file('file'));
Removed / Before Commit
- use Illuminate\Http\Request; - use Illuminate\Support\Facades\Auth; - use App\Models\Group; - - class SubAssyEquipmentController extends Controller - { - return view('sub-assy.index', compact('subAssys', 'groups', 'equipments')); - } - - - // public function index(Request $request) - // {
Added / After Commit
+ use Illuminate\Http\Request; + use Illuminate\Support\Facades\Auth; + use App\Models\Group; + use App\Imports\SubAssyEquipmentsImport; + use Maatwebsite\Excel\Facades\Excel; + + class SubAssyEquipmentController extends Controller + { + return view('sub-assy.index', compact('subAssys', 'groups', 'equipments')); + } + + public function import(Request $request) + { + $request->validate([ + 'file' => 'required|mimes:xlsx,xls,csv' + ]); + + Excel::import(new SubAssyEquipmentsImport, $request->file('file'));
Removed / Before Commit
- - use App\Models\Unit; - use Illuminate\Http\Request; - - class UnitController extends Controller - { - - return view('units.index', compact('units', 'filters', 'unitNames')); - }
Added / After Commit
+ + use App\Models\Unit; + use Illuminate\Http\Request; + use App\Imports\UnitImport; + use Maatwebsite\Excel\Facades\Excel; + + class UnitController extends Controller + { + + return view('units.index', compact('units', 'filters', 'unitNames')); + } + public function import(Request $request) + { + $request->validate([ + 'file' => 'required|mimes:xlsx,xls,csv' + ]); + + Excel::import(new UnitImport, $request->file('file'));
Removed / Before Commit
- - public function setPassword(Request $request) - { - $request->validate([ - 'password' => 'required|confirmed|min:6' - ]); - - $user = User::find($request->user_id); - $user->name = $request->name; - $user->email = $request->email; - $user->telephone = $request->telephone; - $user->password = Hash::make($request->password); - $user->save(); - - return redirect('/users')->with('success', 'Password set successfully!'); - } - - public function toggleApproved(Request $request)
Added / After Commit
+ + public function setPassword(Request $request) + { + // Custom validation rules + $rules = [ + 'name' => 'required|string|max:255', + 'username' => 'required|string|max:255|unique:users,username,' . $request->user_id, + 'telephone' => 'nullable|string|max:20', + 'role' => 'required|exists:roles,id', + 'approved' => 'required|in:0,1', + 'vertical_id' => 'nullable|exists:verticals,id', + 'group_id' => 'nullable|exists:groups,id', + ]; + + // Add password validation rules + $rules['password'] = [ + 'nullable', + 'min:6',
Removed / Before Commit
- } - - $alreadycreatedjobno = WorkOrder::with([ - 'workUnit', - 'workUser', - 'equipments.vir', // eager load VIR on each equipment - 'equipments.subassy' - ]) - ->wherenotNull('job_no')->whereNull('job_printed_at')->get()->filter(function ($wo) { - $equipmentCount = $wo->equipments->count(); - $virCount = $wo->equipments->filter(function ($eq) { - return $eq->vir !== null; - })->count(); - return $equipmentCount > 0 && $equipmentCount === $virCount; - }); - - if(count($alreadycreatedjobno) > 0 ) - {
Added / After Commit
+ } + + $alreadycreatedjobno = WorkOrder::with([ + 'workUnit', + 'workUser', + 'equipments.vir', // eager load VIR on each equipment + 'equipments.subassy' + ]) + ->whereNotNull('job_no') + ->whereNull('job_printed_at') + ->get() + ->filter(function ($wo) { + $equipmentCount = $wo->equipments->count(); + $virCount = $wo->equipments->filter(function ($eq) { + return $eq->vir !== null; + })->count(); + return $equipmentCount > 0 && $equipmentCount === $virCount; + })
Removed / Before Commit
- - use App\Models\Wksp; - use Illuminate\Http\Request; - - class WkspController extends Controller - { - - return view('wksps.index', compact('wksps', 'filters', 'workspaceNames')); - } - - - public function store(Request $request)
Added / After Commit
+ + use App\Models\Wksp; + use Illuminate\Http\Request; + use App\Imports\WkspImport; + use Maatwebsite\Excel\Facades\Excel; + + class WkspController extends Controller + { + + return view('wksps.index', compact('wksps', 'filters', 'workspaceNames')); + } + public function import(Request $request) + { + $request->validate([ + 'file' => 'required|mimes:xlsx,xls,csv' + ]); + + Excel::import(new WkspImport, $request->file('file'));
Removed / Before Commit
Added / After Commit
+ <?php + namespace App\Imports; + + use App\Models\Bde; + use Maatwebsite\Excel\Concerns\ToModel; + use Maatwebsite\Excel\Concerns\WithHeadingRow; + + class BdeImport implements ToModel, WithHeadingRow + { + public function model(array $row) + { + // Agar name nahi hoga toh row skip kar do + if (empty($row['name'])) { + return null; + } + + return new Bde([ + 'name' => $row['name'],
Removed / Before Commit
Added / After Commit
+ <?php + namespace App\Imports; + + use App\Models\Co; + use Maatwebsite\Excel\Concerns\ToModel; + use Maatwebsite\Excel\Concerns\WithHeadingRow; + + class COImport implements ToModel, WithHeadingRow + { + public function model(array $row) + { + // Agar name nahi hoga toh row skip kar do + if (empty($row['name'])) { + return null; + } + + return new Co([ + 'name' => $row['name'],
Removed / Before Commit
Added / After Commit
+ <?php + namespace App\Imports; + + use App\Models\Corp; + use Maatwebsite\Excel\Concerns\ToModel; + use Maatwebsite\Excel\Concerns\WithHeadingRow; + + class CorpsImport implements ToModel, WithHeadingRow + { + public function model(array $row) + { + // Agar name nahi hoga toh row skip kar do + if (empty($row['name'])) { + return null; + } + + return new Corp([ + 'name' => $row['name'],
Removed / Before Commit
Added / After Commit
+ <?php + namespace App\Imports; + + use App\Models\Div; + use Maatwebsite\Excel\Concerns\ToModel; + use Maatwebsite\Excel\Concerns\WithHeadingRow; + + class DivImport implements ToModel, WithHeadingRow + { + public function model(array $row) + { + // Agar name nahi hoga toh row skip kar do + if (empty($row['name'])) { + return null; + } + + return new Div([ + 'name' => $row['name'],
Removed / Before Commit
Added / After Commit
+ <?php + namespace App\Imports; + + use App\Models\EqptTarget; + use Maatwebsite\Excel\Concerns\ToModel; + use Maatwebsite\Excel\Concerns\WithHeadingRow; + + class EqptTargetImport implements ToModel, WithHeadingRow + { + public function model(array $row) + { + // Skip row if essential column missing (example: main_eqpt) + if (empty($row['main_eqpt'])) { + return null; + } + + return new EqptTarget([ + 'group' => $row['group'] ?? null,
Removed / Before Commit
Added / After Commit
+ <?php + + namespace App\Imports; + + use App\Models\Equipment; + use Maatwebsite\Excel\Concerns\ToModel; + use Maatwebsite\Excel\Concerns\WithHeadingRow; + + class EquipmentsImport implements ToModel, WithHeadingRow + { + public function model(array $row) + { + // Skip invalid rows + if (empty($row['name']) || empty($row['code'])) { + return null; + } + + return new Equipment([
Removed / Before Commit
Added / After Commit
+ <?php + + namespace App\Imports; + + use App\Models\LeaveType; + use Maatwebsite\Excel\Concerns\ToModel; + use Maatwebsite\Excel\Concerns\WithHeadingRow; + + class LeaveTypeImport implements ToModel, WithHeadingRow + { + public function model(array $row) + { + // leave_name agar empty ho toh skip + if (empty($row['leave_name'])) { + return null; + } + + return new LeaveType([
Removed / Before Commit
Added / After Commit
+ <?php + namespace App\Imports; + + use App\Models\MasterCommand; + use Maatwebsite\Excel\Concerns\ToModel; + use Maatwebsite\Excel\Concerns\WithHeadingRow; + + class MasterCommandImport implements ToModel, WithHeadingRow + { + public function model(array $row) + { + // Skip empty rows + if (!isset($row['name']) || empty(trim($row['name']))) { + return null; + } + + return new MasterCommand([ + 'name' => $row['name'], // first row use as keys
Removed / Before Commit
Added / After Commit
+ <?php + namespace App\Imports; + + use App\Models\RepairClass; + use Maatwebsite\Excel\Concerns\ToModel; + use Maatwebsite\Excel\Concerns\WithHeadingRow; + + class RepairClassImport implements ToModel, WithHeadingRow + { + public function model(array $row) + { + // Agar name nahi hoga toh row skip kar do + if (empty($row['name'])) { + return null; + } + + return new RepairClass([ + 'name' => $row['name'],
Removed / Before Commit
Added / After Commit
+ <?php + + namespace App\Imports; + + use App\Models\Staff; + use Maatwebsite\Excel\Concerns\ToModel; + use Maatwebsite\Excel\Concerns\WithHeadingRow; + use PhpOffice\PhpSpreadsheet\Shared\Date; + use Carbon\Carbon; + + class StaffImport implements ToModel, WithHeadingRow + { + public function model(array $row) + { + // Agar name ya employee_number nahi hoga toh skip + if (empty($row['name']) || empty($row['employee_number'])) { + return null; + }
Removed / Before Commit
Added / After Commit
+ <?php + + namespace App\Imports; + + use App\Models\SubAssyEquipment; + use Illuminate\Support\Facades\Auth; + use Maatwebsite\Excel\Concerns\ToModel; + use Maatwebsite\Excel\Concerns\WithHeadingRow; + + class SubAssyEquipmentsImport implements ToModel, WithHeadingRow + { + public function model(array $row) + { + // Skip empty rows + if (empty($row['sub_equipment_name'])) { + return null; + } +
Removed / Before Commit
Added / After Commit
+ <?php + namespace App\Imports; + + use App\Models\Unit; + use Maatwebsite\Excel\Concerns\ToModel; + use Maatwebsite\Excel\Concerns\WithHeadingRow; + + class UnitImport implements ToModel, WithHeadingRow + { + public function model(array $row) + { + // Agar name nahi hoga toh row skip kar do + if (empty($row['name'])) { + return null; + } + + return new Unit([ + 'name' => $row['name'],
Removed / Before Commit
Added / After Commit
+ <?php + namespace App\Imports; + + use App\Models\Wksp; + use Maatwebsite\Excel\Concerns\ToModel; + use Maatwebsite\Excel\Concerns\WithHeadingRow; + + class WkspImport implements ToModel, WithHeadingRow + { + public function model(array $row) + { + // Agar name nahi hoga toh row skip kar do + if (empty($row['name'])) { + return null; + } + + return new Wksp([ + 'name' => $row['name'],
Removed / Before Commit
- value="{{ old('dob', isset($staff) && $staff->dob ? \Carbon\Carbon::parse($staff->dob)->format('Y-m-d') : '') }}" required> - @error('dob') <div class="text-danger">{{ $message }}</div> @enderror - </div> - - {{-- Personal Email --}} - <div class="col-md-6"> - </div> - @error('is_married') <div class="text-danger">{{ $message }}</div> @enderror - </div> - - </div> - </div> - @endsection - @section('scripts') - <script> - document.addEventListener('DOMContentLoaded', function () { - let groupSelect = document.getElementById('salary_group_id'); - if (groupSelect && groupSelect.value) {
Added / After Commit
+ value="{{ old('dob', isset($staff) && $staff->dob ? \Carbon\Carbon::parse($staff->dob)->format('Y-m-d') : '') }}" required> + @error('dob') <div class="text-danger">{{ $message }}</div> @enderror + </div> + <div class="col-md-6"> + <label for="anniversary_date" class="form-label">Anniversary Date</label> + <input type="date" name="anniversary_date" id="anniversary_date" class="form-control" + value="{{ old('anniversary_date', isset($staff) && $staff->anniversary_date ? \Carbon\Carbon::parse($staff->anniversary_date)->format('Y-m-d') : '') }}"> + @error('anniversary_date') + <div class="text-danger">{{ $message }}</div> + @enderror + </div> + + <div class="col-md-6"> + <label for="dob" class="form-label">Date of Birth</label> + <input type="date" name="dob" id="dob" class="form-control" + value="{{ old('dob', isset($staff) && $staff->dob ? \Carbon\Carbon::parse($staff->dob)->format('Y-m-d') : '') }}" required> + @error('dob') <div class="text-danger">{{ $message }}</div> @enderror + </div>
Removed / Before Commit
- </select> - </div> - </form> - <div class="align-items-end mt-auto"> - <!-- Add Button --> - <a href="{{ route('admin.staff.create') }}"> - <button class="btn btn-primary ">Add Staff</button> - </a> - </div> - </div> - </div> - </div> - </div> - </div> - - {{-- Include DataTables JS if needed --}} - @push('scripts') - <script>
Added / After Commit
+ </select> + </div> + </form> + <div class="d-flex align-items-end text-end col-md-2"> + <!-- Add Button --> + <a href="{{ route('admin.staff.create') }}"> + <button class="btn btn-primary ">Add Staff</button> + </a> + </div> + <div class="d-flex align-items-end text-end col-md-4"> + <form id="importForm" enctype="multipart/form-data"> + + <!-- Hidden Input --> + <input type="file" name="file" id="fileInput" required /> + + <!-- Custom Button --> + <button type="button" id="selectFileBtn" class="custom-upload-btn"> + 📁 Import File
Removed / Before Commit
- <h4 class="mb-0"><b>BDE</b></h4> - </div> - - <div class="col-md-9"> - <form method="GET" action="{{ url('bdes') }}" id="filterForm" - class="d-flex flex-wrap align-items-end gap-2 justify-content-end"> - <div> - <label class="form-label">BDE</label> - <select name="name" class="form-select select2" - @endforeach - </select> - </div> - - <div> - <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#bdeModal"> - Add BDE - </button> - </div>
Added / After Commit
+ <h4 class="mb-0"><b>BDE</b></h4> + </div> + + <div class="col-md-9 d-flex justify-content-end align-items-end"> + <form method="GET" action="{{ url('bdes') }}" id="filterForm" + class=" me-3"> + <div> + <label class="form-label">BDE</label> + <select name="name" class="form-select select2" + @endforeach + </select> + </div> + </form> + + <div> + <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#bdeModal"> + Add BDE + </button>
Removed / Before Commit
- @extends('layouts.app') - - @section('content') - - - <div class="row"> - <div class="col"> - <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#corpModal"> - Add Corps - </button> - </div> - </div> - </div> - <tbody> - @foreach($corps as $index => $corp) - <tr> - <td>{{ $index + 1 }}</td> - <td>{{ $corp->name }}</td>
Added / After Commit
+ @extends('layouts.app') + + @section('content') + <style> + #fileInput { + display: none; /* Hide default file input */ + } + + .custom-upload-btn { + margin-left:10px; + background: #4CAF50; + color: white; + padding: 8px 15px; + border-radius: 6px; + cursor: pointer; + border: none; + font-size: 14px; + transition: 0.3s;
Removed / Before Commit
- <h4 class="mb-0"><b>C/O</b></h4> - </div> - - <div class="col-md-9"> - <form method="GET" action="{{ url('cos') }}" id="filterForm" - class="d-flex flex-wrap align-items-end gap-2 justify-content-end"> - - {{-- CO Filter --}} - <div> - @endforeach - </select> - </div> - - {{-- Add Button --}} - <div> - <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#coModal"> - Add C/O - </button>
Added / After Commit
+ <h4 class="mb-0"><b>C/O</b></h4> + </div> + + <div class="col-md-9 d-flex justify-content-end align-items-end"> + <form method="GET" action="{{ url('cos') }}" id="filterForm" + class="me-3"> + + {{-- CO Filter --}} + <div> + @endforeach + </select> + </div> + </form> + {{-- Add Button --}} + <div> + <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#coModal"> + Add C/O + </button>
Removed / Before Commit
- <h4 class="mb-0"><b>Divisions</b></h4> - </div> - - <div class="col-md-9"> - <form method="GET" action="{{ url('divs') }}" id="filterForm" - class="d-flex flex-wrap align-items-end gap-2 justify-content-end"> - <div> - <label class="form-label">Division</label> - <select name="name" class="form-select select2" - @endforeach - </select> - </div> - - <div> - <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#divModal"> - Add Division - </button> - </div>
Added / After Commit
+ <h4 class="mb-0"><b>Divisions</b></h4> + </div> + + <div class="col-md-9 d-flex justify-content-end align-items-end"> + <form method="GET" action="{{ url('divs') }}" id="filterForm" + class=" me-3"> + <div> + <label class="form-label">Division</label> + <select name="name" class="form-select select2" + @endforeach + </select> + </div> + </form> + + <div> + <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#divModal"> + Add Division + </button>
Removed / Before Commit
- <div class="col-md-9 " > - <div class="row align-items-end justify-content-end"> - {{-- Group --}} - <div class="col-md-3"> - <label class="form-label">Groups</label> - <select id="filterGroup" class="form-select select2"> - <option value="">-- All Groups --</option> - </div> - - {{-- Main Equipment --}} - <div class="col-md-3"> - <label class="form-label">Equipments</label> - <select id="filterEqpt" class="form-select select2"> - <option value="">-- All Equipments --</option> - </div> - - {{-- Year --}} - <div class="col-md-3">
Added / After Commit
+ <div class="col-md-9 " > + <div class="row align-items-end justify-content-end"> + {{-- Group --}} + <div class="col-md-2"> + <label class="form-label">Groups</label> + <select id="filterGroup" class="form-select select2"> + <option value="">-- All Groups --</option> + </div> + + {{-- Main Equipment --}} + <div class="col-md-2"> + <label class="form-label">Equipments</label> + <select id="filterEqpt" class="form-select select2"> + <option value="">-- All Equipments --</option> + </div> + + {{-- Year --}} + <div class="col-md-2">
Removed / Before Commit
- <div class="card"> - <div class="card-header py-3"> - <div class="row align-items-end"> - <div class="col-md-2"> - <h4><b>Equipments</b></h4> - </div> - - - </div> - - <div class="col-md-2"> - <label class="form-label">Equipment Code</label> - <select id="filterCode" class="form-select select2"> - <option value="">-- All Codes --</option> - <!-- </div> --> - - - <div class="col-md-2">
Added / After Commit
+ <div class="card"> + <div class="card-header py-3"> + <div class="row align-items-end"> + <div class="col-md-1"> + <h4><b>Equipments</b></h4> + </div> + + + </div> + + <div class="col-md-1"> + <label class="form-label">Equipment Code</label> + <select id="filterCode" class="form-select select2"> + <option value="">-- All Codes --</option> + <!-- </div> --> + + + <div class="col-md-1">
Removed / Before Commit
- @include('layouts.meta') - @include('layouts.css') - </head> - - <body> - - - } - }); - }); - </script>
Added / After Commit
+ @include('layouts.meta') + @include('layouts.css') + </head> + <style> + #fileInput { + display: none; /* Hide default file input */ + } + + .custom-upload-btn { + margin-left:10px; + background: #4CAF50; + color: white; + padding: 8px 15px; + border-radius: 6px; + cursor: pointer; + border: none; + font-size: 14px; + transition: 0.3s;
Removed / Before Commit
- scrollCollapse: true, - autoWidth: true, - responsive: false, // set false if you're using scrollX - dom: 'rt' - }); - }); - $(document).ready(function() {
Added / After Commit
+ scrollCollapse: true, + autoWidth: true, + responsive: false, // set false if you're using scrollX + dom: 'rt', + ordering: false + }); + }); + $(document).ready(function() {
Removed / Before Commit
- - <div class="card-header py-3"> - <div class="row align-items-end justify-content-end"> - <div class="col-md-5"> - <h4><b>Leave Types</b></h4> - </div> - <div class="col-md-7 justify-content-end"> - <div class="d-flex gap-2"> - <!-- Filters --> - <div class="col-md-3"> - <label class="form-label">Category</label> - <select id="categoryFilter" class="form-control select2"> - <option value="">-- All --</option> - </select> - </div> - - <div class="col-md-3"> - <label class="form-label">Eligible For</label>
Added / After Commit
+ + <div class="card-header py-3"> + <div class="row align-items-end justify-content-end"> + <div class="col-md-3"> + <h4><b>Leave Types</b></h4> + </div> + <div class="col-md-9 justify-content-end"> + <div class="d-flex gap-2"> + <!-- Filters --> + <div class="col-md-2"> + <label class="form-label">Category</label> + <select id="categoryFilter" class="form-control select2"> + <option value="">-- All --</option> + </select> + </div> + + <div class="col-md-2"> + <label class="form-label">Eligible For</label>
Removed / Before Commit
- @extends('layouts.app') - - @section('content') - <div class="row"> - <div class="col"> - <div class="card"> - <div class="ms-3"> - <button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#commandModal">Add Command</button> - </div> - </div> - </div> - </div> - <tbody> - @foreach($commands as $index => $cmd) - <tr> - <td>{{ $index + 1 }}</td> - <td>{{ $cmd->name }}</td> - <td>
Added / After Commit
+ @extends('layouts.app') + + @section('content') + <style> + #fileInput { + display: none; /* Hide default file input */ + } + + .custom-upload-btn { + margin-left:10px; + background: #4CAF50; + color: white; + padding: 8px 15px; + border-radius: 6px; + cursor: pointer; + border: none; + font-size: 14px; + transition: 0.3s;
Removed / Before Commit
- <h4 class="mb-0"><b>Repair Class</b></h4> - </div> - - <div class="col-md-9"> - <form method="GET" action="{{ url('repair-classes') }}" id="filterForm" - class="d-flex flex-wrap align-items-end gap-2 justify-content-end"> - - {{-- Repair Class Filter --}} - <div> - @endforeach - </select> - </div> - - {{-- Add Button --}} - <div> - <button type="button" class="btn btn-primary" - data-bs-toggle="modal" data-bs-target="#repairClassModal"> - Add Repair Class
Added / After Commit
+ <h4 class="mb-0"><b>Repair Class</b></h4> + </div> + + <div class="col-md-9 d-flex justify-content-end align-items-end"> + <form method="GET" action="{{ url('repair-classes') }}" id="filterForm" + class="me-3"> + + {{-- Repair Class Filter --}} + <div> + @endforeach + </select> + </div> + </form> + {{-- Add Button --}} + <div> + <button type="button" class="btn btn-primary" + data-bs-toggle="modal" data-bs-target="#repairClassModal"> + Add Repair Class
Removed / Before Commit
- </form> - - <!-- Add Button --> - - </div> - </div> - </div>
Added / After Commit
+ </form> + + <!-- Add Button --> + <!-- <div> + <a href="{{url('/roles/create')}}"> + <button type="button" class="btn btn-primary"> + Add Role + </button> + </a> + </div> --> + </div> + </div> + </div>
Removed / Before Commit
- <div class="col"> - <div class="card"> - <div class="card-header py-3"> - <div class="row align-items-end"> - <div class="col-md-3"> - <h4><b>Sub-Assy Equipments</b></h4> - </div> - - <div class="col-md-9"> - <div class="d-flex justify-content-end align-items-end gap-4"> - - - <div class=""> - <label class="form-label">Group</label> - <select id="filterGroup" class="form-select select2"> - <option value="">-- All Groups --</option> - @foreach($groups as $group) - <option value="{{ $group->id }}" {{ request('group_id') == $group->id ? 'selected' : '' }}>
Added / After Commit
+ <div class="col"> + <div class="card"> + <div class="card-header py-3"> + <div class="row align-items-center"> + <div class="col-md-3"> + <h4><b>Sub-Assy Equipments</b></h4> + </div> + + <div class="col-md-9 d-flex justify-content-end align-items-end"> + + + + <div style="margin:0px 10px"> + <label class="form-label">Group</label> + <select id="filterGroup" class="form-select select2"> + <option value="">-- All Groups --</option> + @foreach($groups as $group) + <option value="{{ $group->id }}" {{ request('group_id') == $group->id ? 'selected' : '' }}>
Removed / Before Commit
- <h4 class="mb-0"><b>Units</b></h4> - </div> - - <div class="col-md-9"> - <form method="GET" action="{{ url('units') }}" id="filterForm" - class="d-flex flex-wrap align-items-end gap-2 justify-content-end"> - - {{-- Unit filter --}} - <div> - @endforeach - </select> - </div> - - {{-- Add Unit button --}} - <div> - <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#unitModal"> - Add Unit - </button>
Added / After Commit
+ <h4 class="mb-0"><b>Units</b></h4> + </div> + + <div class="col-md-9 d-flex justify-content-end align-items-end"> + <form method="GET" action="{{ url('units') }}" id="filterForm" + class="me-3"> + + {{-- Unit filter --}} + <div> + @endforeach + </select> + </div> + </form> + {{-- Add Unit button --}} + <div> + <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#unitModal"> + Add Unit + </button>
Removed / Before Commit
- </div> - <hr> - - <div class="card-body p-4"> - <form action="{{ route('user.password') }}" method="POST"> - @csrf - - {{-- Password (optional) --}} - <div class="row mb-3"> - <label class="col-sm-3 col-form-label">Password</label> - <div class="col-sm-9"> - <input type="password" name="password" class="form-control" placeholder="Leave blank to keep current password"> - </div> - </div> - </div>
Added / After Commit
+ </div> + <hr> + + <!-- @if ($errors->any()) + <div class="alert alert-danger"> + <ul class="mb-0"> + @foreach ($errors->all() as $error) + <li>{{ $error }}</li> + @endforeach + </ul> + </div> + @endif --> + + + <div class="card-body p-4"> + <form action="{{ route('user.password') }}" method="POST"> + @csrf +
Removed / Before Commit
- - <td>{{ $user->created_at ? $user->created_at->format('d M, Y') : '-' }}</td> - <td> - @if(!empty($user->roles)) - <a href="{{ url('/user-edit/'.$user->id) }}"><i class="fas fa-pencil"></i></a> - @endif - </td> - </tr> - @endforeach
Added / After Commit
+ + <td>{{ $user->created_at ? $user->created_at->format('d M, Y') : '-' }}</td> + <td> + + <a href="{{ url('/user-edit/'.$user->id) }}"><i class="fas fa-pencil"></i></a> + </td> + </tr> + @endforeach
Removed / Before Commit
- <h4 class="mb-0"><b>Workspaces</b></h4> - </div> - - <div class="col-md-9"> - <form method="GET" action="{{ url('wksps') }}" id="filterForm" - class="d-flex flex-wrap align-items-end gap-2 justify-content-end"> - - {{-- Workspace filter --}} - <div> - @endforeach - </select> - </div> - - {{-- Add button --}} - <div> - <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#wkspModal"> - Add Workspace - </button>
Added / After Commit
+ <h4 class="mb-0"><b>Workspaces</b></h4> + </div> + + <div class="col-md-9 d-flex justify-content-end align-items-end"> + <form method="GET" action="{{ url('wksps') }}" id="filterForm" + class=" me-3"> + + {{-- Workspace filter --}} + <div> + @endforeach + </select> + </div> + </form> + {{-- Add button --}} + <div> + <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#wkspModal"> + Add Workspace + </button>
Removed / Before Commit
- Route::post('/verticals/toggle-status/{id}', [VerticalController::class, 'toggleStatus']); - - Route::get('/master-commands', [MasterCommandController::class, 'index'])->name('master-commands.index'); - Route::post('/master-commands/store', [MasterCommandController::class, 'store'])->name('master-commands.store'); - Route::post('/master-commands/update/{id}', [MasterCommandController::class, 'update'])->name('master-commands.update'); - Route::delete('/master-commands/delete/{id}', [MasterCommandController::class, 'destroy'])->name('master-commands.destroy'); - Route::post('/units/store', [UnitController::class, 'store'])->name('units.store'); - Route::post('/units/update/{id}', [UnitController::class, 'update'])->name('units.update'); - Route::delete('/units/delete/{id}', [UnitController::class, 'destroy'])->name('units.destroy'); - Route::get('/wksps', [WkspController::class, 'index']); - Route::post('/wksps/store', [WkspController::class, 'store']); - Route::post('/wksps/update/{id}', [WkspController::class, 'update']); - Route::delete('/wksps/delete/{id}', [WkspController::class, 'destroy']); - Route::get('/bdes', [BdeController::class, 'index']); - Route::post('/bdes/store', [BdeController::class, 'store']); - Route::post('/bdes/update/{id}', [BdeController::class, 'update']); - Route::delete('/bdes/delete/{id}', [BdeController::class, 'destroy']); - Route::get('/divs', [DivController::class, 'index']);
Added / After Commit
+ Route::post('/verticals/toggle-status/{id}', [VerticalController::class, 'toggleStatus']); + + Route::get('/master-commands', [MasterCommandController::class, 'index'])->name('master-commands.index'); + Route::post('/master-command/import', [MasterCommandController::class, 'import'])->name('master-command.import'); + Route::post('/master-commands/store', [MasterCommandController::class, 'store'])->name('master-commands.store'); + Route::post('/master-commands/update/{id}', [MasterCommandController::class, 'update'])->name('master-commands.update'); + Route::delete('/master-commands/delete/{id}', [MasterCommandController::class, 'destroy'])->name('master-commands.destroy'); + Route::post('/units/store', [UnitController::class, 'store'])->name('units.store'); + Route::post('/units/update/{id}', [UnitController::class, 'update'])->name('units.update'); + Route::delete('/units/delete/{id}', [UnitController::class, 'destroy'])->name('units.destroy'); + Route::post('/units/import', [UnitController::class, 'import'])->name('units.import'); + + Route::get('/wksps', [WkspController::class, 'index']); + Route::post('/wksps/store', [WkspController::class, 'store']); + Route::post('/wksps/update/{id}', [WkspController::class, 'update']); + Route::delete('/wksps/delete/{id}', [WkspController::class, 'destroy']); + Route::post('/wksps/import', [WkspController::class, 'import'])->name('wksps.import'); +