mirror of
https://git.meshkee.com/cssd/cssd-back.git
synced 2026-10-10 19:41:07 +03:30
fix deleting
This commit is contained in:
@@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Requests\UpdateInfoUserRequest;
|
||||
use App\InputValue;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Requests\StoreUserRequest;
|
||||
use App\MedicalCenter;
|
||||
@@ -17,7 +18,7 @@ class UserController extends Controller
|
||||
{
|
||||
$user = auth( 'api' )->user();
|
||||
|
||||
if ( $user->hasRole( 'User' ) or $user->hasRole( 'Supervisor' ) ) {
|
||||
if ( $user->hasRole( 'User' ) or $user->hasRole( 'Supervisor' ) ) {
|
||||
$medical_center_id = $user->medical_center_id;
|
||||
} elseif ( $request->has( 'medical_center_id' ) && $request->medical_center_id ) {
|
||||
$medical_center_id = $request->medical_center_id;
|
||||
@@ -90,8 +91,72 @@ class UserController extends Controller
|
||||
if ( auth( 'api' )->user()->cant( 'delete' , $User ) ) {
|
||||
return MessageResponse::error( trans( 'messages.access_denied' ) );
|
||||
}
|
||||
$User->delete();
|
||||
return MessageResponse::success( trans( 'messages.success' ) );
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
|
||||
// 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();
|
||||
|
||||
DB::commit();
|
||||
return MessageResponse::success(trans('messages.success'));
|
||||
}catch (\Exception $exception){
|
||||
DB::rollBack();
|
||||
return MessageResponse::error($exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function getByMedicalCenter( MedicalCenter $MedicalCenter )
|
||||
|
||||
@@ -12,9 +12,10 @@ class MedicalCenterPolicy
|
||||
if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
public function delete(User $User, MedicalCenter $MedicalCenter)
|
||||
{
|
||||
if($User->hasRole('Admin') && $MedicalCenter->users->count() == 0)
|
||||
if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -29,6 +30,7 @@ class MedicalCenterPolicy
|
||||
if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getByMedicalCenter(User $User, MedicalCenter $MedicalCenter)
|
||||
{
|
||||
if($User->hasRole('Admin') || $MedicalCenter->id == $User->medical_center_id) {
|
||||
|
||||
@@ -14,9 +14,7 @@ class UserPolicy
|
||||
|
||||
public function delete(User $User, User $Operator)
|
||||
{
|
||||
if($User->hasRole('Admin') && $Operator->test_results->count() == 0 && $Operator->test_types->count() == 0
|
||||
&& $Operator->items->count() == 0 && $Operator->packages->count() == 0 && $Operator->labels->count() == 0
|
||||
&& $Operator->cycles->count() == 0)
|
||||
if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user