Files
cssd-back/app/Http/Controllers/LabelController.php
T
2024-02-13 10:41:41 +03:30

157 lines
5.8 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Requests\StoreLabelRequest;
use App\Label;
use Illuminate\Http\Request;
use Packages\Messaging\src\Facades\MessageResponse;
class LabelController extends Controller
{
public function index( Request $request )
{
$user = auth( 'api' )->user();
$Labels = Label::when( $user->cant( 'showAll' , Label::class ) , function ( $query ) use ( $user ) {
if ( $user->hasRole( 'Supervisor' ) ) {
$query->whereHas( 'user' , function ( $query ) use ( $user ) {
$query->where( 'medical_center_id' , $user->medical_center_id );
} );
} else {
$query->where( 'user_id' , $user->id );
}
} )
->when( $request->has( 'sterilizer_id' ) && $request->sterilizer_id != '' , function ( $query ) use ( $request ) {
$query->where( 'sterilizer_id' , $request->sterilizer_id );
} )
->when( $request->has( 'cycle_number' ) && $request->cycle_number != '' , function ( $query ) use ( $request ) {
$query->where( 'cycle_number' , $request->cycle_number );
} )
->when( $request->has( 'lot_number' ) && $request->lot_number != '' , function ( $query ) use ( $request ) {
$query->where( 'lot_number' , $request->lot_number );
} )
->when( $request->has( 'label_id' ) && $request->label_id != '' , function ( $query ) use ( $request ) {
$query->where( 'id' , $request->label_id );
} )
->when( $request->has( 'medical_center_id' ) && $request->medical_center_id != '' && $request->medical_center_id != 'undefined' , function ( $query ) use ( $request ) {
$query->whereHas( 'user' , function ( $query ) use ( $request ) {
$query->where( 'medical_center_id' , $request->medical_center_id );
} );
} )
->with( [ 'user' => function ( $query ) {
$query->select( 'id' , 'name' , 'medical_center_id' );
} ,
'package' => function ( $query ) {
$query->select( 'id' , 'name' );
} ,
'user.medical_center' => function ( $query ) {
$query->select( 'id' , 'name' );
} ,
] )->orderByDesc( 'id' )->paginate( 10 );
return MessageResponse::data( $Labels );
}
public function create()
{}
public function show( Label $Label )
{
$Label->load( [ 'user' => function ( $query ) {
$query->select( 'id' , 'name' , 'medical_center_id' );
} ,
'user.medical_center' => function ( $query ) {
$query->select( 'id' , 'name' );
} ,
'package' , 'package.items' ] );
return MessageResponse::data( $Label );
}
public function store( StoreLabelRequest $request )
{
$LabelData = [
'sterile_date' => $request->sterile_date ,
'expire_date' => $request->expire_date ,
'sterilizer_id' => $request->sterilizer_id ,
'cycle_number' => $request->cycle_number ,
'lot_number' => $request->lot_number ,
'user_id' => auth( 'api' )->user()->id ,
'package_id' => $request->package_id
];
$Label = Label::create( $LabelData );
$Label->load( [
'user' => function ( $query ) {
$query->select( 'id' , 'name' , 'medical_center_id' );
} ,
'user.medical_center' => function ( $query ) {
$query->select( 'id' , 'name' );
} ,
'package' ,
'package.items'
] );
return MessageResponse::success( trans( 'messages.success' ) , null , $Label );
}
public function edit( Label $Label )
{
$Label->load( 'package' );
return MessageResponse::data( $Label );
}
public function update( StoreLabelRequest $request , Label $Label )
{
$Label->update( $request->all() );
$Label->load( [
'user' => function ( $query ) {
$query->select( 'id' , 'name' , 'medical_center_id' );
} ,
'user.medical_center' => function ( $query ) {
$query->select( 'id' , 'name' );
} ,
'package' ,
'package.items'
] );
return MessageResponse::success( trans( 'messages.success' ) , null , $Label );
}
public function destroy( Label $Label )
{
if ( auth( 'api' )->user()->cant( 'delete' , $Label ) ) {
return MessageResponse::error( trans( 'messages.access_denied' ) );
}
if ( count( $Label->cycles ) ) {
$Label->cycles()->detach();
}
$Label->delete();
return MessageResponse::success( trans( 'messages.success' ) );
}
public function getLabels()
{
$user = auth( 'api' )->user();
$Labels = Label::when( $user->cant( 'showAll' , Label::class ) , function ( $query ) use ( $user ) {
if ( $user->hasRole( 'Supervisor|User' ) ) {
$query->whereHas( 'user' , function ( $query ) use ( $user ) {
$query->where( 'medical_center_id' , $user->medical_center_id );
} );
}
} )->get();
return MessageResponse::data( $Labels );
}
public function showLabel( Label $Label )
{
$Label->load( [ 'user' => function ( $query ) {
$query->select( 'id' , 'name' , 'medical_center_id' );
} ,
'user.medical_center' => function ( $query ) {
$query->select( 'id' , 'name' );
} ,
'package' , 'package.items' ] );
return MessageResponse::data( $Label );
}
}