fix status

This commit is contained in:
mahdi purHosseini
2024-01-30 14:35:33 +03:30
parent 761aec8b69
commit 1d6d81a461
15 changed files with 147 additions and 33 deletions
+10
View File
@@ -0,0 +1,10 @@
<?php
namespace App\Constants;
class StatusTypeEnum
{
const APPROVED = "approved";
const REJECTED = "rejected";
const SUSPENDED = "suspended";
}
+8 -6
View File
@@ -2,6 +2,8 @@
namespace App\Http\Controllers;
use App\Constants\StatusTypeEnum;
use App\Http\Requests\ChangeStatusRequest;
use App\Http\Requests\StoreItemRequest;
use App\Http\Resources\ItemResource;
use App\Item;
@@ -45,7 +47,7 @@ class ItemController extends Controller
if ( $user->hasRole( 'User' ) ) {
$Items = $Items->whereHas( 'user' , function ( $query ) use ( $user ) {
$query->where( 'medical_center_id' , $user->medical_center_id );
} )->where( "status" , 1 );
} )->where( "status" , StatusTypeEnum::APPROVED );
} elseif ( $user->hasRole( 'Supervisor' ) ) {
$Items = $Items->whereHas( 'user' , function ( $query ) use ( $user ) {
$query->where( 'medical_center_id' , $user->medical_center_id );
@@ -108,7 +110,7 @@ class ItemController extends Controller
public function getItems()
{
$Items = Item::where( "status" , 1 )
$Items = Item::where( "status" , StatusTypeEnum::APPROVED )
->where( "package_id" , null )
->orderByDesc( 'id' )
->get();
@@ -148,6 +150,7 @@ class ItemController extends Controller
'specific' => $request->specific ,
'note' => $request->note ,
'udi' => $request->udi ,
'status' => StatusTypeEnum::SUSPENDED ,
'user_id' => auth( 'api' )->user()->id ,
'creator_id' => auth( 'api' )->user()->id
] );
@@ -183,14 +186,13 @@ class ItemController extends Controller
return MessageResponse::success( trans( 'messages.success' ) );
}
public function changeStatus( Item $Item )
public function changeStatus( ChangeStatusRequest $request , Item $Item )
{
if ( auth( 'api' )->user()->cant( 'changeStatus' , Item::class ) ) {
return MessageResponse::error( trans( 'messages.access_denied' ) );
}
$Item->status = ! $Item->status;
$Item->save();
return ItemResource::make( $Item );
$Item->update( [ "status" => $request->status ] );
return MessageResponse::success( trans( 'messages.success' ) );
}
public function changeRepair( Item $Item )
+20 -3
View File
@@ -2,6 +2,8 @@
namespace App\Http\Controllers;
use App\Constants\StatusTypeEnum;
use App\Http\Requests\ChangeStatusRequest;
use App\Http\Requests\StorePackageRequest;
use App\Http\Resources\PackageResource;
use App\Item;
@@ -32,7 +34,11 @@ class PackageController extends Controller
] );
$user = auth( 'api' )->user();
if ( $user->hasRole( 'User' ) or $user->hasRole( 'Supervisor' ) ) {
if ( $user->hasRole( 'User' ) ) {
$Packages = $Packages->whereHas( 'user' , function ( $query ) use ( $user ) {
$query->where( 'medical_center_id' , $user->medical_center_id );
} )->where( "status" , StatusTypeEnum::APPROVED );
} elseif ( $user->hasRole( 'Supervisor' ) ) {
$Packages = $Packages->whereHas( 'user' , function ( $query ) use ( $user ) {
$query->where( 'medical_center_id' , $user->medical_center_id );
} );
@@ -89,7 +95,9 @@ class PackageController extends Controller
public function getPackages()
{
$Packages = Package::orderByDesc( 'id' )->get();
$Packages = Package::where( "status" , StatusTypeEnum::APPROVED )
->orderByDesc( 'id' )
->get();
return PackageResource::collection( $Packages );
}
@@ -120,7 +128,7 @@ class PackageController extends Controller
$PackageData = [
'name' => $request->name ,
'note' => $request->note ,
'verified' => 'NotVerified' ,
'status' => StatusTypeEnum::SUSPENDED ,
'user_id' => auth( 'api' )->user()->id ,
'creator_id' => auth( 'api' )->user()->id
];
@@ -179,4 +187,13 @@ class PackageController extends Controller
$Package->delete();
return MessageResponse::success( trans( 'messages.success' ) );
}
public function changeStatus( ChangeStatusRequest $request , Package $Package )
{
if ( auth( 'api' )->user()->cant( 'changeStatus' , Package::class ) ) {
return MessageResponse::error( trans( 'messages.access_denied' ) );
}
$Package->update( [ "status" => $request->status ] );
return MessageResponse::success( trans( 'messages.success' ) );
}
}
@@ -2,7 +2,8 @@
namespace App\Http\Controllers;
use App\Http\Requests\StoreTransferChangeStatusRequest;
use App\Constants\StatusTypeEnum;
use App\Http\Requests\ChangeStatusRequest;
use App\Http\Requests\StoreTransferRequest;
use App\Http\Resources\TransferResource;
use App\Item;
@@ -15,7 +16,7 @@ class TransferItemController extends Controller
public function getSuspendedTransfer()
{
$data = Transfer::where( "transferable_type" , "App\\Item" )
->where( "status" , "suspended" )
->where( "status" , StatusTypeEnum::SUSPENDED )
->with( [ "user" , "transferable" , "transferable.user" ] );
$user = auth( 'api' )->user();
@@ -32,13 +33,13 @@ class TransferItemController extends Controller
return TransferResource::collection($data);
}
public function changeStatus( StoreTransferChangeStatusRequest $request , Transfer $Transfer )
public function changeStatus( ChangeStatusRequest $request , Transfer $Transfer )
{
if ( auth( 'api' )->user()->cant( 'changeStatus' , [ Transfer::class , $Transfer ] ) ) {
return MessageResponse::error( trans( 'messages.access_denied' ) );
}
if ( $Transfer->status == "suspended" ) {
if ( $request->status == "approved" ) {
if ( $Transfer->status == StatusTypeEnum::SUSPENDED ) {
if ( $request->status == StatusTypeEnum::APPROVED ) {
$item = $Transfer->transferable;
if ( $item->transferActive ) $item->transferActive()->update( [ "to_date" => Carbon::now() ] );
$Transfer->update( [ "status" => $request->status ] );
@@ -61,7 +62,7 @@ class TransferItemController extends Controller
$Item->transfers()->create( [
"user_id" => $request->user_id ,
"from_date" => Carbon::now() ,
"status" => "suspended"
"status" => StatusTypeEnum::SUSPENDED
] );
} else {
return MessageResponse::error( trans( 'messages.user_denied_transfer' ) );
@@ -2,7 +2,8 @@
namespace App\Http\Controllers;
use App\Http\Requests\StoreTransferChangeStatusRequest;
use App\Constants\StatusTypeEnum;
use App\Http\Requests\ChangeStatusRequest;
use App\Http\Requests\StoreTransferRequest;
use App\Http\Resources\TransferResource;
use App\Package;
@@ -15,7 +16,7 @@ class TransferPackageController extends Controller
public function getSuspendedTransfer()
{
$data = Transfer::where( "transferable_type" , "App\\Package" )
->where( "status" , "suspended" )
->where( "status" , StatusTypeEnum::SUSPENDED )
->with( [ "user" , "transferable" , "transferable.user" ] );
$user = auth( 'api' )->user();
@@ -32,13 +33,13 @@ class TransferPackageController extends Controller
return TransferResource::collection($data);
}
public function changeStatus( StoreTransferChangeStatusRequest $request , Transfer $Transfer )
public function changeStatus( ChangeStatusRequest $request , Transfer $Transfer )
{
if ( auth( 'api' )->user()->cant( 'changeStatus' , [ Transfer::class , $Transfer ] ) ) {
return MessageResponse::error( trans( 'messages.access_denied' ) );
}
if ( $Transfer->status == "suspended" ) {
if ( $request->status == "approved" ) {
if ( $Transfer->status == StatusTypeEnum::SUSPENDED ) {
if ( $request->status == StatusTypeEnum::APPROVED ) {
$package = $Transfer->transferable;
if ( $package->transferActive ) $package->transferActive()->update( [ "to_date" => Carbon::now() ] );
$Transfer->update( [ "status" => $request->status ] );
@@ -64,7 +65,7 @@ class TransferPackageController extends Controller
$Package->transfers()->create( [
"user_id" => $request->user_id ,
"from_date" => Carbon::now() ,
"status" => "suspended"
"status" => StatusTypeEnum::SUSPENDED
] );
} else {
return MessageResponse::error( trans( 'messages.user_denied_transfer' ) );
@@ -2,10 +2,10 @@
namespace App\Http\Requests;
use App\Item;
use App\Constants\StatusTypeEnum;
use Illuminate\Foundation\Http\FormRequest;
class StoreTransferChangeStatusRequest extends FormRequest
class ChangeStatusRequest extends FormRequest
{
public function authorize()
{
@@ -15,7 +15,7 @@ class StoreTransferChangeStatusRequest extends FormRequest
public function rules()
{
return [
'status' => 'required|in:approved,rejected'
'status' => 'required|in:'. StatusTypeEnum::APPROVED .','. StatusTypeEnum::REJECTED
];
}
+1 -1
View File
@@ -20,7 +20,7 @@ class PackageResource extends JsonResource
'id' => $this->id,
'name' => $this->name,
'note' => $this->note,
'verified' => $this->verified,
'status' => $this->status,
'creator_id' => $this->creator_id,
'creator' => UserResource::make($this->whenLoaded('creator')),
'user_id' => $this->user_id,
+3 -2
View File
@@ -2,6 +2,7 @@
namespace App;
use App\Constants\StatusTypeEnum;
use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\HasMedia\HasMedia;
use App\Services\Media\HasMediaTrait;
@@ -30,12 +31,12 @@ class Item extends Model implements HasMedia
public function transfers()
{
return $this->morphMany( 'App\Transfer' , "transferable" )->where( "status" , "approved" );
return $this->morphMany( 'App\Transfer' , "transferable" )->where( "status" , StatusTypeEnum::APPROVED );
}
public function transferActive()
{
return $this->morphMany( 'App\Transfer' , "transferable" )->where( "status" , "approved" )->whereNull( "to_date" );
return $this->morphMany( 'App\Transfer' , "transferable" )->where( "status" , StatusTypeEnum::APPROVED )->whereNull( "to_date" );
}
public function registerMediaCollections(): void
+4 -3
View File
@@ -2,11 +2,12 @@
namespace App;
use App\Constants\StatusTypeEnum;
use Illuminate\Database\Eloquent\Model;
class Package extends Model
{
public $fillable = [ 'name' , 'user_id' , 'note' , 'verified' , 'creator_id' ];
public $fillable = [ 'name' , 'user_id' , 'note' , 'status' , 'creator_id' ];
public function user()
{
@@ -30,11 +31,11 @@ class Package extends Model
public function transfers()
{
return $this->morphMany( 'App\Transfer' , "transferable" )->where( "status" , "approved" );
return $this->morphMany( 'App\Transfer' , "transferable" )->where( "status" , StatusTypeEnum::APPROVED );
}
public function transferActive()
{
return $this->morphMany( 'App\Transfer' , "transferable" )->where( "status" , "approved" )->whereNull( "to_date" );
return $this->morphMany( 'App\Transfer' , "transferable" )->where( "status" , StatusTypeEnum::APPROVED )->whereNull( "to_date" );
}
}
+2 -2
View File
@@ -29,9 +29,9 @@ class PackagePolicy
return true;
}
public function verifyPackage(User $User, Package $Package)
public function changeStatus( User $User )
{
if($User->hasRole('Admin') || ($User->hasRole('Supervisor') && $Package->user->medical_center_id == $User->medical_center_id))
if ( $User->hasRole( 'Admin|Supervisor' ) )
return true;
}
+1
View File
@@ -4,6 +4,7 @@ namespace App\Policies;
use App\User;
use App\TestResult;
use Illuminate\Support\Facades\DB;
class TestResultPolicy
{
@@ -1,5 +1,6 @@
<?php
use App\Constants\StatusTypeEnum;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
@@ -21,7 +22,7 @@ class CreateTransfersTable extends Migration
$table->foreign('user_id')->references('id')->on('users');
$table->dateTime('from_date')->nullable();
$table->dateTime('to_date')->nullable();
$table->enum('status', ['approved','rejected','suspended'])->default('suspended');
$table->enum( 'status' , [ StatusTypeEnum::APPROVED , StatusTypeEnum::REJECTED , StatusTypeEnum::SUSPENDED ] )->default( StatusTypeEnum::SUSPENDED );
$table->timestamps();
$table->softDeletes();
});
@@ -0,0 +1,39 @@
<?php
use App\Constants\StatusTypeEnum;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddStatusToItemsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table( 'items' , function ( Blueprint $table ) {
$table->dropColumn( 'status' );
} );
Schema::table( 'items' , function ( Blueprint $table ) {
$table->enum( 'status' , [ StatusTypeEnum::APPROVED , StatusTypeEnum::REJECTED , StatusTypeEnum::SUSPENDED ] )->default( StatusTypeEnum::SUSPENDED );
} );
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table( 'items' , function ( Blueprint $table ) {
$table->dropColumn( 'status' );
} );
Schema::table( 'items' , function ( Blueprint $table ) {
$table->tinyInteger( 'status' )->default( 0 );
} );
}
}
@@ -0,0 +1,39 @@
<?php
use App\Constants\StatusTypeEnum;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddStatusToPackagesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table( 'packages' , function ( Blueprint $table ) {
$table->dropColumn( 'verified' );
} );
Schema::table( 'packages' , function ( Blueprint $table ) {
$table->enum( 'status' , [ StatusTypeEnum::APPROVED , StatusTypeEnum::REJECTED , StatusTypeEnum::SUSPENDED ] )->default( StatusTypeEnum::SUSPENDED );
} );
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table( 'packages' , function ( Blueprint $table ) {
$table->dropColumn( 'status' );
} );
Schema::table( 'packages' , function ( Blueprint $table ) {
$table->enum('verified', ['Verified', 'NotVerified']);
} );
}
}
+1
View File
@@ -75,6 +75,7 @@ Route::middleware('auth:api')->group(function () {
Route::resource('Packages', 'PackageController');
Route::get('/MyPackages', 'PackageController@myPackages');
Route::get('/GetPackages', 'PackageController@getPackages');
Route::post('Packages/ChangeStatus/{Package}', 'PackageController@changeStatus');
//transfer package
Route::get('suspended-transfer-packages', 'TransferPackageController@getSuspendedTransfer');