%PDF- %PDF-
Direktori : /var/www/html/geotechnics/api/app/Http/Controllers/Api/v1/ |
Current File : /var/www/html/geotechnics/api/app/Http/Controllers/Api/v1/ChatsController.php |
<?php namespace App\Http\Controllers\Api\v1; use App\Http\Controllers\Api\ApiController; use App\Models\Project; use App\Models\ProjectNote; use App\Models\Reciption; use App\Models\User; use App\Transformers\ChatMessageTransformer; use App\Transformers\ChatTransformer; use Carbon\Carbon; use Illuminate\Http\Request; class ChatsController extends ApiController { public function chats() { $user = $this->getLoggedInUser(); $projects = Project::query() ->whereHas('notes'); if (!$user->isAdmin()) { $projects = $projects->where('client_id', $user->id); } return $this->collection($projects->get(), new ChatTransformer()); } public function chatMessages(Project $project) { $user = $project->getLoggedInUser(); $notes = $project->notes() ->get(); Reciption::setLastReadAt($project, $user); return $this->collection($notes, new ChatMessageTransformer()); } public function sendMessage(Request $request, Project $project) { /** @var ProjectNote $note */ $note = $project->notes() ->make([ 'message' => $request->get('message'), ]); $user = $note->getLoggedInUser(); $note->user() ->associate($user); $note->save(); $project->updated_at = Carbon::now(); $project->save(); Reciption::setLastReadAt($project, $user); return $this->item($note, new ChatMessageTransformer()); } public function getUnreadCount() { /** @var User $user */ $user = auth() ->guard('api') ->user(); return response()->json([ 'unread_messages' => $user->getUnreadCount(), ], 200); } }