diff --git a/app/Models/Admin.php b/app/Models/Admin.php index 0ff2a5b..ecd4923 100644 --- a/app/Models/Admin.php +++ b/app/Models/Admin.php @@ -10,14 +10,12 @@ * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property-read \App\Models\User|null $user - * * @method static \Illuminate\Database\Eloquent\Builder|Admin newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Admin newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Admin query() * @method static \Illuminate\Database\Eloquent\Builder|Admin whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Admin whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|Admin whereUpdatedAt($value) - * * @mixin \Eloquent */ class Admin extends Model diff --git a/app/Models/Broker.php b/app/Models/Broker.php index 18d41e7..f128b47 100644 --- a/app/Models/Broker.php +++ b/app/Models/Broker.php @@ -14,8 +14,10 @@ * @property bool $verified * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \App\Models\Follow|null $pivot + * @property-read \Illuminate\Database\Eloquent\Collection $followers + * @property-read int|null $followers_count * @property-read \App\Models\User|null $user - * * @method static \Illuminate\Database\Eloquent\Builder|Broker newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Broker newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Broker query() @@ -26,7 +28,6 @@ * @method static \Illuminate\Database\Eloquent\Builder|Broker wherePhone($value) * @method static \Illuminate\Database\Eloquent\Builder|Broker whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Broker whereVerified($value) - * * @mixin \Eloquent */ class Broker extends Model diff --git a/app/Models/Comment.php b/app/Models/Comment.php index 3770640..b25951b 100644 --- a/app/Models/Comment.php +++ b/app/Models/Comment.php @@ -5,6 +5,26 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +/** + * @property int $id + * @property string $text + * @property int $deal_id + * @property int $user_id + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \App\Models\Deal|null $deal + * @property-read \App\Models\User|null $user + * @method static \Illuminate\Database\Eloquent\Builder|Comment newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Comment newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Comment query() + * @method static \Illuminate\Database\Eloquent\Builder|Comment whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Comment whereDealId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Comment whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Comment whereText($value) + * @method static \Illuminate\Database\Eloquent\Builder|Comment whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Comment whereUserId($value) + * @mixin \Eloquent + */ class Comment extends Model { protected $fillable = [ diff --git a/app/Models/Customer.php b/app/Models/Customer.php index 66b82c8..2a44996 100644 --- a/app/Models/Customer.php +++ b/app/Models/Customer.php @@ -13,8 +13,9 @@ * @property string|null $phone * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \Illuminate\Database\Eloquent\Collection $followings + * @property-read int|null $followings_count * @property-read \App\Models\User|null $user - * * @method static \Illuminate\Database\Eloquent\Builder|Customer newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Customer newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Customer query() @@ -24,7 +25,6 @@ * @method static \Illuminate\Database\Eloquent\Builder|Customer whereLocation($value) * @method static \Illuminate\Database\Eloquent\Builder|Customer wherePhone($value) * @method static \Illuminate\Database\Eloquent\Builder|Customer whereUpdatedAt($value) - * * @mixin \Eloquent */ class Customer extends Model diff --git a/app/Models/Deal.php b/app/Models/Deal.php index e636782..fe1dd50 100644 --- a/app/Models/Deal.php +++ b/app/Models/Deal.php @@ -25,11 +25,12 @@ * @property \Illuminate\Support\Carbon|null $updated_at * @property-read \App\Models\User|null $broker * @property-read \App\Models\DealCategory|null $category + * @property-read \Illuminate\Database\Eloquent\Collection $comments + * @property-read int|null $comments_count * @property-read \Illuminate\Database\Eloquent\Collection $interactions * @property-read int|null $interactions_count * @property-read \Illuminate\Database\Eloquent\Collection $reports * @property-read int|null $reports_count - * * @method static Builder|Deal WithActiveDeals() * @method static Builder|Deal WithCurrentUserInteractions() * @method static Builder|Deal WithLikePerDeal() @@ -50,8 +51,8 @@ * @method static Builder|Deal whereTitle($value) * @method static Builder|Deal whereUpdatedAt($value) * @method static Builder|Deal whereUserId($value) + * @method static Builder|Deal withIsFollowedByCurrentUser() * @method static Builder|Deal withViewPerDeal() - * * @mixin \Eloquent */ class Deal extends Model diff --git a/app/Models/DealCategory.php b/app/Models/DealCategory.php index 84ae779..de1bf70 100644 --- a/app/Models/DealCategory.php +++ b/app/Models/DealCategory.php @@ -16,7 +16,6 @@ * @property \Illuminate\Support\Carbon|null $updated_at * @property-read \Illuminate\Database\Eloquent\Collection $deals * @property-read int|null $deals_count - * * @method static \Illuminate\Database\Eloquent\Builder|DealCategory newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|DealCategory newQuery() * @method static \Illuminate\Database\Eloquent\Builder|DealCategory query() @@ -28,7 +27,6 @@ * @method static \Illuminate\Database\Eloquent\Builder|DealCategory whereOrder($value) * @method static \Illuminate\Database\Eloquent\Builder|DealCategory whereSlug($value) * @method static \Illuminate\Database\Eloquent\Builder|DealCategory whereUpdatedAt($value) - * * @mixin \Eloquent */ class DealCategory extends Model diff --git a/app/Models/Follow.php b/app/Models/Follow.php index 7370a73..504a690 100644 --- a/app/Models/Follow.php +++ b/app/Models/Follow.php @@ -5,6 +5,24 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\Pivot; +/** + * @property int $id + * @property int $customer_id + * @property int $broker_id + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \App\Models\Broker|null $broker + * @property-read \App\Models\Customer|null $customer + * @method static \Illuminate\Database\Eloquent\Builder|Follow newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Follow newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Follow query() + * @method static \Illuminate\Database\Eloquent\Builder|Follow whereBrokerId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Follow whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Follow whereCustomerId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Follow whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Follow whereUpdatedAt($value) + * @mixin \Eloquent + */ class Follow extends Pivot { protected $table = 'follows'; diff --git a/app/Models/Inbox.php b/app/Models/Inbox.php new file mode 100644 index 0000000..0a6a3c1 --- /dev/null +++ b/app/Models/Inbox.php @@ -0,0 +1,40 @@ + $users + * @property-read int|null $users_count + * @method static \Illuminate\Database\Eloquent\Builder|Inbox newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Inbox newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Inbox query() + * @method static \Illuminate\Database\Eloquent\Builder|Inbox whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Inbox whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Inbox whereLastMessage($value) + * @method static \Illuminate\Database\Eloquent\Builder|Inbox whereLastUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Inbox whereUpdatedAt($value) + * @mixin \Eloquent + */ +class Inbox extends Model +{ + protected $fillable = ['last_user_id', 'last_message']; + public function users(): BelongsToMany + { + return $this->belongsToMany(User::class); + } + + public function lastUser(): HasOne + { + return $this->hasOne(User::class, 'id', 'last_user_id'); + } +} diff --git a/app/Models/Interaction.php b/app/Models/Interaction.php index a6f2761..aa1f556 100644 --- a/app/Models/Interaction.php +++ b/app/Models/Interaction.php @@ -16,7 +16,6 @@ * @property \Illuminate\Support\Carbon|null $updated_at * @property-read \App\Models\Deal|null $deal * @property-read \App\Models\Deal|null $user - * * @method static \Illuminate\Database\Eloquent\Builder|Interaction newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Interaction newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Interaction query() @@ -27,7 +26,6 @@ * @method static \Illuminate\Database\Eloquent\Builder|Interaction whereType($value) * @method static \Illuminate\Database\Eloquent\Builder|Interaction whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Interaction whereUserId($value) - * * @mixin \Eloquent */ class Interaction extends Model diff --git a/app/Models/Message.php b/app/Models/Message.php new file mode 100644 index 0000000..22425dc --- /dev/null +++ b/app/Models/Message.php @@ -0,0 +1,50 @@ +|Message newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Message newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Message query() + * @method static \Illuminate\Database\Eloquent\Builder|Message whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Message whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Message whereDeliveredAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Message whereFailedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Message whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Message whereInboxId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Message whereMessage($value) + * @method static \Illuminate\Database\Eloquent\Builder|Message whereReadAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Message whereUserId($value) + * @mixin \Eloquent + */ +class Message extends Model +{ + protected $fillable = [ + 'inbox_id', 'user_id', 'message', + 'read_at', 'deleted_at', 'failed_at', + 'created_at', 'delivered_at' + ]; + public function inbox(): BelongsTo + { + return $this->belongsTo(Inbox::class); + } + + public function user(): BelongsTo + { + return $this->belongsTo(User::class); + } +} diff --git a/app/Models/PageVisit.php b/app/Models/PageVisit.php index 6cb5f32..c17521e 100644 --- a/app/Models/PageVisit.php +++ b/app/Models/PageVisit.php @@ -6,12 +6,19 @@ use Illuminate\Database\Eloquent\Model; /** - * @property UserTypes $user_type - * + * @property int $id + * @property int|null $user_id + * @property string $page + * @property UserTypes|null $user_type + * @property string $created_at * @method static \Illuminate\Database\Eloquent\Builder|PageVisit newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|PageVisit newQuery() * @method static \Illuminate\Database\Eloquent\Builder|PageVisit query() - * + * @method static \Illuminate\Database\Eloquent\Builder|PageVisit whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|PageVisit whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|PageVisit wherePage($value) + * @method static \Illuminate\Database\Eloquent\Builder|PageVisit whereUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|PageVisit whereUserType($value) * @mixin \Eloquent */ class PageVisit extends Model diff --git a/app/Models/RecentSearch.php b/app/Models/RecentSearch.php index 47dd8f6..52f7c4d 100644 --- a/app/Models/RecentSearch.php +++ b/app/Models/RecentSearch.php @@ -12,7 +12,6 @@ * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property-read \App\Models\User|null $user - * * @method static \Illuminate\Database\Eloquent\Builder|RecentSearch newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|RecentSearch newQuery() * @method static \Illuminate\Database\Eloquent\Builder|RecentSearch query() @@ -21,7 +20,6 @@ * @method static \Illuminate\Database\Eloquent\Builder|RecentSearch whereQuery($value) * @method static \Illuminate\Database\Eloquent\Builder|RecentSearch whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|RecentSearch whereUserId($value) - * * @mixin \Eloquent */ class RecentSearch extends Model diff --git a/app/Models/Report.php b/app/Models/Report.php index da3d57f..30839f8 100644 --- a/app/Models/Report.php +++ b/app/Models/Report.php @@ -21,7 +21,6 @@ * @property-read \Illuminate\Database\Eloquent\Collection $deals * @property-read int|null $deals_count * @property-read \App\Models\User|null $user - * * @method static Builder|Report newModelQuery() * @method static Builder|Report newQuery() * @method static Builder|Report orderByStatus(array $statusOrder) @@ -33,7 +32,6 @@ * @method static Builder|Report whereType($value) * @method static Builder|Report whereUpdatedAt($value) * @method static Builder|Report whereUserId($value) - * * @mixin \Eloquent */ class Report extends Model diff --git a/app/Models/User.php b/app/Models/User.php index 2bf223d..7923469 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -5,6 +5,7 @@ // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasManyThrough; use Illuminate\Database\Eloquent\Relations\MorphTo; @@ -25,22 +26,29 @@ * @property string $role * @property string|null $role_type * @property int|null $role_id + * @property-read \Illuminate\Database\Eloquent\Collection $comments + * @property-read int|null $comments_count * @property-read \Illuminate\Database\Eloquent\Collection $deals * @property-read int|null $deals_count * @property-read \Illuminate\Database\Eloquent\Collection $dealsInteractions * @property-read int|null $deals_interactions_count + * @property-read \Illuminate\Database\Eloquent\Collection $inboxes + * @property-read int|null $inboxes_count * @property-read \Illuminate\Database\Eloquent\Collection $interactedDeals * @property-read int|null $interacted_deals_count * @property-read \Illuminate\Database\Eloquent\Collection $interactions * @property-read int|null $interactions_count + * @property-read \Illuminate\Database\Eloquent\Collection $messages + * @property-read int|null $messages_count * @property-read \Illuminate\Notifications\DatabaseNotificationCollection $notifications * @property-read int|null $notifications_count + * @property-read \Illuminate\Database\Eloquent\Collection $pushSubscriptions + * @property-read int|null $push_subscriptions_count * @property-read \Illuminate\Database\Eloquent\Collection $recentSearches * @property-read int|null $recent_searches_count * @property-read \Illuminate\Database\Eloquent\Collection $reports * @property-read int|null $reports_count * @property-read Model|\Eloquent|null $type - * * @method static \Database\Factories\UserFactory factory($count = null, $state = []) * @method static \Illuminate\Database\Eloquent\Builder|User newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|User newQuery() @@ -57,7 +65,6 @@ * @method static \Illuminate\Database\Eloquent\Builder|User whereRoleType($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereStatus($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value) - * * @mixin \Eloquent */ class User extends Authenticatable @@ -158,4 +165,14 @@ public function comments(): HasMany { return $this->hasMany(Comment::class); } + + public function inboxes(): BelongsToMany + { + return $this->belongsToMany(Inbox::class); + } + + public function messages(): HasMany + { + return $this->hasMany(Message::class); + } } diff --git a/database/migrations/2026_02_11_052304_create_inboxes_table.php b/database/migrations/2026_02_11_052304_create_inboxes_table.php new file mode 100644 index 0000000..702b790 --- /dev/null +++ b/database/migrations/2026_02_11_052304_create_inboxes_table.php @@ -0,0 +1,32 @@ +id()->index(); + $table->text('last_message')->nullable(); + $table->foreignIdFor(User::class, 'last_user_id')->nullable(); + $table->timestamps(); + + $table->index(['last_user_id', 'created_at']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('inboxes'); + } +}; diff --git a/database/migrations/2026_02_11_052318_create_messages_table.php b/database/migrations/2026_02_11_052318_create_messages_table.php new file mode 100644 index 0000000..5d7fa44 --- /dev/null +++ b/database/migrations/2026_02_11_052318_create_messages_table.php @@ -0,0 +1,36 @@ +id()->index(); + $table->foreignIdFor(User::class)->index(); + $table->foreignIdFor(Inbox::class)->index(); + $table->text('message'); + $table->time('read_at')->nullable(); + $table->time('delivered_at')->nullable(); + $table->time('deleted_at')->nullable(); + $table->time('failed_at')->nullable(); + $table->time('created_at')->useCurrent()->index(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('messages'); + } +}; diff --git a/database/migrations/2026_02_11_060329_create_inbox_user_table.php b/database/migrations/2026_02_11_060329_create_inbox_user_table.php new file mode 100644 index 0000000..b1f3943 --- /dev/null +++ b/database/migrations/2026_02_11_060329_create_inbox_user_table.php @@ -0,0 +1,31 @@ +id()->index(); + $table->foreignIdFor(Inbox::class)->index(); + $table->foreignIdFor(User::class)->index(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('inbox_user'); + } +};