From 2872e0903903a1a2d2b30243b59b1fb94aafe5e4 Mon Sep 17 00:00:00 2001 From: Fayyazi Date: Wed, 21 Aug 2019 10:09:27 +0430 Subject: [PATCH] add cycle --- app/Cycle.php | 19 ++++ app/Http/Controllers/CycleController.php | 86 +++++++++++++++ app/Http/Controllers/ItemController.php | 1 - app/Http/Controllers/PackageController.php | 6 +- app/Http/Requests/StoreCycleRequest.php | 52 +++++++++ app/Package.php | 4 + app/Policies/CyclePolicy.php | 34 ++++++ ...9_04_11_104917_create_test_types_table.php | 1 - ...04_11_105013_create_test_results_table.php | 2 +- ..._19_103249_create_cycle_package_table.php} | 10 +- ...2019_08_19_105247_create_cycles_table.php} | 10 +- ...11_104648_create_medical_centers_table.php | 32 ------ .../2019_04_11_104800_create_users_table.php | 42 -------- ...9_04_11_104917_create_test_types_table.php | 36 ------- ...04_11_105013_create_test_results_table.php | 43 -------- .../2019_04_11_105057_create_inputs_table.php | 39 ------- ...04_11_105220_create_input_values_table.php | 38 ------- ...2019_04_11_105508_create_options_table.php | 34 ------ ...19_04_11_105601_create_galleries_table.php | 34 ------ ..._04_11_105658_create_uploadables_table.php | 36 ------- ..._04_18_152732_create_permission_tables.php | 102 ------------------ .../2019_07_16_100154_create_items_table.php | 35 ------ routes/api.php | 2 + 23 files changed, 213 insertions(+), 485 deletions(-) create mode 100644 app/Cycle.php create mode 100644 app/Http/Controllers/CycleController.php create mode 100644 app/Http/Requests/StoreCycleRequest.php create mode 100644 app/Policies/CyclePolicy.php rename database/{migrations/2019_07_16_100249_create_item_package_table.php => 2019_08_19_103249_create_cycle_package_table.php} (66%) rename database/{migrations/2019_07_16_095633_create_packages_table.php => 2019_08_19_105247_create_cycles_table.php} (71%) delete mode 100644 database/migrations/2019_04_11_104648_create_medical_centers_table.php delete mode 100644 database/migrations/2019_04_11_104800_create_users_table.php delete mode 100644 database/migrations/2019_04_11_104917_create_test_types_table.php delete mode 100644 database/migrations/2019_04_11_105013_create_test_results_table.php delete mode 100644 database/migrations/2019_04_11_105057_create_inputs_table.php delete mode 100644 database/migrations/2019_04_11_105220_create_input_values_table.php delete mode 100644 database/migrations/2019_04_11_105508_create_options_table.php delete mode 100644 database/migrations/2019_04_11_105601_create_galleries_table.php delete mode 100644 database/migrations/2019_04_11_105658_create_uploadables_table.php delete mode 100644 database/migrations/2019_04_18_152732_create_permission_tables.php delete mode 100644 database/migrations/2019_07_16_100154_create_items_table.php diff --git a/app/Cycle.php b/app/Cycle.php new file mode 100644 index 00000000..5442b901 --- /dev/null +++ b/app/Cycle.php @@ -0,0 +1,19 @@ +belongsTo('App\User'); + } + public function packages() + { + return $this->belongsToMany('App\Package', 'cycle_package'); + } + +} diff --git a/app/Http/Controllers/CycleController.php b/app/Http/Controllers/CycleController.php new file mode 100644 index 00000000..fd11b31f --- /dev/null +++ b/app/Http/Controllers/CycleController.php @@ -0,0 +1,86 @@ +has('name') && $request->name, function($query) use($request){ + $query->where('name', 'LIKE', '%'.$request->name.'%'); + }) + ->when($request->has('result') && $request->result, function($query) use($request){ + $query->where('result', $request->result); + }) + ->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($Cycles); + } + public function create() + { + + } + public function show(Cycle $Cycle) + { + $Cycle->load('user', 'packages'); + return \MessageResponse::data($Cycle); + } + public function store(StoreCycleRequest $request) + { + $UniqueID = substr(base_convert(sha1(uniqid(mt_rand())), 16, 36), 0, 10); + $CycleData = [ + 'name' => $request->name, + 'unique_id' => $UniqueID, + 'result' => $request->result, + 'description' => $request->description, + 'user_id' => auth('api')->user()->id, + 'verified' => 'NotVerified', + ]; + $CycleObj = Cycle::create($CycleData); + $CycleObj->packages()->attach($request->packages); + return \MessageResponse::success(trans('messages.success')); + } + public function edit(Cycle $Cycle) + { + $Cycle->load('user', 'packages'); + return \MessageResponse::data($Cycle); + } + public function update(StoreCycleRequest $request, Cycle $Cycle) + { + $Cycle->update($request->except(['packages'])); + $Cycle->packages()->sync($request->packages); + 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->packages)) + { + $Cycle->packages()->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); + } +} diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php index 6bc9eb47..9b06f9f0 100644 --- a/app/Http/Controllers/ItemController.php +++ b/app/Http/Controllers/ItemController.php @@ -47,7 +47,6 @@ class ItemController extends Controller } public function update(StoreItemRequest $request, Item $Item) { - // dd($request->all()); $Item->update($request->all()); return \MessageResponse::success(trans('messages.success')); } diff --git a/app/Http/Controllers/PackageController.php b/app/Http/Controllers/PackageController.php index 40c7123a..b3b25ed6 100644 --- a/app/Http/Controllers/PackageController.php +++ b/app/Http/Controllers/PackageController.php @@ -59,13 +59,17 @@ class PackageController extends Controller } public function destroy(Package $Package) { - if (!auth('api')->user()->can('delete', $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->cycles)) + { + $Package->cycles()->detach(); + } $Package->delete(); return \MessageResponse::success(trans('messages.success')); } diff --git a/app/Http/Requests/StoreCycleRequest.php b/app/Http/Requests/StoreCycleRequest.php new file mode 100644 index 00000000..6dae196f --- /dev/null +++ b/app/Http/Requests/StoreCycleRequest.php @@ -0,0 +1,52 @@ +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', + 'result' => 'required', + 'packages' => 'required', + ]; + break; + } + case 'PUT': + case 'PATCH': { + $Cycle = $this->route('Cycle'); + return [ + 'name' => 'required|max:100|unique:cycles,id,'.$Cycle->id, + // 'unique_id' => 'required|max:100|unique:cycles,id,'.$Cycle->id, + 'result' => 'required', + 'packages' => 'required', + ]; + break; + + } + default: + break; + } + + } + +} diff --git a/app/Package.php b/app/Package.php index c1c178f3..5afa36dc 100644 --- a/app/Package.php +++ b/app/Package.php @@ -15,5 +15,9 @@ class Package extends Model { return $this->belongsToMany('App\Item', 'item_package'); } + public function cycles() + { + return $this->belongsToMany('App\Cycle', 'cycle_package'); + } } diff --git a/app/Policies/CyclePolicy.php b/app/Policies/CyclePolicy.php new file mode 100644 index 00000000..5e39ec76 --- /dev/null +++ b/app/Policies/CyclePolicy.php @@ -0,0 +1,34 @@ +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; + } + +} diff --git a/database/2019_04_11_104917_create_test_types_table.php b/database/2019_04_11_104917_create_test_types_table.php index 05a9235b..ddee309a 100644 --- a/database/2019_04_11_104917_create_test_types_table.php +++ b/database/2019_04_11_104917_create_test_types_table.php @@ -18,7 +18,6 @@ class CreateTestTypesTable extends Migration $table->string('name')->unique(); $table->string('unique_code')->unique(); $table->string('bar_code'); - $table->string('device_label'); $table->unsignedBigInteger('user_id'); $table->foreign('user_id')->references('id')->on('users'); $table->timestamps(); diff --git a/database/2019_04_11_105013_create_test_results_table.php b/database/2019_04_11_105013_create_test_results_table.php index 03354ac9..afc05338 100644 --- a/database/2019_04_11_105013_create_test_results_table.php +++ b/database/2019_04_11_105013_create_test_results_table.php @@ -21,7 +21,7 @@ class CreateTestResultsTable extends Migration $table->text('description'); $table->smallInteger('verified'); $table->string('device_id'); - // $table->string('device_label'); + $table->string('device_label'); $table->integer('autoclave_id'); $table->unsignedBigInteger('user_id'); $table->foreign('user_id')->references('id')->on('users'); diff --git a/database/migrations/2019_07_16_100249_create_item_package_table.php b/database/2019_08_19_103249_create_cycle_package_table.php similarity index 66% rename from database/migrations/2019_07_16_100249_create_item_package_table.php rename to database/2019_08_19_103249_create_cycle_package_table.php index 222f9b4f..dfbccc49 100644 --- a/database/migrations/2019_07_16_100249_create_item_package_table.php +++ b/database/2019_08_19_103249_create_cycle_package_table.php @@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; -class CreateItemPackageTable extends Migration +class CreateCyclePackageTable extends Migration { /** * Run the migrations. @@ -13,11 +13,11 @@ class CreateItemPackageTable extends Migration */ public function up() { - Schema::create('item_package', function (Blueprint $table) { + Schema::create('cycle_package', function (Blueprint $table) { $table->bigIncrements('id'); - $table->integer('item_id')->unsigned(); + $table->integer('cycle_id')->unsigned(); $table->integer('package_id')->unsigned(); - $table->foreign('item_id')->references('id')->on('items'); + $table->foreign('cycle_id')->references('id')->on('cycles'); $table->foreign('package_id')->references('id')->on('packages'); $table->timestamps(); }); @@ -30,6 +30,6 @@ class CreateItemPackageTable extends Migration */ public function down() { - Schema::dropIfExists('item_package'); + Schema::dropIfExists('cycle_package'); } } diff --git a/database/migrations/2019_07_16_095633_create_packages_table.php b/database/2019_08_19_105247_create_cycles_table.php similarity index 71% rename from database/migrations/2019_07_16_095633_create_packages_table.php rename to database/2019_08_19_105247_create_cycles_table.php index 8bbd0cba..c70cc7fd 100644 --- a/database/migrations/2019_07_16_095633_create_packages_table.php +++ b/database/2019_08_19_105247_create_cycles_table.php @@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; -class CreatePackagesTable extends Migration +class CreateCyclesTable extends Migration { /** * Run the migrations. @@ -13,13 +13,13 @@ class CreatePackagesTable extends Migration */ public function up() { - Schema::create('packages', function (Blueprint $table) { + Schema::create('cycles', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name'); $table->string('unique_id'); - $table->enum('result',array('Pass', 'Fail')); + $table->enum('result',['Pass', 'Fail']); $table->text('description'); - $table->enum('verified',array('Verified', 'NotVerified')); + $table->enum('verified',['Verified', 'NotVerified']); $table->unsignedBigInteger('user_id'); $table->foreign('user_id')->references('id')->on('users'); $table->timestamps(); @@ -33,6 +33,6 @@ class CreatePackagesTable extends Migration */ public function down() { - Schema::dropIfExists('packages'); + Schema::dropIfExists('cycles'); } } diff --git a/database/migrations/2019_04_11_104648_create_medical_centers_table.php b/database/migrations/2019_04_11_104648_create_medical_centers_table.php deleted file mode 100644 index 93a49402..00000000 --- a/database/migrations/2019_04_11_104648_create_medical_centers_table.php +++ /dev/null @@ -1,32 +0,0 @@ -bigIncrements('id'); - $table->string('name'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('medical_centers'); - } -} diff --git a/database/migrations/2019_04_11_104800_create_users_table.php b/database/migrations/2019_04_11_104800_create_users_table.php deleted file mode 100644 index f44a41b7..00000000 --- a/database/migrations/2019_04_11_104800_create_users_table.php +++ /dev/null @@ -1,42 +0,0 @@ -bigIncrements('id'); - $table->string('name'); - $table->string('email')->nullable(); - $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'); - } -} diff --git a/database/migrations/2019_04_11_104917_create_test_types_table.php b/database/migrations/2019_04_11_104917_create_test_types_table.php deleted file mode 100644 index ddee309a..00000000 --- a/database/migrations/2019_04_11_104917_create_test_types_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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'); - } -} diff --git a/database/migrations/2019_04_11_105013_create_test_results_table.php b/database/migrations/2019_04_11_105013_create_test_results_table.php deleted file mode 100644 index afc05338..00000000 --- a/database/migrations/2019_04_11_105013_create_test_results_table.php +++ /dev/null @@ -1,43 +0,0 @@ -bigIncrements('id'); - $table->string('info'); - $table->string('cycle_number'); - $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'); - } -} diff --git a/database/migrations/2019_04_11_105057_create_inputs_table.php b/database/migrations/2019_04_11_105057_create_inputs_table.php deleted file mode 100644 index 74c20710..00000000 --- a/database/migrations/2019_04_11_105057_create_inputs_table.php +++ /dev/null @@ -1,39 +0,0 @@ -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'); - } -} diff --git a/database/migrations/2019_04_11_105220_create_input_values_table.php b/database/migrations/2019_04_11_105220_create_input_values_table.php deleted file mode 100644 index 406bbd1d..00000000 --- a/database/migrations/2019_04_11_105220_create_input_values_table.php +++ /dev/null @@ -1,38 +0,0 @@ -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'); - } -} diff --git a/database/migrations/2019_04_11_105508_create_options_table.php b/database/migrations/2019_04_11_105508_create_options_table.php deleted file mode 100644 index 9094f9aa..00000000 --- a/database/migrations/2019_04_11_105508_create_options_table.php +++ /dev/null @@ -1,34 +0,0 @@ -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'); - } -} diff --git a/database/migrations/2019_04_11_105601_create_galleries_table.php b/database/migrations/2019_04_11_105601_create_galleries_table.php deleted file mode 100644 index 0f200eb8..00000000 --- a/database/migrations/2019_04_11_105601_create_galleries_table.php +++ /dev/null @@ -1,34 +0,0 @@ -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'); - } -} diff --git a/database/migrations/2019_04_11_105658_create_uploadables_table.php b/database/migrations/2019_04_11_105658_create_uploadables_table.php deleted file mode 100644 index 9efec33b..00000000 --- a/database/migrations/2019_04_11_105658_create_uploadables_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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'); - } -} diff --git a/database/migrations/2019_04_18_152732_create_permission_tables.php b/database/migrations/2019_04_18_152732_create_permission_tables.php deleted file mode 100644 index 0fe3cac6..00000000 --- a/database/migrations/2019_04_18_152732_create_permission_tables.php +++ /dev/null @@ -1,102 +0,0 @@ -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']); - } -} diff --git a/database/migrations/2019_07_16_100154_create_items_table.php b/database/migrations/2019_07_16_100154_create_items_table.php deleted file mode 100644 index e7bcceba..00000000 --- a/database/migrations/2019_07_16_100154_create_items_table.php +++ /dev/null @@ -1,35 +0,0 @@ -bigIncrements('id'); - $table->string('name'); - $table->text('description'); - $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'); - } -} diff --git a/routes/api.php b/routes/api.php index 3d0c6d63..40ae3dbc 100644 --- a/routes/api.php +++ b/routes/api.php @@ -52,4 +52,6 @@ Route::middleware('auth:api')->group(function () { Route::delete('Messages/User/{User}', 'MessageController@destroyUserMessages'); Route::post('/Package/Verify/{Package}', 'PackageController@verifyPackage'); Route::get('/GetItems', 'ItemController@getItems'); + + Route::resource('Cycles', 'CycleController'); });