dustered
This commit is contained in:
parent
ea21a659d4
commit
bebfb3ca7a
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
namespace App\DAL;
|
namespace App\DAL;
|
||||||
|
|
||||||
use Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
final readonly class Studies
|
final readonly class Studies
|
||||||
{
|
{
|
||||||
|
@ -39,6 +39,11 @@ abstract class WorklistBase implements IUserStudyLister
|
|||||||
|
|
||||||
private ?string $reportDateTo = null;
|
private ?string $reportDateTo = null;
|
||||||
|
|
||||||
|
protected static function reportCompleteQuery(Builder $query): Builder
|
||||||
|
{
|
||||||
|
return $query->where('report_status', '=', ReportStatus::Authorized->value);
|
||||||
|
}
|
||||||
|
|
||||||
public function setRadiologist(int $radiologist_id): self
|
public function setRadiologist(int $radiologist_id): self
|
||||||
{
|
{
|
||||||
$this->radiologist_id = $radiologist_id;
|
$this->radiologist_id = $radiologist_id;
|
||||||
@ -53,46 +58,6 @@ public function setStudyStatus(StudyLevelStatus $status): self
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function applyRadiologist(Builder $query): Builder
|
|
||||||
{
|
|
||||||
if ($this->radiologist_id != null) {
|
|
||||||
$rad = $this->radiologist_id;
|
|
||||||
$query = $query->where(function ($query) use ($rad) {
|
|
||||||
$query->Where('assigned_physician_id', '=', $rad);
|
|
||||||
$query->orWhere('reporting_physician_id', '=', $rad);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return $query;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getStudiesQuery(): Builder
|
|
||||||
{
|
|
||||||
if ($this->archived === null) {
|
|
||||||
return Study::active();
|
|
||||||
}
|
|
||||||
|
|
||||||
return Study::query();
|
|
||||||
}
|
|
||||||
|
|
||||||
private function applyStudyStatus(Builder $query): Builder
|
|
||||||
{
|
|
||||||
if ($this->studyStatus != null) {
|
|
||||||
$query = $query->where('study_status', '=', $this->studyStatus->value);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $query;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function applyReportStatus(Builder $query): Builder
|
|
||||||
{
|
|
||||||
if ($this->reportStatus != null) {
|
|
||||||
$query = $query->where('report_status', '=', $this->reportStatus->value);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $query;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setReportStatus(ReportStatus $status): self
|
public function setReportStatus(ReportStatus $status): self
|
||||||
{
|
{
|
||||||
$this->reportStatus = $status;
|
$this->reportStatus = $status;
|
||||||
@ -100,28 +65,6 @@ public function setReportStatus(ReportStatus $status): self
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static function reportCompleteQuery(Builder $query): Builder
|
|
||||||
{
|
|
||||||
return $query->where('report_status', '=', ReportStatus::Authorized->value);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function applySort(Builder $query): Builder
|
|
||||||
{
|
|
||||||
if (! empty($this->sortColumns)) {
|
|
||||||
foreach ($this->sortColumns as $column => $dir) {
|
|
||||||
$query = $query->orderBy($column, $dir);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $query;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $query
|
|
||||||
->orderByDesc('priority')
|
|
||||||
->orderByDesc('received_at');
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract protected function buildQuery(?int $user_id = null): Builder;
|
|
||||||
|
|
||||||
public function query(?int $user_id = null): Builder
|
public function query(?int $user_id = null): Builder
|
||||||
{
|
{
|
||||||
$query = $this->buildQuery($user_id);
|
$query = $this->buildQuery($user_id);
|
||||||
@ -189,6 +132,87 @@ public function setSearchTerm(string $search): self
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setStudyDate(string $from, ?string $to = null): self
|
||||||
|
{
|
||||||
|
$this->studyDateFrom = $from;
|
||||||
|
$this->studyDateTo = $to;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setReceiveDate(string $from, ?string $to = null): self
|
||||||
|
{
|
||||||
|
$this->receiveDateFrom = $from;
|
||||||
|
$this->receiveDateTo = $to;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setReportDate(string $from, ?string $to = null): self
|
||||||
|
{
|
||||||
|
$this->reportDateFrom = $from;
|
||||||
|
$this->reportDateTo = $to;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getStudiesQuery(): Builder
|
||||||
|
{
|
||||||
|
if ($this->archived === null) {
|
||||||
|
return Study::active();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Study::query();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function applySort(Builder $query): Builder
|
||||||
|
{
|
||||||
|
if (! empty($this->sortColumns)) {
|
||||||
|
foreach ($this->sortColumns as $column => $dir) {
|
||||||
|
$query = $query->orderBy($column, $dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query
|
||||||
|
->orderByDesc('priority')
|
||||||
|
->orderByDesc('received_at');
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract protected function buildQuery(?int $user_id = null): Builder;
|
||||||
|
|
||||||
|
private function applyRadiologist(Builder $query): Builder
|
||||||
|
{
|
||||||
|
if ($this->radiologist_id != null) {
|
||||||
|
$rad = $this->radiologist_id;
|
||||||
|
$query = $query->where(function ($query) use ($rad) {
|
||||||
|
$query->Where('assigned_physician_id', '=', $rad);
|
||||||
|
$query->orWhere('reporting_physician_id', '=', $rad);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function applyStudyStatus(Builder $query): Builder
|
||||||
|
{
|
||||||
|
if ($this->studyStatus != null) {
|
||||||
|
$query = $query->where('study_status', '=', $this->studyStatus->value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function applyReportStatus(Builder $query): Builder
|
||||||
|
{
|
||||||
|
if ($this->reportStatus != null) {
|
||||||
|
$query = $query->where('report_status', '=', $this->reportStatus->value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
private function getPageSize(?int $user_id = null): int
|
private function getPageSize(?int $user_id = null): int
|
||||||
{
|
{
|
||||||
return $this->perPage ?? user_per_page($user_id);
|
return $this->perPage ?? user_per_page($user_id);
|
||||||
@ -260,28 +284,4 @@ private function applyDateFilters(Builder $query): Builder
|
|||||||
|
|
||||||
return $query;
|
return $query;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setStudyDate(string $from, ?string $to = null): self
|
|
||||||
{
|
|
||||||
$this->studyDateFrom = $from;
|
|
||||||
$this->studyDateTo = $to;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setReceiveDate(string $from, ?string $to = null): self
|
|
||||||
{
|
|
||||||
$this->receiveDateFrom = $from;
|
|
||||||
$this->receiveDateTo = $to;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setReportDate(string $from, ?string $to = null): self
|
|
||||||
{
|
|
||||||
$this->reportDateFrom = $from;
|
|
||||||
$this->reportDateTo = $to;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Laravel\Socialite\Facades\Socialite;
|
use Laravel\Socialite\Facades\Socialite;
|
||||||
|
|
||||||
class SocialLoginController extends Controller
|
class SocialLoginController extends Controller
|
||||||
|
@ -8,6 +8,16 @@
|
|||||||
|
|
||||||
class StudyViewerController extends HashidControllerBase
|
class StudyViewerController extends HashidControllerBase
|
||||||
{
|
{
|
||||||
|
public function stone()
|
||||||
|
{
|
||||||
|
return $this->loadViewer(fn (Study $study) => $study->getStoneLink());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function ohif()
|
||||||
|
{
|
||||||
|
return $this->loadViewer(fn (Study $study) => $study->getOhifLink());
|
||||||
|
}
|
||||||
|
|
||||||
private function loadViewer(\Closure $callback)
|
private function loadViewer(\Closure $callback)
|
||||||
{
|
{
|
||||||
$this->decodeKeys();
|
$this->decodeKeys();
|
||||||
@ -18,14 +28,4 @@ private function loadViewer(\Closure $callback)
|
|||||||
|
|
||||||
return view('staff.studies.viewer', compact('url', 'title'));
|
return view('staff.studies.viewer', compact('url', 'title'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function stone()
|
|
||||||
{
|
|
||||||
return $this->loadViewer(fn (Study $study) => $study->getStoneLink());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function ohif()
|
|
||||||
{
|
|
||||||
return $this->loadViewer(fn (Study $study) => $study->getOhifLink());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -23,14 +23,6 @@ function () use ($token) {
|
|||||||
return $token;
|
return $token;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getTokenableAttribute()
|
|
||||||
{
|
|
||||||
return Cache::remember("PersonalAccessToken::{$this->id}::tokenable", 600,
|
|
||||||
function () {
|
|
||||||
return parent::tokenable()->first();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function boot()
|
public static function boot()
|
||||||
{
|
{
|
||||||
parent::boot();
|
parent::boot();
|
||||||
@ -50,4 +42,12 @@ public static function boot()
|
|||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getTokenableAttribute()
|
||||||
|
{
|
||||||
|
return Cache::remember("PersonalAccessToken::{$this->id}::tokenable", 600,
|
||||||
|
function () {
|
||||||
|
return parent::tokenable()->first();
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,14 +22,6 @@ public function sender(): BelongsTo
|
|||||||
return $this->belongsTo(User::class, 'sender_id');
|
return $this->belongsTo(User::class, 'sender_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function casts(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'expires_at' => 'datetime',
|
|
||||||
'access_flags' => StudyAccessFlags::class,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function isPasswordProtected(): bool
|
public function isPasswordProtected(): bool
|
||||||
{
|
{
|
||||||
return ! blank($this->access_password);
|
return ! blank($this->access_password);
|
||||||
@ -52,4 +44,12 @@ public function hasExpired(): bool
|
|||||||
|
|
||||||
return $this->expires_at->isPast();
|
return $this->expires_at->isPast();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function casts(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'expires_at' => 'datetime',
|
||||||
|
'access_flags' => StudyAccessFlags::class,
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,21 +18,6 @@ class Study extends BaseModel
|
|||||||
{
|
{
|
||||||
use HashableId;
|
use HashableId;
|
||||||
|
|
||||||
protected function casts(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'is_locked' => 'boolean',
|
|
||||||
'is_archived' => 'boolean',
|
|
||||||
'study_status' => StudyLevelStatus::class,
|
|
||||||
'report_status' => ReportStatus::class,
|
|
||||||
'priority' => Priority::class,
|
|
||||||
'received_at' => 'immutable_datetime',
|
|
||||||
'reported_at' => 'immutable_datetime',
|
|
||||||
'assigned_at' => 'immutable_datetime',
|
|
||||||
'study_date' => 'immutable_datetime',
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function details(): HasOne
|
public function details(): HasOne
|
||||||
{
|
{
|
||||||
return $this->hasOne(StudyDetails::class);
|
return $this->hasOne(StudyDetails::class);
|
||||||
@ -268,4 +253,19 @@ public function getPriorityIcon(): string
|
|||||||
default => '',
|
default => '',
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function casts(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'is_locked' => 'boolean',
|
||||||
|
'is_archived' => 'boolean',
|
||||||
|
'study_status' => StudyLevelStatus::class,
|
||||||
|
'report_status' => ReportStatus::class,
|
||||||
|
'priority' => Priority::class,
|
||||||
|
'received_at' => 'immutable_datetime',
|
||||||
|
'reported_at' => 'immutable_datetime',
|
||||||
|
'assigned_at' => 'immutable_datetime',
|
||||||
|
'study_date' => 'immutable_datetime',
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,15 +7,30 @@
|
|||||||
|
|
||||||
class StudyDetails extends BaseModel
|
class StudyDetails extends BaseModel
|
||||||
{
|
{
|
||||||
|
use HashableId;
|
||||||
|
|
||||||
protected $table = 'study_details';
|
protected $table = 'study_details';
|
||||||
|
|
||||||
use HashableId;
|
public static function historyOnly(int $studyId): self
|
||||||
|
{
|
||||||
|
return self::where('study_id', $studyId)->select(['id', 'study_id', 'clinical_history', 'surgical_history', 'lab_results', 'clinical_diagnosis'])->firstOrFail();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function seriesOnly(int $studyId): self
|
||||||
|
{
|
||||||
|
return self::where('study_id', $studyId)->select(['id', 'study_id', 'series'])->firstOrFail();
|
||||||
|
}
|
||||||
|
|
||||||
public function study(): BelongsTo
|
public function study(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->belongsTo(Study::class);
|
return $this->belongsTo(Study::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function historyIcon(): string
|
||||||
|
{
|
||||||
|
return sprintf('<i class="fa-regular fa-file-prescription %s"></i>', blank($this->clinical_history) ? 'text-muted' : 'text-success');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array<string, string>
|
* @return array<string, string>
|
||||||
*/
|
*/
|
||||||
@ -27,19 +42,4 @@ protected function casts(): array
|
|||||||
'assignment_log' => 'array',
|
'assignment_log' => 'array',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function historyOnly(int $studyId): self
|
|
||||||
{
|
|
||||||
return self::where('study_id', $studyId)->select(['id', 'study_id', 'clinical_history', 'surgical_history', 'lab_results', 'clinical_diagnosis'])->firstOrFail();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function seriesOnly(int $studyId): self
|
|
||||||
{
|
|
||||||
return self::where('study_id', $studyId)->select(['id', 'study_id', 'series'])->firstOrFail();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function historyIcon(): string
|
|
||||||
{
|
|
||||||
return sprintf('<i class="fa-regular fa-file-prescription %s"></i>', blank($this->clinical_history) ? 'text-muted' : 'text-success');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -113,14 +113,14 @@ public static function on(int $value, self $bit): bool
|
|||||||
return ($value & $bit->value) === $bit->value;
|
return ($value & $bit->value) === $bit->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function toString(): string
|
|
||||||
{
|
|
||||||
return self::valueToString($this->value);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @param Int32BitMask $value */
|
/** @param Int32BitMask $value */
|
||||||
public static function valueToString(int $value): string
|
public static function valueToString(int $value): string
|
||||||
{
|
{
|
||||||
return '0b' . substr(chunk_split(sprintf('%\'032b', $value), 4, '_'), 0, -1);
|
return '0b' . substr(chunk_split(sprintf('%\'032b', $value), 4, '_'), 0, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function toString(): string
|
||||||
|
{
|
||||||
|
return self::valueToString($this->value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,16 @@ public static function hashToId(string $hash): int
|
|||||||
return unhash_it($hash);
|
return unhash_it($hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function byHashOrFail($hash): self
|
||||||
|
{
|
||||||
|
return self::query()->byHash($hash)->firstOrFail();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function byHash($hash): ?self
|
||||||
|
{
|
||||||
|
return self::query()->byHash($hash)->first();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get HashId column name.
|
* Get HashId column name.
|
||||||
*/
|
*/
|
||||||
@ -48,14 +58,4 @@ public function resolveRouteBinding($value, $field = null)
|
|||||||
|
|
||||||
return $this->byHash($value);
|
return $this->byHash($value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function byHashOrFail($hash): self
|
|
||||||
{
|
|
||||||
return self::query()->byHash($hash)->firstOrFail();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function byHash($hash): ?self
|
|
||||||
{
|
|
||||||
return self::query()->byHash($hash)->first();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -75,21 +75,6 @@ class User extends Authenticatable
|
|||||||
'last_seen',
|
'last_seen',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the attributes that should be cast.
|
|
||||||
*
|
|
||||||
* @return array<string, string>
|
|
||||||
*/
|
|
||||||
protected function casts(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'is_active' => 'bool',
|
|
||||||
'email_verified_at' => 'datetime',
|
|
||||||
'last_seen_at' => 'datetime',
|
|
||||||
'password' => 'hashed',
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function scopeActive($query)
|
public function scopeActive($query)
|
||||||
{
|
{
|
||||||
return $query->where('is_active', true);
|
return $query->where('is_active', true);
|
||||||
@ -151,4 +136,19 @@ public function avatar(bool $gravatar = false): string
|
|||||||
|
|
||||||
return (new Avatar)->create($this->full_name)->toBase64();
|
return (new Avatar)->create($this->full_name)->toBase64();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the attributes that should be cast.
|
||||||
|
*
|
||||||
|
* @return array<string, string>
|
||||||
|
*/
|
||||||
|
protected function casts(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'is_active' => 'bool',
|
||||||
|
'email_verified_at' => 'datetime',
|
||||||
|
'last_seen_at' => 'datetime',
|
||||||
|
'password' => 'hashed',
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
namespace App\Services\AuditTrail;
|
namespace App\Services\AuditTrail;
|
||||||
|
|
||||||
use App\Models\Study;
|
use App\Models\Study;
|
||||||
use DB;
|
|
||||||
use Illuminate\Contracts\Auth\Authenticatable;
|
use Illuminate\Contracts\Auth\Authenticatable;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class ActivityLogger
|
class ActivityLogger
|
||||||
{
|
{
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
use App\Models\Enums\NameMatchModes;
|
use App\Models\Enums\NameMatchModes;
|
||||||
use App\Services\InputMatcher;
|
use App\Services\InputMatcher;
|
||||||
use Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
final class InstituteMapper
|
final class InstituteMapper
|
||||||
{
|
{
|
||||||
|
@ -23,6 +23,13 @@ class StudiesSync
|
|||||||
|
|
||||||
private OrthancRestClient $client;
|
private OrthancRestClient $client;
|
||||||
|
|
||||||
|
public function __construct(?OrthancRestClient $client = null)
|
||||||
|
{
|
||||||
|
$this->study_ids = collect();
|
||||||
|
$this->client = $client ?? new OrthancRestClient;
|
||||||
|
$this->resetQueues();
|
||||||
|
}
|
||||||
|
|
||||||
public function execute(): void
|
public function execute(): void
|
||||||
{
|
{
|
||||||
app(Pipeline::class)
|
app(Pipeline::class)
|
||||||
@ -37,13 +44,6 @@ public function execute(): void
|
|||||||
->thenReturn();
|
->thenReturn();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __construct(?OrthancRestClient $client = null)
|
|
||||||
{
|
|
||||||
$this->study_ids = collect();
|
|
||||||
$this->client = $client ?? new OrthancRestClient;
|
|
||||||
$this->resetQueues();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getClient(): OrthancRestClient
|
public function getClient(): OrthancRestClient
|
||||||
{
|
{
|
||||||
return $this->client;
|
return $this->client;
|
||||||
|
@ -7,11 +7,6 @@
|
|||||||
|
|
||||||
final readonly class UserService
|
final readonly class UserService
|
||||||
{
|
{
|
||||||
private static function lastSeenKey(int $userId): string
|
|
||||||
{
|
|
||||||
return sprintf('last_seen:%d', $userId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function setLastSeen(int $userId, ?Carbon $seenAt = null): void
|
public static function setLastSeen(int $userId, ?Carbon $seenAt = null): void
|
||||||
{
|
{
|
||||||
Redis::connection()->set(self::lastSeenKey($userId), ($seenAt ?? Carbon::now())->toISOString());
|
Redis::connection()->set(self::lastSeenKey($userId), ($seenAt ?? Carbon::now())->toISOString());
|
||||||
@ -23,4 +18,9 @@ public static function getLastSeen(int $userId): ?Carbon
|
|||||||
|
|
||||||
return $lastSeen ? Carbon::parse($lastSeen) : null;
|
return $lastSeen ? Carbon::parse($lastSeen) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static function lastSeenKey(int $userId): string
|
||||||
|
{
|
||||||
|
return sprintf('last_seen:%d', $userId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,9 +8,6 @@
|
|||||||
|
|
||||||
return new class extends Migration
|
return new class extends Migration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*/
|
|
||||||
public function up(): void
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('users', function (Blueprint $table) {
|
Schema::create('users', function (Blueprint $table) {
|
||||||
@ -50,9 +47,6 @@ public function up(): void
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*/
|
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('users');
|
Schema::dropIfExists('users');
|
||||||
|
@ -6,9 +6,6 @@
|
|||||||
|
|
||||||
return new class extends Migration
|
return new class extends Migration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*/
|
|
||||||
public function up(): void
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('cache', function (Blueprint $table) {
|
Schema::create('cache', function (Blueprint $table) {
|
||||||
@ -24,9 +21,6 @@ public function up(): void
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*/
|
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('cache');
|
Schema::dropIfExists('cache');
|
||||||
|
@ -6,9 +6,6 @@
|
|||||||
|
|
||||||
return new class extends Migration
|
return new class extends Migration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*/
|
|
||||||
public function up(): void
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('jobs', function (Blueprint $table) {
|
Schema::create('jobs', function (Blueprint $table) {
|
||||||
@ -45,9 +42,6 @@ public function up(): void
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*/
|
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('jobs');
|
Schema::dropIfExists('jobs');
|
||||||
|
@ -7,9 +7,6 @@
|
|||||||
|
|
||||||
return new class extends Migration
|
return new class extends Migration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*/
|
|
||||||
public function up(): void
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::table('users', function (Blueprint $table) {
|
Schema::table('users', function (Blueprint $table) {
|
||||||
@ -29,9 +26,6 @@ public function up(): void
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*/
|
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::table('users', function (Blueprint $table) {
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
@ -6,9 +6,6 @@
|
|||||||
|
|
||||||
return new class extends Migration
|
return new class extends Migration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*/
|
|
||||||
public function up(): void
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('personal_access_tokens', function (Blueprint $table) {
|
Schema::create('personal_access_tokens', function (Blueprint $table) {
|
||||||
@ -23,9 +20,6 @@ public function up(): void
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*/
|
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('personal_access_tokens');
|
Schema::dropIfExists('personal_access_tokens');
|
||||||
|
@ -6,9 +6,6 @@
|
|||||||
|
|
||||||
return new class extends Migration
|
return new class extends Migration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*/
|
|
||||||
public function up(): void
|
public function up(): void
|
||||||
{
|
{
|
||||||
$teams = config('permission.teams');
|
$teams = config('permission.teams');
|
||||||
@ -120,9 +117,6 @@ public function up(): void
|
|||||||
->forget(config('permission.cache.key'));
|
->forget(config('permission.cache.key'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*/
|
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
$tableNames = config('permission.table_names');
|
$tableNames = config('permission.table_names');
|
||||||
|
@ -17,20 +17,20 @@
|
|||||||
@section('content')
|
@section('content')
|
||||||
<div class="authentication-wrapper authentication-cover">
|
<div class="authentication-wrapper authentication-cover">
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
|
<a href="{{ url('/') }}" class="auth-cover-brand d-flex align-items-center gap-2">
|
||||||
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
||||||
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
|
<span class="app-brand-text demo text-heading fw-semibold">{{ config('variables.templateName') }}</span>
|
||||||
</a>
|
</a>
|
||||||
<!-- /Logo -->
|
<!-- /Logo -->
|
||||||
<div class="authentication-inner row m-0">
|
<div class="authentication-inner row m-0">
|
||||||
|
|
||||||
<!-- /Left Section -->
|
<!-- /Left Section -->
|
||||||
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
|
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
|
||||||
<img src="{{asset('assets/img/illustrations/auth-forgot-password-illustration-'.$configData['style'].'.png') }}"
|
<img src="{{ asset('assets/img/illustrations/auth-forgot-password-illustration-'.$configData['style'].'.png') }}"
|
||||||
class="auth-cover-illustration w-100" alt="auth-illustration"
|
class="auth-cover-illustration w-100" alt="auth-illustration"
|
||||||
data-app-light-img="illustrations/auth-forgot-password-illustration-light.png"
|
data-app-light-img="illustrations/auth-forgot-password-illustration-light.png"
|
||||||
data-app-dark-img="illustrations/auth-forgot-password-illustration-dark.png"/>
|
data-app-dark-img="illustrations/auth-forgot-password-illustration-dark.png"/>
|
||||||
<img src="{{asset('assets/img/illustrations/auth-cover-forgot-password-mask-'.$configData['style'].'.png') }}"
|
<img src="{{ asset('assets/img/illustrations/auth-cover-forgot-password-mask-'.$configData['style'].'.png') }}"
|
||||||
class="authentication-image" alt="mask"
|
class="authentication-image" alt="mask"
|
||||||
data-app-light-img="illustrations/auth-cover-forgot-password-mask-light.png"
|
data-app-light-img="illustrations/auth-cover-forgot-password-mask-light.png"
|
||||||
data-app-dark-img="illustrations/auth-cover-forgot-password-mask-dark.png"/>
|
data-app-dark-img="illustrations/auth-cover-forgot-password-mask-dark.png"/>
|
||||||
|
@ -17,20 +17,20 @@
|
|||||||
@section('content')
|
@section('content')
|
||||||
<div class="authentication-wrapper authentication-cover">
|
<div class="authentication-wrapper authentication-cover">
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
|
<a href="{{ url('/') }}" class="auth-cover-brand d-flex align-items-center gap-2">
|
||||||
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
||||||
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
|
<span class="app-brand-text demo text-heading fw-semibold">{{ config('variables.templateName') }}</span>
|
||||||
</a>
|
</a>
|
||||||
<!-- /Logo -->
|
<!-- /Logo -->
|
||||||
<div class="authentication-inner row m-0">
|
<div class="authentication-inner row m-0">
|
||||||
|
|
||||||
<!-- /Left Section -->
|
<!-- /Left Section -->
|
||||||
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
|
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
|
||||||
<img src="{{asset('assets/img/illustrations/auth-forgot-password-illustration-'.$configData['style'].'.png') }}"
|
<img src="{{ asset('assets/img/illustrations/auth-forgot-password-illustration-'.$configData['style'].'.png') }}"
|
||||||
class="auth-cover-illustration w-100" alt="auth-illustration"
|
class="auth-cover-illustration w-100" alt="auth-illustration"
|
||||||
data-app-light-img="illustrations/auth-forgot-password-illustration-light.png"
|
data-app-light-img="illustrations/auth-forgot-password-illustration-light.png"
|
||||||
data-app-dark-img="illustrations/auth-forgot-password-illustration-dark.png"/>
|
data-app-dark-img="illustrations/auth-forgot-password-illustration-dark.png"/>
|
||||||
<img src="{{asset('assets/img/illustrations/auth-cover-forgot-password-mask-'.$configData['style'].'.png') }}"
|
<img src="{{ asset('assets/img/illustrations/auth-cover-forgot-password-mask-'.$configData['style'].'.png') }}"
|
||||||
class="authentication-image" alt="mask"
|
class="authentication-image" alt="mask"
|
||||||
data-app-light-img="illustrations/auth-cover-forgot-password-mask-light.png"
|
data-app-light-img="illustrations/auth-cover-forgot-password-mask-light.png"
|
||||||
data-app-dark-img="illustrations/auth-cover-forgot-password-mask-dark.png"/>
|
data-app-dark-img="illustrations/auth-cover-forgot-password-mask-dark.png"/>
|
||||||
|
@ -16,20 +16,20 @@
|
|||||||
@section('content')
|
@section('content')
|
||||||
<div class="authentication-wrapper authentication-cover">
|
<div class="authentication-wrapper authentication-cover">
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
|
<a href="{{ url('/') }}" class="auth-cover-brand d-flex align-items-center gap-2">
|
||||||
<span
|
<span
|
||||||
class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
||||||
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
|
<span class="app-brand-text demo text-heading fw-semibold">{{ config('variables.templateName') }}</span>
|
||||||
</a>
|
</a>
|
||||||
<!-- /Logo -->
|
<!-- /Logo -->
|
||||||
<div class="authentication-inner row m-0">
|
<div class="authentication-inner row m-0">
|
||||||
<!-- /Left Section -->
|
<!-- /Left Section -->
|
||||||
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
|
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
|
||||||
<img src="{{asset('assets/img/illustrations/auth-login-illustration-'.$configData['style'].'.png') }}"
|
<img src="{{ asset('assets/img/illustrations/auth-login-illustration-'.$configData['style'].'.png') }}"
|
||||||
class="auth-cover-illustration w-100" alt="auth-illustration"
|
class="auth-cover-illustration w-100" alt="auth-illustration"
|
||||||
data-app-light-img="illustrations/auth-login-illustration-light.png"
|
data-app-light-img="illustrations/auth-login-illustration-light.png"
|
||||||
data-app-dark-img="illustrations/auth-login-illustration-dark.png"/>
|
data-app-dark-img="illustrations/auth-login-illustration-dark.png"/>
|
||||||
<img src="{{asset('assets/img/illustrations/auth-cover-login-mask-'.$configData['style'].'.png') }}"
|
<img src="{{ asset('assets/img/illustrations/auth-cover-login-mask-'.$configData['style'].'.png') }}"
|
||||||
class="authentication-image" alt="mask"
|
class="authentication-image" alt="mask"
|
||||||
data-app-light-img="illustrations/auth-cover-login-mask-light.png"
|
data-app-light-img="illustrations/auth-cover-login-mask-light.png"
|
||||||
data-app-dark-img="illustrations/auth-cover-login-mask-dark.png"/>
|
data-app-dark-img="illustrations/auth-cover-login-mask-dark.png"/>
|
||||||
@ -40,7 +40,7 @@ class="authentication-image" alt="mask"
|
|||||||
<div
|
<div
|
||||||
class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg position-relative py-sm-12 px-12 py-6">
|
class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg position-relative py-sm-12 px-12 py-6">
|
||||||
<div class="w-px-400 mx-auto pt-5 pt-lg-0">
|
<div class="w-px-400 mx-auto pt-5 pt-lg-0">
|
||||||
<h4 class="mb-1">Welcome to {{config('variables.templateName')}}! 👋</h4>
|
<h4 class="mb-1">Welcome to {{ config('variables.templateName') }}! 👋</h4>
|
||||||
<p class="mb-5">Please sign-in to your account and start the adventure</p>
|
<p class="mb-5">Please sign-in to your account and start the adventure</p>
|
||||||
|
|
||||||
@if (session('status'))
|
@if (session('status'))
|
||||||
|
@ -17,20 +17,20 @@
|
|||||||
@section('content')
|
@section('content')
|
||||||
<div class="authentication-wrapper authentication-cover">
|
<div class="authentication-wrapper authentication-cover">
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
|
<a href="{{ url('/') }}" class="auth-cover-brand d-flex align-items-center gap-2">
|
||||||
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
||||||
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
|
<span class="app-brand-text demo text-heading fw-semibold">{{ config('variables.templateName') }}</span>
|
||||||
</a>
|
</a>
|
||||||
<!-- /Logo -->
|
<!-- /Logo -->
|
||||||
<div class="authentication-inner row m-0">
|
<div class="authentication-inner row m-0">
|
||||||
|
|
||||||
<!-- /Left Text -->
|
<!-- /Left Text -->
|
||||||
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
|
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
|
||||||
<img src="{{asset('assets/img/illustrations/auth-register-illustration-'.$configData['style'].'.png') }}"
|
<img src="{{ asset('assets/img/illustrations/auth-register-illustration-'.$configData['style'].'.png') }}"
|
||||||
class="auth-cover-illustration w-100" alt="auth-illustration"
|
class="auth-cover-illustration w-100" alt="auth-illustration"
|
||||||
data-app-light-img="illustrations/auth-register-illustration-light.png"
|
data-app-light-img="illustrations/auth-register-illustration-light.png"
|
||||||
data-app-dark-img="illustrations/auth-register-illustration-dark.png"/>
|
data-app-dark-img="illustrations/auth-register-illustration-dark.png"/>
|
||||||
<img src="{{asset('assets/img/illustrations/auth-cover-register-mask-'.$configData['style'].'.png') }}"
|
<img src="{{ asset('assets/img/illustrations/auth-cover-register-mask-'.$configData['style'].'.png') }}"
|
||||||
class="authentication-image" alt="mask"
|
class="authentication-image" alt="mask"
|
||||||
data-app-light-img="illustrations/auth-cover-register-mask-light.png"
|
data-app-light-img="illustrations/auth-cover-register-mask-light.png"
|
||||||
data-app-dark-img="illustrations/auth-cover-register-mask-dark.png"/>
|
data-app-dark-img="illustrations/auth-cover-register-mask-dark.png"/>
|
||||||
|
@ -18,20 +18,20 @@
|
|||||||
<div class="position-relative">
|
<div class="position-relative">
|
||||||
<div class="authentication-wrapper authentication-cover">
|
<div class="authentication-wrapper authentication-cover">
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
|
<a href="{{ url('/') }}" class="auth-cover-brand d-flex align-items-center gap-2">
|
||||||
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
||||||
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
|
<span class="app-brand-text demo text-heading fw-semibold">{{ config('variables.templateName') }}</span>
|
||||||
</a>
|
</a>
|
||||||
<!-- /Logo -->
|
<!-- /Logo -->
|
||||||
<div class="authentication-inner row m-0">
|
<div class="authentication-inner row m-0">
|
||||||
|
|
||||||
<!-- /Left Section -->
|
<!-- /Left Section -->
|
||||||
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
|
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
|
||||||
<img src="{{asset('assets/img/illustrations/auth-reset-password-illustration-'.$configData['style'].'.png') }}"
|
<img src="{{ asset('assets/img/illustrations/auth-reset-password-illustration-'.$configData['style'].'.png') }}"
|
||||||
class="auth-cover-illustration w-100" alt="auth-illustration"
|
class="auth-cover-illustration w-100" alt="auth-illustration"
|
||||||
data-app-light-img="illustrations/auth-reset-password-illustration-light.png"
|
data-app-light-img="illustrations/auth-reset-password-illustration-light.png"
|
||||||
data-app-dark-img="illustrations/auth-reset-password-illustration-dark.png"/>
|
data-app-dark-img="illustrations/auth-reset-password-illustration-dark.png"/>
|
||||||
<img src="{{asset('assets/img/illustrations/auth-cover-reset-password-mask-'.$configData['style'].'.png') }}"
|
<img src="{{ asset('assets/img/illustrations/auth-cover-reset-password-mask-'.$configData['style'].'.png') }}"
|
||||||
class="authentication-image" alt="mask"
|
class="authentication-image" alt="mask"
|
||||||
data-app-light-img="illustrations/auth-cover-reset-password-mask-light.png"
|
data-app-light-img="illustrations/auth-cover-reset-password-mask-light.png"
|
||||||
data-app-dark-img="illustrations/auth-cover-reset-password-mask-dark.png"/>
|
data-app-dark-img="illustrations/auth-cover-reset-password-mask-dark.png"/>
|
||||||
@ -50,7 +50,7 @@ class="authentication-image" alt="mask"
|
|||||||
|
|
||||||
<div class="form-floating form-floating-outline mb-5">
|
<div class="form-floating form-floating-outline mb-5">
|
||||||
<input type="email" class="form-control @error('email') is-invalid @enderror" id="email"
|
<input type="email" class="form-control @error('email') is-invalid @enderror" id="email"
|
||||||
name="email" placeholder="john@example.com" value="{{Request()->email}}"
|
name="email" placeholder="john@example.com" value="{{ Request()->email }}"
|
||||||
readonly/>
|
readonly/>
|
||||||
<label for="email">Email</label>
|
<label for="email">Email</label>
|
||||||
@error('email')
|
@error('email')
|
||||||
|
@ -17,20 +17,20 @@
|
|||||||
@section('content')
|
@section('content')
|
||||||
<div class="authentication-wrapper authentication-cover">
|
<div class="authentication-wrapper authentication-cover">
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
|
<a href="{{ url('/') }}" class="auth-cover-brand d-flex align-items-center gap-2">
|
||||||
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
||||||
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
|
<span class="app-brand-text demo text-heading fw-semibold">{{ config('variables.templateName') }}</span>
|
||||||
</a>
|
</a>
|
||||||
<!-- /Logo -->
|
<!-- /Logo -->
|
||||||
<div class="authentication-inner row m-0">
|
<div class="authentication-inner row m-0">
|
||||||
|
|
||||||
<!-- /Left Section -->
|
<!-- /Left Section -->
|
||||||
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
|
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
|
||||||
<img src="{{asset('assets/img/illustrations/auth-two-steps-illustration-'.$configData['style'].'.png') }}"
|
<img src="{{ asset('assets/img/illustrations/auth-two-steps-illustration-'.$configData['style'].'.png') }}"
|
||||||
class="auth-cover-illustration w-100" alt="auth-illustration"
|
class="auth-cover-illustration w-100" alt="auth-illustration"
|
||||||
data-app-light-img="illustrations/auth-two-steps-illustration-light.png"
|
data-app-light-img="illustrations/auth-two-steps-illustration-light.png"
|
||||||
data-app-dark-img="illustrations/auth-two-steps-illustration-dark.png"/>
|
data-app-dark-img="illustrations/auth-two-steps-illustration-dark.png"/>
|
||||||
<img src="{{asset('assets/img/illustrations/auth-cover-register-mask-'.$configData['style'].'.png') }}"
|
<img src="{{ asset('assets/img/illustrations/auth-cover-register-mask-'.$configData['style'].'.png') }}"
|
||||||
class="authentication-image" alt="mask"
|
class="authentication-image" alt="mask"
|
||||||
data-app-light-img="illustrations/auth-cover-register-mask-light.png"
|
data-app-light-img="illustrations/auth-cover-register-mask-light.png"
|
||||||
data-app-dark-img="illustrations/auth-cover-register-mask-dark.png"/>
|
data-app-dark-img="illustrations/auth-cover-register-mask-dark.png"/>
|
||||||
|
@ -18,10 +18,10 @@
|
|||||||
@section('content')
|
@section('content')
|
||||||
<div class="authentication-wrapper authentication-cover">
|
<div class="authentication-wrapper authentication-cover">
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
|
<a href="{{ url('/') }}" class="auth-cover-brand d-flex align-items-center gap-2">
|
||||||
<span
|
<span
|
||||||
class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
||||||
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
|
<span class="app-brand-text demo text-heading fw-semibold">{{ config('variables.templateName') }}</span>
|
||||||
</a>
|
</a>
|
||||||
<!-- /Logo -->
|
<!-- /Logo -->
|
||||||
<div class="authentication-inner row m-0">
|
<div class="authentication-inner row m-0">
|
||||||
@ -29,11 +29,11 @@ class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'
|
|||||||
<!-- /Left Section -->
|
<!-- /Left Section -->
|
||||||
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
|
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
|
||||||
<img
|
<img
|
||||||
src="{{asset('assets/img/illustrations/auth-verify-email-illustration-'.$configData['style'].'.png') }}"
|
src="{{ asset('assets/img/illustrations/auth-verify-email-illustration-'.$configData['style'].'.png') }}"
|
||||||
class="auth-cover-illustration w-100" alt="auth-illustration"
|
class="auth-cover-illustration w-100" alt="auth-illustration"
|
||||||
data-app-light-img="illustrations/auth-verify-email-illustration-light.png"
|
data-app-light-img="illustrations/auth-verify-email-illustration-light.png"
|
||||||
data-app-dark-img="illustrations/auth-verify-email-illustration-dark.png"/>
|
data-app-dark-img="illustrations/auth-verify-email-illustration-dark.png"/>
|
||||||
<img src="{{asset('assets/img/illustrations/auth-cover-login-mask-'.$configData['style'].'.png') }}"
|
<img src="{{ asset('assets/img/illustrations/auth-cover-login-mask-'.$configData['style'].'.png') }}"
|
||||||
class="authentication-image" alt="mask"
|
class="authentication-image" alt="mask"
|
||||||
data-app-light-img="illustrations/auth-cover-login-mask-light.png"
|
data-app-light-img="illustrations/auth-cover-login-mask-light.png"
|
||||||
data-app-dark-img="illustrations/auth-cover-login-mask-dark.png"/>
|
data-app-dark-img="illustrations/auth-cover-login-mask-dark.png"/>
|
||||||
@ -56,7 +56,7 @@ class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg posi
|
|||||||
@endif
|
@endif
|
||||||
<p class="text-start mb-0">
|
<p class="text-start mb-0">
|
||||||
Account activation link sent to your email address: <span
|
Account activation link sent to your email address: <span
|
||||||
class="h6">{{Auth::user()->email}}</span> Please follow the link inside to continue.
|
class="h6">{{ Auth::user()->email }}</span> Please follow the link inside to continue.
|
||||||
</p>
|
</p>
|
||||||
<div class="mt-5 d-flex flex-column gap-2">
|
<div class="mt-5 d-flex flex-column gap-2">
|
||||||
<form method="POST" action="{{ route('verification.send') }}">
|
<form method="POST" action="{{ route('verification.send') }}">
|
||||||
@ -65,7 +65,7 @@ class="h6">{{Auth::user()->email}}</span> Please follow the link inside to conti
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form method="POST" action="{{route('logout')}}">
|
<form method="POST" action="{{ route('logout') }}">
|
||||||
@csrf
|
@csrf
|
||||||
<button type="submit" class="w-100 btn btn-danger">Log Out</button>
|
<button type="submit" class="w-100 btn btn-danger">Log Out</button>
|
||||||
</form>
|
</form>
|
||||||
|
@ -43,18 +43,18 @@
|
|||||||
<div class="card p-md-7 p-1">
|
<div class="card p-md-7 p-1">
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<div class="app-brand justify-content-center mt-5">
|
<div class="app-brand justify-content-center mt-5">
|
||||||
<a href="{{url('/')}}" class="app-brand-link gap-2">
|
<a href="{{ url('/') }}" class="app-brand-link gap-2">
|
||||||
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
||||||
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
|
<span class="app-brand-text demo text-heading fw-semibold">{{ config('variables.templateName') }}</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<!-- /Logo -->
|
<!-- /Logo -->
|
||||||
|
|
||||||
<div class="card-body mt-1">
|
<div class="card-body mt-1">
|
||||||
<h4 class="mb-1">Welcome to {{config('variables.templateName')}}! 👋</h4>
|
<h4 class="mb-1">Welcome to {{ config('variables.templateName') }}! 👋</h4>
|
||||||
<p class="mb-5">Please sign-in to your account and start the adventure</p>
|
<p class="mb-5">Please sign-in to your account and start the adventure</p>
|
||||||
|
|
||||||
<form id="formAuthentication" class="mb-5" action="{{url('/')}}" method="GET">
|
<form id="formAuthentication" class="mb-5" action="{{ url('/') }}" method="GET">
|
||||||
<div class="form-floating form-floating-outline mb-5">
|
<div class="form-floating form-floating-outline mb-5">
|
||||||
<input type="text" class="form-control" id="email" name="email-username"
|
<input type="text" class="form-control" id="email" name="email-username"
|
||||||
placeholder="Enter your email or username" autofocus>
|
placeholder="Enter your email or username" autofocus>
|
||||||
@ -81,7 +81,7 @@ class="ri-eye-off-line"></i></span>
|
|||||||
Remember Me
|
Remember Me
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<a href="{{url('auth/forgot-password-basic')}}" class="float-end mb-1 mt-2">
|
<a href="{{ url('auth/forgot-password-basic') }}" class="float-end mb-1 mt-2">
|
||||||
<span>Forgot Password?</span>
|
<span>Forgot Password?</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -92,7 +92,7 @@ class="ri-eye-off-line"></i></span>
|
|||||||
|
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
<span>New on our platform?</span>
|
<span>New on our platform?</span>
|
||||||
<a href="{{url('auth/register-basic')}}">
|
<a href="{{ url('auth/register-basic') }}">
|
||||||
<span>Create an account</span>
|
<span>Create an account</span>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
@ -122,7 +122,7 @@ class="ri-eye-off-line"></i></span>
|
|||||||
</div>
|
</div>
|
||||||
<!-- /Login -->
|
<!-- /Login -->
|
||||||
<img alt="mask"
|
<img alt="mask"
|
||||||
src="{{asset('assets/img/illustrations/auth-basic-login-mask-'.$configData['style'].'.png') }}"
|
src="{{ asset('assets/img/illustrations/auth-basic-login-mask-'.$configData['style'].'.png') }}"
|
||||||
class="authentication-image d-none d-lg-block"
|
class="authentication-image d-none d-lg-block"
|
||||||
data-app-light-img="illustrations/auth-basic-login-mask-light.png"
|
data-app-light-img="illustrations/auth-basic-login-mask-light.png"
|
||||||
data-app-dark-img="illustrations/auth-basic-login-mask-dark.png"/>
|
data-app-dark-img="illustrations/auth-basic-login-mask-dark.png"/>
|
||||||
|
@ -43,9 +43,9 @@
|
|||||||
<div class="card p-md-7 p-1">
|
<div class="card p-md-7 p-1">
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<div class="app-brand justify-content-center mt-5">
|
<div class="app-brand justify-content-center mt-5">
|
||||||
<a href="{{url('/')}}" class="app-brand-link gap-2">
|
<a href="{{ url('/') }}" class="app-brand-link gap-2">
|
||||||
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
||||||
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
|
<span class="app-brand-text demo text-heading fw-semibold">{{ config('variables.templateName') }}</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<!-- /Logo -->
|
<!-- /Logo -->
|
||||||
@ -53,7 +53,7 @@
|
|||||||
<h4 class="mb-1">Adventure starts here 🚀</h4>
|
<h4 class="mb-1">Adventure starts here 🚀</h4>
|
||||||
<p class="mb-5">Make your app management easy and fun!</p>
|
<p class="mb-5">Make your app management easy and fun!</p>
|
||||||
|
|
||||||
<form id="formAuthentication" class="mb-5" action="{{url('/')}}" method="GET">
|
<form id="formAuthentication" class="mb-5" action="{{ url('/') }}" method="GET">
|
||||||
<div class="form-floating form-floating-outline mb-5">
|
<div class="form-floating form-floating-outline mb-5">
|
||||||
<input type="text" class="form-control" id="username" name="username"
|
<input type="text" class="form-control" id="username" name="username"
|
||||||
placeholder="Enter your username" autofocus>
|
placeholder="Enter your username" autofocus>
|
||||||
@ -92,7 +92,7 @@
|
|||||||
|
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
<span>Already have an account?</span>
|
<span>Already have an account?</span>
|
||||||
<a href="{{url('auth/login-basic')}}">
|
<a href="{{ url('auth/login-basic') }}">
|
||||||
<span>Sign in instead</span>
|
<span>Sign in instead</span>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
@ -122,7 +122,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- Register Card -->
|
<!-- Register Card -->
|
||||||
<img alt="mask"
|
<img alt="mask"
|
||||||
src="{{asset('assets/img/illustrations/auth-basic-register-mask-'.$configData['style'].'.png') }}"
|
src="{{ asset('assets/img/illustrations/auth-basic-register-mask-'.$configData['style'].'.png') }}"
|
||||||
class="authentication-image d-none d-lg-block"
|
class="authentication-image d-none d-lg-block"
|
||||||
data-app-light-img="illustrations/auth-basic-register-mask-light.png"
|
data-app-light-img="illustrations/auth-basic-register-mask-light.png"
|
||||||
data-app-dark-img="illustrations/auth-basic-register-mask-dark.png"/>
|
data-app-dark-img="illustrations/auth-basic-register-mask-dark.png"/>
|
||||||
|
@ -20,12 +20,12 @@
|
|||||||
<h4 class="mb-2">Page Not Found ⚠️</h4>
|
<h4 class="mb-2">Page Not Found ⚠️</h4>
|
||||||
<p class="mb-6 mx-2">we couldn't find the page you are looking for</p>
|
<p class="mb-6 mx-2">we couldn't find the page you are looking for</p>
|
||||||
<div class="d-flex justify-content-center mt-9">
|
<div class="d-flex justify-content-center mt-9">
|
||||||
<img src="{{ asset('assets/img/illustrations/misc-error-object.png')}}" alt="misc-error" class="img-fluid misc-object d-none d-lg-inline-block" width="160">
|
<img src="{{ asset('assets/img/illustrations/misc-error-object.png') }}" alt="misc-error" class="img-fluid misc-object d-none d-lg-inline-block" width="160">
|
||||||
<img src="{{ asset('assets/img/illustrations/misc-bg-'.$configData['style'].'.png') }}" alt="misc-error" class="misc-bg d-none d-lg-inline-block" data-app-light-img="illustrations/misc-bg-light.png" data-app-dark-img="illustrations/misc-bg-dark.png">
|
<img src="{{ asset('assets/img/illustrations/misc-bg-'.$configData['style'].'.png') }}" alt="misc-error" class="misc-bg d-none d-lg-inline-block" data-app-light-img="illustrations/misc-bg-light.png" data-app-dark-img="illustrations/misc-bg-dark.png">
|
||||||
<div class="d-flex flex-column align-items-center">
|
<div class="d-flex flex-column align-items-center">
|
||||||
<img src="{{ asset('assets/img/illustrations/misc-error-illustration.png' )}}" alt="misc-error" class="img-fluid z-1" width="190">
|
<img src="{{ asset('assets/img/illustrations/misc-error-illustration.png' ) }}" alt="misc-error" class="img-fluid z-1" width="190">
|
||||||
<div>
|
<div>
|
||||||
<a href="{{url('/')}}" class="btn btn-primary text-center my-10">Back to home</a>
|
<a href="{{ url('/') }}" class="btn btn-primary text-center my-10">Back to home</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
$contentLayout = (isset($container) ? (($container === 'container-xxl') ? "layout-compact" : "layout-wide") : "");
|
$contentLayout = (isset($container) ? (($container === 'container-xxl') ? "layout-compact" : "layout-wide") : "");
|
||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
<html lang="{{ session()->get('locale') ?? app()->getLocale() }}" class="{{ $configData['style'] }}-style {{($contentLayout ?? '')}} {{ ($navbarType ?? '') }} {{ ($menuFixed ?? '') }} {{ $menuCollapsed ?? '' }} {{ $menuFlipped ?? '' }} {{ $menuOffcanvas ?? '' }} {{ $footerFixed ?? '' }} {{ $customizerHidden ?? '' }}" dir="{{ $configData['textDirection'] }}" data-theme="{{ $configData['theme'] }}" data-assets-path="{{ asset('/assets') . '/' }}" data-base-url="{{url('/')}}" data-framework="laravel" data-template="{{ $configData['layout'] . '-menu-' . $configData['themeOpt'] . '-' . $configData['styleOpt'] }}" data-style="{{$configData['styleOptVal']}}">
|
<html lang="{{ session()->get('locale') ?? app()->getLocale() }}" class="{{ $configData['style'] }}-style {{ ($contentLayout ?? '') }} {{ ($navbarType ?? '') }} {{ ($menuFixed ?? '') }} {{ $menuCollapsed ?? '' }} {{ $menuFlipped ?? '' }} {{ $menuOffcanvas ?? '' }} {{ $footerFixed ?? '' }} {{ $customizerHidden ?? '' }}" dir="{{ $configData['textDirection'] }}" data-theme="{{ $configData['theme'] }}" data-assets-path="{{ asset('/assets') . '/' }}" data-base-url="{{ url('/') }}" data-framework="laravel" data-template="{{ $configData['layout'] . '-menu-' . $configData['themeOpt'] . '-' . $configData['styleOpt'] }}" data-style="{{ $configData['styleOptVal'] }}">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
|
@ -59,9 +59,9 @@
|
|||||||
|
|
||||||
<!-- Content -->
|
<!-- Content -->
|
||||||
@if ($isFlex)
|
@if ($isFlex)
|
||||||
<div class="{{$container}} d-flex align-items-stretch flex-grow-1 p-0">
|
<div class="{{ $container }} d-flex align-items-stretch flex-grow-1 p-0">
|
||||||
@else
|
@else
|
||||||
<div class="{{$container}} flex-grow-1 container-p-y">
|
<div class="{{ $container }} flex-grow-1 container-p-y">
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
@yield('content')
|
@yield('content')
|
||||||
|
@ -57,9 +57,9 @@
|
|||||||
|
|
||||||
<!-- Content -->
|
<!-- Content -->
|
||||||
@if ($isFlex)
|
@if ($isFlex)
|
||||||
<div class="{{$container}} d-flex align-items-stretch flex-grow-1 p-0">
|
<div class="{{ $container }} d-flex align-items-stretch flex-grow-1 p-0">
|
||||||
@else
|
@else
|
||||||
<div class="{{$container}} flex-grow-1 container-p-y">
|
<div class="{{ $container }} flex-grow-1 container-p-y">
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
@yield('content')
|
@yield('content')
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!-- Footer: Start -->
|
<!-- Footer: Start -->
|
||||||
<footer class="landing-footer">
|
<footer class="landing-footer">
|
||||||
<div class="footer-top position-relative overflow-hidden">
|
<div class="footer-top position-relative overflow-hidden">
|
||||||
<img src="{{asset('assets/img/front-pages/backgrounds/footer-bg.png')}}" alt="footer bg" class="footer-bg banner-bg-img" />
|
<img src="{{ asset('assets/img/front-pages/backgrounds/footer-bg.png') }}" alt="footer bg" class="footer-bg banner-bg-img" />
|
||||||
<div class="container position-relative">
|
<div class="container position-relative">
|
||||||
<div class="row gx-0 gy-7 gx-sm-6 gx-lg-12">
|
<div class="row gx-0 gy-7 gx-sm-6 gx-lg-12">
|
||||||
<div class="col-lg-5">
|
<div class="col-lg-5">
|
||||||
@ -65,8 +65,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-lg-3 col-md-4">
|
<div class="col-lg-3 col-md-4">
|
||||||
<h6 class="footer-title mb-4 mb-lg-6">Download our app</h6>
|
<h6 class="footer-title mb-4 mb-lg-6">Download our app</h6>
|
||||||
<a href="javascript:void(0);" class="d-block footer-link mb-4"><img src="{{asset('assets/img/front-pages/landing-page/apple-icon.png')}}" alt="apple icon" /></a>
|
<a href="javascript:void(0);" class="d-block footer-link mb-4"><img src="{{ asset('assets/img/front-pages/landing-page/apple-icon.png') }}" alt="apple icon" /></a>
|
||||||
<a href="javascript:void(0);" class="d-block footer-link"><img src="{{asset('assets/img/front-pages/landing-page/google-play-icon.png')}}" alt="google play icon" /></a>
|
<a href="javascript:void(0);" class="d-block footer-link"><img src="{{ asset('assets/img/front-pages/landing-page/google-play-icon.png') }}" alt="google play icon" /></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -77,13 +77,13 @@
|
|||||||
<span class="footer-text">©
|
<span class="footer-text">©
|
||||||
<script>document.write(new Date().getFullYear());</script>, Made with <i class="tf-icons ri-heart-fill text-danger"></i> by
|
<script>document.write(new Date().getFullYear());</script>, Made with <i class="tf-icons ri-heart-fill text-danger"></i> by
|
||||||
</span>
|
</span>
|
||||||
<a href="{{config('variables.creatorUrl')}}" target="_blank" class="footer-link fw-medium footer-theme-link">{{config('variables.creatorName')}}</a>
|
<a href="{{ config('variables.creatorUrl') }}" target="_blank" class="footer-link fw-medium footer-theme-link">{{ config('variables.creatorName') }}</a>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<a href="{{config('variables.githubUrl')}}" class="footer-link me-4" target="_blank"><i class="ri-github-fill"></i></a>
|
<a href="{{ config('variables.githubUrl') }}" class="footer-link me-4" target="_blank"><i class="ri-github-fill"></i></a>
|
||||||
<a href="{{config('variables.facebookUrl')}}" class="footer-link me-4" target="_blank"><i class="ri-facebook-circle-fill"></i></a>
|
<a href="{{ config('variables.facebookUrl') }}" class="footer-link me-4" target="_blank"><i class="ri-facebook-circle-fill"></i></a>
|
||||||
<a href="{{config('variables.twitterUrl')}}" class="footer-link me-4" target="_blank"><i class="ri-twitter-fill"></i></a>
|
<a href="{{ config('variables.twitterUrl') }}" class="footer-link me-4" target="_blank"><i class="ri-twitter-fill"></i></a>
|
||||||
<a href="{{config('variables.instagramUrl')}}" class="footer-link" target="_blank"><i class='ri-instagram-line'></i></a>
|
<a href="{{ config('variables.instagramUrl') }}" class="footer-link" target="_blank"><i class='ri-instagram-line'></i></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
@endphp
|
@endphp
|
||||||
<!-- Horizontal Menu -->
|
<!-- Horizontal Menu -->
|
||||||
<aside id="layout-menu" class="layout-menu-horizontal menu-horizontal menu bg-menu-theme flex-grow-0">
|
<aside id="layout-menu" class="layout-menu-horizontal menu-horizontal menu bg-menu-theme flex-grow-0">
|
||||||
<div class="{{$containerNav}} d-flex h-100">
|
<div class="{{ $containerNav }} d-flex h-100">
|
||||||
<ul class="menu-inner">
|
<ul class="menu-inner">
|
||||||
@foreach ($menuData[1]->menu as $menu)
|
@foreach ($menuData[1]->menu as $menu)
|
||||||
|
|
||||||
@ -35,7 +35,7 @@
|
|||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
{{-- main menu --}}
|
{{-- main menu --}}
|
||||||
<li class="menu-item {{$activeClass}}">
|
<li class="menu-item {{ $activeClass }}">
|
||||||
<a href="{{ isset($menu->url) ? url($menu->url) : 'javascript:void(0);' }}"
|
<a href="{{ isset($menu->url) ? url($menu->url) : 'javascript:void(0);' }}"
|
||||||
class="{{ isset($menu->submenu) ? 'menu-link menu-toggle' : 'menu-link' }}"
|
class="{{ isset($menu->submenu) ? 'menu-link menu-toggle' : 'menu-link' }}"
|
||||||
@if (isset($menu->target) and !empty($menu->target)) target="_blank" @endif>
|
@if (isset($menu->target) and !empty($menu->target)) target="_blank" @endif>
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
}
|
}
|
||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
<li class="menu-item {{$activeClass}}">
|
<li class="menu-item {{ $activeClass }}">
|
||||||
<a href="{{ isset($submenu->url) ? url($submenu->url) : 'javascript:void(0)' }}" class="{{ isset($submenu->submenu) ? 'menu-link menu-toggle' : 'menu-link' }}" @if (isset($submenu->target) and !empty($submenu->target)) target="_blank" @endif>
|
<a href="{{ isset($submenu->url) ? url($submenu->url) : 'javascript:void(0)' }}" class="{{ isset($submenu->submenu) ? 'menu-link menu-toggle' : 'menu-link' }}" @if (isset($submenu->target) and !empty($submenu->target)) target="_blank" @endif>
|
||||||
@if (isset($submenu->icon))
|
@if (isset($submenu->icon))
|
||||||
<i class="{{ $submenu->icon }}"></i>
|
<i class="{{ $submenu->icon }}"></i>
|
||||||
|
@ -7,11 +7,11 @@
|
|||||||
<aside id="layout-menu" class="layout-menu menu-vertical menu bg-menu-theme">
|
<aside id="layout-menu" class="layout-menu menu-vertical menu bg-menu-theme">
|
||||||
|
|
||||||
<!-- ! Hide app brand if navbar-full -->
|
<!-- ! Hide app brand if navbar-full -->
|
||||||
@if(!isset($navbarFull))
|
@if (!isset($navbarFull))
|
||||||
<div class="app-brand demo">
|
<div class="app-brand demo">
|
||||||
<a href="{{url('/')}}" class="app-brand-link">
|
<a href="{{ url('/') }}" class="app-brand-link">
|
||||||
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
||||||
<span class="app-brand-text demo menu-text fw-semibold ms-2">{{config('variables.templateName')}}</span>
|
<span class="app-brand-text demo menu-text fw-semibold ms-2">{{ config('variables.templateName') }}</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="javascript:void(0);" class="layout-menu-toggle menu-link text-large ms-auto">
|
<a href="javascript:void(0);" class="layout-menu-toggle menu-link text-large ms-auto">
|
||||||
@ -64,7 +64,7 @@
|
|||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
{{-- main menu --}}
|
{{-- main menu --}}
|
||||||
<li class="menu-item {{$activeClass}}">
|
<li class="menu-item {{ $activeClass }}">
|
||||||
<a href="{{ isset($menu->url) ? url($menu->url) : 'javascript:void(0);' }}"
|
<a href="{{ isset($menu->url) ? url($menu->url) : 'javascript:void(0);' }}"
|
||||||
class="{{ isset($menu->submenu) ? 'menu-link menu-toggle' : 'menu-link' }}"
|
class="{{ isset($menu->submenu) ? 'menu-link menu-toggle' : 'menu-link' }}"
|
||||||
@if (isset($menu->target) and !empty($menu->target)) target="_blank" @endif>
|
@if (isset($menu->target) and !empty($menu->target)) target="_blank" @endif>
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
<!-- Menu wrapper: End -->
|
<!-- Menu wrapper: End -->
|
||||||
<!-- Toolbar: Start -->
|
<!-- Toolbar: Start -->
|
||||||
<ul class="navbar-nav flex-row align-items-center ms-auto">
|
<ul class="navbar-nav flex-row align-items-center ms-auto">
|
||||||
@if($configData['hasCustomizer'] == true)
|
@if ($configData['hasCustomizer'] == true)
|
||||||
<!-- Style Switcher -->
|
<!-- Style Switcher -->
|
||||||
<li class="nav-item dropdown-style-switcher dropdown me-2 me-xl-0">
|
<li class="nav-item dropdown-style-switcher dropdown me-2 me-xl-0">
|
||||||
<a class="nav-link btn btn-text-secondary rounded-pill btn-icon dropdown-toggle hide-arrow me-sm-4" href="javascript:void(0);" data-bs-toggle="dropdown">
|
<a class="nav-link btn btn-text-secondary rounded-pill btn-icon dropdown-toggle hide-arrow me-sm-4" href="javascript:void(0);" data-bs-toggle="dropdown">
|
||||||
|
@ -6,22 +6,22 @@
|
|||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
<!-- Navbar -->
|
<!-- Navbar -->
|
||||||
@if(isset($navbarDetached) && $navbarDetached == 'navbar-detached')
|
@if (isset($navbarDetached) && $navbarDetached == 'navbar-detached')
|
||||||
<nav class="layout-navbar {{$containerNav}} navbar navbar-expand-xl {{$navbarDetached}} align-items-center bg-navbar-theme" id="layout-navbar">
|
<nav class="layout-navbar {{ $containerNav }} navbar navbar-expand-xl {{ $navbarDetached }} align-items-center bg-navbar-theme" id="layout-navbar">
|
||||||
@endif
|
@endif
|
||||||
@if(isset($navbarDetached) && $navbarDetached == '')
|
@if (isset($navbarDetached) && $navbarDetached == '')
|
||||||
<nav class="layout-navbar navbar navbar-expand-xl align-items-center bg-navbar-theme" id="layout-navbar">
|
<nav class="layout-navbar navbar navbar-expand-xl align-items-center bg-navbar-theme" id="layout-navbar">
|
||||||
<div class="{{$containerNav}}">
|
<div class="{{ $containerNav }}">
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
<!-- Brand demo (display only for navbar-full and hide on below xl) -->
|
<!-- Brand demo (display only for navbar-full and hide on below xl) -->
|
||||||
@if(isset($navbarFull))
|
@if (isset($navbarFull))
|
||||||
<div class="navbar-brand app-brand demo d-none d-xl-flex py-0 me-6">
|
<div class="navbar-brand app-brand demo d-none d-xl-flex py-0 me-6">
|
||||||
<a href="{{url('/')}}" class="app-brand-link gap-2">
|
<a href="{{ url('/') }}" class="app-brand-link gap-2">
|
||||||
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
||||||
<span class="app-brand-text demo menu-text fw-semibold">{{config('variables.templateName')}}</span>
|
<span class="app-brand-text demo menu-text fw-semibold">{{ config('variables.templateName') }}</span>
|
||||||
</a>
|
</a>
|
||||||
@if(isset($menuHorizontal))
|
@if (isset($menuHorizontal))
|
||||||
<a href="javascript:void(0);" class="layout-menu-toggle menu-link text-large ms-auto d-xl-none">
|
<a href="javascript:void(0);" class="layout-menu-toggle menu-link text-large ms-auto d-xl-none">
|
||||||
<i class="ri-close-fill align-middle"></i>
|
<i class="ri-close-fill align-middle"></i>
|
||||||
</a>
|
</a>
|
||||||
@ -30,7 +30,7 @@
|
|||||||
@endif
|
@endif
|
||||||
|
|
||||||
<!-- ! Not required for layout-without-menu -->
|
<!-- ! Not required for layout-without-menu -->
|
||||||
@if(!isset($navbarHideToggle))
|
@if (!isset($navbarHideToggle))
|
||||||
<div class="layout-menu-toggle navbar-nav align-items-xl-center me-4 me-xl-0{{ isset($menuHorizontal) ? ' d-xl-none ' : '' }} {{ isset($contentNavbar) ?' d-xl-none ' : '' }}">
|
<div class="layout-menu-toggle navbar-nav align-items-xl-center me-4 me-xl-0{{ isset($menuHorizontal) ? ' d-xl-none ' : '' }} {{ isset($contentNavbar) ?' d-xl-none ' : '' }}">
|
||||||
<a class="nav-item nav-link px-0 me-xl-6" href="javascript:void(0)">
|
<a class="nav-item nav-link px-0 me-xl-6" href="javascript:void(0)">
|
||||||
<i class="ri-menu-fill ri-24px"></i>
|
<i class="ri-menu-fill ri-24px"></i>
|
||||||
@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
<div class="navbar-nav-right d-flex align-items-center" id="navbar-collapse">
|
<div class="navbar-nav-right d-flex align-items-center" id="navbar-collapse">
|
||||||
|
|
||||||
@if($configData['hasCustomizer'] == true)
|
@if ($configData['hasCustomizer'] == true)
|
||||||
<!-- Style Switcher -->
|
<!-- Style Switcher -->
|
||||||
<div class="navbar-nav align-items-center">
|
<div class="navbar-nav align-items-center">
|
||||||
<div class="nav-item dropdown-style-switcher dropdown me-1 me-xl-0">
|
<div class="nav-item dropdown-style-switcher dropdown me-1 me-xl-0">
|
||||||
@ -193,7 +193,7 @@
|
|||||||
<!--/ User -->
|
<!--/ User -->
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@if(!isset($navbarDetached))
|
@if (!isset($navbarDetached))
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
</nav>
|
</nav>
|
||||||
|
@ -20,9 +20,9 @@
|
|||||||
window.templateCustomizer = new TemplateCustomizer({
|
window.templateCustomizer = new TemplateCustomizer({
|
||||||
cssPath: '',
|
cssPath: '',
|
||||||
themesPath: '',
|
themesPath: '',
|
||||||
defaultStyle: "{{$configData['styleOpt']}}",
|
defaultStyle: "{{ $configData['styleOpt'] }}",
|
||||||
defaultShowDropdownOnHover: "{{$configData['showDropdownOnHover']}}", // true/false (for horizontal layout only)
|
defaultShowDropdownOnHover: "{{ $configData['showDropdownOnHover'] }}", // true/false (for horizontal layout only)
|
||||||
displayCustomizer: "{{$configData['displayCustomizer']}}",
|
displayCustomizer: "{{ $configData['displayCustomizer'] }}",
|
||||||
lang: '{{ app()->getLocale() }}',
|
lang: '{{ app()->getLocale() }}',
|
||||||
pathResolver: function(path) {
|
pathResolver: function(path) {
|
||||||
var resolvedPaths = {
|
var resolvedPaths = {
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
window.templateCustomizer = new TemplateCustomizer({
|
window.templateCustomizer = new TemplateCustomizer({
|
||||||
cssPath: '',
|
cssPath: '',
|
||||||
themesPath: '',
|
themesPath: '',
|
||||||
defaultStyle: "{{$configData['styleOpt']}}",
|
defaultStyle: "{{ $configData['styleOpt'] }}",
|
||||||
displayCustomizer: "{{$configData['displayCustomizer']}}",
|
displayCustomizer: "{{ $configData['displayCustomizer'] }}",
|
||||||
pathResolver: function(path) {
|
pathResolver: function(path) {
|
||||||
var resolvedPaths = {
|
var resolvedPaths = {
|
||||||
// Core stylesheets
|
// Core stylesheets
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="bg-white divide-y divide-gray-200">
|
<tbody class="bg-white divide-y divide-gray-200">
|
||||||
@foreach($studies as $study)
|
@foreach ($studies as $study)
|
||||||
<tr>
|
<tr>
|
||||||
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">{{ $study->id }}</td>
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">{{ $study->id }}</td>
|
||||||
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">{{ $study->accession_number }}</td>
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">{{ $study->accession_number }}</td>
|
||||||
@ -45,7 +45,7 @@
|
|||||||
<a target="_blank" href="{{ \App\Services\Pacs\PacsUrlGen::stoneViewer($study->study_instance_uid) }}" >St</a>
|
<a target="_blank" href="{{ \App\Services\Pacs\PacsUrlGen::stoneViewer($study->study_instance_uid) }}" >St</a>
|
||||||
|
|
|
|
||||||
<a target="_blank" href="{{ \App\Services\Pacs\PacsUrlGen::ohifViewer($study->study_instance_uid) }}">OHF</a>
|
<a target="_blank" href="{{ \App\Services\Pacs\PacsUrlGen::ohifViewer($study->study_instance_uid) }}">OHF</a>
|
||||||
@if($study->image_count > 1 && $study->study_modality != 'CR')
|
@if ($study->image_count > 1 && $study->study_modality != 'CR')
|
||||||
|
|
|
|
||||||
<a target="_blank" href="{{ \App\Services\Pacs\PacsUrlGen::ohifViewerMpr($study->study_instance_uid) }}">MPR</a>
|
<a target="_blank" href="{{ \App\Services\Pacs\PacsUrlGen::ohifViewerMpr($study->study_instance_uid) }}">MPR</a>
|
||||||
|
|
|
|
||||||
|
@ -19,15 +19,15 @@
|
|||||||
<div class="card p-md-7 p-1">
|
<div class="card p-md-7 p-1">
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<div class="app-brand justify-content-center mt-5">
|
<div class="app-brand justify-content-center mt-5">
|
||||||
<a href="{{url('/')}}" class="app-brand-link gap-2">
|
<a href="{{ url('/') }}" class="app-brand-link gap-2">
|
||||||
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
||||||
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
|
<span class="app-brand-text demo text-heading fw-semibold">{{ config('variables.templateName') }}</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<!-- /Logo -->
|
<!-- /Logo -->
|
||||||
<div class="card-body mt-1">{!! $policy !!}</div>
|
<div class="card-body mt-1">{!! $policy !!}</div>
|
||||||
</div>
|
</div>
|
||||||
<img alt="mask" src="{{asset('assets/img/illustrations/auth-basic-login-mask-'.$configData['style'].'.png') }}" class="authentication-image d-none d-lg-block" data-app-light-img="illustrations/auth-basic-login-mask-light.png" data-app-dark-img="illustrations/auth-basic-login-mask-dark.png" />
|
<img alt="mask" src="{{ asset('assets/img/illustrations/auth-basic-login-mask-'.$configData['style'].'.png') }}" class="authentication-image d-none d-lg-block" data-app-light-img="illustrations/auth-basic-login-mask-light.png" data-app-dark-img="illustrations/auth-basic-login-mask-dark.png" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<x-section-border/>
|
<x-section-border/>
|
||||||
|
|
||||||
@if(may(\App\Models\Enums\Permission::StudyMetadataEdit))
|
@if (may(\App\Models\Enums\Permission::StudyMetadataEdit))
|
||||||
<a class="btn btn-sm" href="{{ route('staff.meta.edit', $study->hash) }}">Edit</a>
|
<a class="btn btn-sm" href="{{ route('staff.meta.edit', $study->hash) }}">Edit</a>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<x-section-border/>
|
<x-section-border/>
|
||||||
|
|
||||||
@if(may(\App\Models\Enums\Permission::StudyMetadataEdit))
|
@if (may(\App\Models\Enums\Permission::StudyMetadataEdit))
|
||||||
<a class="btn btn-sm" href="{{ route('staff.meta.edit', $study->hash) }}">Edit</a>
|
<a class="btn btn-sm" href="{{ route('staff.meta.edit', $study->hash) }}">Edit</a>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ class="d-flex justify-content-between align-items-start border-end pb-4 pb-sm-0
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@foreach($studies as $study)
|
@foreach ($studies as $study)
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $study->accession_number }}</td>
|
<td>{{ $study->accession_number }}</td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -106,7 +106,7 @@ class="d-flex justify-content-between align-items-start border-end pb-4 pb-sm-0
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@foreach($studies as $study)
|
@foreach ($studies as $study)
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $study->accession_number }}</td>
|
<td>{{ $study->accession_number }}</td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -19,15 +19,15 @@
|
|||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<div class="card p-md-7 p-1">
|
<div class="card p-md-7 p-1">
|
||||||
<div class="app-brand justify-content-center mt-5">
|
<div class="app-brand justify-content-center mt-5">
|
||||||
<a href="{{url('/')}}" class="app-brand-link gap-2">
|
<a href="{{ url('/') }}" class="app-brand-link gap-2">
|
||||||
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
|
||||||
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
|
<span class="app-brand-text demo text-heading fw-semibold">{{ config('variables.templateName') }}</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<!-- /Logo -->
|
<!-- /Logo -->
|
||||||
<div class="card-body mt-1">{!! $terms !!}</div>
|
<div class="card-body mt-1">{!! $terms !!}</div>
|
||||||
</div>
|
</div>
|
||||||
<img alt="mask" src="{{asset('assets/img/illustrations/auth-basic-forgot-password-mask-'.$configData['style'].'.png') }}" class="authentication-image d-none d-lg-block" data-app-light-img="illustrations/auth-basic-forgot-password-mask-light.png" data-app-dark-img="illustrations/auth-basic-forgot-password-mask-dark.png" />
|
<img alt="mask" src="{{ asset('assets/img/illustrations/auth-basic-forgot-password-mask-'.$configData['style'].'.png') }}" class="authentication-image d-none d-lg-block" data-app-light-img="illustrations/auth-basic-forgot-password-mask-light.png" data-app-dark-img="illustrations/auth-basic-forgot-password-mask-dark.png" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
Route::get('/user', function (Request $request) {
|
Route::get('user', function (Request $request) {
|
||||||
return $request->user();
|
return $request->user();
|
||||||
})->middleware('auth:sanctum');
|
})->middleware('auth:sanctum');
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
config('jetstream.auth_session'),
|
config('jetstream.auth_session'),
|
||||||
'verified',
|
'verified',
|
||||||
])->group(function () {
|
])->group(function () {
|
||||||
Route::get('/dashboard', function () {
|
Route::get('dashboard', function () {
|
||||||
return view('dashboard');
|
return view('dashboard');
|
||||||
})->name('dashboard');
|
})->name('dashboard');
|
||||||
|
|
||||||
@ -36,7 +36,7 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
Route::group(['prefix' => 'radiologist', 'as' => 'radiologist.'], function () {
|
Route::group(['prefix' => 'radiologist', 'as' => 'radiologist.'], function () {
|
||||||
Route::get('/report-write/{id}', ReportWriteController::class)->name('report-write');
|
Route::get('report-write/{id}', ReportWriteController::class)->name('report-write');
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::group(['prefix' => 'viewer', 'as' => 'viewer.'], function () {
|
Route::group(['prefix' => 'viewer', 'as' => 'viewer.'], function () {
|
||||||
@ -76,7 +76,7 @@
|
|||||||
Route::post('auth/{hashid}', [ViewSharedStudyController::class, 'auth'])->name('auth');
|
Route::post('auth/{hashid}', [ViewSharedStudyController::class, 'auth'])->name('auth');
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::view('/ck', 'ck');
|
Route::view('ck', 'ck');
|
||||||
|
|
||||||
Route::group(['prefix' => 'social', 'as' => 'social.'], function () {
|
Route::group(['prefix' => 'social', 'as' => 'social.'], function () {
|
||||||
Route::get('{driver}', [SocialLoginController::class, 'redirect'])->name('login');
|
Route::get('{driver}', [SocialLoginController::class, 'redirect'])->name('login');
|
||||||
|
Loading…
Reference in New Issue
Block a user