user()->can( 'list' , MedicalCenter::class ) ) { return MessageResponse::error( trans( 'messages.access_denied' ) ); } $MedicalCenters = MedicalCenter::when( $request->has( 'name' ) && $request->name , function ( $query ) use ( $request ) { $query->where( 'name' , 'LIKE' , '%' . $request->name . '%' ); } )->withCount( 'users' )->paginate( 10 ); return MessageResponse::data( $MedicalCenters ); } public function create() { // } public function store( StoreMedicalCenterRequest $request ) { MedicalCenter::create( $request->all() ); return MessageResponse::success( trans( 'messages.success' ) ); } public function show( $id ) { // $MedicalCenter = MedicalCenter::with('users')->findOrFail($id); // return response()->json(['MedicalCenter' => $MedicalCenter]); } public function edit( MedicalCenter $MedicalCenter ) { $MedicalCenter->load( 'users' ); return MessageResponse::data( $MedicalCenter ); } public function update( StoreMedicalCenterRequest $request , MedicalCenter $MedicalCenter ) { $MedicalCenter->update( $request->all() ); return MessageResponse::success( trans( 'messages.success' ) ); } public function destroy( MedicalCenter $MedicalCenter ) { if ( ! auth( 'api' )->user()->can( 'delete' , $MedicalCenter ) ) { return MessageResponse::error( trans( 'messages.access_denied' ) ); } try { DB::beginTransaction(); foreach ( $MedicalCenter->users as $user ) { // delete test_results foreach ( $user->test_results as $test_result ) { if ( count( $test_result->input_values ) ) { InputValue::where( 'test_result_id' , $test_result->id )->get()->each->delete(); } $test_result->delete(); } // delete test_types foreach ( $user->test_types as $test_type ) { $UniqueID = substr( base_convert( sha1( uniqid( mt_rand() ) ) , 16 , 36 ) , 0 , 10 ); $test_type->unique_code = $test_type->unique_code . '--' . $UniqueID; $test_type->save(); $test_type->delete(); } // delete items foreach ( $user->items as $item ) { $item->transfersAll()->delete(); $item->delete(); } // delete labels foreach ( $user->labels as $label ) { if ( count( $label->cycles ) ) { $label->cycles()->detach(); } $label->delete(); } // delete packages foreach ( $user->packages as $package ) { if ( count( $package->items ) ) { foreach ( $package->items as $item ) { $item->update( [ "package_id" => null ] ); } } if ( count( $package->labels ) ) { $package->labels()->delete(); } $package->transfersAll()->delete(); $package->delete(); } // delete cycles foreach ( $user->cycles as $cycle ) { if ( count( $cycle->labels ) ) { $cycle->labels()->detach(); } $cycle->delete(); } foreach ( $user->galleries as $gallery ) { if (count($gallery->uploadables)) { foreach ($gallery->uploadables as $item) { $item->delete(); } } $gallery->delete(); } // delete user $user->delete(); } $MedicalCenter->delete(); DB::commit(); return MessageResponse::success( trans( 'messages.success' ) ); } catch ( \Exception $exception ) { DB::rollBack(); return MessageResponse::error( $exception->getMessage() ); } } public function listMedicalCenters() { $MedicalCenters = MedicalCenter::select( 'id' , 'name' )->get(); return MessageResponse::data( $MedicalCenters ); } public function getCities() { $Cities = City::whereNull( 'parent_id' )->get(); return MessageResponse::data( $Cities ); } }