mirror of
https://git.meshkee.com/cssd/cssd-back.git
synced 2026-10-11 18:31:05 +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=
|
||||
LOG_CHANNEL=
|
||||
BROADCAST_DRIVER=
|
||||
CACHE_DRIVER=
|
||||
CACHE_DRIVER=file
|
||||
QUEUE_CONNECTION=
|
||||
SESSION_DRIVER=
|
||||
SESSION_LIFETIME=
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Cycle;
|
||||
use App\Models\Item;
|
||||
use App\Models\Package;
|
||||
use App\Services\ExportCollection;
|
||||
@@ -123,4 +124,52 @@ class ExportController extends Controller
|
||||
$export = new ExportCollection( $Packages );
|
||||
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()
|
||||
{
|
||||
$user = auth()->user();
|
||||
$medicalCenterId = optional(optional($user)->medical_center)->id;
|
||||
$userIds = User::where('medical_center_id', $medicalCenterId)->pluck('id')->toArray();
|
||||
$userId = auth('api')->id();
|
||||
// $medicalCenterId = optional(optional($user)->medical_center)->id;
|
||||
// $userIds = User::where('medical_center_id', $medicalCenterId)->pluck('id')->toArray();
|
||||
|
||||
$Items = Item::where( "status" , StatusTypeEnum::APPROVED )
|
||||
->where( "package_id" , null )
|
||||
->whereIn('creator_id', $userIds)
|
||||
->where('user_id', $userId)
|
||||
->orderByDesc( 'id' )
|
||||
->isNotRepaired()
|
||||
->get();
|
||||
|
||||
@@ -77,6 +77,7 @@ class PackageController extends Controller
|
||||
public function getPackages()
|
||||
{
|
||||
$Packages = Package::where("status", StatusTypeEnum::APPROVED)
|
||||
->where("user_id", auth('api')->id())
|
||||
->orderByDesc('id')
|
||||
->get();
|
||||
return PackageResource::collection($Packages);
|
||||
|
||||
@@ -25,8 +25,9 @@ class StoreCycleRequest extends FormRequest
|
||||
return [
|
||||
'date' => 'required',
|
||||
'sterilizer_id' => 'required',
|
||||
'cycle_number' => 'required',
|
||||
'cycle_number' => 'required|unique:cycles,cycle_number',
|
||||
'note' => 'nullable',
|
||||
'labels' => 'required|array|distinct',
|
||||
'labels.*.id' => 'required|numeric|exists:labels,id',
|
||||
];
|
||||
break;
|
||||
@@ -37,8 +38,9 @@ class StoreCycleRequest extends FormRequest
|
||||
return [
|
||||
'date' => 'required',
|
||||
'sterilizer_id' => 'required',
|
||||
'cycle_number' => 'required',
|
||||
'cycle_number' => 'required|unique:cycles,cycle_number',
|
||||
'note' => 'nullable',
|
||||
'labels' => 'required|array|distinct',
|
||||
'labels.*.id' => 'required|numeric|exists:labels,id',
|
||||
];
|
||||
break;
|
||||
|
||||
@@ -26,7 +26,7 @@ class StoreLabelRequest extends FormRequest
|
||||
'sterile_date' => 'required|date',
|
||||
'expire_date' => 'required|date',
|
||||
'sterilizer_id' => 'required',
|
||||
'cycle_number' => 'required',
|
||||
'cycle_number' => 'required|exists:cycles,cycle_number',
|
||||
'lot_number' => 'required',
|
||||
'package_id' => 'required|exists:packages,id',
|
||||
];
|
||||
@@ -39,7 +39,7 @@ class StoreLabelRequest extends FormRequest
|
||||
'sterile_date' => 'required',
|
||||
'expire_date' => 'required',
|
||||
'sterilizer_id' => 'required',
|
||||
'cycle_number' => 'required',
|
||||
'cycle_number' => 'required|exists:cycles,cycle_number',
|
||||
'lot_number' => 'required',
|
||||
'package_id' => 'required|exists:packages,id',
|
||||
];
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\Rules\ValidateItemOwnership;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class StorePackageRequest extends FormRequest
|
||||
@@ -23,7 +24,8 @@ class StorePackageRequest extends FormRequest
|
||||
return [
|
||||
'name' => 'required|max:250',
|
||||
'note' => 'nullable',
|
||||
'items' => 'required',
|
||||
'items' => 'required|array|min:1',
|
||||
'items.*' => ['exists:items,id','integer',new ValidateItemOwnership()],
|
||||
];
|
||||
break;
|
||||
}
|
||||
@@ -33,7 +35,8 @@ class StorePackageRequest extends FormRequest
|
||||
return [
|
||||
'name' => 'required|max:250',
|
||||
'note' => 'nullable',
|
||||
'items' => 'required',
|
||||
'items' => 'required|array|min:1',
|
||||
'items.*' => ['exists:items,id','integer',new ValidateItemOwnership()],
|
||||
];
|
||||
break;
|
||||
|
||||
|
||||
@@ -41,7 +41,6 @@ class CycleRepository implements CycleRepositoryInterface
|
||||
->whereHas('user', function ($query) use ($user) {
|
||||
$query->where('medical_center_id', $user->medical_center_id);
|
||||
})
|
||||
->where("user_id", $user->id)
|
||||
->orderByDesc('id')
|
||||
->paginate(10);
|
||||
}
|
||||
|
||||
@@ -40,7 +40,6 @@ class LabelRepository implements LabelRepositoryInterface
|
||||
->whereHas('user', function ($query) use ($user) {
|
||||
$query->where('medical_center_id', $user->medical_center_id);
|
||||
})
|
||||
->where("user_id", $user->id)
|
||||
->orderByDesc('id')
|
||||
->paginate(10);
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ class PackageRepository implements PackageRepositoryInterface
|
||||
->whereHas('user', function ($query) use ($user) {
|
||||
$query->where('medical_center_id', $user->medical_center_id);
|
||||
})
|
||||
->where("user_id", $user->id)
|
||||
->orWhere("status", StatusTypeEnum::APPROVED)
|
||||
->orderByDesc('id')
|
||||
->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()
|
||||
{
|
||||
$this->call([
|
||||
TableSeeder::class
|
||||
// FakerSeeder::class
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class TableSeeder extends Seeder
|
||||
class FakerSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* 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/packages', [ExportController::class, 'packages']);
|
||||
|
||||
Route::get('export/cycles', [ExportController::class, 'cycles']);
|
||||
Route::namespace('Media')->group(function () {
|
||||
Route::post('store_media', StoreMedia::class);
|
||||
Route::delete('destroy_media/{media}', DestroyMedia::class);
|
||||
|
||||
@@ -77,3 +77,10 @@ Route::post('Package/QRCode/{Package}', 'BarCodeController@generatePackageQRCode
|
||||
Route::any('{all}', function () {
|
||||
return view('welcome');
|
||||
})->where(['all' => '.*']);
|
||||
|
||||
|
||||
Route::any('ping', function () {
|
||||
return response()->json([
|
||||
'message' => 'pong'
|
||||
]);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user