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\Requests\Material\ReturnMaterialRequest;
|
||||||
use App\Http\Resources\Material\MaterialResource;
|
use App\Http\Resources\Material\MaterialResource;
|
||||||
use App\Services\Material\MaterialService;
|
use App\Services\Material\MaterialService;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class MaterialController extends ApiController
|
class MaterialController extends ApiController
|
||||||
{
|
{
|
||||||
@@ -18,6 +19,27 @@ class MaterialController extends ApiController
|
|||||||
$this->service = $service;
|
$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)
|
public function assign(AssignMaterialRequest $request)
|
||||||
{
|
{
|
||||||
$result = $this->service->assign($request->validated());
|
$result = $this->service->assign($request->validated());
|
||||||
|
|||||||
@@ -10,6 +10,60 @@ use DB;
|
|||||||
|
|
||||||
class MaterialService
|
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)
|
| ASSIGN MATERIAL (AUTO DETECT TYPE)
|
||||||
|
|||||||
+7
-8
@@ -60,15 +60,14 @@ Route::middleware('auth:sanctum')->group(function () {
|
|||||||
Route::post('/escalate', 'escalate');
|
Route::post('/escalate', 'escalate');
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::prefix('materials')->group(function () {
|
Route::controller(MaterialController::class)->group(function () {
|
||||||
|
Route::get('/', 'index');
|
||||||
Route::post('/assign', [MaterialController::class, 'assign']);
|
Route::post('/assign', 'assign');
|
||||||
Route::post('/transfer', [MaterialController::class, 'transfer']);
|
Route::post('/transfer', 'transfer');
|
||||||
Route::post('/return', [MaterialController::class, 'return']);
|
Route::post('/return', 'return');
|
||||||
|
|
||||||
Route::get('/user/{user_id}', [MaterialController::class, 'listByUser']);
|
|
||||||
Route::get('/history/{barcode_id}', [MaterialController::class, 'history']);
|
|
||||||
|
|
||||||
|
Route::get('/user/{user_id}', 'listByUser');
|
||||||
|
Route::get('/history/{barcode_id}', 'history');
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::prefix('audit-logs')
|
Route::prefix('audit-logs')
|
||||||
|
|||||||
Reference in New Issue
Block a user