diff --git a/.drone.yml b/.drone.yml index f5d6bc59..dcaf5d68 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,7 +8,7 @@ clone: # npm config set _auth token add command steps: - name: clone - image: docker-proxy.willaspace.com/alpine/git + image: docker.willaspace.com/repository/docker-hosted/alpine/git commands: - git clone $DRONE_GIT_HTTP_URL . - git checkout $DRONE_COMMIT diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php index 69462c3e..d1de06af 100644 --- a/app/Http/Controllers/ItemController.php +++ b/app/Http/Controllers/ItemController.php @@ -8,6 +8,7 @@ use App\Http\Requests\StoreItemRequest; use App\Http\Resources\ItemResource; use App\Item; use App\Services\Media\MediaHelper; +use App\User; use Illuminate\Http\Request; use Packages\Messaging\src\Facades\MessageResponse; @@ -110,8 +111,13 @@ class ItemController extends Controller public function getItems() { + $user = auth()->user(); + $medicalCenterId = optional(optional($user)->medical_center)->id; + $userIds = User::where('medical_center_id', $medicalCenterId)->pluck('id')->toArray(); + $Items = Item::where( "status" , StatusTypeEnum::APPROVED ) ->where( "package_id" , null ) + ->whereIn('creator_id', $userIds) ->orderByDesc( 'id' ) ->isNotRepaired() ->get(); @@ -134,6 +140,9 @@ class ItemController extends Controller } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' , 'address' , 'phone_number' ); + }, + 'userTransfer' => function ($query) { + $query->select('id','name','cell_number'); } ] ); } diff --git a/app/Http/Controllers/PackageController.php b/app/Http/Controllers/PackageController.php index f37cb0b7..9eb17d2e 100644 --- a/app/Http/Controllers/PackageController.php +++ b/app/Http/Controllers/PackageController.php @@ -98,10 +98,14 @@ class PackageController extends Controller }, 'user.medical_center' => function ($query) { $query->select('id', 'name', 'address', 'phone_number'); + }, + 'userTransfer' => function ($query) { + $query->select('id','name','cell_number'); } ]); } ]); + return PackageResource::make($Package); } diff --git a/app/Http/Controllers/TransferItemController.php b/app/Http/Controllers/TransferItemController.php index c0c6ce77..427045ae 100644 --- a/app/Http/Controllers/TransferItemController.php +++ b/app/Http/Controllers/TransferItemController.php @@ -63,6 +63,7 @@ class TransferItemController extends Controller } if ( $Item->user_id != $request->user_id ) { $Item->transfers()->create( [ + "user_transfer_id" => auth()->user()->id, "user_id" => $request->user_id , "from_date" => Carbon::now() , "status" => StatusTypeEnum::APPROVED diff --git a/app/Http/Controllers/TransferPackageController.php b/app/Http/Controllers/TransferPackageController.php index 93705ec2..5afa103a 100644 --- a/app/Http/Controllers/TransferPackageController.php +++ b/app/Http/Controllers/TransferPackageController.php @@ -70,6 +70,7 @@ class TransferPackageController extends Controller //create transfer for the Package $Package->transfers()->create( [ + "user_transfer_id" => auth()->user()->id, "user_id" => $request->user_id , "from_date" => Carbon::now() , "status" => StatusTypeEnum::APPROVED diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index c6d3b293..31549e40 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -26,26 +26,30 @@ class UserController extends Controller $medical_center_id = null; } - $Users = User::when( $request->has( 'name' ) && $request->name , function ( $query ) use ( $request ) { - $query->where( 'name' , 'LIKE' , '%' . $request->name . '%' ); - } ) - ->when( ( $request->has( 'fromPicker' ) && $request->fromPicker ) || ( $request->has( 'upToPicker' ) && $request->upToPicker ) , function ( $query ) use ( $request ) { - $from = ( $request->fromPicker ) ? date( $request->fromPicker . ' 00:00:00' ) : date( '2010-01-01' . ' 00:00:00' ); - $upTo = ( $request->upToPicker ) ? date( $request->upToPicker . ' 23:59:59' ) : date( 'Y-m-d' . ' 23:59:59' ); - return $query->whereBetween( 'created_at' , [ $from , $upTo ] ); - } ) - ->when( $request->has( 'cell_number' ) && $request->cell_number , function ( $query ) use ( $request ) { - $query->where( 'cell_number' , 'LIKE' , '%' . $request->cell_number . '%' ); - } ) - ->when( $request->has( 'role' ) && $request->role , function ( $query ) use ( $request ) { - $query->role( $request->role ); - } ) - ->when( $medical_center_id , function ( $query ) use ( $medical_center_id ) { - $query->where( 'medical_center_id' , $medical_center_id ); - } ) - ->with( [ 'medical_center' , 'roles' ] )->paginate( 10 ); + $Users = User::when($request->has('name') && $request->name, function ($query) use ($request) { + $query->where('name', 'LIKE', '%' . $request->name . '%'); + }) + ->when(($request->has('fromPicker') && $request->fromPicker) || ($request->has('upToPicker') && $request->upToPicker), function ($query) use ($request) { + $from = ($request->fromPicker) ? date($request->fromPicker . ' 00:00:00') : date('2010-01-01' . ' 00:00:00'); + $upTo = ($request->upToPicker) ? date($request->upToPicker . ' 23:59:59') : date('Y-m-d' . ' 23:59:59'); + return $query->whereBetween('created_at', [$from, $upTo]); + }) + ->when($request->has('cell_number') && $request->cell_number, function ($query) use ($request) { + $query->where('cell_number', 'LIKE', '%' . $request->cell_number . '%'); + }) + ->when($request->has('role') && $request->role, function ($query) use ($request) { + $query->role($request->role); + }) + ->when($medical_center_id, function ($query) use ($medical_center_id) { + $query->where('medical_center_id', $medical_center_id); + }) + ->whereDoesntHave('roles', function ($roleQuery) { + $roleQuery->where('name', 'Admin'); + }) + ->with(['medical_center', 'roles'])->paginate(10); + + return MessageResponse::data($Users); - return MessageResponse::data( $Users ); } public function store( StoreUserRequest $request ) @@ -162,16 +166,30 @@ class UserController extends Controller public function getByMedicalCenter( MedicalCenter $MedicalCenter ) { $user = auth( 'api' )->user(); + if ( auth( 'api' )->user()->cant( 'getByMedicalCenter' , $MedicalCenter ) ) { return MessageResponse::error( trans( 'messages.failed' ) ); } - $MedicalCenter = $MedicalCenter->load( [ 'users' => function ( $query ) use ( $user ) { - if ( $user->hasRole( 'User' ) ) { - return $query->select( [ 'id' , 'medical_center_id' , 'name' , 'cell_number' , 'status' ] )->where( 'id' , $user->id ); - } else { - return $query->select( [ 'id' , 'medical_center_id' , 'name' , 'cell_number' , 'status' ] ); - } - } , 'users.roles' ] ); + if ($user->hasRole('Admin')){ + $MedicalCenter = MedicalCenter::with(['users' => function ($query) { + $query->select('id', 'medical_center_id', 'name', 'cell_number', 'status') + ->whereDoesntHave('roles', function ($roleQuery) { + $roleQuery->where('name', 'Admin'); + }); + }, 'users.roles'])->get(); + }else{ + $MedicalCenter = $MedicalCenter->load( [ 'users' => function ( $query ) use ( $user ) { + if ( $user->hasRole( 'User' ) ) { + return $query->select( [ 'id' , 'medical_center_id' , 'name' , 'cell_number' , 'status' ] )->where( 'id' , $user->id ); + } else { + return $query->select( [ 'id' , 'medical_center_id' , 'name' , 'cell_number' , 'status' ] ) + ->whereDoesntHave('roles', function ($roleQuery) { + $roleQuery->where('name', 'Admin'); + }); + } + } , 'users.roles' ] ); + } + return MessageResponse::data( $MedicalCenter ); } diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 70fcea1a..88b099ab 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -19,7 +19,7 @@ class Kernel extends HttpKernel \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, \App\Http\Middleware\TrustProxies::class, -// \App\Http\Middleware\Cors::class, + \App\Http\Middleware\Cors::class, ]; /** diff --git a/app/Http/Middleware/Cors.php b/app/Http/Middleware/Cors.php index 56d32731..8d6e81d6 100644 --- a/app/Http/Middleware/Cors.php +++ b/app/Http/Middleware/Cors.php @@ -1,32 +1,19 @@ header('Access-Control-Allow-Origin', '*') - ->header('Access-Control-Allow-credentials', true) + public function handle($request, Closure $next) + { + return $next($request) + // ->header('Access-Control-Allow-Origin', '*') ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); - if (!$request->isMethod('OPTIONS')) { - return $response; - } - $allow = $response->headers->get('Allow'); // true list of allowed methods - if (!$allow) { - return $response; - } - $headers = [ - 'Access-Control-Allow-Methods' => $allow, - 'Access-Control-Max-Age' => 3600, - 'Access-Control-Allow-Headers' => 'X-Requested-With, Origin, X-Csrftoken, Content-Type, Accept', - ]; - return $response->withHeaders($headers); - } - } + + +} diff --git a/app/Http/Resources/TransferResource.php b/app/Http/Resources/TransferResource.php index f0047b4d..242904a2 100644 --- a/app/Http/Resources/TransferResource.php +++ b/app/Http/Resources/TransferResource.php @@ -22,6 +22,8 @@ class TransferResource extends JsonResource 'status' => $this->status, 'user_id' => $this->user_id, 'user' => UserResource::make($this->whenLoaded('user')), + 'user_transfer_id' => $this->user_transfer_id, + 'userTransfer' => UserResource::make($this->whenLoaded('userTransfer')), 'transferable' => $this->resourceFinder(), 'created_at' => $this->created_at, 'updated_at' => $this->updated_at diff --git a/app/Transfer.php b/app/Transfer.php index d069e1dc..d648c3d5 100644 --- a/app/Transfer.php +++ b/app/Transfer.php @@ -9,13 +9,18 @@ class Transfer extends Model { use SoftDeletes; - public $fillable = [ 'user_id' , 'to_date' , 'from_date' , 'status' ]; + public $fillable = [ 'user_id' , 'to_date' , 'from_date' , 'status' , 'user_transfer_id' ]; public function user() { return $this->belongsTo( 'App\User' ); } + public function userTransfer() + { + return $this->belongsTo( 'App\User', 'user_transfer_id' ); + } + public function transferable() { return $this->morphTo(); diff --git a/database/migrations/2024_05_05_105944_add_user_transfer_id_to_transfers_table.php b/database/migrations/2024_05_05_105944_add_user_transfer_id_to_transfers_table.php new file mode 100644 index 00000000..6f6cd4c2 --- /dev/null +++ b/database/migrations/2024_05_05_105944_add_user_transfer_id_to_transfers_table.php @@ -0,0 +1,32 @@ +unsignedBigInteger('user_transfer_id')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('transfers', function (Blueprint $table) { + $table->dropColumn('user_transfer_id'); + }); + } +}