mirror of
https://git.meshkee.com/cssd/cssd-back.git
synced 2026-10-11 19:31:06 +03:30
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c9f40d06e | ||
|
|
e5253f7eda | ||
|
|
96de1c2fbe | ||
|
|
117a1cb160 | ||
|
|
9bf95438b7 | ||
|
|
a4392b74c9 | ||
|
|
869e3e0c59 | ||
|
|
da9f6dbee4 | ||
|
|
82b33e8a8f | ||
|
|
f4acfd7531 |
+1
-1
@@ -24,7 +24,7 @@ APP_DEBUG=
|
|||||||
APP_URL=
|
APP_URL=
|
||||||
LOG_CHANNEL=
|
LOG_CHANNEL=
|
||||||
BROADCAST_DRIVER=
|
BROADCAST_DRIVER=
|
||||||
CACHE_DRIVER=
|
CACHE_DRIVER=file
|
||||||
QUEUE_CONNECTION=
|
QUEUE_CONNECTION=
|
||||||
SESSION_DRIVER=
|
SESSION_DRIVER=
|
||||||
SESSION_LIFETIME=
|
SESSION_LIFETIME=
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\Cycle;
|
||||||
use App\Models\Item;
|
use App\Models\Item;
|
||||||
use App\Models\Package;
|
use App\Models\Package;
|
||||||
use App\Services\ExportCollection;
|
use App\Services\ExportCollection;
|
||||||
@@ -123,4 +124,52 @@ class ExportController extends Controller
|
|||||||
$export = new ExportCollection( $Packages );
|
$export = new ExportCollection( $Packages );
|
||||||
return Excel::download( $export , 'packages.xlsx' , null , [ \Maatwebsite\Excel\Excel::XLSX ] );
|
return Excel::download( $export , 'packages.xlsx' , null , [ \Maatwebsite\Excel\Excel::XLSX ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function cycles()
|
||||||
|
{
|
||||||
|
$cycles = Cycle::with([
|
||||||
|
'user' => function ($query) {
|
||||||
|
$query->select('id', 'name', 'medical_center_id');
|
||||||
|
},
|
||||||
|
'user.medical_center' => function ($query) {
|
||||||
|
$query->select('id', 'name');
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
$user = auth('api')->user();
|
||||||
|
if ($user->hasRole('User') or $user->hasRole('Supervisor')) {
|
||||||
|
$cycles = $cycles->whereHas('user', function ($query) use ($user) {
|
||||||
|
$query->where('medical_center_id', $user->medical_center_id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$cycles = $cycles->orderByDesc('id')->get();
|
||||||
|
|
||||||
|
$cycles = $cycles->map(function ($item, $key) {
|
||||||
|
$row[] = $item["id"];
|
||||||
|
$row[] = $item["unique_id"];
|
||||||
|
$row[] = $item["note"];
|
||||||
|
$row[] = $item["sterilizer_id"];
|
||||||
|
$row[] = $item["cycle_number"];
|
||||||
|
$row[] = $item["user"] != null ? $item["user"]["id"] : null;
|
||||||
|
$row[] = $item["user"] != null ? $item["user"]["name"] : null;
|
||||||
|
$row[] = $item['user']['medical_center']['id'] ?? null;
|
||||||
|
$row[] = $item['user']['medical_center']['name'] ?? null;
|
||||||
|
|
||||||
|
return $row;
|
||||||
|
});
|
||||||
|
$cycles->prepend([
|
||||||
|
'شناسه آیتم',
|
||||||
|
'unique_id',
|
||||||
|
'یادداشت',
|
||||||
|
'sterilizer_id',
|
||||||
|
'cycle_number',
|
||||||
|
'شناسه کاربر',
|
||||||
|
'نام کاربر',
|
||||||
|
'شناسه بیمارستان',
|
||||||
|
'نام بیمارستان',
|
||||||
|
]);
|
||||||
|
$export = new ExportCollection($cycles);
|
||||||
|
return Excel::download($export, 'cycles.xlsx', null, [\Maatwebsite\Excel\Excel::XLSX]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,13 +111,13 @@ class ItemController extends Controller
|
|||||||
|
|
||||||
public function getItems()
|
public function getItems()
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$userId = auth('api')->id();
|
||||||
$medicalCenterId = optional(optional($user)->medical_center)->id;
|
// $medicalCenterId = optional(optional($user)->medical_center)->id;
|
||||||
$userIds = User::where('medical_center_id', $medicalCenterId)->pluck('id')->toArray();
|
// $userIds = User::where('medical_center_id', $medicalCenterId)->pluck('id')->toArray();
|
||||||
|
|
||||||
$Items = Item::where( "status" , StatusTypeEnum::APPROVED )
|
$Items = Item::where( "status" , StatusTypeEnum::APPROVED )
|
||||||
->where( "package_id" , null )
|
->where( "package_id" , null )
|
||||||
->whereIn('creator_id', $userIds)
|
->where('user_id', $userId)
|
||||||
->orderByDesc( 'id' )
|
->orderByDesc( 'id' )
|
||||||
->isNotRepaired()
|
->isNotRepaired()
|
||||||
->get();
|
->get();
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ class PackageController extends Controller
|
|||||||
public function getPackages()
|
public function getPackages()
|
||||||
{
|
{
|
||||||
$Packages = Package::where("status", StatusTypeEnum::APPROVED)
|
$Packages = Package::where("status", StatusTypeEnum::APPROVED)
|
||||||
|
->where("user_id", auth('api')->id())
|
||||||
->orderByDesc('id')
|
->orderByDesc('id')
|
||||||
->get();
|
->get();
|
||||||
return PackageResource::collection($Packages);
|
return PackageResource::collection($Packages);
|
||||||
|
|||||||
@@ -25,8 +25,9 @@ class StoreCycleRequest extends FormRequest
|
|||||||
return [
|
return [
|
||||||
'date' => 'required',
|
'date' => 'required',
|
||||||
'sterilizer_id' => 'required',
|
'sterilizer_id' => 'required',
|
||||||
'cycle_number' => 'required',
|
'cycle_number' => 'required|unique:cycles,cycle_number',
|
||||||
'note' => 'nullable',
|
'note' => 'nullable',
|
||||||
|
'labels' => 'required|array|distinct',
|
||||||
'labels.*.id' => 'required|numeric|exists:labels,id',
|
'labels.*.id' => 'required|numeric|exists:labels,id',
|
||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
@@ -37,8 +38,9 @@ class StoreCycleRequest extends FormRequest
|
|||||||
return [
|
return [
|
||||||
'date' => 'required',
|
'date' => 'required',
|
||||||
'sterilizer_id' => 'required',
|
'sterilizer_id' => 'required',
|
||||||
'cycle_number' => 'required',
|
'cycle_number' => 'required|unique:cycles,cycle_number',
|
||||||
'note' => 'nullable',
|
'note' => 'nullable',
|
||||||
|
'labels' => 'required|array|distinct',
|
||||||
'labels.*.id' => 'required|numeric|exists:labels,id',
|
'labels.*.id' => 'required|numeric|exists:labels,id',
|
||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class StoreLabelRequest extends FormRequest
|
|||||||
'sterile_date' => 'required|date',
|
'sterile_date' => 'required|date',
|
||||||
'expire_date' => 'required|date',
|
'expire_date' => 'required|date',
|
||||||
'sterilizer_id' => 'required',
|
'sterilizer_id' => 'required',
|
||||||
'cycle_number' => 'required',
|
'cycle_number' => 'required|exists:cycles,cycle_number',
|
||||||
'lot_number' => 'required',
|
'lot_number' => 'required',
|
||||||
'package_id' => 'required|exists:packages,id',
|
'package_id' => 'required|exists:packages,id',
|
||||||
];
|
];
|
||||||
@@ -39,7 +39,7 @@ class StoreLabelRequest extends FormRequest
|
|||||||
'sterile_date' => 'required',
|
'sterile_date' => 'required',
|
||||||
'expire_date' => 'required',
|
'expire_date' => 'required',
|
||||||
'sterilizer_id' => 'required',
|
'sterilizer_id' => 'required',
|
||||||
'cycle_number' => 'required',
|
'cycle_number' => 'required|exists:cycles,cycle_number',
|
||||||
'lot_number' => 'required',
|
'lot_number' => 'required',
|
||||||
'package_id' => 'required|exists:packages,id',
|
'package_id' => 'required|exists:packages,id',
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Requests;
|
namespace App\Http\Requests;
|
||||||
|
|
||||||
|
use App\Rules\ValidateItemOwnership;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
class StorePackageRequest extends FormRequest
|
class StorePackageRequest extends FormRequest
|
||||||
@@ -23,7 +24,8 @@ class StorePackageRequest extends FormRequest
|
|||||||
return [
|
return [
|
||||||
'name' => 'required|max:250',
|
'name' => 'required|max:250',
|
||||||
'note' => 'nullable',
|
'note' => 'nullable',
|
||||||
'items' => 'required',
|
'items' => 'required|array|min:1',
|
||||||
|
'items.*' => ['exists:items,id','integer',new ValidateItemOwnership()],
|
||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -33,7 +35,8 @@ class StorePackageRequest extends FormRequest
|
|||||||
return [
|
return [
|
||||||
'name' => 'required|max:250',
|
'name' => 'required|max:250',
|
||||||
'note' => 'nullable',
|
'note' => 'nullable',
|
||||||
'items' => 'required',
|
'items' => 'required|array|min:1',
|
||||||
|
'items.*' => ['exists:items,id','integer',new ValidateItemOwnership()],
|
||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ class CycleRepository implements CycleRepositoryInterface
|
|||||||
->whereHas('user', function ($query) use ($user) {
|
->whereHas('user', function ($query) use ($user) {
|
||||||
$query->where('medical_center_id', $user->medical_center_id);
|
$query->where('medical_center_id', $user->medical_center_id);
|
||||||
})
|
})
|
||||||
->where("user_id", $user->id)
|
|
||||||
->orderByDesc('id')
|
->orderByDesc('id')
|
||||||
->paginate(10);
|
->paginate(10);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ class LabelRepository implements LabelRepositoryInterface
|
|||||||
->whereHas('user', function ($query) use ($user) {
|
->whereHas('user', function ($query) use ($user) {
|
||||||
$query->where('medical_center_id', $user->medical_center_id);
|
$query->where('medical_center_id', $user->medical_center_id);
|
||||||
})
|
})
|
||||||
->where("user_id", $user->id)
|
|
||||||
->orderByDesc('id')
|
->orderByDesc('id')
|
||||||
->paginate(10);
|
->paginate(10);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ class PackageRepository implements PackageRepositoryInterface
|
|||||||
->whereHas('user', function ($query) use ($user) {
|
->whereHas('user', function ($query) use ($user) {
|
||||||
$query->where('medical_center_id', $user->medical_center_id);
|
$query->where('medical_center_id', $user->medical_center_id);
|
||||||
})
|
})
|
||||||
->where("user_id", $user->id)
|
|
||||||
->orWhere("status", StatusTypeEnum::APPROVED)
|
->orWhere("status", StatusTypeEnum::APPROVED)
|
||||||
->orderByDesc('id')
|
->orderByDesc('id')
|
||||||
->paginate(10);
|
->paginate(10);
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Rules;
|
||||||
|
|
||||||
|
use App\Models\Item;
|
||||||
|
use Closure;
|
||||||
|
use Illuminate\Contracts\Validation\ValidationRule;
|
||||||
|
|
||||||
|
class ValidateItemOwnership implements ValidationRule
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the validation rule.
|
||||||
|
*
|
||||||
|
* @param \Closure(string, ?string=): \Illuminate\Translation\PotentiallyTranslatedString $fail
|
||||||
|
*/
|
||||||
|
public function validate(string $attribute, mixed $value, Closure $fail): void
|
||||||
|
{
|
||||||
|
$item = Item::find($value);
|
||||||
|
if(!($item && $item->user_id === auth()->id())){
|
||||||
|
$fail(":attribute have invalid ownership");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,7 +15,7 @@ class DatabaseSeeder extends Seeder
|
|||||||
public function run()
|
public function run()
|
||||||
{
|
{
|
||||||
$this->call([
|
$this->call([
|
||||||
TableSeeder::class
|
// FakerSeeder::class
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ namespace Database\Seeders;
|
|||||||
|
|
||||||
use Illuminate\Database\Seeder;
|
use Illuminate\Database\Seeder;
|
||||||
|
|
||||||
class TableSeeder extends Seeder
|
class FakerSeeder extends Seeder
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Seed the application's database.
|
* Seed the application's database.
|
||||||
+1
-1
@@ -83,7 +83,7 @@ Route::middleware('auth:api')->group(function () {
|
|||||||
|
|
||||||
Route::get('export/items', [ExportController::class, 'items']);
|
Route::get('export/items', [ExportController::class, 'items']);
|
||||||
Route::get('export/packages', [ExportController::class, 'packages']);
|
Route::get('export/packages', [ExportController::class, 'packages']);
|
||||||
|
Route::get('export/cycles', [ExportController::class, 'cycles']);
|
||||||
Route::namespace('Media')->group(function () {
|
Route::namespace('Media')->group(function () {
|
||||||
Route::post('store_media', StoreMedia::class);
|
Route::post('store_media', StoreMedia::class);
|
||||||
Route::delete('destroy_media/{media}', DestroyMedia::class);
|
Route::delete('destroy_media/{media}', DestroyMedia::class);
|
||||||
|
|||||||
@@ -77,3 +77,10 @@ Route::post('Package/QRCode/{Package}', 'BarCodeController@generatePackageQRCode
|
|||||||
Route::any('{all}', function () {
|
Route::any('{all}', function () {
|
||||||
return view('welcome');
|
return view('welcome');
|
||||||
})->where(['all' => '.*']);
|
})->where(['all' => '.*']);
|
||||||
|
|
||||||
|
|
||||||
|
Route::any('ping', function () {
|
||||||
|
return response()->json([
|
||||||
|
'message' => 'pong'
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user