update material index
This commit is contained in:
@@ -8,6 +8,7 @@ use App\Http\Requests\Material\TransferMaterialRequest;
|
||||
use App\Http\Requests\Material\ReturnMaterialRequest;
|
||||
use App\Http\Resources\Material\MaterialResource;
|
||||
use App\Services\Material\MaterialService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class MaterialController extends ApiController
|
||||
{
|
||||
@@ -18,6 +19,27 @@ class MaterialController extends ApiController
|
||||
$this->service = $service;
|
||||
}
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$filters = $request->only([
|
||||
'search',
|
||||
'technician_id',
|
||||
'warehouse_id',
|
||||
'type',
|
||||
'page',
|
||||
'per_page',
|
||||
'sort_by',
|
||||
'sort_order',
|
||||
]);
|
||||
|
||||
$data = $this->service->list($filters);
|
||||
|
||||
return $this->success(
|
||||
MaterialResource::collection($data),
|
||||
'List material user berhasil diambil'
|
||||
);
|
||||
}
|
||||
|
||||
public function assign(AssignMaterialRequest $request)
|
||||
{
|
||||
$result = $this->service->assign($request->validated());
|
||||
|
||||
@@ -10,6 +10,60 @@ use DB;
|
||||
|
||||
class MaterialService
|
||||
{
|
||||
public function list(array $filters = [])
|
||||
{
|
||||
$serialized = TechnicianMaterial::query()
|
||||
->select([
|
||||
'id',
|
||||
'user_id',
|
||||
'barcode_id',
|
||||
'inventory_item_id',
|
||||
'material_name',
|
||||
'serial_number',
|
||||
'status',
|
||||
'assigned_at',
|
||||
'assigned_by',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
DB::raw('NULL as unit'),
|
||||
DB::raw('NULL as qty_received'),
|
||||
DB::raw('NULL as qty_used'),
|
||||
DB::raw('NULL as qty_remaining'),
|
||||
DB::raw("'serialized' as type"),
|
||||
]);
|
||||
|
||||
$consumable = TechnicianConsumable::query()
|
||||
->select([
|
||||
'id',
|
||||
'user_id',
|
||||
'barcode_id',
|
||||
'inventory_item_id',
|
||||
'material_name',
|
||||
DB::raw('NULL as serial_number'),
|
||||
'status',
|
||||
'assigned_at',
|
||||
'assigned_by',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'unit',
|
||||
'qty_received',
|
||||
'qty_used',
|
||||
'qty_remaining',
|
||||
DB::raw("'consumable' as type"),
|
||||
]);
|
||||
|
||||
if (!empty($filters['user_id'])) {
|
||||
$serialized->where('user_id', $filters['user_id']);
|
||||
$consumable->where('user_id', $filters['user_id']);
|
||||
}
|
||||
|
||||
$query = $serialized->unionAll($consumable);
|
||||
|
||||
return DB::query()
|
||||
->fromSub($query, 'materials')
|
||||
->orderByDesc('created_at')
|
||||
->paginate($filters['per_page'] ?? 15);
|
||||
}
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| ASSIGN MATERIAL (AUTO DETECT TYPE)
|
||||
|
||||
+7
-8
@@ -60,15 +60,14 @@ Route::middleware('auth:sanctum')->group(function () {
|
||||
Route::post('/escalate', 'escalate');
|
||||
});
|
||||
|
||||
Route::prefix('materials')->group(function () {
|
||||
|
||||
Route::post('/assign', [MaterialController::class, 'assign']);
|
||||
Route::post('/transfer', [MaterialController::class, 'transfer']);
|
||||
Route::post('/return', [MaterialController::class, 'return']);
|
||||
|
||||
Route::get('/user/{user_id}', [MaterialController::class, 'listByUser']);
|
||||
Route::get('/history/{barcode_id}', [MaterialController::class, 'history']);
|
||||
Route::controller(MaterialController::class)->group(function () {
|
||||
Route::get('/', 'index');
|
||||
Route::post('/assign', 'assign');
|
||||
Route::post('/transfer', 'transfer');
|
||||
Route::post('/return', 'return');
|
||||
|
||||
Route::get('/user/{user_id}', 'listByUser');
|
||||
Route::get('/history/{barcode_id}', 'history');
|
||||
});
|
||||
|
||||
Route::prefix('audit-logs')
|
||||
|
||||
Reference in New Issue
Block a user