Skip to content

Commit

Permalink
Added freelancer profile middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
Raccoon254 committed May 1, 2024
1 parent d4f5957 commit 94137b5
Show file tree
Hide file tree
Showing 206 changed files with 89 additions and 27 deletions.
Empty file modified .editorconfig
100644 → 100755
Empty file.
Empty file modified .env.example
100644 → 100755
Empty file.
Empty file modified .gitattributes
100644 → 100755
Empty file.
Empty file modified .gitignore
100644 → 100755
Empty file.
Empty file modified README.md
100644 → 100755
Empty file.
Empty file modified app/Console/Kernel.php
100644 → 100755
Empty file.
Empty file modified app/Exceptions/Handler.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/Auth/AuthenticatedSessionController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/Auth/ConfirmablePasswordController.php
100644 → 100755
Empty file.
Empty file.
Empty file modified app/Http/Controllers/Auth/EmailVerificationPromptController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/Auth/NewPasswordController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/Auth/PasswordController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/Auth/PasswordResetLinkController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/Auth/RegisteredUserController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/Auth/VerifyEmailController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/CalendarController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/ClientController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/ClientProjectController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/Controller.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/InvoiceController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/MessageController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/ProfileController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/ProjectController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/TaskController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/ThemeController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Controllers/UserController.php
100644 → 100755
Empty file.
Empty file modified app/Http/Kernel.php
100644 → 100755
Empty file.
Empty file modified app/Http/Livewire/AllClients.php
100644 → 100755
Empty file.
Empty file modified app/Http/Livewire/AllFreelancers.php
100644 → 100755
Empty file.
Empty file modified app/Http/Livewire/FreelancerSelect.php
100644 → 100755
Empty file.
8 changes: 8 additions & 0 deletions app/Http/Livewire/Messaging.php
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,14 @@ public function sendMessage(): void
$recipient->notify((new NewMessageNotification($message))->delay(now()->addMinutes(5)));
}

public function getUnreadMessagesCount($senderId, $recipientId): int
{
return Message::where('sender_id', $senderId)
->where('recipient_id', $recipientId)
->where('is_read', false)
->count();
}

public function selectRecipient($userId): void
{
$this->selectedRecipientId = $userId;
Expand Down
8 changes: 8 additions & 0 deletions app/Http/Livewire/MessagingNull.php
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,14 @@ public function selectRecipient($userId): void

}

public function getUnreadMessagesCount($senderId, $recipientId): int
{
return Message::where('sender_id', $senderId)
->where('recipient_id', $recipientId)
->where('is_read', false)
->count();
}

