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 · 7082a1d1
The commit adds new features and data retrievals across multiple controllers related to equipment repair, quality control checks, and VIR job creation. It improves business functionality with extended filtering and grouping. However, the commit message is uninformative and minimal validation or error handling is visible. Some commented-out legacy code remains in the VIRController, which adds bloat and reduces clarity. The new code mostly uses Eloquent for database access, but lacks clear checks for data integrity and potential null pointer protections. Security concerns from user input are mitigated by Laravel's query builders, but further validation is advisable. The logic is complex and could benefit from modularization and in-depth testing.
Quality
?
60%
Security
?
70%
Business Value
?
70%
Maintainability
?
60%
Issues & Suggested Fixes
?
1AI detects the issue
2Shows file, line, or evidence
3Suggests the fix to apply
Poor Description
Where
commit message
Issue / Evidence
poor description
Suggested Fix
provide a detailed commit message describing what was changed and why
Missing Validation
Where
app/Http/Controllers/QCCheckController.php:65
Issue / Evidence
missing validation for request inputs
Suggested Fix
validate inputs to avoid unexpected data issues or security risks
Foreach Loop Lacks Error Handling
Where
app/Http/Controllers/QCCheckController.php:67
Issue / Evidence
foreach loop lacks error handling
Suggested Fix
add try/catch or checks to handle failures when creating QCCheck records
Large Block Of Commented Out Legacy Code
Where
app/Http/Controllers/VIRController.php:126-243
Issue / Evidence
large block of commented-out legacy code
Suggested Fix
remove unused commented code to improve maintainability and readability
Long Function
Where
app/Http/Controllers/VIRController.php:247-287
Issue / Evidence
complex filtering logic
Suggested Fix
refactor filtering into smaller methods for clarity and testability
Missing Validation
Where
app/Http/Controllers/EquipmentRepairController.php:126-132
Issue / Evidence
no input validation shown
Suggested Fix
add validation on request parameters to reduce bug risk
Loose Filtering On Job No With 'Like' Oper...
Where
app/Http/Controllers/QCCheckController.php:21
Issue / Evidence
loose filtering on job_no with 'like' operator
Suggested Fix
consider sanitizing input or applying stricter checks to prevent SQL injection if raw queries are used elsewhere
Code Change Preview · app/Http/Controllers/EquipmentRepairController.php
?
Removed / Before Commit
- ->where('vir_id', $request->vir_id) - ->orderByDesc('repair_progress_date') - ->get(); - - return view('repairs.history', compact('history')); - } - - }
Added / After Commit
+ ->where('vir_id', $request->vir_id) + ->orderByDesc('repair_progress_date') + ->get(); + + $equipment = WorkEquipment::with([ + 'workOrder.workUnit.units', + 'workOrder', + ])->findOrFail($request->work_equipment_id); + + return view('repairs.history', compact('history','equipment')); + } + + }
Removed / Before Commit
- use App\Models\QCCheck; - use App\Models\WorkEquipment; - use App\Models\WorkOrder; - use Illuminate\Http\Request; - use Illuminate\Support\Facades\Auth; - - class QCCheckController extends Controller - { - public function index(Request $request) - { - $equipments = WorkEquipment::with(['workOrder', 'vir', 'qcCheck']) - ->whereHas('vir', fn ($q) => $q->whereNotNull('status')) - ->whereHas('workOrder', fn ($q) => $q->whereNotNull('job_no')) - ->whereDoesntHave('qcCheck') - - // 🔍 Filter by job_no in workOrder - ->when($request->filled('job_no'), function ($q) use ($request) { - $q->whereHas('workOrder', function ($query) use ($request) {
Added / After Commit
+ use App\Models\QCCheck; + use App\Models\WorkEquipment; + use App\Models\WorkOrder; + use App\Models\VIR; + use Illuminate\Http\Request; + use Illuminate\Support\Facades\Auth; + + class QCCheckController extends Controller + { + public function index(Request $request) + { + // 🎯 Main equipment fetch + $equipments = WorkEquipment::with(['workOrder.workUnit.units', 'workOrder.workUnit.wksps', 'workOrder.workUnit.commands', 'vir', 'workOrder.qcCheck']) + ->whereHas('vir', fn ($q) => $q->whereNotNull('status')) + ->whereHas('workOrder', fn ($q) => $q->whereNotNull('job_no')) + ->whereDoesntHave('workOrder.qcCheck') + ->when($request->filled('job_no'), fn ($q) => $q->whereHas('workOrder', fn ($query) => $query->where('job_no', 'like', '%' . $request->job_no . '%'))) + ->when($request->filled('regd_no'), fn ($q) => $q->where('regd_no', 'like', '%' . $request->regd_no . '%'))
Removed / Before Commit
- } - - - public function jobCreateView(Request $request) - { - $virs = collect(); // empty collection by default - - // 🟢 Only run query if any filter is applied - if ($request->filled('control_number')) - { - - $query = VIR::with([ - 'workEquipment', - 'workOrder', - 'workOrder.workUser', - 'workOrder.workUnit', - 'qaDecision' - ])
Added / After Commit
+ } + + + // public function jobCreateView(Request $request) + // { + // $virs = collect(); // empty collection by default + + // // 🟢 Only run query if any filter is applied + // if ($request->filled('control_number')) + // { + + // $query = VIR::with([ + // 'workEquipment', + // 'workOrder', + // 'workOrder.workUser', + // 'workOrder.workUnit', + // 'qaDecision' + // ])
Removed / Before Commit
- } - - DB::commit(); - return redirect()->route('work-orders.listing')->with('success', 'Work order and equipment saved.'); - - } catch (\Exception $e) { - DB::rollBack();
Added / After Commit
+ } + + DB::commit(); + return response()->json([ + 'control_no' => $controlNo, + 'control_date' => date('d-M-Y'), + 'redirect_url' => route('work-orders.listing'), + ]); + // return redirect()->route('work-orders.listing')->with('success', 'Work order and equipment saved.'); + + } catch (\Exception $e) { + DB::rollBack();
Removed / Before Commit
- return $this->belongsTo(WorkEquipment::class,'work_equipment_id'); - } - // App\Models\VIR.php - - public function qaDecision() - { - return $this->hasOne(\App\Models\QADecision::class, 'vir_id'); - } - - - }
Added / After Commit
+ return $this->belongsTo(WorkEquipment::class,'work_equipment_id'); + } + // App\Models\VIR.php + public function qaDecision() + { + return $this->hasOne(QADecision::class, 'vir_id'); + } + + + + }
Removed / Before Commit
- { - return $this->hasOne(\App\Models\QADecision::class, 'work_equipment_id'); - } - - public function qcCheck() - { - return $this->hasOne(QCCheck::class, 'work_equipment_id'); - } - public function repairs() - { - return $this->hasMany(EquipmentRepair::class);
Added / After Commit
+ { + return $this->hasOne(\App\Models\QADecision::class, 'work_equipment_id'); + } + public function qcCheck() + { + return $this->hasOne(QCCheck::class, 'work_equipment_id'); + } + + public function repairs() + { + return $this->hasMany(EquipmentRepair::class);
Removed / Before Commit
- - // ✅ Updated: WorkOrder has many equipments - public function equipments() - { - return $this->hasMany(WorkEquipment::class, 'work_order_id'); - } - public function equipment() - { - return $this->belongsTo(WorkEquipment::class, 'id','work_order_id'); - { - return $this->hasOne(\App\Models\QCInspection::class, 'work_order_id'); - } - public function mrWorkEquipments() - { - return $this->hasMany(MrWorkEquipment::class);
Added / After Commit
+ + // ✅ Updated: WorkOrder has many equipments + public function equipments() + { + return $this->hasMany(WorkEquipment::class); + } + + public function virs() + { + return $this->hasMany(VIR::class); + } + + public function equipment() + { + return $this->belongsTo(WorkEquipment::class, 'id','work_order_id'); + { + return $this->hasOne(\App\Models\QCInspection::class, 'work_order_id'); + }
Removed / Before Commit
- <link href="{{ asset('assets/plugins/fontawesome/css/all.min.css') }}" rel="stylesheet"> - <link href="{{url('assets/plugins/datatable/css/dataTables.bootstrap5.min.css')}}" rel="stylesheet"> - <title>509 Army Workshop</title> - - - \ No newline at end of file
Added / After Commit
+ <link href="{{ asset('assets/plugins/fontawesome/css/all.min.css') }}" rel="stylesheet"> + <link href="{{url('assets/plugins/datatable/css/dataTables.bootstrap5.min.css')}}" rel="stylesheet"> + <title>509 Army Workshop</title> + <style> + table.table-bordered.dataTable { + margin-top:0pX!important; + } + </style> + + + \ No newline at end of file
Removed / Before Commit
- </script> - <script> - $(document).ready(function() { - $('#example').DataTable({ - pageLength: 20, - lengthChange: false - }); - } ); - </script> - <script>
Added / After Commit
+ </script> + <script> + $(document).ready(function() { + $('#example').DataTable({ + scrollX: false, + scrollCollapse: true, + autoWidth: true, + responsive: false, // set false if you're using scrollX + dom: 'rt' + }); + + } ); + </script> + <script>
Removed / Before Commit
- <div class="card-header py-3"> - <div class="row align-items-center"> - <div class="col-md-6"> - <h4><b>QA Equipment Listing</b></h4> - </div> - <div class="col-md-6 text-end"> - - </div> - - <div class="col-md-3 d-flex align-items-end gap-2"> - <button type="submit" class="btn btn-filter">Filter</button> - <a href="{{ route('qa.index') }}" class="btn btn-info">Reset</a> - </div> - </form> - - - <!-- 📊 Table --> - <div class="table-responsive">
Added / After Commit
+ <div class="card-header py-3"> + <div class="row align-items-center"> + <div class="col-md-6"> + <h4><b>QA Remark</b></h4> + </div> + <div class="col-md-6 text-end"> + + </div> + + <div class="col-md-3 d-flex align-items-end gap-2"> + <button type="submit" class="btn btn-search btn-sm px-5 rounded-0">Search</button> + <a href="{{ route('qa.index') }}" class="btn btn-info">Reset</a> + </div> + </form> + + + <!-- 📊 Table --> + <div class="table-responsive">
Removed / Before Commit
- @extends('layouts.app') - - @section('content') - @if (session('success')) - <div class="alert alert-success">{{ session('success') }}</div> - @endif - @if ($errors->any()) - <div class="alert alert-danger"> - <strong>Whoops!</strong> Please fix the following: - <div class="card-header py-3"> - <div class="row align-items-center"> - <div class="col-md-12"> - <h4><b>QC Equipment Listing</b></h4> - </div> - </div> - </div> - </div> -
Added / After Commit
+ @extends('layouts.app') + + @section('content') + @if ($errors->any()) + <div class="alert alert-danger"> + <strong>Whoops!</strong> Please fix the following: + <div class="card-header py-3"> + <div class="row align-items-center"> + <div class="col-md-12"> + <h4><b>Quality Control Number</b></h4> + </div> + </div> + </div> + </div> + + <div class="col-md-3 d-flex align-items-end gap-2"> + <button type="submit" class="btn btn-search px-5 rounded-0">Search</button> + <a href="{{ route('qc.index') }}" class="btn btn-info">Reset</a>
Removed / Before Commit
- <div class="card"> - <div class="card-header py-3"> - <h4><b>Repair Progress History</b></h4> - </div> - - <div class="card-body table-responsive"> - <th>Fault</th> - <th>Repair Progress Remark</th> - <th>PDC Date</th> - <th>Initiated to QA?</th> - </tr> - </thead> - <tbody> - <td>{{ $entry->fault ?? '-' }}</td> - <td>{{ $entry->repair_progress_remark ?? '-' }}</td> - <td>{{ $entry->pdc_date ?? '-' }}</td> - <td>{{ $entry->initiated_to_qa ? 'Yes' : 'No' }}</td> - </tr>
Added / After Commit
+ <div class="card"> + <div class="card-header py-3"> + <h4><b>Repair Progress History</b></h4> + @if($equipment) + <div class="px-4 py-3 border-bottom bg-light"> + <div class="row mb-2"> + <div class="col-md-3"><strong>Main Equipment:</strong> {{ $equipment?->Equipments?->name ?? '-' }}</div> + <div class="col-md-3"><strong>Unit:</strong> {{ $equipment->workOrder->workUnit->units->name ?? '-' }}</div> + <div class="col-md-3"><strong>Job No:</strong> {{ $equipment->workOrder->job_no ?? '-' }}</div> + <div class="col-md-3"><strong>Job Date:</strong> {{ \Carbon\Carbon::parse($equipment->workOrder->job_date)->format('d-m-Y') ?? '-' }}</div> + </div> + <div class="row"> + <div class="col-md-3"><strong>Sub-Assy Equipment:</strong> {{ $equipment->assy ?? '-' }}</div> + <div class="col-md-3"><strong>Regd No:</strong> {{ $equipment->regd_no ?? '-' }}</div> + </div> + </div> + @endif +
Removed / Before Commit
- </div> - - <div class="col-md-3"> - <button type="submit" class="btn btn-filter">Filter</button> - <a href="{{ route('repairs.index') }}" class="btn btn-info">Reset</a> - </div> - </form> - - - <div class="table-responsive"> - <table class="table table-bordered table-striped" id="repairTable"> - <thead class="table-primary"> - <tr> - <th>Unit Name</th> - <th>Workshop</th> - <th>Command</th> - <th>Unit WO No</th> - <th>Unit WO Date</th>
Added / After Commit
+ </div> + + <div class="col-md-3"> + <button type="submit" class="btn btn-search btn-sm px-5 rounded-0">Search</button> + <a href="{{ route('repairs.index') }}" class="btn btn-info">Reset</a> + </div> + </form> + + + <div class="table-responsive"> + <table class="table table-bordered table-striped" id="example"> + <thead class="table-primary"> + <tr> + <th>Unit Name</th> + <th>Workshop</th> + <!-- <th>Command</th> --> + <th>Unit WO No</th> + <th>Unit WO Date</th>
Removed / Before Commit
- </div> - @endif - - @if($alreadycreatedjobno == 0) - <div class="row"> - <div class="col-lg-12 mx-auto"> - <div class="card"> - <label for="control_number" class="form-label">Control Number</label> - <select name="control_number" class="form-select select2" data-placeholder="Search or select"> - <option value="">-- Select Control Number --</option> - @foreach($controlNumbers as $number) - <option value="{{ $number }}" {{ request('control_number') == $number ? 'selected' : '' }}> - {{ $number }} - </option> - @endforeach - </select> - </div> - </div>
Added / After Commit
+ </div> + @endif + + @if(($alreadycreatedjobno == 2)) + <div class="row"> + <div class="col-lg-12 mx-auto"> + <div class="card"> + <label for="control_number" class="form-label">Control Number</label> + <select name="control_number" class="form-select select2" data-placeholder="Search or select"> + <option value="">-- Select Control Number --</option> + @foreach($controlNumbers as $cn) + <option value="{{ $cn }}" {{ request('control_number') == $cn ? 'selected' : '' }}> + {{ $cn }} + </option> + @endforeach + </select> + </div> + </div>
Removed / Before Commit
- <div class="card-header py-3"> - <div class="row align-items-center"> - <div class="col-md-6"> - <h4><b>VIR Equipment Listing</b></h4> - </div> - <div class="col-md-6 text-end"> - - - <!-- 📊 Table --> - <div class="table-responsive"> - <table class="table table-bordered table-striped" id="virTable"> - <thead class="table-primary"> - <tr> - <th>Unit Name</th> - <th>Workshop</th> - <th>Command</th> - <th>Unit WO No</th> - <th>WO Date</th>
Added / After Commit
+ <div class="card-header py-3"> + <div class="row align-items-center"> + <div class="col-md-6"> + <h4><b>Awaiting VIR</b></h4> + </div> + <div class="col-md-6 text-end"> + + + <!-- 📊 Table --> + <div class="table-responsive"> + <table class="table table-bordered table-striped" id="example"> + <thead class="table-primary"> + <tr> + <th>Unit Name</th> + <th>Workshop</th> + <!-- <th>Command</th> --> + <th>Unit WO No</th> + <th>WO Date</th>
Removed / Before Commit
- </div> - <hr> - - <form action="{{ isset($isEdit) ? route('work-equipt.update', $equipment->id) : route('work-equipt.store') }}" method="POST"> - @csrf - @if(isset($isEdit)) @method('PUT') @endif - <div class="card-body"> - <h5 class="mb-4 ch">Reg. Details</h5> - <div id="equipmentFieldsContainer" class="mb-3"></div> - <div class="d-flex gap-3"> - <button type="submit" class="btn btn-primary px-5 rounded-0">Confirm and Generate Control Number</button> - <button type="button" id="backToEqptBtn" class="btn btn-secondary px-5 rounded-0">Back</button> - </div> - </div> - </div> - </div> - </div> - @endsection
Added / After Commit
+ </div> + <hr> + + <form id="workOrderForm" action="{{ isset($isEdit) ? route('work-equipt.update', $equipment->id) : route('work-equipt.store') }}" method="POST"> + @csrf + @if(isset($isEdit)) @method('PUT') @endif + <div class="card-body"> + <h5 class="mb-4 ch">Reg. Details</h5> + <div id="equipmentFieldsContainer" class="mb-3"></div> + <div class="d-flex gap-3"> + <button type="button" id="generateControlBtn" class="btn btn-success px-5 rounded-0">Confirm and Generate Control Number</button> + <button type="button" id="backToEqptBtn" class="btn btn-secondary px-5 rounded-0">Back</button> + </div> + </div> + </div> + </div> + </div> + <!-- Control Number Popup -->