fix deleting

This commit is contained in:
mahdi purHosseini
2024-03-07 13:16:52 +03:30
parent aed6b73c71
commit 3e3735098c
4 changed files with 173 additions and 35 deletions
+101 -28
View File
@@ -2,23 +2,26 @@
namespace App\Http\Controllers;
use App\InputValue;
use Illuminate\Http\Request;
use App\MedicalCenter;
use App\User;
use App\City;
use App\Http\Requests\StoreMedicalCenterRequest;
use Illuminate\Support\Facades\DB;
use Packages\Messaging\src\Facades\MessageResponse;
class MedicalCenterController extends Controller
{
public function index(Request $request)
public function index( Request $request )
{
if (!auth('api')->user()->can('list', MedicalCenter::class)) {
return \MessageResponse::error(trans('messages.access_denied'));
if ( ! auth( 'api' )->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);
$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()
@@ -26,46 +29,116 @@ class MedicalCenterController extends Controller
//
}
public function store(StoreMedicalCenterRequest $request)
public function store( StoreMedicalCenterRequest $request )
{
MedicalCenter::create($request->all());
return \MessageResponse::success(trans('messages.success'));
MedicalCenter::create( $request->all() );
return MessageResponse::success( trans( 'messages.success' ) );
}
public function show($id)
public function show( $id )
{
// $MedicalCenter = MedicalCenter::with('users')->findOrFail($id);
// return response()->json(['MedicalCenter' => $MedicalCenter]);
}
public function edit(MedicalCenter $MedicalCenter)
public function edit( MedicalCenter $MedicalCenter )
{
$MedicalCenter->load('users');
return \MessageResponse::data($MedicalCenter);
$MedicalCenter->load( 'users' );
return MessageResponse::data( $MedicalCenter );
}
public function update(StoreMedicalCenterRequest $request, MedicalCenter $MedicalCenter)
public function update( StoreMedicalCenterRequest $request , MedicalCenter $MedicalCenter )
{
$MedicalCenter->update($request->all());
return \MessageResponse::success(trans('messages.success'));
$MedicalCenter->update( $request->all() );
return MessageResponse::success( trans( 'messages.success' ) );
}
public function destroy(MedicalCenter $MedicalCenter)
public function destroy( MedicalCenter $MedicalCenter )
{
if (!auth('api')->user()->can('delete', $MedicalCenter)) {
return \MessageResponse::error(trans('messages.access_denied'));
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 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 labels
foreach ( $user->labels as $label ) {
if ( count( $label->cycles ) ) {
$label->cycles()->detach();
}
$label->delete();
}
// delete cycles
foreach ( $user->cycles as $cycle ) {
if ( count( $cycle->labels ) ) {
$cycle->labels()->detach();
}
$cycle->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() );
}
$MedicalCenter->delete();
return \MessageResponse::success(trans('messages.success'));
}
public function listMedicalCenters(){
$MedicalCenters = MedicalCenter::select('id','name')->get();
return \MessageResponse::data($MedicalCenters);
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);
public function getCities()
{
$Cities = City::whereNull( 'parent_id' )->get();
return MessageResponse::data( $Cities );
}
}