public function render(): View
{
$users = User::where('name', 'like', '%' . $this->search . '%')
Expand Down
Empty file modified app/Http/Livewire/ProjectModal.php
100644 → 100755
Empty file.
Empty file modified app/Http/Middleware/Authenticate.php
100644 → 100755
Empty file.
Empty file modified app/Http/Middleware/EncryptCookies.php
100644 → 100755
Empty file.
20 changes: 20 additions & 0 deletions app/Http/Middleware/EnsureUserProfileIsComplete.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class EnsureUserProfileIsComplete
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
return $next($request);
}
}
Empty file modified app/Http/Middleware/PreventRequestsDuringMaintenance.php
100644 → 100755
Empty file.
Empty file modified app/Http/Middleware/RedirectIfAuthenticated.php
100644 → 100755
Empty file.
Empty file modified app/Http/Middleware/RoleMiddleware.php
100644 → 100755
Empty file.
Empty file modified app/Http/Middleware/TrimStrings.php
100644 → 100755
Empty file.
Empty file modified app/Http/Middleware/TrustHosts.php
100644 → 100755
Empty file.
Empty file modified app/Http/Middleware/TrustProxies.php
100644 → 100755
Empty file.
Empty file modified app/Http/Middleware/ValidateSignature.php
100644 → 100755
Empty file.
Empty file modified app/Http/Middleware/VerifyCsrfToken.php
100644 → 100755
Empty file.
Empty file modified app/Http/Requests/Auth/LoginRequest.php
100644 → 100755
Empty file.
Empty file modified app/Http/Requests/ProfileUpdateRequest.php
100644 → 100755
Empty file.
Empty file modified app/Models/Calendar.php
100644 → 100755
Empty file.
Empty file modified app/Models/Client.php
100644 → 100755
Empty file.
Empty file modified app/Models/Invoice.php
100644 → 100755
Empty file.
Empty file modified app/Models/Message.php
100644 → 100755
Empty file.
Empty file modified app/Models/MessageAttachment.php
100644 → 100755
Empty file.
Empty file modified app/Models/Project.php
100644 → 100755
Empty file.
Empty file modified app/Models/Skill.php
100644 → 100755
Empty file.
Empty file modified app/Models/Task.php
100644 → 100755
Empty file.
11 changes: 1 addition & 10 deletions app/Models/User.php
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class User extends Authenticatable implements MustVerifyEmail
protected $fillable = [
"name",
"email",
"role",
"role",//user,client,admin
"phone_number",
"password",
"last_login_at",
Expand Down Expand Up @@ -67,15 +67,6 @@ public function skills(): BelongsToMany
return $this->belongsToMany(Skill::class);
}

public function unreadMessagesCount($userId): int
{
return $this->messages()
->where('sender_id', $userId)
->where('recipient_id', $this->id)
->where('is_read', false)
->count();
}

