mirror of
https://git.meshkee.com/cssd/cssd-back.git
synced 2026-10-11 02:41:05 +03:30
145 lines
4.8 KiB
PHP
145 lines
4.8 KiB
PHP
<?php
|
|
|
|
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 )
|
|
{
|
|
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 );
|
|
}
|
|
|
|
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 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() );
|
|
}
|
|
}
|
|
|
|
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 );
|
|
}
|
|
}
|