From 64dfa4ac3d7250781116b019b5cefa89e98c3643 Mon Sep 17 00:00:00 2001 From: Masroor Ehsan Date: Sun, 29 Dec 2024 20:57:08 +0600 Subject: [PATCH] updates --- app/Http/Requests/StudyHistoryRequest.php | 25 +++++++ app/Models/BaseModel.php | 10 +++ app/Models/Institute.php | 3 +- app/Models/Study.php | 9 ++- app/Models/StudyAttachment.php | 4 +- app/Models/StudyDeleteRequest.php | 4 +- app/Models/StudyHistory.php | 18 +++++ app/Models/StudyReport.php | 3 +- app/Models/Template.php | 4 +- app/Models/TemplateCategory.php | 4 +- app/Models/Traits/BitmaskFunctionality.php | 74 +++++++++---------- app/Models/User.php | 3 +- composer.lock | 2 +- ...29_144858_create_study_histories_table.php | 27 +++++++ package-lock.json | 2 +- 15 files changed, 133 insertions(+), 59 deletions(-) create mode 100644 app/Http/Requests/StudyHistoryRequest.php create mode 100644 app/Models/BaseModel.php create mode 100644 app/Models/StudyHistory.php create mode 100644 database/migrations/2024_12_29_144858_create_study_histories_table.php diff --git a/app/Http/Requests/StudyHistoryRequest.php b/app/Http/Requests/StudyHistoryRequest.php new file mode 100644 index 0000000..b9f24ca --- /dev/null +++ b/app/Http/Requests/StudyHistoryRequest.php @@ -0,0 +1,25 @@ + ['required', 'exists:studies'], + 'user_id' => ['required', 'exists:users'], + 'clinical_history' => ['nullable'], + 'surgical_history' => ['nullable'], + 'lab_results' => ['nullable'], + 'clinical_diagnosis' => ['nullable'], + ]; + } + + public function authorize(): bool + { + return true; + } +} diff --git a/app/Models/BaseModel.php b/app/Models/BaseModel.php new file mode 100644 index 0000000..7a29473 --- /dev/null +++ b/app/Models/BaseModel.php @@ -0,0 +1,10 @@ + 'boolean', @@ -15,5 +15,8 @@ class Study extends Model 'report_status' => ReportStatus::class, ]; - protected $guarded = ['id']; + public function history(): HasOne + { + return $this->hasOne(StudyHistory::class); + } } diff --git a/app/Models/StudyAttachment.php b/app/Models/StudyAttachment.php index f4df83e..85f734d 100644 --- a/app/Models/StudyAttachment.php +++ b/app/Models/StudyAttachment.php @@ -2,6 +2,4 @@ namespace App\Models; -use Illuminate\Database\Eloquent\Model; - -class StudyAttachment extends Model {} +class StudyAttachment extends BaseModel {} diff --git a/app/Models/StudyDeleteRequest.php b/app/Models/StudyDeleteRequest.php index 1227e34..8f00b10 100644 --- a/app/Models/StudyDeleteRequest.php +++ b/app/Models/StudyDeleteRequest.php @@ -2,6 +2,4 @@ namespace App\Models; -use Illuminate\Database\Eloquent\Model; - -class StudyDeleteRequest extends Model {} +class StudyDeleteRequest extends BaseModel {} diff --git a/app/Models/StudyHistory.php b/app/Models/StudyHistory.php new file mode 100644 index 0000000..afe09a0 --- /dev/null +++ b/app/Models/StudyHistory.php @@ -0,0 +1,18 @@ +belongsTo(Study::class); + } + + public function user(): BelongsTo + { + return $this->belongsTo(User::class); + } +} diff --git a/app/Models/StudyReport.php b/app/Models/StudyReport.php index 26faa4f..dfb878e 100644 --- a/app/Models/StudyReport.php +++ b/app/Models/StudyReport.php @@ -2,10 +2,9 @@ namespace App\Models; -use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; -class StudyReport extends Model +class StudyReport extends BaseModel { public function study(): BelongsTo { diff --git a/app/Models/Template.php b/app/Models/Template.php index 73c0a87..8eb4d10 100644 --- a/app/Models/Template.php +++ b/app/Models/Template.php @@ -2,6 +2,4 @@ namespace App\Models; -use Illuminate\Database\Eloquent\Model; - -class Template extends Model {} +class Template extends BaseModel {} diff --git a/app/Models/TemplateCategory.php b/app/Models/TemplateCategory.php index 8fa9498..bd5bb5c 100644 --- a/app/Models/TemplateCategory.php +++ b/app/Models/TemplateCategory.php @@ -2,6 +2,4 @@ namespace App\Models; -use Illuminate\Database\Eloquent\Model; - -class TemplateCategory extends Model {} +class TemplateCategory extends BaseModel {} diff --git a/app/Models/Traits/BitmaskFunctionality.php b/app/Models/Traits/BitmaskFunctionality.php index 1fa568b..652ac14 100644 --- a/app/Models/Traits/BitmaskFunctionality.php +++ b/app/Models/Traits/BitmaskFunctionality.php @@ -12,6 +12,24 @@ /** @psalm-type Int32BitMask = int<0, 2147483647> */ trait BitmaskFunctionality { + /** @param Int32BitMask $value */ + public static function hasCase(int $value): bool + { + return self::tryFrom($value) !== null; + } + + /** @return Int32BitMask */ + public static function build(self ...$bits): int + { + return self::set(0, ...$bits); + } + + /** @return Int32BitMask */ + public static function set(int $value, self ...$bits): int + { + return $value | self::mask(...$bits); + } + /** @return Int32BitMask */ public static function mask(self ...$bits): int { @@ -22,39 +40,6 @@ public static function mask(self ...$bits): int return array_reduce($bits, static fn (?int $sum, self $case) => ($sum ?? 0) | $case->value); } - /** @param Int32BitMask $value */ - public static function hasCase(int $value): bool - { - return self::tryFrom($value) !== null; - } - - /** @param Int32BitMask $value */ - public static function valueToString(int $value): string - { - return '0b'.substr(chunk_split(sprintf('%\'032b', $value), 4, '_'), 0, -1); - } - - public function toString(): string - { - return self::valueToString($this->value); - } - - /** @return Int32BitMask */ - public static function build(self ...$bits): int - { - return self::set(0, ...$bits); - } - - /** @param Int32BitMask $value */ - - /** @return Int32BitMask */ - public static function set(int $value, self ...$bits): int - { - return $value | self::mask(...$bits); - } - - /** @param Int32BitMask $value */ - /** @return Int32BitMask */ public static function clear(int $value, self ...$bits): int { @@ -70,10 +55,6 @@ public static function toggle(int $value, self ...$bits): int } /** @param Int32BitMask $value */ - public static function on(int $value, self $bit): bool - { - return ($value & $bit->value) === $bit->value; - } /** @param Int32BitMask $value */ public static function off(int $value, self $bit): bool @@ -81,6 +62,8 @@ public static function off(int $value, self $bit): bool return ($value & $bit->value) === 0; } + /** @param Int32BitMask $value */ + /** @param Int32BitMask $value */ public static function any(int $value, self ...$bits): bool { @@ -123,4 +106,21 @@ public static function parse(int $value): array { return array_filter(self::cases(), static fn (self $case) => self::on($value, $case)); } + + /** @param Int32BitMask $value */ + public static function on(int $value, self $bit): bool + { + return ($value & $bit->value) === $bit->value; + } + + public function toString(): string + { + return self::valueToString($this->value); + } + + /** @param Int32BitMask $value */ + public static function valueToString(int $value): string + { + return '0b'.substr(chunk_split(sprintf('%\'032b', $value), 4, '_'), 0, -1); + } } diff --git a/app/Models/User.php b/app/Models/User.php index 5329407..af86cbd 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -3,6 +3,7 @@ namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; +use Database\Factories\UserFactory; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; @@ -15,7 +16,7 @@ class User extends Authenticatable { use HasApiTokens; - /** @use HasFactory<\Database\Factories\UserFactory> */ + /** @use HasFactory */ use HasFactory; use HasProfilePhoto; diff --git a/composer.lock b/composer.lock index 9dd564a..01cef51 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3007185579b2e8489eae9546920efd9e", + "content-hash": "f59da96d435c5fdc613f4228c47309af", "packages": [ { "name": "bacon/bacon-qr-code", diff --git a/database/migrations/2024_12_29_144858_create_study_histories_table.php b/database/migrations/2024_12_29_144858_create_study_histories_table.php new file mode 100644 index 0000000..061b268 --- /dev/null +++ b/database/migrations/2024_12_29_144858_create_study_histories_table.php @@ -0,0 +1,27 @@ +id(); + $table->foreignId('study_id')->index()->constrained('studies')->cascadeOnDelete(); + $table->foreignId('user_id')->constrained('users'); + $table->text('clinical_history')->nullable(); + $table->text('surgical_history')->nullable(); + $table->text('lab_results')->nullable(); + $table->text('clinical_diagnosis')->nullable(); + $table->timestamps(); + }); + } + + public function down(): void + { + Schema::dropIfExists('study_histories'); + } +}; diff --git a/package-lock.json b/package-lock.json index cf9d4d7..6b31b88 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "radsparc", + "name": "html", "lockfileVersion": 3, "requires": true, "packages": {