public function messages(): HasMany
{
return $this->hasMany(Message::class, 'recipient_id')
Expand Down
Empty file modified app/Models/UserSkill.php
100644 → 100755
Empty file.
Empty file modified app/Notifications/NewMessageNotification.php
100644 → 100755
Empty file.
Empty file modified app/Notifications/NewProjectNotification.php
100644 → 100755
Empty file.
Empty file modified app/Providers/AppServiceProvider.php
100644 → 100755
Empty file.
Empty file modified app/Providers/AuthServiceProvider.php
100644 → 100755
Empty file.
Empty file modified app/Providers/BroadcastServiceProvider.php
100644 → 100755
Empty file.
Empty file modified app/Providers/EventServiceProvider.php
100644 → 100755
Empty file.
Empty file modified app/Providers/RouteServiceProvider.php
100644 → 100755
Empty file.
Empty file modified app/View/Components/AppLayout.php
100644 → 100755
Empty file.
Empty file modified app/View/Components/ClientLayout.php
100644 → 100755
Empty file.
Empty file modified app/View/Components/GuestLayout.php
100644 → 100755
Empty file.
Empty file modified artisan
100644 → 100755
Empty file.
Empty file modified bootstrap/app.php
100644 → 100755
Empty file.
Empty file modified bootstrap/cache/.gitignore
100644 → 100755
Empty file.
Empty file modified composer.json
100644 → 100755
Empty file.
Empty file modified composer.lock
100644 → 100755
Empty file.
Empty file modified config/app.php
100644 → 100755
Empty file.
Empty file modified config/auth.php
100644 → 100755
Empty file.
Empty file modified config/broadcasting.php
100644 → 100755
Empty file.
Empty file modified config/cache.php
100644 → 100755
Empty file.
Empty file modified config/cors.php
100644 → 100755
Empty file.
Empty file modified config/database.php
100644 → 100755
Empty file.
Empty file modified config/filesystems.php
100644 → 100755
Empty file.
Empty file modified config/hashing.php
100644 → 100755
Empty file.
Empty file modified config/livewire.php
100644 → 100755
Empty file.
Empty file modified config/logging.php
100644 → 100755
Empty file.
Empty file modified config/mail.php
100644 → 100755
Empty file.
Empty file modified config/queue.php
100644 → 100755
Empty file.
Empty file modified config/sanctum.php
100644 → 100755
Empty file.
Empty file modified config/services.php
100644 → 100755
Empty file.
Empty file modified config/session.php
100644 → 100755
Empty file.
Empty file modified config/view.php
100644 → 100755
Empty file.
Empty file modified database/.gitignore
100644 → 100755
Empty file.
Empty file modified database/factories/ClientFactory.php
100644 → 100755
Empty file.
Empty file modified database/factories/UserFactory.php
100644 → 100755
Empty file.
Empty file modified database/migrations/2014_10_12_000000_create_users_table.php
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified database/migrations/2024_03_10_171957_create_clients_table.php
100644 → 100755
Empty file.
Empty file modified database/migrations/2024_03_10_171958_create_projects_table.php
100644 → 100755
Empty file.
Empty file modified database/migrations/2024_03_10_171958_create_tasks_table.php
100644 → 100755
Empty file.
Empty file modified database/migrations/2024_03_10_172000_create_invoices_table.php
100644 → 100755
Empty file.
Empty file.
Empty file modified database/migrations/2024_03_10_173256_create_messages_table.php
100644 → 100755
Empty file.
Empty file modified database/migrations/2024_04_19_092056_create_skills_table.php
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file modified database/seeders/DatabaseSeeder.php
100644 → 100755
Empty file.
Empty file modified database/seeders/SkillsTableSeeder.php
100644 → 100755
Empty file.
Empty file modified database/seeders/UserSeeder.php
100644 → 100755
Empty file.
7 changes: 7 additions & 0 deletions flows/plan.md
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@
- Chat feature
- Invoice generation

### Freelancer details
- Your profile is incomplete
- Add your skills
- Add your services
- Add samples of your work
- Add Certifications

## Client Pages
- My Profile
- Payment Mechanism - Lemons-squeezy | Paypal
Expand Down
Empty file modified package-lock.json
100644 → 100755
Empty file.
Empty file modified package.json
100644 → 100755
Empty file.
Empty file modified phpunit.xml
100644 → 100755
Empty file.
Empty file modified postcss.config.js
100644 → 100755
Empty file.
Empty file modified public/.htaccess
100644 → 100755
Empty file.
Empty file modified public/bg.svg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified public/favicon.ico
100644 → 100755
Empty file.
Empty file modified public/index.php
100644 → 100755
Empty file.
Empty file modified public/robots.txt
100644 → 100755
Empty file.
Empty file modified public/vendor/livewire/livewire.esm.js
100644 → 100755
Empty file.
Empty file modified public/vendor/livewire/livewire.js
100644 → 100755
Empty file.
Empty file modified public/vendor/livewire/livewire.min.js
100644 → 100755
Empty file.
Empty file modified public/vendor/livewire/livewire.min.js.map
100644 → 100755
Empty file.
Empty file modified public/vendor/livewire/manifest.json
100644 → 100755
Empty file.
Empty file modified public/work.svg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified resources/css/app.css
100644 → 100755
Empty file.
Empty file modified resources/js/app.js
100644 → 100755
Empty file.
Empty file modified resources/js/bootstrap.js
100644 → 100755
Empty file.
Empty file modified resources/views/auth/confirm-password.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/auth/forgot-password.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/auth/freelancer/register.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/auth/login.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/auth/register.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/auth/reset-password.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/auth/verify-email.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/client/dashboard.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/client/freelancers/show.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/client/projects/index.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/client/show.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/components/application-logo.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/components/auth-session-status.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/components/danger-button.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/components/dropdown-link.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/components/dropdown.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/components/input-error.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/components/input-label.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/components/modal.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/components/nav-link.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/components/primary-button.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/components/responsive-nav-link.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/components/secondary-button.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/components/text-input.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/emails/new_project.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/layouts/app.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/layouts/client-layout.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/layouts/guest.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/layouts/navigation.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/layouts/partials/client/sidebar.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/layouts/partials/navbar.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/layouts/partials/user/navbar.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/layouts/partials/user/sidebar.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/livewire/all-clients.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/livewire/all-freelancers.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/livewire/freelancer-select.blade.php
100644 → 100755
Empty file.
62 changes: 45 additions & 17 deletions resources/views/livewire/messaging.blade.php
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,74 @@
@php
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Auth;
use App\Models\Message;
@endphp
<div class="flex h-[93vh]">
<div class="flex h-[93vh]" wire:poll.2s>
<div class="bg-gray-100 w-1/4 border-r-none">
<div class="p-2 border-b">
<div class="p-2">
<section class="my-2">
<div class="center gap-1">
<span class="text-gray-800 font-semibold text-xs">
Messages
</span>
<i class="fa-regular fa-envelope"></i>
</div>
</section>
<label class="w-full relative">
<input wire:model.live="search"
class="message-input rounded-sm"
class="message-input"
type="text" placeholder="Search users">
<i class="fas btn btn-sm btn-circle fa-search absolute top-1/2 transform -translate-y-1/2 left-2 btn-primary"></i>
</label>
</div>
<div class="overflow-y-auto users-chat-container h-[calc(100vh-8rem)]">
<div class="overflow-y-auto users-chat-container h-[calc(100vh-10rem)]">
@php
function getUnreadMessagesCount($senderId, $recipientId)
{
return Message::where('sender_id', $senderId)
->where('recipient_id', $recipientId)
->where('read_at', null)
->count();
}
@endphp

@foreach($users as $user)
<div wire:click="selectRecipient({{ $user->id }})"
class="{{ $selectedRecipientId == $user->id ? 'bg-gray-200' : '' }} p-4 cursor-pointer hover:bg-gray-200 flex gap-2">
<div class="flex w-14 items-center">
<div class="flex w-14 relative items-center">
<img src="{{ $user->profile_picture }}"
class="ring-1 w-10 h-10 ring-gray-400 rounded-full mr-1" alt="{{ $user->name }}">
<!-- getUnreadMessagesCount($senderId, $recipientId): -->
@if (getUnreadMessagesCount($user->id, Auth::id()) > 0)
<div class="bg-blue-500 text-white h-4 w-4 rounded-full center text-[10px] mb-1 absolute right-0 top-0">
{{ getUnreadMessagesCount($user->id, Auth::id()) }}
</div>
@endif
</div>
<div class="w-1/2">
<!-- 10 characters of the user's name -->
<h3 class="font-normal text-sm text-gray-800">{{ substr($user->name, 0, 13) }}{{ strlen($user->name) > 15 ? '...' : '' }}</h3>
@php
// Get the last message sent or received by the user
$lastMessage = $user->messages()->where(function ($query) {
$query->where('sender_id', Auth::id())
->orWhere('recipient_id', Auth::id());
})->latest()->first();
// Get the last message sent or received by the user
$lastMessage = $user->messages()->where(function ($query) {
$query->where('sender_id', Auth::id())
->orWhere('recipient_id', Auth::id());
})->latest()->first();
//if the current user is not the one who received the message remove the message
if ($lastMessage && $lastMessage->recipient_id != Auth::id()) {
//if the user is not the one who sent the message remove the message
if ($lastMessage->sender_id != Auth::id()) {
$lastMessage = null;
}
}
@endphp
@if ($lastMessage)
<p class="text-xs text-gray-500 truncate">
@if ($lastMessage->sender_id == Auth::id())
<span class="font-semibold">You:</span>
@else
<span class="font-semibold">{{ $user->name }}:</span>
<!-- Only the first name of the user -->
<span class="font-semibold">{{ explode(' ', $user->name)[0] }}:</span>
@endif
@if($lastMessage->body)
{{ $lastMessage->body }}
Expand All @@ -51,12 +84,7 @@ class="ring-1 w-10 h-10 ring-gray-400 rounded-full mr-1" alt="{{ $user->name }}"
@endif
</div>
<div class="flex time flex-col items-end">
@if ($user->unreadMessagesCount($user->id) > 0)
<div class="bg-green-500 text-white rounded-full px-2 py-1 text-xs mb-1">
{{ $user->unreadMessagesCount($user->id) }}
</div>
@endif
<span class="text-xs text-gray-500">
<span class="text-[10px] text-gray-500">
@if ($lastMessage)
@if(str_contains($lastMessage->time, 'minutes') || str_contains($lastMessage->time, 'hours') || str_contains($lastMessage->time, 'days'))
{{ str_replace('minutes', 'min', str_replace('hours', 'hr', str_replace('days', 'day', $lastMessage->time))) }}
Expand Down
Empty file modified resources/views/livewire/project-modal.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/livewire/show-posts.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/profile/edit.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/profile/partials/delete-user-form.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/profile/partials/update-password-form.blade.php
100644 → 100755
Empty file.
Empty file.
Empty file modified resources/views/projects/create.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/projects/index.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/session/alerts.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/static/about.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/static/parts/head.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/static/unauthorized.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/user/dashboard.blade.php
100644 → 100755
Empty file.
Empty file modified resources/views/welcome.blade.php
100644 → 100755
Empty file.
Empty file modified routes/api.php
100644 → 100755
Empty file.
Empty file modified routes/auth.php
100644 → 100755
Empty file.
Empty file modified routes/channels.php
100644 → 100755
Empty file.
Empty file modified routes/client.php
100644 → 100755
Empty file.
Empty file modified routes/console.php
100644 → 100755
Empty file.
Empty file modified routes/projects.php
100644 → 100755
Empty file.
Empty file modified routes/web.php
100644 → 100755
Empty file.
Empty file modified storage/app/.gitignore
100644 → 100755
Empty file.
Empty file modified storage/app/public/.gitignore
100644 → 100755
Empty file.
Empty file modified storage/framework/.gitignore
100644 → 100755
Empty file.
Empty file modified storage/framework/cache/.gitignore
100644 → 100755
Empty file.
Empty file modified storage/framework/cache/data/.gitignore
100644 → 100755
Empty file.
Empty file modified storage/framework/sessions/.gitignore
100644 → 100755
Empty file.
Empty file modified storage/framework/testing/.gitignore
100644 → 100755
Empty file.
Empty file modified storage/framework/views/.gitignore
100644 → 100755
Empty file.
Empty file modified storage/logs/.gitignore
100644 → 100755
Empty file.
Empty file modified tailwind.config.js
100644 → 100755
Empty file.
Empty file modified tests/CreatesApplication.php
100644 → 100755
Empty file.
Empty file modified tests/Feature/Auth/AuthenticationTest.php
100644 → 100755
Empty file.
Empty file modified tests/Feature/Auth/EmailVerificationTest.php
100644 → 100755
Empty file.
Empty file modified tests/Feature/Auth/PasswordConfirmationTest.php
100644 → 100755
Empty file.
Empty file modified tests/Feature/Auth/PasswordResetTest.php
100644 → 100755
Empty file.
Empty file modified tests/Feature/Auth/PasswordUpdateTest.php
100644 → 100755
Empty file.
Empty file modified tests/Feature/Auth/RegistrationTest.php
100644 → 100755
Empty file.
Empty file modified tests/Feature/ExampleTest.php
100644 → 100755
Empty file.
Empty file modified tests/Feature/ProfileTest.php
100644 → 100755
Empty file.
Empty file modified tests/TestCase.php
100644 → 100755
Empty file.
Empty file modified tests/Unit/ExampleTest.php
100644 → 100755
Empty file.
Empty file modified vite.config.js
100644 → 100755
Empty file.

0 comments on commit 94137b5

Please sign in to comment.