mirror of
https://git.meshkee.com/cssd/cssd-back.git
synced 2026-10-10 19:51:07 +03:30
confilit
This commit is contained in:
+1
-3
@@ -1,7 +1,5 @@
|
||||
/public
|
||||
/node_modules
|
||||
/public/hot
|
||||
/public/storage
|
||||
/public/img
|
||||
/storage
|
||||
/tests
|
||||
/vendor
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Cycle extends Model
|
||||
{
|
||||
public $fillable = ['name', 'date', 'user_id', 'cycle_number', 'sterilizer_id', 'note', 'verified'];
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo('App\User');
|
||||
}
|
||||
public function packs()
|
||||
{
|
||||
return $this->belongsToMany('App\Pack', 'cycle_pack');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Gallery extends Model
|
||||
{
|
||||
|
||||
protected $fillable = ['user_id', 'path'];
|
||||
public $timestamps = false;
|
||||
|
||||
|
||||
// public function business_item()
|
||||
// {
|
||||
// return $this->morphedByMany('App\BusinessItem', 'uploadable');
|
||||
// }
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Packages\Auth\SendsPasswordResetEmails;
|
||||
|
||||
class ForgotPasswordController extends Controller
|
||||
{
|
||||
use SendsPasswordResetEmails;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
|
||||
protected function sendResetLinkResponse($response)
|
||||
{
|
||||
return response()->json(['status' => 200, 'message' => trans($response)]);
|
||||
}
|
||||
|
||||
protected function sendResetLinkFailedResponse(Request $request, $response)
|
||||
{
|
||||
return response()->json(['status' => 401, 'email' => trans($response)]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class LoginController extends Controller
|
||||
{
|
||||
|
||||
public function login(Request $request)
|
||||
{
|
||||
$this->validate($request, $this->rules(), $this->validationErrorMessages());
|
||||
|
||||
$request = Request::create('/oauth/token', 'POST', [
|
||||
'grant_type' => 'password',
|
||||
'client_id' => config('services.vue_client.id'),
|
||||
'client_secret' => config('services.vue_client.secret'),
|
||||
'username' => $request->cell_number,
|
||||
'password' => $request->password,
|
||||
]);
|
||||
|
||||
return app()->handle($request);
|
||||
}
|
||||
|
||||
public function logout()
|
||||
{
|
||||
$accessToken = auth()->user()->token();
|
||||
|
||||
DB::table('oauth_access_tokens')->where('id', $accessToken->id)->delete();
|
||||
DB::table('oauth_refresh_tokens')->where('access_token_id', $accessToken->id)->delete();
|
||||
|
||||
return response()->json(['status' => 200]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the login validation rules.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function rules()
|
||||
{
|
||||
return [
|
||||
'cell_number' => 'required',
|
||||
'password' => 'required|min:6',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the login validation error messages.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function validationErrorMessages()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
use App\User;
|
||||
|
||||
class RegisterController extends Controller
|
||||
{
|
||||
/**
|
||||
* Register the given user.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function register(Request $request)
|
||||
{
|
||||
if (auth('api')->user()->cant('store', User::class)) {
|
||||
return \MessageResponse::error(trans('messages.failed'));
|
||||
}
|
||||
$this->validate($request, $this->rules(), $this->validationErrorMessages());
|
||||
|
||||
$user = new User();
|
||||
$user->name = $request->name;
|
||||
$user->country_code = $request->country_code;
|
||||
$user->cell_number = $request->cell_number;
|
||||
$user->gender = $request->gender;
|
||||
$user->medical_center_id = $request->medical_center_id;
|
||||
$user->password = bcrypt( $request->password );
|
||||
$user->save();
|
||||
$user->assignRole('User');
|
||||
return response()->json($user, 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the user registration validation rules.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function rules()
|
||||
{
|
||||
return [
|
||||
'name' => 'required|string|max:80',
|
||||
'cell_number' => 'required|unique:users',
|
||||
'password' => 'required|min:6',
|
||||
'medical_center_id' => 'required|exists:medical_centers,id',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the user registration validation error messages.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function validationErrorMessages()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ResetPasswordController extends Controller
|
||||
{
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the given user's password.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function reset(Request $request)
|
||||
{
|
||||
$this->validatePassword($request);
|
||||
|
||||
if (auth('api')->check()) {
|
||||
$user = auth('api')->user();
|
||||
$user->password = \Hash::make($request->password);
|
||||
$user->save();
|
||||
return \MessageResponse::success('Success Change Password');
|
||||
}
|
||||
return \MessageResponse::success('You Are Not Login');
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate the email for the given request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return void
|
||||
*/
|
||||
protected function validatePassword(Request $request)
|
||||
{
|
||||
$request->validate(['password' => 'required|confirmed|min:8',]);
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
|
||||
|
||||
class ForgotPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password reset emails and
|
||||
| includes a trait which assists in sending these notifications from
|
||||
| your application to your users. Feel free to explore this trait.
|
||||
|
|
||||
*/
|
||||
|
||||
use SendsPasswordResetEmails;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
||||
|
||||
class LoginController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Login Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller handles authenticating users for the application and
|
||||
| redirecting them to your home screen. The controller uses a trait
|
||||
| to conveniently provide its functionality to your applications.
|
||||
|
|
||||
*/
|
||||
|
||||
use AuthenticatesUsers;
|
||||
|
||||
/**
|
||||
* Where to redirect users after login.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest')->except('logout');
|
||||
}
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\User;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Foundation\Auth\RegistersUsers;
|
||||
|
||||
class RegisterController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Register Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller handles the registration of new users as well as their
|
||||
| validation and creation. By default this controller uses a trait to
|
||||
| provide this functionality without requiring any additional code.
|
||||
|
|
||||
*/
|
||||
|
||||
use RegistersUsers;
|
||||
|
||||
/**
|
||||
* Where to redirect users after registration.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a validator for an incoming registration request.
|
||||
*
|
||||
* @param array $data
|
||||
* @return \Illuminate\Contracts\Validation\Validator
|
||||
*/
|
||||
protected function validator(array $data)
|
||||
{
|
||||
return Validator::make($data, [
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
|
||||
'password' => ['required', 'string', 'min:8', 'confirmed'],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new user instance after a valid registration.
|
||||
*
|
||||
* @param array $data
|
||||
* @return \App\User
|
||||
*/
|
||||
protected function create(array $data)
|
||||
{
|
||||
return User::create([
|
||||
'name' => $data['name'],
|
||||
'email' => $data['email'],
|
||||
'password' => Hash::make($data['password']),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||
|
||||
class ResetPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password reset requests
|
||||
| and uses a simple trait to include this behavior. You're free to
|
||||
| explore this trait and override any methods you wish to tweak.
|
||||
|
|
||||
*/
|
||||
|
||||
use ResetsPasswords;
|
||||
|
||||
/**
|
||||
* Where to redirect users after resetting their password.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\VerifiesEmails;
|
||||
|
||||
class VerificationController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Email Verification Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling email verification for any
|
||||
| user that recently registered with the application. Emails may also
|
||||
| be re-sent if the user didn't receive the original email message.
|
||||
|
|
||||
*/
|
||||
|
||||
use VerifiesEmails;
|
||||
|
||||
/**
|
||||
* Where to redirect users after verification.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
$this->middleware('signed')->only('verify');
|
||||
$this->middleware('throttle:6,1')->only('verify', 'resend');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use \Milon\Barcode\DNS1D;
|
||||
use \Milon\Barcode\DNS2D;
|
||||
use App\TestResult;
|
||||
|
||||
class BarCodeController extends Controller
|
||||
{
|
||||
public function generateBarcode($Number)
|
||||
{
|
||||
if($Number != "undefined")
|
||||
{
|
||||
// $Barcode = DNS1D::getBarcodePNGUri($Number, "C128");
|
||||
$Barcode = DNS1D::getBarcodePNG($Number, "C128");
|
||||
$QRCode = DNS2D::getBarcodePNG($Number, "QRCODE");
|
||||
return \MessageResponse::data(['Barcode' => 'data:image/png;base64,' .$Barcode, 'QRCode' => 'data:image/png;base64,' .$QRCode]);
|
||||
}
|
||||
|
||||
}
|
||||
public function generateQRcode(TestResult $TestResult)
|
||||
{
|
||||
if($TestResult)
|
||||
{
|
||||
$URL = 'https://www.cssd-doc.com/ShowTestResult/'.$TestResult->id;
|
||||
$QRCode = DNS2D::getBarcodePNG($URL, "QRCODE");
|
||||
return \MessageResponse::data(['QRCode' => 'data:image/png;base64,' .$QRCode]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Requests\StoreCycleRequest;
|
||||
use App\Cycle;
|
||||
|
||||
class CycleController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$Cycles = Cycle::when($request->has('name') && $request->name != '', function($query) use($request){
|
||||
$query->where('name', 'LIKE', '%'.$request->name.'%');
|
||||
})
|
||||
->when($request->has('sterilizer_id') && $request->sterilizer_id != '', function($query) use($request){
|
||||
$query->where('sterilizer_id', $request->sterilizer_id);
|
||||
})
|
||||
->when($request->has('date') && $request->date != '', function($query) use($request){
|
||||
$query->where('date', $request->date);
|
||||
})
|
||||
->when($request->has('cycle_number') && $request->cycle_number != '', function($query) use($request){
|
||||
$query->where('cycle_number', $request->cycle_number);
|
||||
})
|
||||
->with('user')->paginate(10);
|
||||
return \MessageResponse::data($Cycles);
|
||||
}
|
||||
public function create()
|
||||
{
|
||||
|
||||
}
|
||||
public function show(Cycle $Cycle)
|
||||
{
|
||||
$Cycle->load('user', 'packs');
|
||||
return \MessageResponse::data($Cycle);
|
||||
}
|
||||
public function store(StoreCycleRequest $request)
|
||||
{
|
||||
$CycleData = [
|
||||
'name' => $request->name,
|
||||
'date' => $request->date,
|
||||
'sterilizer_id' => $request->sterilizer_id,
|
||||
'cycle_number' => $request->cycle_number,
|
||||
'note' => $request->note,
|
||||
'user_id' => auth('api')->user()->id,
|
||||
'verified' => 'NotVerified',
|
||||
];
|
||||
$CycleObj = Cycle::create($CycleData);
|
||||
$CycleObj->packs()->attach($request->packs);
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
public function edit(Cycle $Cycle)
|
||||
{
|
||||
$Cycle->load('user', 'packs');
|
||||
return \MessageResponse::data($Cycle);
|
||||
}
|
||||
|
||||
public function update(StoreCycleRequest $request, Cycle $Cycle)
|
||||
{
|
||||
$Cycle->update($request->except(['packs']));
|
||||
$Cycle->packs()->sync($request->packs);
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
public function destroy(Cycle $Cycle)
|
||||
{
|
||||
if (auth('api')->user()->cant('delete', $Cycle)) {
|
||||
return \MessageResponse::error(trans('messages.access_denied'));
|
||||
}
|
||||
if(count($Cycle->packs))
|
||||
{
|
||||
$Cycle->packs()->detach();
|
||||
}
|
||||
$Cycle->delete();
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
public function verifyCycle(Cycle $Cycle)
|
||||
{
|
||||
if (auth('api')->user()->cant('verifyCycle', $Cycle)) {
|
||||
return \MessageResponse::error(trans('You dont have permission'));
|
||||
}
|
||||
if ($Cycle->verified == 'Verified') {
|
||||
$Cycle->verified = 'NotVerified';
|
||||
} else {
|
||||
$Cycle->verified = 'Verified';
|
||||
}
|
||||
$Cycle->save();
|
||||
$Cycle = $Cycle->load('user');
|
||||
return \MessageResponse::success(trans('messages.success'), null, $Cycle);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class HomeController extends Controller
|
||||
{
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the application dashboard.
|
||||
*
|
||||
* @return \Illuminate\Contracts\Support\Renderable
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
return view('home');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Requests\StoreItemRequest;
|
||||
use App\Item;
|
||||
|
||||
class ItemController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$Items = Item::with('user')
|
||||
->when($request->has('name') && $request->name != '', function($query) use($request){
|
||||
$query->where('name', 'LIKE', '%'.$request->name.'%');
|
||||
})
|
||||
->when($request->has('size') && $request->size != '', function($query) use($request){
|
||||
$query->where('size', $request->size);
|
||||
})
|
||||
->when($request->has('unique_id') && $request->unique_id != '', function($query) use($request){
|
||||
$query->where('unique_id', $request->unique_id);
|
||||
})
|
||||
->when($request->has('specific') && $request->specific != '', function($query) use($request){
|
||||
$query->where('specific', $request->specific);
|
||||
})
|
||||
->paginate(10);
|
||||
return \MessageResponse::data($Items);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
|
||||
}
|
||||
public function show(Item $Item)
|
||||
{
|
||||
$Item->load('user');
|
||||
return \MessageResponse::data($Item);
|
||||
}
|
||||
public function store(StoreItemRequest $request)
|
||||
{
|
||||
$ItemData = [
|
||||
'name' => $request->name,
|
||||
'size' => $request->size,
|
||||
'unique_id' => $request->unique_id,
|
||||
'specific' => $request->specific,
|
||||
'note' => $request->note,
|
||||
'user_id' => auth('api')->user()->id,
|
||||
];
|
||||
$ItemObj = Item::create($ItemData);
|
||||
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
public function edit(Item $Item)
|
||||
{
|
||||
return \MessageResponse::data($Item);
|
||||
}
|
||||
public function update(StoreItemRequest $request, Item $Item)
|
||||
{
|
||||
$Item->update($request->all());
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
public function destroy(Item $Item)
|
||||
{
|
||||
if (!auth('api')->user()->can('delete', $Item)) {
|
||||
return \MessageResponse::error(trans('messages.access_denied'));
|
||||
}
|
||||
if(count($Item->packages))
|
||||
{
|
||||
$Item->packages()->detach();
|
||||
}
|
||||
$Item->delete();
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
|
||||
public function getItems(){
|
||||
$Items = Item::with('user')->get();
|
||||
return \MessageResponse::data($Items);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\MedicalCenter;
|
||||
use App\User;
|
||||
use App\Http\Requests\StoreMedicalCenterRequest;
|
||||
|
||||
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 = $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'));
|
||||
}
|
||||
$MedicalCenter->delete();
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
|
||||
public function listMedicalCenters(){
|
||||
$MedicalCenters = MedicalCenter::select('id','name')->get();
|
||||
return \MessageResponse::data($MedicalCenters);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Requests\StoreMessageRequest;
|
||||
use App\Message;
|
||||
use App\User;
|
||||
|
||||
class MessageController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$User = auth('api')->user();
|
||||
$role = null;
|
||||
$medical_center_id = null;
|
||||
|
||||
$User = auth('api')->user();
|
||||
if ($User->hasRole('Supervisor') || $User->hasRole('User')) {
|
||||
$medical_center_id = $User->medical_center_id;
|
||||
$role = 'Admin';
|
||||
}
|
||||
$remove = $User->id;
|
||||
$Users = User::whereHas('messagesSent', function($q) use($User){
|
||||
$q->where('recipient_user_id', $User->id);
|
||||
})
|
||||
->orWhereHas('messagesReceived', function($q) use($User){
|
||||
$q->where('sender_user_id', $User->id);
|
||||
})
|
||||
->when($medical_center_id, function($query) use ($medical_center_id){
|
||||
$query->where('medical_center_id', $medical_center_id);
|
||||
})
|
||||
->when($role, function($query) use($role){
|
||||
$query->role($role);
|
||||
})
|
||||
->paginate(10);
|
||||
|
||||
foreach ($Users as $user) {
|
||||
$UnReadReceivedMessages = Message::where('sender_user_id', $user->id)->where('recipient_user_id', $User->id)->where('status','UnRead')->get()->count();
|
||||
$user->unread_messages_count = $UnReadReceivedMessages;
|
||||
|
||||
$MessagesCount = Message::where(function ($query) use ($user,$User){
|
||||
$query->where('sender_user_id', $user->id)->where('recipient_user_id', $User->id);
|
||||
})->orWhere(function ($query) use ($user,$User){
|
||||
$query->where('sender_user_id', $User->id)->where('recipient_user_id', $user->id);
|
||||
})->get()->count();
|
||||
|
||||
$user->messages_count = $MessagesCount;
|
||||
}
|
||||
|
||||
//
|
||||
// $Users = $Users->filter(function ($value, $key) use($remove){
|
||||
// return $value['id'] != $remove;
|
||||
// });
|
||||
|
||||
return \MessageResponse::data($Users);
|
||||
}
|
||||
public function create()
|
||||
{
|
||||
|
||||
}
|
||||
public function show($UserID)
|
||||
{
|
||||
// if (!auth('api')->user()->can('show', $Message)) {
|
||||
// return \MessageResponse::error(trans('messages.access_denied'));
|
||||
// }
|
||||
|
||||
$User = User::findOrFail($UserID);
|
||||
// $SendMessages = Message::where('sender_user_id', auth('api')->user()->id)->where('recipient_user_id', $UserID)->get();
|
||||
$ReceivedMessages = Message::where('sender_user_id', $UserID)->where('recipient_user_id', auth('api')->user()->id)->get();
|
||||
|
||||
$Messages = Message::where(function ($query) use ($UserID)
|
||||
{
|
||||
$query->where('sender_user_id', auth('api')->user()->id)->where('recipient_user_id', $UserID);
|
||||
})->orWhere(function ($query) use ($UserID)
|
||||
{
|
||||
$query->where('sender_user_id', $UserID)->where('recipient_user_id', auth('api')->user()->id);
|
||||
})->get();
|
||||
|
||||
foreach ($ReceivedMessages as $ReceivedMessage) {
|
||||
$ReceivedMessage->status = 'Read';
|
||||
$ReceivedMessage->save();
|
||||
}
|
||||
|
||||
return \MessageResponse::data($Messages);
|
||||
}
|
||||
public function store(StoreMessageRequest $request)
|
||||
{
|
||||
$MessageData = [
|
||||
// 'title' => $request->title,
|
||||
'text' => $request->message,
|
||||
'sender_user_id' => auth('api')->user()->id,
|
||||
'recipient_user_id' => $request->user_id,
|
||||
'status' => 'UnRead',
|
||||
];
|
||||
Message::create($MessageData);
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
public function edit(Message $Message)
|
||||
{
|
||||
// return \MessageResponse::data($Message);
|
||||
}
|
||||
public function update(StoreMessageRequest $request, Message $Message)
|
||||
{
|
||||
// $Message->update($request->all());
|
||||
// return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
public function destroy(Message $Message)
|
||||
{
|
||||
if (auth('api')->user()->cant('delete', $Message)) {
|
||||
return \MessageResponse::error(trans('messages.access_denied'));
|
||||
}
|
||||
$Message->delete();
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
public function destroyUserMessages(User $User)
|
||||
{
|
||||
// if (auth('api')->user()->cant('deleteUserMessage', Message::class)) {
|
||||
// return \MessageResponse::error(trans('messages.access_denied'));
|
||||
// }
|
||||
Message::where(function ($query) use ($User)
|
||||
{
|
||||
$query->where('sender_user_id', auth('api')->user()->id)->where('recipient_user_id', $User->id);
|
||||
})->orWhere(function ($query) use ($User)
|
||||
{
|
||||
$query->where('sender_user_id', $User->id)->where('recipient_user_id', auth('api')->user()->id);
|
||||
})->get()->each->delete();
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Requests\StorePackRequest;
|
||||
use App\Pack;
|
||||
|
||||
class PackController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$Packs = Pack::when($request->has('name') && $request->name != '', function($query) use($request){
|
||||
$query->where('name', 'LIKE', '%'.$request->name.'%');
|
||||
})
|
||||
->when($request->has('sterilizer_id') && $request->sterilizer_id != '', function($query) use($request){
|
||||
$query->where('sterilizer_id', $request->sterilizer_id);
|
||||
})
|
||||
->when($request->has('cycle_number') && $request->cycle_number != '', function($query) use($request){
|
||||
$query->where('cycle_number', $request->cycle_number);
|
||||
})
|
||||
->when($request->has('lot_number') && $request->lot_number != '', function($query) use($request){
|
||||
$query->where('lot_number', $request->lot_number);
|
||||
})
|
||||
->when($request->has('department') && $request->department != '', function($query) use($request){
|
||||
$query->where('department', 'LIKE', '%'.$request->department.'%');
|
||||
})
|
||||
->when($request->has('medical_center_id') && $request->medical_center_id != '', function($query) use($request){
|
||||
$query->whereHas('user', function($query) use($request){
|
||||
$query->where('medical_center_id', $request->medical_center_id);
|
||||
});
|
||||
})
|
||||
->with('user', 'user.medical_center')->paginate(10);
|
||||
return \MessageResponse::data($Packs);
|
||||
}
|
||||
public function create()
|
||||
{
|
||||
|
||||
}
|
||||
public function show(Pack $Pack)
|
||||
{
|
||||
$Pack->load('user', 'packages', 'user.medical_center');
|
||||
return \MessageResponse::data($Pack);
|
||||
}
|
||||
public function store(StorePackRequest $request)
|
||||
{
|
||||
$PackData = [
|
||||
'name' => $request->name,
|
||||
'sterile_date' => $request->sterile_date,
|
||||
'expire_date' => $request->expire_date,
|
||||
'sterilizer_id' => $request->sterilizer_id,
|
||||
'cycle_number' => $request->cycle_number,
|
||||
'lot_number' => $request->lot_number,
|
||||
'department' => $request->department,
|
||||
'note' => $request->note,
|
||||
'user_id' => auth('api')->user()->id,
|
||||
];
|
||||
$PackObj = Pack::create($PackData);
|
||||
$PackObj->packages()->attach($request->packages);
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
public function edit(Pack $Pack)
|
||||
{
|
||||
$Pack->load('user', 'packages');
|
||||
return \MessageResponse::data($Pack);
|
||||
}
|
||||
|
||||
public function update(StorePackRequest $request, Pack $Pack)
|
||||
{
|
||||
$Pack->update($request->except(['packages']));
|
||||
$Pack->packages()->sync($request->packages);
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
public function destroy(Pack $Pack)
|
||||
{
|
||||
if (auth('api')->user()->cant('delete', $Pack)) {
|
||||
return \MessageResponse::error(trans('messages.access_denied'));
|
||||
}
|
||||
if(count($Pack->packages))
|
||||
{
|
||||
$Pack->packages()->detach();
|
||||
}
|
||||
if(count($Pack->cycles))
|
||||
{
|
||||
$Pack->cycles()->detach();
|
||||
}
|
||||
$Pack->delete();
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
public function getPacks()
|
||||
{
|
||||
$Packs = Pack::with('user')->get();
|
||||
return \MessageResponse::data($Packs);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Requests\StorePackageRequest;
|
||||
use App\Package;
|
||||
|
||||
class PackageController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$Packages = Package::when($request->has('name') && $request->name != '', function($query) use($request){
|
||||
$query->where('name', 'LIKE', '%'.$request->name.'%');
|
||||
})
|
||||
->when($request->has('unique_id') && $request->unique_id != '', function($query) use($request){
|
||||
$query->where('unique_id', $request->unique_id);
|
||||
})
|
||||
->with('user')->paginate(10);
|
||||
return \MessageResponse::data($Packages);
|
||||
}
|
||||
public function create()
|
||||
{
|
||||
|
||||
}
|
||||
public function show(Package $Package)
|
||||
{
|
||||
$Package->load('user', 'items');
|
||||
return \MessageResponse::data($Package);
|
||||
}
|
||||
public function store(StorePackageRequest $request)
|
||||
{
|
||||
$UniqueID = substr(base_convert(sha1(uniqid(mt_rand())), 16, 36), 0, 10);
|
||||
$PackageData = [
|
||||
'name' => $request->name,
|
||||
'unique_id' => $UniqueID,
|
||||
'note' => $request->note,
|
||||
'user_id' => auth('api')->user()->id,
|
||||
'verified' => 'NotVerified',
|
||||
];
|
||||
$PackageObj = Package::create($PackageData);
|
||||
$PackageObj->items()->attach($request->items);
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
public function edit(Package $Package)
|
||||
{
|
||||
$Package->load('user', 'items');
|
||||
return \MessageResponse::data($Package);
|
||||
}
|
||||
public function update(StorePackageRequest $request, Package $Package)
|
||||
{
|
||||
$Package->update($request->except(['items']));
|
||||
$Package->items()->sync($request->items);
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
public function destroy(Package $Package)
|
||||
{
|
||||
if (auth('api')->user()->cant('delete', $Package)) {
|
||||
return \MessageResponse::error(trans('messages.access_denied'));
|
||||
}
|
||||
if(count($Package->items))
|
||||
{
|
||||
$Package->items()->detach();
|
||||
}
|
||||
if(count($Package->packs))
|
||||
{
|
||||
$Package->packs()->detach();
|
||||
}
|
||||
$Package->delete();
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
public function verifyPackage(Package $Package)
|
||||
{
|
||||
if (auth('api')->user()->cant('verifyPackage', $Package)) {
|
||||
return \MessageResponse::error(trans('You dont have permission'));
|
||||
}
|
||||
if ($Package->verified == 'Verified') {
|
||||
$Package->verified = 'NotVerified';
|
||||
} else {
|
||||
$Package->verified = 'Verified';
|
||||
}
|
||||
$Package->save();
|
||||
$Package = $Package->load('user');
|
||||
return \MessageResponse::success(trans('messages.success'), null, $Package);
|
||||
}
|
||||
|
||||
public function getPackages()
|
||||
{
|
||||
$Packages = Package::with('user')->get();
|
||||
return \MessageResponse::data($Packages);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,492 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Http\Requests\StoreTestResultRequest;
|
||||
use App\TestResult;
|
||||
use App\InputValue;
|
||||
use App\Input;
|
||||
use App\MedicalCenter;
|
||||
use App\TestType;
|
||||
use App\Gallery;
|
||||
use App\Uploadable;
|
||||
use Intervention\Image\ImageManagerStatic as Image;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class TestResultController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$user = auth('api')->user();
|
||||
|
||||
if ($user->hasRole('Supervisor|User')) {
|
||||
$medical_center_id = $user->medical_center_id;
|
||||
}
|
||||
elseif($request->has('medicalCenter_id') && $request->medicalCenter_id) {
|
||||
$medical_center_id = $request->medicalCenter_id;
|
||||
} else {
|
||||
$medical_center_id = null;
|
||||
}
|
||||
|
||||
if ($user->hasRole('User')) {
|
||||
$user_name = $user->name;
|
||||
}
|
||||
elseif($request->has('user_name') && $request->user_name) {
|
||||
$user_name = $request->user_name;
|
||||
}
|
||||
else {
|
||||
$user_name = null;
|
||||
}
|
||||
|
||||
$TestResult = TestResult::with('test_type', 'user', 'user.medical_center')
|
||||
->when($request->has('verified'), function ($query) use ($request)
|
||||
{
|
||||
return $query->where('verified', $request->verified);
|
||||
})
|
||||
->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('testType_id') && $request->testType_id, function($query) use($request){
|
||||
$query->where('test_type_id', $request->testType_id);
|
||||
})
|
||||
->when($request->has('device_id') && $request->device_id, function($query) use($request){
|
||||
$query->where('device_id', 'LIKE', '%'.$request->device_id.'%');
|
||||
})
|
||||
->when($user_name, function($query) use($user_name){
|
||||
$query->whereHas('user', function($query) use($user_name){
|
||||
$query->where('name', 'LIKE', '%'.$user_name.'%');
|
||||
});
|
||||
})
|
||||
->when($medical_center_id, function($query) use($medical_center_id){
|
||||
$query->whereHas('user', function($query) use ($medical_center_id) {
|
||||
$query->where('medical_center_id', $medical_center_id);
|
||||
});
|
||||
})
|
||||
->paginate(10);
|
||||
|
||||
return \MessageResponse::data($TestResult);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function store(StoreTestResultRequest $request)
|
||||
{
|
||||
// dd($request->result);
|
||||
try {
|
||||
$return_value = \DB::transaction(function () use ($request) {
|
||||
|
||||
$TestResult = [
|
||||
'user_id' => auth('api')->user()->id,
|
||||
'cycle_number' => $request->cycle_number,
|
||||
'device_id' => $request->device_id,
|
||||
'date' => $request->date,
|
||||
'test_type_id' => $request->test_type_id,
|
||||
'result' => $request->result,
|
||||
'verified' => 'NotVerified',
|
||||
];
|
||||
$TestResultObj = TestResult::create($TestResult);
|
||||
$TestResultInfo = $request->all();
|
||||
|
||||
$Inputs = Input::with('options','children','children.options')->whereNull('parent_id')->where('test_type_id',$request->test_type_id)->get();
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////Inputs
|
||||
foreach ($Inputs as $Input) {
|
||||
if ($Input['type'] != 'Form') {
|
||||
$Value = $TestResultInfo[$Input->name.'_'.$Input->id];
|
||||
if ($Input['type'] == 'Checkbox' || $Input['type'] == 'Select' || $Input['type'] == 'Radiobutton') {
|
||||
|
||||
foreach ($Input->options as $Option) {//--2
|
||||
if(is_array($Value) && in_array($Option->id,$Value)){
|
||||
$InputValueObj = InputValue::create(['test_result_id' => $TestResultObj->id, 'input_id' => $Input->id, 'option_id' => $Option->id]);
|
||||
}
|
||||
if ($Input['type'] == 'Radiobutton' && $Option->id == $Value) {
|
||||
$InputValueObj = InputValue::create(['test_result_id' => $TestResultObj->id, 'input_id' => $Input->id, 'option_id' => $Option->id]);
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
$InputValueObj = InputValue::create(['test_result_id' => $TestResultObj->id, 'input_id' => $Input->id, 'value' => $Value]);
|
||||
}
|
||||
} else {
|
||||
foreach ($Input->children as $InputChild) {
|
||||
$Value = $TestResultInfo[$InputChild->name.'_'.$InputChild->id];
|
||||
|
||||
if ($InputChild['type'] == 'Checkbox' || $InputChild['type'] == 'Select' || $InputChild['type'] == 'Radiobutton') {
|
||||
|
||||
foreach ($InputChild->options as $Option) {//--2
|
||||
if(is_array($Value) && in_array($Option->id,$Value)){
|
||||
$InputValueObj = InputValue::create(['test_result_id' => $TestResultObj->id, 'input_id' => $InputChild->id, 'option_id' => $Option->id]);
|
||||
}
|
||||
if ($InputChild['type'] == 'Radiobutton' && $Option->id == $Value) {
|
||||
$InputValueObj = InputValue::create(['test_result_id' => $TestResultObj->id, 'input_id' => $InputChild->id, 'option_id' => $Option->id]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$InputValueObj = InputValue::create(['test_result_id' => $TestResultObj->id, 'input_id' => $InputChild->id, 'value' => $Value]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////Inputs
|
||||
///////////////////////////////////////////////////////////////////////////Images
|
||||
if ($request->imgs != null) {
|
||||
|
||||
foreach ($request->imgs as $key => $img) {
|
||||
$Image = $img;
|
||||
$InterventionImage = Image::make($Image);
|
||||
$Mime = explode('/', $InterventionImage->mime());
|
||||
|
||||
$ImageName = time().$key.'.'.$Mime[1];
|
||||
$Path = 'uploads'.'/TestResults'.'/'.$TestResultObj->id .'/'.$ImageName;
|
||||
|
||||
Storage::disk('public')->makeDirectory('TestResults'.'/'.$TestResultObj->id);
|
||||
$InterventionImage->save(public_path($Path));
|
||||
|
||||
$GalleryObj = Gallery::create(['user_id' => auth('api')->user()->id, 'path' => $Path]);
|
||||
$Uploadable = Uploadable::create(['uploadable_id' => $TestResultObj->id, 'uploadable_type' => 'App\TestResult', 'gallery_id' => $GalleryObj->id, 'image_role' => 'TitleImage']);
|
||||
}
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////Images
|
||||
|
||||
});
|
||||
} catch (\Exception $e) {
|
||||
return response()->json($e->getMessage(), 441);
|
||||
}
|
||||
return \MessageResponse::success(null,trans('messages.create'));
|
||||
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$TestResult = TestResult::with('input_values', 'user.medical_center', 'test_type')->select('result', 'verified', 'device_id','user_id','id', 'test_type_id', 'created_at')->findOrFail($id);
|
||||
$options = [];
|
||||
foreach ($TestResult->input_values as $value) {
|
||||
$input = $value->input;
|
||||
|
||||
if ($input->parent_id != null && $input->parent['type'] == 'Form') {
|
||||
//----------------------------------------------------------------------FormType
|
||||
if ($input->type == 'Checkbox' || $input->type == 'Select' || $input['type'] == 'Radiobutton') {
|
||||
$input_options = InputValue::with('option')->where('test_result_id', $TestResult->id)->where('input_id', $input->id)->get();
|
||||
$options = [];
|
||||
foreach ($input_options as $input_option) {
|
||||
$options[] = $input_option->option->title;
|
||||
$input_values[$input->name] = $options;
|
||||
}
|
||||
|
||||
$children[$input->parent->name] = $input_values;
|
||||
$TestResult['children'] = $children;
|
||||
}
|
||||
else {
|
||||
|
||||
$children[$input->parent->name][$input->name] = $value->value;
|
||||
$TestResult['children'] = $children;
|
||||
}
|
||||
//-----------------------------------------------------------------------FormType
|
||||
}
|
||||
else {
|
||||
//-----------------------------------------------------------------------Anothertype
|
||||
if ($input->type == 'Checkbox' || $input->type == 'Select' || $input['type'] == 'Radiobutton') {
|
||||
$input_options = InputValue::with('option')->where('test_result_id', $TestResult->id)->where('input_id', $input->id)->get();
|
||||
$options = [];
|
||||
foreach ($input_options as $input_option) {
|
||||
$options[] = $input_option->option->title;
|
||||
}
|
||||
|
||||
$values[$input->name] = $options;
|
||||
$TestResult['options'] = $values;
|
||||
}
|
||||
else {
|
||||
$inputs[$input->name] = $value->value;
|
||||
$TestResult['inputs'] = $inputs;
|
||||
}
|
||||
//-----------------------------------------------------------------------Anothertype
|
||||
}
|
||||
}
|
||||
|
||||
$ImagesPath = [];
|
||||
if (count($TestResult->TitleImage)) {
|
||||
foreach ($TestResult->TitleImage as $Key => $TitleImage) {
|
||||
$ImagesPath[] = $TitleImage->path;
|
||||
}
|
||||
$TestResult['imagesPath'] = $ImagesPath;
|
||||
}
|
||||
// dd($TestResult->test_type()->device_label);
|
||||
$TestResult['device_label'] = $TestResult->test_type->device_label;
|
||||
return \MessageResponse::data($TestResult);
|
||||
}
|
||||
|
||||
public function edit(TestResult $TestResult)
|
||||
{
|
||||
foreach ($TestResult->input_values as $key => $value) {
|
||||
$input = $value->input;
|
||||
if ($input->type == 'Checkbox' || $input->type == 'Select' || $input['type'] == 'Radiobutton') {
|
||||
$input_options = InputValue::where('test_result_id', $TestResult->id)->where('input_id', $input->id)->get()->pluck('option_id')->toArray();
|
||||
if ($input['type'] == 'Radiobutton') {
|
||||
$TestResult[$input->name.'_'.$input->id] = $input_options[0];
|
||||
}
|
||||
else {
|
||||
$TestResult[$input->name.'_'.$input->id] = $input_options;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$TestResult[$input->name.'_'.$input->id] = $value->value;
|
||||
}
|
||||
}
|
||||
|
||||
$ImagesPath = [];
|
||||
if (count($TestResult->TitleImage)) {
|
||||
foreach ($TestResult->TitleImage as $Key => $TitleImage) {
|
||||
$ImagesPath[] = $TitleImage->path;
|
||||
}
|
||||
$TestResult['imagesPath'] = $ImagesPath;
|
||||
}
|
||||
else {
|
||||
$TestResult['imagesPath'] = [];
|
||||
}
|
||||
|
||||
return \MessageResponse::data($TestResult);
|
||||
}
|
||||
|
||||
public static function storage_path($path)
|
||||
{
|
||||
if (starts_with($path, 'uploads/')) {
|
||||
$path = substr($path, 8);
|
||||
}
|
||||
return $path;
|
||||
}
|
||||
|
||||
public function update(StoreTestResultRequest $request, TestResult $TestResult)
|
||||
{
|
||||
$TestResultData = [
|
||||
// 'autoclave_id' => $request->autoclave_id,
|
||||
'cycle_number' => $request->cycle_number,
|
||||
'device_id' => $request->device_id,
|
||||
'date' => $request->date,
|
||||
'test_type_id' => $request->test_type_id,
|
||||
'result' => $request->result,
|
||||
'verified' => 'NotVerified',
|
||||
];
|
||||
$TestResult->update($TestResultData);
|
||||
$TestResultInfo = $request->all();
|
||||
|
||||
$Inputs = Input::with('options', 'children', 'children.options')->whereNull('parent_id')->where('test_type_id',$request->test_type_id)->get();
|
||||
|
||||
foreach ($Inputs as $Input) {
|
||||
if ($Input['type'] != 'Form') {
|
||||
$Value = $TestResultInfo[$Input->name.'_'.$Input->id];
|
||||
if ($Input['type'] == 'Checkbox' || $Input['type'] == 'Select' || $Input['type'] == 'Radiobutton') {
|
||||
|
||||
$InputOptions = InputValue::where('test_result_id', $TestResult->id)->where('input_id', $Input->id)->get()->each->delete();
|
||||
|
||||
foreach ($Input->options as $Option) {//--2
|
||||
if(is_array($Value) && in_array($Option->id,$Value)){
|
||||
$InputValueObj = InputValue::create(['test_result_id' => $TestResult->id, 'input_id' => $Input->id, 'option_id' => $Option->id]);
|
||||
}
|
||||
if ($Input['type'] == 'Radiobutton' && $Option->id == $Value) {
|
||||
$InputValueObj = InputValue::create(['test_result_id' => $TestResult->id, 'input_id' => $Input->id, 'option_id' => $Option->id]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$InputValueObj = InputValue::where('test_result_id', $TestResult->id)->where('input_id', $Input['id'])->update(['value' => $Value]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
foreach ($Input->children as $InputChild) {
|
||||
|
||||
$Value = $TestResultInfo[$InputChild->name.'_'.$InputChild->id];
|
||||
|
||||
if ($InputChild['type'] == 'Checkbox' || $InputChild['type'] == 'Select' || $InputChild['type'] == 'Radiobutton') {
|
||||
$InputOptions = InputValue::where('test_result_id', $TestResult->id)->where('input_id', $InputChild->id)->get()->each->delete();
|
||||
|
||||
foreach ($InputChild->options as $Option) {//--2
|
||||
if(is_array($Value) && in_array($Option->id,$Value)){
|
||||
$InputValueObj = InputValue::create(['test_result_id' => $TestResult->id, 'input_id' => $InputChild->id, 'option_id' => $Option->id]);
|
||||
}
|
||||
if ($InputChild['type'] == 'Radiobutton' && $Option->id == $Value) {
|
||||
$InputValueObj = InputValue::create(['test_result_id' => $TestResult->id, 'input_id' => $InputChild->id, 'option_id' => $Option->id]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$InputValueObj = InputValue::where('test_result_id', $TestResult->id)->where('input_id', $InputChild['id'])->update(['value' => $Value]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/////////////////////////////////////////////////////////////////////Images
|
||||
$images = '';
|
||||
$imageExist = [];
|
||||
$imagesDeleted = [];
|
||||
if (count($TestResult->TitleImage))
|
||||
{
|
||||
$images = $TestResult->TitleImage;
|
||||
foreach ($images as $key => $image) {
|
||||
|
||||
$imageExist[] = '/'.$image->path;
|
||||
if (!in_array('/'.$image->path, $request->imgs)) {
|
||||
$imagesDeleted[] = $image->path;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ($request->imgs != null) {
|
||||
$request_imgs = array_diff($request->imgs, $imageExist);
|
||||
|
||||
foreach ($request_imgs as $key => $img) {//
|
||||
|
||||
if (strrpos($img, "base64") !== false) {
|
||||
|
||||
$Image = $img;
|
||||
$InterventionImage = Image::make($Image);
|
||||
$Mime = explode('/', $InterventionImage->mime());
|
||||
|
||||
$ImageName = time().$key.'.'.$Mime[1];
|
||||
$Path = 'uploads'.'/TestResults'.'/'.$TestResult->id .'/'.$ImageName;
|
||||
|
||||
Storage::disk('public')->makeDirectory('TestResults'.'/'.$TestResult->id);
|
||||
$InterventionImage->save(public_path($Path));
|
||||
|
||||
//--------------------------------------------------------
|
||||
$GalleryObj = Gallery::create(['user_id' => auth('api')->user()->id, 'path' => $Path]);
|
||||
$Uploadable = Uploadable::create(['uploadable_id' => $TestResult->id, 'uploadable_type' => 'App\TestResult', 'gallery_id' => $GalleryObj->id, 'image_role' => 'TitleImage']);
|
||||
//--------------------------------------------------------
|
||||
}
|
||||
}
|
||||
|
||||
if (count($imagesDeleted)) {
|
||||
foreach ($imagesDeleted as $key => $imageDeleted) {
|
||||
$Gallery = Gallery::where('path', $imageDeleted)->first();
|
||||
if ($Gallery) {
|
||||
Storage::disk('public')->delete(static::storage_path($imageDeleted));
|
||||
Uploadable::where('gallery_id', $Gallery->id)->where('uploadable_id', $TestResult->id)->where('uploadable_type', get_class($TestResult))->delete();
|
||||
$Gallery->delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
return \MessageResponse::success(null,trans('messages.update'));
|
||||
}
|
||||
|
||||
public function destroy(TestResult $TestResult)
|
||||
{
|
||||
if (!auth('api')->user()->can('delete', $TestResult)) {
|
||||
return \MessageResponse::error(trans('messages.access_denied'));
|
||||
}
|
||||
if (count($TestResult->input_values)) {
|
||||
InputValue::where('test_result_id', $TestResult->id)->get()->each->delete();
|
||||
}
|
||||
if (count($TestResult->TitleImage)){
|
||||
foreach ($TestResult->TitleImage as $image) {
|
||||
Storage::disk('public')->delete(static::storage_path($image->path));
|
||||
Uploadable::where('gallery_id', $image->id)->where('uploadable_id', $TestResult->id)->where('uploadable_type', get_class($TestResult))->delete();
|
||||
Gallery::where('id', $image->id)->delete();
|
||||
}
|
||||
}
|
||||
$TestResult->delete();
|
||||
return \MessageResponse::success(null, trans('messages.success'));
|
||||
}
|
||||
|
||||
public function verifyTestResult(TestResult $TestResult)
|
||||
{
|
||||
if (auth('api')->user()->cant('verifyTestResult', $TestResult)) {
|
||||
return \MessageResponse::error(trans('You dont have permission or this test result belongs to another medical center'));
|
||||
}
|
||||
if ($TestResult->verified == 'Verified') {
|
||||
$TestResult->verified = 'NotVerified';
|
||||
} else {
|
||||
$TestResult->verified = 'Verified';
|
||||
}
|
||||
$TestResult->save();
|
||||
$TestResult = $TestResult->load('user.medical_center');
|
||||
return \MessageResponse::success(trans('messages.success'), null, $TestResult);
|
||||
}
|
||||
|
||||
public function listFilterItems()
|
||||
{
|
||||
$user = auth('api')->user();
|
||||
$MedicalCenter = MedicalCenter::when(!$user->hasRole('Admin'), function ($query) use ($user)
|
||||
{
|
||||
$query->where('id', $user->medical_center_id);
|
||||
})->select('name', 'id')->get()->toArray();
|
||||
$TestType = TestType::select('name', 'id')->get()->toArray();
|
||||
return \MessageResponse::data([
|
||||
'MedicalCenters' => $MedicalCenter,
|
||||
'TestTypes' => $TestType
|
||||
]);
|
||||
}
|
||||
|
||||
public function chart(Request $request)
|
||||
{
|
||||
$user = auth('api')->user();
|
||||
if ($user->hasRole('User')) {
|
||||
$userId = $user->id;
|
||||
} elseif($request->has('userId') && $request->userId) {
|
||||
$userId = $request->userId;
|
||||
} else {
|
||||
$userId = null;
|
||||
}
|
||||
if ($user->hasRole('Admin') && $request->has('medicalCenterId') && $request->medicalCenterId) {
|
||||
$medicalCenterId = $request->medicalCenterId;
|
||||
} else {
|
||||
$medicalCenterId = $user->medical_center_id;
|
||||
}
|
||||
|
||||
|
||||
$TestResults = TestResult::
|
||||
when($userId, function ($query) use ($userId)
|
||||
{
|
||||
$query->where('user_id', $userId);
|
||||
})
|
||||
->when($medicalCenterId, function ($query) use ($medicalCenterId)
|
||||
{
|
||||
$query->whereHas('user', function($query) use ($medicalCenterId) {
|
||||
$query->where('medical_center_id', $medicalCenterId);
|
||||
});
|
||||
})
|
||||
->when($request->has('testTypeId') && $request->testTypeId, function ($query) use ($request)
|
||||
{
|
||||
$query->where('test_type_id', $request->testTypeId);
|
||||
})
|
||||
->when($request->has('result') && $request->result, function ($query) use ($request)
|
||||
{
|
||||
$query->where('result', $request->result);
|
||||
})
|
||||
->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('verify') && $request->verify, function ($query) use ($request)
|
||||
{
|
||||
$query->where('verified', $request->verify);
|
||||
})->select('result')->get()->groupBy('result');
|
||||
$AcceptCount = (isset($TestResults['Accept'])) ? $TestResults['Accept']->count() : 0;
|
||||
$RejectCount = (isset($TestResults['Reject'])) ? $TestResults['Reject']->count() : 0;
|
||||
|
||||
|
||||
return \MessageResponse::data(['labels' => ['Number Of Accepted Test Results', 'Number Of Rejected Test Results'], 'data' => [$AcceptCount,$RejectCount]]);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------Show
|
||||
public function showTestResult($id)
|
||||
{
|
||||
return view('ShowTestResult', compact('id'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,422 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\TestType;
|
||||
use App\TestResult;
|
||||
use App\Input;
|
||||
use App\Option;
|
||||
use App\Http\Requests\StoreTestTypeRequest;
|
||||
use \Milon\Barcode\DNS1D;
|
||||
use \Milon\Barcode\DNS2D;
|
||||
|
||||
class TestTypeController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
if (!auth('api')->user()->can('list', TestType::class)) {
|
||||
return \MessageResponse::error(trans('messages.access_denied'));
|
||||
}
|
||||
$TestTypes = TestType::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('unique_id') && $request->unique_id, function($query) use($request){
|
||||
$query->where('unique_code', $request->unique_id);
|
||||
})
|
||||
->when($request->has('user_name') && $request->user_name, function($query) use($request){
|
||||
$query->whereHas('user', function($query) use($request){
|
||||
$query->where('name', 'LIKE', '%'.$request->user_name.'%');
|
||||
});
|
||||
})
|
||||
->withCount('test_results')->with('user','user.medical_center')->paginate(10);
|
||||
return \MessageResponse::data($TestTypes);
|
||||
|
||||
}
|
||||
|
||||
public function generateBarcode(TestType $TestType)
|
||||
{
|
||||
if (!auth('api')->user()->can('generateBarcode', $TestType)) {
|
||||
return \MessageResponse::error(trans('messages.access_denied'));
|
||||
}
|
||||
$Number = $TestType->unique_code;
|
||||
$Barcode = DNS1D::getBarcodePNGUri($Number, "C128");
|
||||
$QRCode = DNS2D::getBarcodePNGUri($Number, "QRCODE");
|
||||
$TestType->update(['bar_code' => $Barcode]);
|
||||
return \MessageResponse::data(['Barcode' => $Barcode, 'QRCode' => $QRCode]);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////// Store TestType /////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
public function CreateInput($Input,$TestType,$ParentID = null)
|
||||
{
|
||||
//---------------------------------------------Input
|
||||
$InputData = [
|
||||
'name' => $Input['name'],
|
||||
'type' => $Input['type'],
|
||||
'size' => $Input['size'],
|
||||
'test_type_id' => $TestType->id,
|
||||
'parent_id' => $ParentID
|
||||
];
|
||||
$InputObj = Input::create($InputData);
|
||||
//---------------------------------------------Input
|
||||
//---------------------------------------------Option
|
||||
if ($Input['type'] == 'Checkbox' || $Input['type'] == 'Select' || $Input['type'] == 'Radiobutton' || $Input['type'] == 'Range') {
|
||||
foreach ($Input['options'] as $Option) {
|
||||
$Option = Option::create(['title' => $Option['title'] , 'input_id' => $InputObj->id]);
|
||||
}
|
||||
}
|
||||
//---------------------------------------------Option
|
||||
return $InputObj;
|
||||
}
|
||||
|
||||
public function CreateChildForm($Input,$TestType,$InputObj)
|
||||
{
|
||||
if (isset($Input['children'])) {
|
||||
foreach ($Input['children'] as $InputChild) {
|
||||
$InputChildObj = $this->CreateInput($InputChild,$TestType,$InputObj->id);
|
||||
if (isset($InputChild['children'])) {
|
||||
$this->CreateChildForm($InputChild,$TestType,$InputChildObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function store(StoreTestTypeRequest $request)
|
||||
{
|
||||
try {
|
||||
$return_value = \DB::transaction(function () use ($request) {
|
||||
|
||||
$TestType = [
|
||||
'name' => $request['name'],
|
||||
'unique_code' => $request['unique_code'],
|
||||
'device_label' => $request['device_label'],
|
||||
'user_id' => auth('api')->user()->id
|
||||
];
|
||||
|
||||
$TestType = TestType::create($TestType);
|
||||
$TestTypeInfo = $request['info'];
|
||||
|
||||
foreach ($TestTypeInfo as $Input) {
|
||||
|
||||
$InputObj = $this->CreateInput($Input,$TestType);
|
||||
|
||||
if ($Input['type'] == 'Form') {
|
||||
$this->CreateChildForm($Input,$TestType,$InputObj);
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (\Exception $e) {
|
||||
return response()->json($e->getMessage(), 441);
|
||||
}
|
||||
return \MessageResponse::success(null,trans('messages.create'));
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////// Edit TestType ///////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
public function CreateInputInfo($Input)
|
||||
{
|
||||
$Options = [];
|
||||
//------------------------------------------------------Input
|
||||
$InputInfo = [
|
||||
'id' => $Input->id,
|
||||
'name' => $Input->name,
|
||||
'type' => $Input->type,
|
||||
'size' => $Input->size ,
|
||||
'parent_id' => $Input->parent_id,
|
||||
'options' => [],
|
||||
'children' => []
|
||||
];
|
||||
//------------------------------------------------------Input
|
||||
//------------------------------------------------------Option
|
||||
if ($Input['type'] == 'Checkbox' || $Input['type'] == 'Select' || $Input['type'] == 'Radiobutton' || $Input['type'] == 'Range') {
|
||||
|
||||
foreach ($Input['options'] as $Option) {
|
||||
$OptionInfo = [
|
||||
'id' => $Option->id ,
|
||||
'title' => $Option->title
|
||||
];
|
||||
$Options[] = $OptionInfo;
|
||||
}
|
||||
$InputInfo['options'] = $Options;
|
||||
}
|
||||
//------------------------------------------------------Option
|
||||
return $InputInfo;
|
||||
}
|
||||
|
||||
public function CreateChildFormInfo($Input,$InputInfo)
|
||||
{
|
||||
$Children = [];
|
||||
foreach ($Input['children'] as $InputChild) {
|
||||
|
||||
$ChildInfo = $this->CreateInputInfo($InputChild);
|
||||
$Children[] = $ChildInfo;
|
||||
if ($InputChild['type'] == 'Form') {
|
||||
$this->CreateChildFormInfo($InputChild,$ChildInfo);
|
||||
}
|
||||
}
|
||||
return $Children;
|
||||
}
|
||||
|
||||
public function edit(TestType $TestType)
|
||||
{
|
||||
if (count($TestType->test_results) > 0) {
|
||||
return \MessageResponse::error(trans('messages.access_denied'));
|
||||
}
|
||||
$Inputs = Input::with('children','options','children.options')->where('test_type_id',$TestType->id)->where('parent_id',null)->get();
|
||||
|
||||
$Info = [];
|
||||
$Options = [];
|
||||
$Children = [];
|
||||
|
||||
foreach ($Inputs as $Input) {
|
||||
|
||||
$InputInfo = $this->CreateInputInfo($Input);
|
||||
|
||||
if ($Input['type'] == 'Form') {
|
||||
$Children = $this->CreateChildFormInfo($Input,$InputInfo);
|
||||
$InputInfo['children'] = $Children;
|
||||
}
|
||||
$Info[] = $InputInfo;
|
||||
}
|
||||
$TestTypeInfo = [
|
||||
'id' => $TestType->id,
|
||||
'name' => $TestType->name,
|
||||
'unique_code' => $TestType->unique_code,
|
||||
'device_label' => $TestType->device_label,
|
||||
'info' => $Info,
|
||||
];
|
||||
return \MessageResponse::data($TestTypeInfo);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////// Update TestType /////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
public function UpdateInput($Input,$TestType,$ParentID = null)
|
||||
{
|
||||
//---------------------------------------------Input
|
||||
$InputData = [
|
||||
'name' => $Input['name'],
|
||||
'type' => $Input['type'],
|
||||
'size' => $Input['size'],
|
||||
'test_type_id' => $TestType->id,
|
||||
'parent_id' => $ParentID
|
||||
];
|
||||
Input::where('id',$Input['id'])->update($InputData);
|
||||
$InputObj = Input::findOrFail($Input['id']);
|
||||
//---------------------------------------------Input
|
||||
//---------------------------------------------Option
|
||||
if ($Input['type'] == 'Checkbox' || $Input['type'] == 'Select' || $Input['type'] == 'Radiobutton' || $Input['type'] == 'Range') {
|
||||
|
||||
|
||||
//**************************
|
||||
$DeletedOptionIDs = $InputObj->options->pluck('id')->toArray();
|
||||
//**************************
|
||||
|
||||
foreach ($Input['options'] as $Option) {
|
||||
if ($Option['id'] == 0) {//--new
|
||||
$Option = Option::create(['title' => $Option['title'] , 'input_id' => $Input['id'] ]);
|
||||
}
|
||||
else {
|
||||
//**************************
|
||||
if(in_array($Option['id'],$DeletedOptionIDs)){
|
||||
foreach ($DeletedOptionIDs as $index=>$DeletedOptionID){
|
||||
if($DeletedOptionID == $Option['id']){
|
||||
unset($DeletedOptionIDs[$index]);
|
||||
}
|
||||
}
|
||||
}
|
||||
//****************************
|
||||
$Option = Option::where('id', $Option['id'])->update(['title' => $Option['title'] ]);
|
||||
}
|
||||
}
|
||||
|
||||
//**************************
|
||||
foreach ($DeletedOptionIDs as $DeletedOptionID){
|
||||
$DeletedOption = Option::findOrFail($DeletedOptionID);
|
||||
$DeletedOption->delete();
|
||||
}
|
||||
//**************************
|
||||
}
|
||||
//---------------------------------------------Option
|
||||
return $Input;
|
||||
}
|
||||
|
||||
public function UpdateChildForm($Input,$TestType,$InputObj)
|
||||
{
|
||||
//**********************************
|
||||
$InputObject = Input::findOrFail($InputObj['id']);//$InputObj['id'] OR $Input['id']???????
|
||||
// dd($InputObject);
|
||||
$DeletedChildIDs = $InputObject->children->pluck('id')->toArray();
|
||||
//**********************************
|
||||
|
||||
if (isset($Input['children'])) {
|
||||
foreach ($Input['children'] as $InputChild) {
|
||||
if ($InputChild['id'] == 0) {//--newChild
|
||||
|
||||
$InputChildObj = $this->CreateInput($InputChild,$TestType,$InputObj['id']);
|
||||
if (isset($InputChild['children'])) {
|
||||
$this->CreateChildForm($InputChild,$TestType,$InputChildObj);
|
||||
}
|
||||
}
|
||||
else {
|
||||
//******************************
|
||||
if(in_array($InputChild['id'],$DeletedChildIDs)){
|
||||
foreach ($DeletedChildIDs as $index=>$DeletedChildID){
|
||||
if($DeletedChildID == $InputChild['id']){
|
||||
unset($DeletedChildIDs[$index]);
|
||||
}
|
||||
}
|
||||
}
|
||||
//******************************
|
||||
$InputChildObj = $this->UpdateInput($InputChild,$TestType,$InputObj['id']);
|
||||
if (isset($InputChild['children'])) {
|
||||
$this->UpdateChildForm($InputChild,$TestType,$InputChildObj);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
//*****************************
|
||||
foreach ($DeletedChildIDs as $DeletedChildID){
|
||||
$DeletedChild = Input::findOrFail($DeletedChildID);
|
||||
$DeletedChild->options()->delete();
|
||||
foreach ($DeletedChild->children as $DeletedChild1) {
|
||||
$DeletedChild1->options()->delete();
|
||||
$DeletedChild1->delete();
|
||||
}
|
||||
// $DeletedChild->children()->delete();
|
||||
$DeletedChild->delete();
|
||||
}
|
||||
//*****************************
|
||||
}
|
||||
}
|
||||
|
||||
public function update(StoreTestTypeRequest $request, TestType $TestType)
|
||||
{
|
||||
$TestTypeData = [
|
||||
'name' => $request['name'],
|
||||
'unique_code' => $request['unique_code'],
|
||||
'device_label' => $request['device_label'],
|
||||
];
|
||||
$TestType->update($TestTypeData);
|
||||
$TestTypeInfo = $request['info'];
|
||||
$DeletedInputIDs = $TestType->inputs->where('parent_id',null)->pluck('id')->toArray();
|
||||
|
||||
foreach ($TestTypeInfo as $Input) {
|
||||
if ($Input['id'] == 0) {//--new
|
||||
$InputObj = $this->CreateInput($Input,$TestType);
|
||||
}
|
||||
else {
|
||||
//**************************
|
||||
if(in_array($Input['id'],$DeletedInputIDs)){
|
||||
foreach ($DeletedInputIDs as $index=>$DeletedInputID){
|
||||
if($DeletedInputID == $Input['id']){
|
||||
unset($DeletedInputIDs[$index]);
|
||||
}
|
||||
}
|
||||
}
|
||||
//****************************
|
||||
$InputObj = $this->UpdateInput($Input,$TestType);
|
||||
}
|
||||
if ($Input['type'] == 'Form') {
|
||||
$this->UpdateChildForm($Input,$TestType,$InputObj);
|
||||
}
|
||||
}
|
||||
|
||||
//******************************
|
||||
foreach ($DeletedInputIDs as $DeletedInputID){
|
||||
$DeletedInput = Input::findOrFail($DeletedInputID);
|
||||
$DeletedInput->options()->delete();
|
||||
foreach ($DeletedInput->children as $DeletedInput1) {
|
||||
$DeletedInput1->options()->delete();
|
||||
$DeletedInput1->delete();
|
||||
}
|
||||
// $DeletedInput->children()->delete();
|
||||
$DeletedInput->delete();
|
||||
}
|
||||
//******************************
|
||||
|
||||
return \MessageResponse::success(null,trans('messages.update'));
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
public function getInputs(Request $request)
|
||||
{
|
||||
if (auth('api')->user()->can('getInputs')) {
|
||||
return \MessageResponse::error(trans('messages.failed'));
|
||||
}
|
||||
if($request->test_result_id !== '') {
|
||||
$testTypeId = TestResult::find($request->test_result_id);
|
||||
}
|
||||
if (isset($testTypeId) && $testTypeId) {
|
||||
$testType = TestType::select('id', 'name', 'unique_code', 'device_label')->find($testTypeId->test_type_id);
|
||||
} else {
|
||||
$testType = TestType::where('name', $request->name)->orWhere('unique_code', $request->unique_code)->select('id', 'name', 'unique_code', 'device_label')->first();
|
||||
}
|
||||
if (isset($testType) && $testType) {
|
||||
|
||||
$inputs = Input::select('id', 'name', 'type', 'size', 'parent_id')->with(
|
||||
['options' => function ($query) {
|
||||
$query->select('id', 'title','input_id');
|
||||
},
|
||||
'children' => function ($query) {
|
||||
$query->select('id', 'name', 'type', 'size', 'parent_id', 'test_type_id');
|
||||
},
|
||||
'children.options' => function ($query) {
|
||||
$query->select('id', 'title', 'input_id');
|
||||
}]
|
||||
)->whereNull('parent_id')->where('test_type_id',$testType->id)->get();
|
||||
|
||||
return \MessageResponse::data(['testType' => $testType, 'inputs' => $inputs]);
|
||||
}
|
||||
return \MessageResponse::error();
|
||||
}
|
||||
|
||||
public function listNames()
|
||||
{
|
||||
$testType = TestType::pluck('name');
|
||||
return \MessageResponse::data($testType);
|
||||
}
|
||||
|
||||
public function destroy(TestType $TestType)
|
||||
{
|
||||
if (!auth('api')->user()->can('delete', $TestType)) {
|
||||
return \MessageResponse::error(trans('messages.access_denied'));
|
||||
}
|
||||
$TestType->delete();
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
// public function AllTestTypes()
|
||||
// {
|
||||
// $testTypes = TestType::pluck('id', 'name');
|
||||
// return \MessageResponse::data($testTypes);
|
||||
// }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,200 @@
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
use App\Http\Requests\StoreUserRequest;
|
||||
use App\MedicalCenter;
|
||||
use App\User;
|
||||
use App\Message;
|
||||
|
||||
|
||||
class UserController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$user = auth('api')->user();
|
||||
if ($user->cant('list', User::class)) {
|
||||
return \MessageResponse::error(trans('messages.access_denied'));
|
||||
}
|
||||
|
||||
if ($user->hasRole('Supervisor')) {
|
||||
$medical_center_id = $user->medical_center_id;
|
||||
}
|
||||
elseif($request->has('medicalCenter_id') && $request->medicalCenter_id) {
|
||||
$medical_center_id = $request->medical_center_id;
|
||||
} else {
|
||||
$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);
|
||||
return \MessageResponse::data($Users);
|
||||
|
||||
}
|
||||
|
||||
public function store(StoreUserRequest $request)
|
||||
{
|
||||
if (auth('api')->user()->cant('store', User::class)) {
|
||||
return \MessageResponse::error(trans('messages.failed'));
|
||||
}
|
||||
$UserData = [
|
||||
'name' => $request->name ,
|
||||
'cell_number' => $request->cell_number ,
|
||||
'medical_center_id' => $request->medical_center_id ,
|
||||
'status' => 'PreRegister',
|
||||
'verified' => 1,
|
||||
'password' => bcrypt($request->password),
|
||||
];
|
||||
User::create($UserData);
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
|
||||
public function edit(User $User)
|
||||
{
|
||||
return \MessageResponse::data($User);
|
||||
}
|
||||
|
||||
public function update(StoreUserRequest $request, User $User)
|
||||
{
|
||||
if (auth('api')->user()->cant('update', $User)) {
|
||||
return \MessageResponse::error(trans('messages.failed'));
|
||||
}
|
||||
$UserData = [
|
||||
'name' => $request->name ,
|
||||
'cell_number' => $request->cell_number ,
|
||||
'medical_center_id' => $request->medical_center_id ,
|
||||
'status' => 'PreRegister',
|
||||
'verified' => 1,
|
||||
'password' => bcrypt($request->password),
|
||||
];
|
||||
$User->update($UserData);
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
|
||||
public function destroy(User $User)
|
||||
{
|
||||
if (auth('api')->user()->cant('delete', $User)) {
|
||||
return \MessageResponse::error(trans('messages.access_denied'));
|
||||
}
|
||||
$User->delete();
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
|
||||
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']);
|
||||
return \MessageResponse::data($MedicalCenter);
|
||||
}
|
||||
|
||||
public function changeStatus(User $User)
|
||||
{
|
||||
if (auth('api')->user()->cant('changeStatus', User::class)) {
|
||||
return \MessageResponse::error(trans('messages.access_denied'));
|
||||
}
|
||||
if ($User->status == 'Active') {
|
||||
$User->status = 'Suspended';
|
||||
$tokens = \DB::table('oauth_access_tokens')->where('user_id', $User->id);
|
||||
foreach($tokens->get() as $token) {
|
||||
\DB::table('oauth_refresh_tokens')->where('access_token_id', $token->id)->delete();
|
||||
}
|
||||
$tokens->delete();
|
||||
} else {
|
||||
$User->status = 'Active';
|
||||
}
|
||||
$User->save();
|
||||
return \MessageResponse::data($User);
|
||||
}
|
||||
|
||||
public function changeRole(User $User, Request $request)
|
||||
{
|
||||
if (auth('api')->user()->cant('changeRole', User::class)) {
|
||||
return \MessageResponse::error(trans('messages.access_denied'));
|
||||
}
|
||||
$User->syncRoles($request->roles);
|
||||
return \MessageResponse::data($User);
|
||||
}
|
||||
|
||||
public function updateInfo(Request $request)
|
||||
{
|
||||
auth('api')->user()->update($request->all());
|
||||
return \MessageResponse::success(trans('messages.success'));
|
||||
}
|
||||
|
||||
public function getInfo()
|
||||
{
|
||||
$user = auth('api')->user();
|
||||
$user->load('medical_center');
|
||||
return \MessageResponse::data([ 'user' => $user, 'roles' => auth('api')->user()->getRoleNames() ]);
|
||||
}
|
||||
public function getMessages()
|
||||
{
|
||||
$User = auth('api')->user();
|
||||
// $ReceivedMessages = $User->messagesReceived;
|
||||
// $SentMessages = $User->messagesSent;
|
||||
$SentMessages = Message::with('recipient_user')->where('sender_user_id', $User->id)->get();
|
||||
$ReceivedMessages = Message::with('sender_user')->where('recipient_user_id', $User->id)->get();
|
||||
|
||||
return \MessageResponse::data(['ReceivedMessages' => $ReceivedMessages, 'SentMessages' => $SentMessages]);
|
||||
}
|
||||
public function searchUser(Request $request)
|
||||
{
|
||||
// if (auth('api')->user()->cant('searchUser', User::class)) {
|
||||
// return \MessageResponse::error(trans('messages.access_denied'));
|
||||
// }
|
||||
$role = null;
|
||||
$medical_center_id = null;
|
||||
|
||||
$User = auth('api')->user();
|
||||
if ($User->hasRole('Supervisor') || $User->hasRole('User')) {
|
||||
$medical_center_id = $User->medical_center_id;
|
||||
if ($User->hasRole('Supervisor')){
|
||||
$role = 'Admin';
|
||||
}
|
||||
}
|
||||
|
||||
$users = User::where('id', '<>', $User->id)->select('id', 'name')->where('name', 'LIKE', '%'.$request->name.'%')
|
||||
->when($medical_center_id, function($query) use ($medical_center_id){
|
||||
$query->where('medical_center_id', $medical_center_id);
|
||||
})
|
||||
->when($role, function($query) use($role){
|
||||
$query->role($role);
|
||||
})
|
||||
->get();
|
||||
return \MessageResponse::data($users);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -19,6 +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,
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php // /app/Http/Middleware/Cors.php
|
||||
namespace App\Http\Middleware;
|
||||
use Closure;
|
||||
class Cors {
|
||||
|
||||
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
/* @var $response Response */
|
||||
$response = $next($request)
|
||||
->header('Access-Control-Allow-Origin', '*')
|
||||
->header('Access-Control-Allow-credentials', true)
|
||||
->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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -19,6 +19,6 @@ class VerifyCsrfToken extends Middleware
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
//
|
||||
'api/*'
|
||||
];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\Cycle;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
|
||||
class StoreCycleRequest extends FormRequest
|
||||
{
|
||||
public function authorize()
|
||||
{
|
||||
if ($this->method() == 'POST') {
|
||||
return auth('api')->check() && auth('api')->user()->can('store', Cycle::class);
|
||||
} else {
|
||||
$Cycle = $this->route('Cycle');
|
||||
return auth('api')->check() && $Cycle && auth('api')->user()->can('update', $Cycle);
|
||||
}
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
switch ($this->method()) {
|
||||
case 'POST': {
|
||||
return [
|
||||
'name' => 'required|max:100|unique:cycles',
|
||||
'date' => 'required',
|
||||
'sterilizer_id' => 'required',
|
||||
'cycle_number' => 'required',
|
||||
'note' => 'nullable',
|
||||
'packs' => 'required',
|
||||
];
|
||||
break;
|
||||
}
|
||||
case 'PUT':
|
||||
case 'PATCH': {
|
||||
$Cycle = $this->route('Cycle');
|
||||
return [
|
||||
'name' => 'required|max:100|unique:cycles,id,'.$Cycle->id,
|
||||
'date' => 'required',
|
||||
'sterilizer_id' => 'required',
|
||||
'cycle_number' => 'required',
|
||||
'note' => 'nullable',
|
||||
'packs' => 'required',
|
||||
];
|
||||
break;
|
||||
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\Item;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
|
||||
class StoreItemRequest extends FormRequest
|
||||
{
|
||||
public function authorize()
|
||||
{
|
||||
if ($this->method() == 'POST') {
|
||||
return auth('api')->check() && auth('api')->user()->can('store', Item::class);
|
||||
} else {
|
||||
$Item = $this->route('Item');
|
||||
return auth('api')->check() && $Item && auth('api')->user()->can('update', $Item);
|
||||
}
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
switch ($this->method()) {
|
||||
case 'POST': {
|
||||
return [
|
||||
'name' => 'required|max:100|unique:items',
|
||||
'unique_id' => 'required|max:100|unique:items',
|
||||
'size' => 'required',
|
||||
'specific' => 'required',
|
||||
'note' => 'nullable',
|
||||
];
|
||||
break;
|
||||
}
|
||||
case 'PUT':
|
||||
case 'PATCH': {
|
||||
$Item = $this->route('Item');
|
||||
return [
|
||||
'name' => 'required|max:100|unique:items,id,'.$Item->id,
|
||||
'unique_id' => 'required|max:100|unique:items,id,'.$Item->id,
|
||||
'size' => 'required',
|
||||
'specific' => 'required',
|
||||
'note' => 'nullable',
|
||||
];
|
||||
break;
|
||||
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\MedicalCenter;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
|
||||
class StoreMedicalCenterRequest extends FormRequest
|
||||
{
|
||||
public function authorize()
|
||||
{
|
||||
if ($this->method() == 'POST') {
|
||||
return auth('api')->check() && auth('api')->user()->can('store', MedicalCenter::class);
|
||||
} else {
|
||||
$MedicalCenter = $this->route('MedicalCenter');
|
||||
return auth('api')->check() && $MedicalCenter && auth('api')->user()->can('update', $MedicalCenter);
|
||||
}
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
switch ($this->method()) {
|
||||
case 'POST': {
|
||||
return [
|
||||
'name' => 'required|max:100|unique:medical_centers',
|
||||
// 'operatores.*.name'=>'required|string|max:255',
|
||||
// 'operatores.*.cell_number'=>'required|digits_between:10,11|unique:users',
|
||||
// 'operatores.*.password'=>'required|string|min:6',
|
||||
];
|
||||
break;
|
||||
}
|
||||
case 'PUT':
|
||||
case 'PATCH': {
|
||||
$MedicalCenter = $this->route('MedicalCenter');
|
||||
return [
|
||||
'name' => 'required|max:100|unique:medical_centers,id,'.$MedicalCenter->id,
|
||||
// 'operatores.*.name'=>'required|string|max:255',
|
||||
// 'operatores.*.cell_number'=>'required|digits_between:10,11|unique:users',
|
||||
// 'operatores.*.password'=>'required|string|min:6',
|
||||
];
|
||||
break;
|
||||
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\Message;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
|
||||
class StoreMessageRequest extends FormRequest
|
||||
{
|
||||
public function authorize()
|
||||
{
|
||||
if ($this->method() == 'POST') {
|
||||
return auth('api')->check() && auth('api')->user()->can('store', Message::class);
|
||||
} else {
|
||||
$Message = $this->route('Message');
|
||||
return auth('api')->check() && $Message && auth('api')->user()->can('update', $Message);
|
||||
}
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
switch ($this->method()) {
|
||||
case 'POST': {
|
||||
return [
|
||||
'title' => 'nullable',
|
||||
'message' => 'required',
|
||||
'user_id' => 'required',
|
||||
];
|
||||
break;
|
||||
}
|
||||
case 'PUT':
|
||||
case 'PATCH': {
|
||||
$Message = $this->route('Message');
|
||||
return [
|
||||
'title' => 'nullable',
|
||||
'message' => 'required',
|
||||
'user_id' => 'required',
|
||||
];
|
||||
break;
|
||||
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\Pack;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
|
||||
class StorePackRequest extends FormRequest
|
||||
{
|
||||
public function authorize()
|
||||
{
|
||||
if ($this->method() == 'POST') {
|
||||
return auth('api')->check() && auth('api')->user()->can('store', Pack::class);
|
||||
} else {
|
||||
$Pack = $this->route('Pack');
|
||||
return auth('api')->check() && $Pack && auth('api')->user()->can('update', $Pack);
|
||||
}
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
switch ($this->method()) {
|
||||
case 'POST': {
|
||||
return [
|
||||
'name' => 'required|max:100|unique:packs',
|
||||
'sterile_date' => 'required',
|
||||
'expire_date' => 'required',
|
||||
'sterilizer_id' => 'required',
|
||||
'cycle_number' => 'required',
|
||||
'lot_number' => 'required',
|
||||
'department' => 'required',
|
||||
'note' => 'nullable',
|
||||
'packages' => 'required',
|
||||
];
|
||||
break;
|
||||
}
|
||||
case 'PUT':
|
||||
case 'PATCH': {
|
||||
$Pack = $this->route('Pack');
|
||||
return [
|
||||
'name' => 'required|max:100|unique:packs,id,'.$Pack->id,
|
||||
'sterile_date' => 'required',
|
||||
'expire_date' => 'required',
|
||||
'sterilizer_id' => 'required',
|
||||
'cycle_number' => 'required',
|
||||
'lot_number' => 'required',
|
||||
'department' => 'required',
|
||||
'note' => 'nullable',
|
||||
'packages' => 'required',
|
||||
];
|
||||
break;
|
||||
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\Package;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
|
||||
class StorePackageRequest extends FormRequest
|
||||
{
|
||||
public function authorize()
|
||||
{
|
||||
if ($this->method() == 'POST') {
|
||||
return auth('api')->check() && auth('api')->user()->can('store', Package::class);
|
||||
} else {
|
||||
$Package = $this->route('Package');
|
||||
return auth('api')->check() && $Package && auth('api')->user()->can('update', $Package);
|
||||
}
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
switch ($this->method()) {
|
||||
case 'POST': {
|
||||
return [
|
||||
'name' => 'required|max:100|unique:packages',
|
||||
'note' => 'nullable',
|
||||
'items' => 'required',
|
||||
];
|
||||
break;
|
||||
}
|
||||
case 'PUT':
|
||||
case 'PATCH': {
|
||||
$Package = $this->route('Package');
|
||||
return [
|
||||
'name' => 'required|max:100|unique:packages,id,'.$Package->id,
|
||||
'unique_id' => 'required|max:100|unique:packages,id,'.$Package->id,
|
||||
'note' => 'nullable',
|
||||
'items' => 'required',
|
||||
];
|
||||
break;
|
||||
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\TestResult;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
|
||||
class StoreTestResultRequest extends FormRequest
|
||||
{
|
||||
public function authorize()
|
||||
{
|
||||
if ($this->method() == 'POST') {
|
||||
return auth('api')->check() && auth('api')->user()->can('store', TestResult::class);
|
||||
} else {
|
||||
$TestResult = $this->route('TestResult');
|
||||
return auth('api')->check() && $TestResult && auth('api')->user()->can('update', $TestResult);
|
||||
}
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
switch ($this->method()) {
|
||||
case 'POST': {
|
||||
return [
|
||||
'device_id' => 'required',
|
||||
// 'cycle_number' => 'required',
|
||||
'test_type_id' => 'required|numeric|exists:test_types,id',
|
||||
'result' => 'required',
|
||||
];
|
||||
break;
|
||||
}
|
||||
case 'PUT':
|
||||
case 'PATCH': {
|
||||
// $TestResult = $this->route('TestResult');
|
||||
return [
|
||||
'device_id' => 'required',
|
||||
// 'cycle_number' => 'required',
|
||||
'test_type_id' => 'required|numeric|exists:test_types,id',
|
||||
'result' => 'required',
|
||||
];
|
||||
break;
|
||||
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\TestType;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
|
||||
class StoreTestTypeRequest extends FormRequest
|
||||
{
|
||||
public function authorize()
|
||||
{
|
||||
if ($this->method() == 'POST') {
|
||||
return auth('api')->check() && auth('api')->user()->can('store', TestType::class);
|
||||
} else {
|
||||
$TestType = $this->route('TestType');
|
||||
return auth('api')->check() && $TestType && auth('api')->user()->can('update', $TestType);
|
||||
}
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
switch ($this->method()) {
|
||||
case 'POST': {
|
||||
return [
|
||||
'name' => 'required|max:100|unique:test_types',
|
||||
'unique_code' => 'required|max:100|unique:test_types',
|
||||
'device_label' => 'required',
|
||||
'info.*.name'=>'required',
|
||||
'info.*.type'=>'required',
|
||||
'info.*.size'=>'nullable',
|
||||
'info.*.parent_id'=>'nullable|numeric|exists:inputs,id',
|
||||
];
|
||||
break;
|
||||
}
|
||||
case 'PUT':
|
||||
case 'PATCH': {
|
||||
$TestType = $this->route('TestType');
|
||||
return [
|
||||
'name' => 'required|max:100|unique:test_types,id,'.$TestType->id,
|
||||
'unique_code' => 'required|max:100|unique:test_types,id,'.$TestType->id,
|
||||
'device_label' => 'required',
|
||||
'info.*.name'=>'required',
|
||||
'info.*.type'=>'required',
|
||||
'info.*.size'=>'nullable',
|
||||
'info.*.parent_id'=>'nullable|numeric|exists:inputs,id',
|
||||
];
|
||||
break;
|
||||
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\User;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
|
||||
class StoreUserRequest extends FormRequest
|
||||
{
|
||||
public function authorize()
|
||||
{
|
||||
if ($this->method() == 'POST') {
|
||||
return auth('api')->check() && auth('api')->user()->can('store', User::class);
|
||||
} else {
|
||||
$User = $this->route('User');
|
||||
return auth('api')->check() && $User && auth('api')->user()->can('update', $User);
|
||||
}
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
switch ($this->method()) {
|
||||
case 'POST': {
|
||||
return [
|
||||
'name'=>'required|string|max:255',
|
||||
'cell_number'=>'required|digits_between:10,11|unique:users',
|
||||
'password'=>'required|string|min:6',
|
||||
'medical_center_id' => 'required|numeric|exists:medical_centers,id',
|
||||
];
|
||||
break;
|
||||
}
|
||||
case 'PUT':
|
||||
case 'PATCH': {
|
||||
$User = $this->route('User');
|
||||
return [
|
||||
'name'=>'required|string|max:255',
|
||||
'cell_number'=>'required|digits_between:10,11|unique:users,id,'.$User->id,
|
||||
'password'=>'required|string|min:6',
|
||||
'medical_center_id' => 'required|numeric|exists:medical_centers,id',
|
||||
];
|
||||
break;
|
||||
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Input extends Model
|
||||
{
|
||||
public $fillable = ['name','type','size','test_type_id','parent_id'];
|
||||
public function test_type()
|
||||
{
|
||||
return $this->belongsTo('App\TestType');
|
||||
}
|
||||
public function parent()
|
||||
{
|
||||
return $this->belongsTo('App\Input', 'parent_id');
|
||||
}
|
||||
public function children()
|
||||
{
|
||||
return $this->hasMany('App\Input', 'parent_id');
|
||||
}
|
||||
public function options()
|
||||
{
|
||||
return $this->hasMany('App\Option');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class InputValue extends Model
|
||||
{
|
||||
public $fillable = ['value','test_result_id','input_id','option_id'];
|
||||
public function input()
|
||||
{
|
||||
return $this->belongsTo('App\Input');
|
||||
}
|
||||
public function test_result()
|
||||
{
|
||||
return $this->belongsTo('App\TestResult');
|
||||
}
|
||||
public function option()
|
||||
{
|
||||
return $this->belongsTo('App\Option');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Item extends Model
|
||||
{
|
||||
public $fillable = ['name', 'size', 'unique_id', 'specific', 'note', 'user_id'];
|
||||
public function packages()
|
||||
{
|
||||
return $this->belongsToMany('App\Package', 'item_package');
|
||||
}
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo('App\User');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class MedicalCenter extends Model
|
||||
{
|
||||
public $fillable = ['name'];
|
||||
public function users()
|
||||
{
|
||||
return $this->hasMany('App\User');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
class Message extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
public $fillable = ['title', 'text', 'status', 'recipient_user_id', 'sender_user_id'];
|
||||
public function sender_user()
|
||||
{
|
||||
return $this->belongsTo('App\User', 'sender_user_id');
|
||||
}
|
||||
public function recipient_user()
|
||||
{
|
||||
return $this->belongsTo('App\User', 'recipient_user_id');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Option extends Model
|
||||
{
|
||||
public $fillable = ['title','input_id'];
|
||||
public function input()
|
||||
{
|
||||
return $this->belongsTo('App\Input');
|
||||
}
|
||||
public function input_value()
|
||||
{
|
||||
return $this->hasOne('App\InputValue');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Pack extends Model
|
||||
{
|
||||
public $fillable = ['name', 'sterile_date', 'expire_date', 'sterilizer_id', 'cycle_number', 'lot_number', 'department', 'user_id', 'note'];
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo('App\User');
|
||||
}
|
||||
public function packages()
|
||||
{
|
||||
return $this->belongsToMany('App\Package', 'pack_package');
|
||||
}
|
||||
public function cycles()
|
||||
{
|
||||
return $this->belongsToMany('App\Cycle', 'cycle_pack');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Package extends Model
|
||||
{
|
||||
public $fillable = ['name', 'unique_id', 'user_id', 'note', 'verified'];
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo('App\User');
|
||||
}
|
||||
public function items()
|
||||
{
|
||||
return $this->belongsToMany('App\Item', 'item_package');
|
||||
}
|
||||
public function packs()
|
||||
{
|
||||
return $this->belongsToMany('App\Pack', 'pack_package');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\User;
|
||||
use App\Cycle;
|
||||
use Doctrine\Tests\Common\Inflector\InflectorTest;
|
||||
|
||||
class CyclePolicy
|
||||
{
|
||||
public function delete(User $User, Cycle $Cycle)
|
||||
{
|
||||
// if($User->hasRole('Admin') && $Cycle->users->count() == 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
public function update(User $User, Cycle $Cycle)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
public function store(User $User)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
public function verifyCycle(User $User, Cycle $Cycle)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\User;
|
||||
use App\Item;
|
||||
use Doctrine\Tests\Common\Inflector\InflectorTest;
|
||||
|
||||
class ItemPolicy
|
||||
{
|
||||
public function delete(User $User, Item $Item)
|
||||
{
|
||||
// if($User->hasRole('Admin') && $Item->users->count() == 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
public function update(User $User, Item $Item)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
public function store(User $User)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\User;
|
||||
use App\MedicalCenter;
|
||||
use Doctrine\Tests\Common\Inflector\InflectorTest;
|
||||
|
||||
class MedicalCenterPolicy
|
||||
{
|
||||
public function list(User $User)
|
||||
{
|
||||
if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
public function delete(User $User, MedicalCenter $MedicalCenter)
|
||||
{
|
||||
if($User->hasRole('Admin') && $MedicalCenter->users->count() == 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
public function update(User $User, MedicalCenter $MedicalCenter)
|
||||
{
|
||||
if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
public function store(User $User)
|
||||
{
|
||||
if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
public function getByMedicalCenter(User $User, MedicalCenter $MedicalCenter)
|
||||
{
|
||||
if($User->hasRole('Admin') || $MedicalCenter->id == $User->medical_center_id) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\User;
|
||||
use App\Message;
|
||||
use Doctrine\Tests\Common\Inflector\InflectorTest;
|
||||
|
||||
class MessagePolicy
|
||||
{
|
||||
public function delete(User $User, Message $Message)
|
||||
{
|
||||
// if($Message->sender_user_id == $User->id || $Message->recipient_user_id == $User->id)
|
||||
return true;
|
||||
}
|
||||
|
||||
public function update(User $User, Message $Message)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
public function store(User $User)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\User;
|
||||
use App\Pack;
|
||||
use Doctrine\Tests\Common\Inflector\InflectorTest;
|
||||
|
||||
class PackPolicy
|
||||
{
|
||||
public function delete(User $User, Pack $Pack)
|
||||
{
|
||||
// if($User->hasRole('Admin') && $Pack->users->count() == 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
public function update(User $User, Pack $Pack)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
public function store(User $User)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\User;
|
||||
use App\Package;
|
||||
use Doctrine\Tests\Common\Inflector\InflectorTest;
|
||||
|
||||
class PackagePolicy
|
||||
{
|
||||
public function delete(User $User, Package $Package)
|
||||
{
|
||||
// if($User->hasRole('Admin') && $Package->users->count() == 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
public function update(User $User, Package $Package)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
public function store(User $User)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
public function verifyPackage(User $User, Package $Package)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\User;
|
||||
use App\TestResult;
|
||||
use Doctrine\Tests\Common\Inflector\InflectorTest;
|
||||
|
||||
class TestResultPolicy
|
||||
{
|
||||
|
||||
public function delete(User $User, TestResult $TestResult)
|
||||
{
|
||||
if($User->hasRole('Admin') || ($User->hasRole('User') && $TestResult->verified == 'NotVerified' && $TestResult->user_id == $User->id))
|
||||
return true;
|
||||
}
|
||||
|
||||
public function update(User $User, TestResult $TestResult)
|
||||
{
|
||||
if($User->hasRole('Admin') || $TestResult->user_id == $User->id)
|
||||
return true;
|
||||
}
|
||||
|
||||
public function store(User $User)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public function verifyTestResult(User $User, TestResult $TestResult)
|
||||
{
|
||||
$TR_MID = $TestResult->user->medical_center_id;
|
||||
$User_MID = $User->medical_center_id;
|
||||
|
||||
if($User->hasRole('Admin') || ( $User->hasRole('Supervisor') && $TR_MID == $User_MID))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\User;
|
||||
use App\TestType;
|
||||
use Doctrine\Tests\Common\Inflector\InflectorTest;
|
||||
|
||||
class TestTypePolicy
|
||||
{
|
||||
public function list(User $User)
|
||||
{
|
||||
if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
public function delete(User $User, TestType $TestType)
|
||||
{
|
||||
if($User->hasRole('Admin') )
|
||||
return true;
|
||||
}
|
||||
|
||||
public function update(User $User, TestType $TestType)
|
||||
{
|
||||
if($User->hasRole('Admin') && $TestType->test_results->count() == 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
public function store(User $User)
|
||||
{
|
||||
if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
public function getInputs(User $User)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
public function generateBarcode(User $User, TestType $TestType)
|
||||
{
|
||||
if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\User;
|
||||
use Doctrine\Tests\Common\Inflector\InflectorTest;
|
||||
|
||||
class UserPolicy
|
||||
{
|
||||
public function list(User $User)
|
||||
{
|
||||
if($User->hasRole('Admin|Supervisor'))
|
||||
return true;
|
||||
}
|
||||
public function delete(User $User, User $Operator)
|
||||
{
|
||||
if($User->hasRole('Admin') && $Operator->test_results->count() == 0 && $Operator->test_types->count() == 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
public function update(User $User, User $Operator)
|
||||
{
|
||||
if($User->id == $Operator->id)
|
||||
return true;
|
||||
}
|
||||
|
||||
public function store(User $User)
|
||||
{
|
||||
if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
public function changeRole(User $User)
|
||||
{
|
||||
if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
public function changeStatus(User $User)
|
||||
{
|
||||
if($User->hasRole('Admin|Supervisor'))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,7 @@ class AppServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
//
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
|
||||
use Laravel\Passport\Passport;
|
||||
|
||||
class AuthServiceProvider extends ServiceProvider
|
||||
{
|
||||
@@ -13,7 +14,9 @@ class AuthServiceProvider extends ServiceProvider
|
||||
* @var array
|
||||
*/
|
||||
protected $policies = [
|
||||
// 'App\Model' => 'App\Policies\ModelPolicy',
|
||||
'App\MedicalCenter' => 'App\Policies\MedicalCenterPolicy',
|
||||
'App\User' => 'App\Policies\UserPolicy',
|
||||
'App\TestType' => 'App\Policies\TestTypePolicy',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -25,6 +28,6 @@ class AuthServiceProvider extends ServiceProvider
|
||||
{
|
||||
$this->registerPolicies();
|
||||
|
||||
//
|
||||
Passport::routes();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class MessageServiceProvider extends ServiceProvider
|
||||
{
|
||||
protected $defer = true;
|
||||
|
||||
|
||||
public function register()
|
||||
{
|
||||
$this->app->singleton('messages', function() {
|
||||
return new \App\Appended\Classes\Common\Response\MessageResponse;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the services provided by the provider.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function provides()
|
||||
{
|
||||
return [MessageResponse::class];
|
||||
}
|
||||
}
|
||||
@@ -35,6 +35,9 @@ class RouteServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function map()
|
||||
{
|
||||
|
||||
$this->mapRoutes();
|
||||
|
||||
$this->mapApiRoutes();
|
||||
|
||||
$this->mapWebRoutes();
|
||||
@@ -66,8 +69,21 @@ class RouteServiceProvider extends ServiceProvider
|
||||
protected function mapApiRoutes()
|
||||
{
|
||||
Route::prefix('api')
|
||||
->middleware('api')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/api.php'));
|
||||
->middleware('api')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/api.php'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the routes without middleware for the application.
|
||||
*
|
||||
* These routes are typically stateless.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function mapRoutes()
|
||||
{
|
||||
Route::namespace($this->namespace)
|
||||
->group(base_path('routes/routes.php'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class TestResult extends Model
|
||||
{
|
||||
public $fillable = ['result','verified','test_type_id','user_id','device_id', 'cycle_number', 'date'];
|
||||
public function test_type()
|
||||
{
|
||||
return $this->belongsTo('App\TestType');
|
||||
}
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo('App\User');
|
||||
}
|
||||
public function input_values()
|
||||
{
|
||||
return $this->hasMany('App\InputValue');
|
||||
}
|
||||
public function TitleImage()
|
||||
{
|
||||
return $this->morphToMany('App\Gallery', 'uploadable')->wherePivot('image_role', 'TitleImage');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
class TestType extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
public $fillable = ['name', 'unique_code', 'user_id', 'bar_code', 'device_label'];
|
||||
// protected $softDelete = true;
|
||||
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo('App\User');
|
||||
}
|
||||
public function test_results()
|
||||
{
|
||||
return $this->hasMany('App\TestResult');
|
||||
}
|
||||
public function inputs()
|
||||
{
|
||||
return $this->hasMany('App\Input');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
namespace App\Transformers;
|
||||
class Json
|
||||
{
|
||||
public static function response($data = null, $message = null)
|
||||
{
|
||||
return [
|
||||
'data' => $data,
|
||||
'message' => $message,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Uploadable extends Model
|
||||
{
|
||||
|
||||
protected $fillable = ['uploadable_id', 'uploadable_type', 'gallery_id', 'image_role'];
|
||||
public $timestamps = false;
|
||||
|
||||
public function gallery()
|
||||
{
|
||||
return $this->belongsTo('App\Gallery');
|
||||
}
|
||||
|
||||
}
|
||||
+42
-5
@@ -5,20 +5,21 @@ namespace App;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Laravel\Passport\HasApiTokens;
|
||||
use Spatie\Permission\Traits\HasRoles;
|
||||
|
||||
class User extends Authenticatable
|
||||
{
|
||||
use Notifiable;
|
||||
use Notifiable, HasApiTokens, HasRoles;
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $fillable = [
|
||||
'name', 'email', 'password',
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
'name', 'email', 'password','status','medical_center_id','address', 'gender'
|
||||
];
|
||||
/**
|
||||
* The attributes that should be hidden for arrays.
|
||||
*
|
||||
@@ -36,4 +37,40 @@ class User extends Authenticatable
|
||||
protected $casts = [
|
||||
'email_verified_at' => 'datetime',
|
||||
];
|
||||
|
||||
public function medical_center()
|
||||
{
|
||||
return $this->belongsTo('App\MedicalCenter');
|
||||
}
|
||||
public function test_results()
|
||||
{
|
||||
return $this->hasMany('App\TestResult');
|
||||
}
|
||||
public function test_types()
|
||||
{
|
||||
return $this->hasMany('App\TestType');
|
||||
}
|
||||
|
||||
public function findForPassport($username)
|
||||
{
|
||||
return $this->where('cell_number', $username)->where('status', 'Active')->first();
|
||||
}
|
||||
|
||||
public function messagesSent()
|
||||
{
|
||||
return $this->hasMany('App\Message', 'sender_user_id');
|
||||
}
|
||||
|
||||
public function messagesReceived()
|
||||
{
|
||||
return $this->hasMany('App\Message', 'recipient_user_id');
|
||||
}
|
||||
public function packages()
|
||||
{
|
||||
return $this->hasMany('App\Package');
|
||||
}
|
||||
public function items()
|
||||
{
|
||||
return $this->hasMany('App\Item');
|
||||
}
|
||||
}
|
||||
|
||||
+7
-3
@@ -11,14 +11,17 @@
|
||||
"php": "^7.1.3",
|
||||
"fideloper/proxy": "^4.0",
|
||||
"laravel/framework": "5.8.*",
|
||||
"laravel/tinker": "^1.0"
|
||||
"laravel/passport": "^7.2",
|
||||
"laravel/tinker": "^1.0",
|
||||
"milon/barcode": "^5.3",
|
||||
"spatie/laravel-permission": "^2.36"
|
||||
},
|
||||
"require-dev": {
|
||||
"beyondcode/laravel-dump-server": "^1.0",
|
||||
"filp/whoops": "^2.0",
|
||||
"fzaninotto/faker": "^1.4",
|
||||
"mockery/mockery": "^1.0",
|
||||
"nunomaduro/collision": "^3.0",
|
||||
"nunomaduro/collision": "^2.0",
|
||||
"phpunit/phpunit": "^7.5"
|
||||
},
|
||||
"config": {
|
||||
@@ -33,7 +36,8 @@
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"App\\": "app/"
|
||||
"App\\": "app/",
|
||||
"Packages\\": "packages/"
|
||||
},
|
||||
"classmap": [
|
||||
"database/seeds",
|
||||
|
||||
Generated
+1107
-79
File diff suppressed because it is too large
Load Diff
+5
-2
@@ -67,7 +67,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'timezone' => 'UTC',
|
||||
'timezone' => 'Asia/Tehran',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -174,6 +174,7 @@ return [
|
||||
// App\Providers\BroadcastServiceProvider::class,
|
||||
App\Providers\EventServiceProvider::class,
|
||||
App\Providers\RouteServiceProvider::class,
|
||||
Laravel\Passport\PassportServiceProvider::class,
|
||||
|
||||
],
|
||||
|
||||
@@ -225,7 +226,9 @@ return [
|
||||
'URL' => Illuminate\Support\Facades\URL::class,
|
||||
'Validator' => Illuminate\Support\Facades\Validator::class,
|
||||
'View' => Illuminate\Support\Facades\View::class,
|
||||
|
||||
'MessageResponse' => Packages\Messaging\src\Facades\MessageResponse::class,
|
||||
'DNS1D' => Milon\Barcode\Facades\DNS1DFacade::class,
|
||||
'DNS2D' => Milon\Barcode\Facades\DNS2DFacade::class,
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
+1
-2
@@ -42,9 +42,8 @@ return [
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'driver' => 'token',
|
||||
'driver' => 'passport',
|
||||
'provider' => 'users',
|
||||
'hash' => false,
|
||||
],
|
||||
],
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'store_path' => public_path("Barcodes/"),
|
||||
'store_path_qr' => public_path("QRCodes/"),
|
||||
];
|
||||
+1
-1
@@ -97,6 +97,6 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'),
|
||||
'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'),
|
||||
|
||||
];
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
@@ -119,7 +117,6 @@ return [
|
||||
|
||||
'options' => [
|
||||
'cluster' => env('REDIS_CLUSTER', 'predis'),
|
||||
'prefix' => Str::slug(env('APP_NAME', 'laravel'), '_').'_database_',
|
||||
],
|
||||
|
||||
'default' => [
|
||||
|
||||
@@ -50,8 +50,8 @@ return [
|
||||
|
||||
'public' => [
|
||||
'driver' => 'local',
|
||||
'root' => storage_path('app/public'),
|
||||
'url' => env('APP_URL').'/storage',
|
||||
'root' => public_path('uploads'),
|
||||
'url' => env('APP_URL') . '/storage',
|
||||
'visibility' => 'public',
|
||||
],
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Image Driver
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Intervention Image supports "GD Library" and "Imagick" to process images
|
||||
| internally. You may choose one of them according to your PHP
|
||||
| configuration. By default PHP's "GD Library" implementation is used.
|
||||
|
|
||||
| Supported: "gd", "imagick"
|
||||
|
|
||||
*/
|
||||
|
||||
'driver' => 'gd'
|
||||
|
||||
];
|
||||
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'models' => [
|
||||
|
||||
/*
|
||||
* When using the "HasPermissions" trait from this package, we need to know which
|
||||
* Eloquent model should be used to retrieve your permissions. Of course, it
|
||||
* is often just the "Permission" model but you may use whatever you like.
|
||||
*
|
||||
* The model you want to use as a Permission model needs to implement the
|
||||
* `Spatie\Permission\Contracts\Permission` contract.
|
||||
*/
|
||||
|
||||
'permission' => Spatie\Permission\Models\Permission::class,
|
||||
|
||||
/*
|
||||
* When using the "HasRoles" trait from this package, we need to know which
|
||||
* Eloquent model should be used to retrieve your roles. Of course, it
|
||||
* is often just the "Role" model but you may use whatever you like.
|
||||
*
|
||||
* The model you want to use as a Role model needs to implement the
|
||||
* `Spatie\Permission\Contracts\Role` contract.
|
||||
*/
|
||||
|
||||
'role' => Spatie\Permission\Models\Role::class,
|
||||
|
||||
],
|
||||
|
||||
'table_names' => [
|
||||
|
||||
/*
|
||||
* When using the "HasRoles" trait from this package, we need to know which
|
||||
* table should be used to retrieve your roles. We have chosen a basic
|
||||
* default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'roles' => 'roles',
|
||||
|
||||
/*
|
||||
* When using the "HasPermissions" trait from this package, we need to know which
|
||||
* table should be used to retrieve your permissions. We have chosen a basic
|
||||
* default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'permissions' => 'permissions',
|
||||
|
||||
/*
|
||||
* When using the "HasPermissions" trait from this package, we need to know which
|
||||
* table should be used to retrieve your models permissions. We have chosen a
|
||||
* basic default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'model_has_permissions' => 'model_has_permissions',
|
||||
|
||||
/*
|
||||
* When using the "HasRoles" trait from this package, we need to know which
|
||||
* table should be used to retrieve your models roles. We have chosen a
|
||||
* basic default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'model_has_roles' => 'model_has_roles',
|
||||
|
||||
/*
|
||||
* When using the "HasRoles" trait from this package, we need to know which
|
||||
* table should be used to retrieve your roles permissions. We have chosen a
|
||||
* basic default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'role_has_permissions' => 'role_has_permissions',
|
||||
],
|
||||
|
||||
'column_names' => [
|
||||
|
||||
/*
|
||||
* Change this if you want to name the related model primary key other than
|
||||
* `model_id`.
|
||||
*
|
||||
* For example, this would be nice if your primary keys are all UUIDs. In
|
||||
* that case, name this `model_uuid`.
|
||||
*/
|
||||
|
||||
'model_morph_key' => 'model_id',
|
||||
],
|
||||
|
||||
/*
|
||||
* When set to true, the required permission/role names are added to the exception
|
||||
* message. This could be considered an information leak in some contexts, so
|
||||
* the default setting is false here for optimum safety.
|
||||
*/
|
||||
|
||||
'display_permission_in_exception' => false,
|
||||
|
||||
'cache' => [
|
||||
|
||||
/*
|
||||
* By default all permissions are cached for 24 hours to speed up performance.
|
||||
* When permissions or roles are updated the cache is flushed automatically.
|
||||
*/
|
||||
|
||||
'expiration_time' => \DateInterval::createFromDateString('24 hours'),
|
||||
|
||||
/*
|
||||
* The cache key used to store all permissions.
|
||||
*/
|
||||
|
||||
'key' => 'spatie.permission.cache',
|
||||
|
||||
/*
|
||||
* When checking for a permission against a model by passing a Permission
|
||||
* instance to the check, this key determines what attribute on the
|
||||
* Permissions model is used to cache against.
|
||||
*
|
||||
* Ideally, this should match your preferred way of checking permissions, eg:
|
||||
* `$user->can('view-posts')` would be 'name'.
|
||||
*/
|
||||
|
||||
'model_key' => 'name',
|
||||
|
||||
/*
|
||||
* You may optionally indicate a specific cache driver to use for permission and
|
||||
* role caching using any of the `store` drivers listed in the cache.php config
|
||||
* file. Using 'default' here means to use the `default` set in cache.php.
|
||||
*/
|
||||
|
||||
'store' => 'default',
|
||||
],
|
||||
];
|
||||
@@ -43,5 +43,9 @@ return [
|
||||
'tolerance' => env('STRIPE_WEBHOOK_TOLERANCE', 300),
|
||||
],
|
||||
],
|
||||
'vue_client' => [
|
||||
'id' => env('MIX_APP_CLIENT_ID'),
|
||||
'secret' => env('MIX_APP_CLIENT_SECRET'),
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
@@ -1,2 +1 @@
|
||||
*.sqlite
|
||||
*.sqlite-journal
|
||||
|
||||
+3
-7
@@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateUsersTable extends Migration
|
||||
class CreateMedicalCentersTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
@@ -13,13 +13,9 @@ class CreateUsersTable extends Migration
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('users', function (Blueprint $table) {
|
||||
Schema::create('medical_centers', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->string('email')->unique();
|
||||
$table->timestamp('email_verified_at')->nullable();
|
||||
$table->string('password');
|
||||
$table->rememberToken();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
@@ -31,6 +27,6 @@ class CreateUsersTable extends Migration
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('users');
|
||||
Schema::dropIfExists('medical_centers');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateUsersTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('users', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->string('email')->nullable();
|
||||
$table->string('country_code')->default('0098');;
|
||||
$table->string('cell_number');
|
||||
$table->enum('gender', ['Male','FeMale'])->default('Male');
|
||||
$table->enum('verified', ['Verified','NotVerified'])->default('NotVerified');
|
||||
$table->enum('status', ['Active','Suspended'])->default('Active');
|
||||
$table->unsignedBigInteger('medical_center_id');
|
||||
$table->foreign('medical_center_id')->references('id')->on('medical_centers');
|
||||
$table->string('password');
|
||||
$table->string('address')->nullable();
|
||||
$table->rememberToken();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('users');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateTestTypesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('test_types', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name')->unique();
|
||||
$table->string('unique_code')->unique();
|
||||
$table->string('bar_code');
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('test_types');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateTestResultsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('test_results', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('info');
|
||||
$table->string('cycle_number');
|
||||
$table->date('date')->nullable();
|
||||
$table->string('result');
|
||||
$table->text('description');
|
||||
$table->smallInteger('verified');
|
||||
$table->string('device_id');
|
||||
$table->string('device_label');
|
||||
$table->integer('autoclave_id');
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users');
|
||||
$table->unsignedBigInteger('test_type_id');
|
||||
$table->foreign('test_type_id')->references('id')->on('test_types');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('test_results');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateInputsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('inputs', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->string('type');
|
||||
$table->unsignedBigInteger('test_type_id');
|
||||
$table->foreign('test_type_id')->references('id')->on('test_types');
|
||||
$table->unsignedBigInteger('parent_id')->nullable();
|
||||
$table->foreign('parent_id')->references('id')->on('inputs');
|
||||
$table->string('size');
|
||||
$table->string('value');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('inputs');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateInputValuesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('input_values', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('value');
|
||||
$table->unsignedBigInteger('input_id');
|
||||
$table->foreign('input_id')->references('id')->on('inputs');
|
||||
$table->unsignedBigInteger('test_result_id');
|
||||
$table->foreign('test_result_id')->references('id')->on('test_results');
|
||||
$table->unsignedBigInteger('option_id');
|
||||
$table->foreign('option_id')->references('id')->on('options');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('input_values');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateOptionsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('options', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('title');
|
||||
$table->unsignedBigInteger('input_id');
|
||||
$table->foreign('input_id')->references('id')->on('inputs');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('options');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateGalleriesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('galleries', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users');
|
||||
$table->string('path');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('galleries');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateUploadablesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('uploadables', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->unsignedBigInteger('uploadable_id');
|
||||
$table->string('uploadable_type');
|
||||
$table->unsignedBigInteger('gallery_id');
|
||||
$table->foreign('gallery_id')->references('id')->on('galleries');
|
||||
$table->string('image_role');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('uploadables');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreatePermissionTables extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
$tableNames = config('permission.table_names');
|
||||
$columnNames = config('permission.column_names');
|
||||
|
||||
Schema::create($tableNames['permissions'], function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->string('name');
|
||||
$table->string('guard_name');
|
||||
$table->timestamps();
|
||||
});
|
||||
|
||||
Schema::create($tableNames['roles'], function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->string('name');
|
||||
$table->string('guard_name');
|
||||
$table->timestamps();
|
||||
});
|
||||
|
||||
Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames) {
|
||||
$table->unsignedInteger('permission_id');
|
||||
|
||||
$table->string('model_type');
|
||||
$table->unsignedBigInteger($columnNames['model_morph_key']);
|
||||
$table->index([$columnNames['model_morph_key'], 'model_type', ]);
|
||||
|
||||
$table->foreign('permission_id')
|
||||
->references('id')
|
||||
->on($tableNames['permissions'])
|
||||
->onDelete('cascade');
|
||||
|
||||
$table->primary(['permission_id', $columnNames['model_morph_key'], 'model_type'],
|
||||
'model_has_permissions_permission_model_type_primary');
|
||||
});
|
||||
|
||||
Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames) {
|
||||
$table->unsignedInteger('role_id');
|
||||
|
||||
$table->string('model_type');
|
||||
$table->unsignedBigInteger($columnNames['model_morph_key']);
|
||||
$table->index([$columnNames['model_morph_key'], 'model_type', ]);
|
||||
|
||||
$table->foreign('role_id')
|
||||
->references('id')
|
||||
->on($tableNames['roles'])
|
||||
->onDelete('cascade');
|
||||
|
||||
$table->primary(['role_id', $columnNames['model_morph_key'], 'model_type'],
|
||||
'model_has_roles_role_model_type_primary');
|
||||
});
|
||||
|
||||
Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) {
|
||||
$table->unsignedInteger('permission_id');
|
||||
$table->unsignedInteger('role_id');
|
||||
|
||||
$table->foreign('permission_id')
|
||||
->references('id')
|
||||
->on($tableNames['permissions'])
|
||||
->onDelete('cascade');
|
||||
|
||||
$table->foreign('role_id')
|
||||
->references('id')
|
||||
->on($tableNames['roles'])
|
||||
->onDelete('cascade');
|
||||
|
||||
$table->primary(['permission_id', 'role_id']);
|
||||
});
|
||||
|
||||
app('cache')
|
||||
->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null)
|
||||
->forget(config('permission.cache.key'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
$tableNames = config('permission.table_names');
|
||||
|
||||
Schema::drop($tableNames['role_has_permissions']);
|
||||
Schema::drop($tableNames['model_has_roles']);
|
||||
Schema::drop($tableNames['model_has_permissions']);
|
||||
Schema::drop($tableNames['roles']);
|
||||
Schema::drop($tableNames['permissions']);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreatePackagesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('packages', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->string('unique_id');
|
||||
$table->text('note')->nullable();
|
||||
$table->enum('verified', ['Verified', 'NotVerified']);
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('packages');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateItemsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('items', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->string('size');
|
||||
$table->string('unique_id');
|
||||
$table->string('specific');
|
||||
$table->text('note')->nullable();
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('items');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateItemPackageTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('item_package', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->unsignedBigInteger('item_id');
|
||||
$table->foreign('item_id')->references('id')->on('items');
|
||||
$table->unsignedBigInteger('package_id');
|
||||
$table->foreign('package_id')->references('id')->on('packages');
|
||||
// $table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('item_package');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateCyclesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('cycles', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->date('date');
|
||||
$table->string('sterilizer_id');
|
||||
$table->string('cycle_number');
|
||||
$table->text('note')->nullable();
|
||||
$table->enum('verified',['Verified', 'NotVerified']);
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('cycles');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateTablePackes extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('packes', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->date('sterile_date')->nullable();
|
||||
$table->date('expire_date')->nullable();
|
||||
$table->string('sterilizer_id');
|
||||
$table->string('cycle_number');
|
||||
$table->string('lot_number');
|
||||
$table->string('department');
|
||||
$table->text('note')->nullable();
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('packes');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateTablePackPackage extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('pack_package', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->unsignedBigInteger('pack_id');
|
||||
$table->foreign('pack_id')->references('id')->on('packes');
|
||||
$table->unsignedBigInteger('package_id');
|
||||
$table->foreign('package_id')->references('id')->on('packages');
|
||||
// $table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('pack_package');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateTableCyclePack extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('cycle_pack', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->unsignedBigInteger('pack_id');
|
||||
$table->foreign('pack_id')->references('id')->on('packes');
|
||||
$table->unsignedBigInteger('cycle_id');
|
||||
$table->foreign('cycle_id')->references('id')->on('cycles');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('cycle_pack');
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreatePasswordResetsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('password_resets', function (Blueprint $table) {
|
||||
$table->string('email')->index();
|
||||
$table->string('token');
|
||||
$table->timestamp('created_at')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('password_resets');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreatePackagesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('packages', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->string('unique_id');
|
||||
$table->text('note')->nullable();
|
||||
$table->enum('verified', ['Verified', 'NotVerified']);
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('packages');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateItemsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('items', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->string('size');
|
||||
$table->string('unique_id');
|
||||
$table->string('specific');
|
||||
$table->text('note')->nullable();
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('items');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateItemPackageTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('item_package', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->unsignedBigInteger('item_id');
|
||||
$table->foreign('item_id')->references('id')->on('items');
|
||||
$table->unsignedBigInteger('package_id');
|
||||
$table->foreign('package_id')->references('id')->on('packages');
|
||||
// $table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('item_package');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateCyclesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('cycles', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->date('date');
|
||||
$table->string('sterilizer_id');
|
||||
$table->text('note')->nullable();
|
||||
$table->enum('verified',['Verified', 'NotVerified']);
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('cycles');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateTablePackes extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('packes', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->string('unique_id');
|
||||
$table->date('sterile_date')->nullable();
|
||||
$table->date('expire_date')->nullable();
|
||||
$table->string('sterilizer_id');
|
||||
$table->string('cycle_number');
|
||||
$table->string('lot_number');
|
||||
$table->string('department');
|
||||
$table->text('note')->nullable();
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('packes');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateTablePackPackage extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('pack_package', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->unsignedBigInteger('pack_id');
|
||||
$table->foreign('pack_id')->references('id')->on('packes');
|
||||
$table->unsignedBigInteger('package_id');
|
||||
$table->foreign('package_id')->references('id')->on('packages');
|
||||
// $table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('pack_package');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateTableCyclePack extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('cycle_pack', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->unsignedBigInteger('pack_id');
|
||||
$table->foreign('pack_id')->references('id')->on('packes');
|
||||
$table->unsignedBigInteger('cycle_id');
|
||||
$table->foreign('cycle_id')->references('id')->on('cycles');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('cycle_pack');
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user