<?php

namespace App\Modules\Company\Notification;

use App\Http\Resources\Company\Tasks as TasksResource;
use App\Models\Tasks as TasksModel;
use App\Traits\SortingTraits;
use App\Traits\UserTraits;

class Tasks
{
    use SortingTraits, UserTraits;

    public function getData($payload)
    {
        // sorting
        $sortField = $this->sortField($payload, 'created_at');
        $sortOrder = $this->sortOrder($payload, 'desc');

        $companyId = $this->getCurrentUser()->company_id;
        return TasksResource::collection(
            TasksModel::select(
                'tasks.id',
                'tasks.link',
                'tasks.message',
                'tasks.reference_id',
                'tasks.is_read',
                'tasks.created_at')
                ->where('tasks.company_id', $companyId)
                ->orderBy($sortField, $sortOrder)
                ->paginate(20)
        )->additional(['meta' => [
            'total_unread_tasks' => $this->getTotalUnreadTasks($companyId),
        ]])->response()->setStatusCode(201);
    }

    public function getTotalUnreadTasks($companyId)
    {
        return TasksModel::where('tasks.company_id', $companyId)
            ->where('tasks.is_read', 0)
            ->get()
            ->count();
    }

    public function readTask($payload)
    {
        $id = $payload->id;
        $company_id = $this->getCurrentUser()->company_id;
        TasksModel::where('id', $id)
            ->where('company_id', $company_id)
            ->update(['is_read' => 1]);
            
        return response()->json(201);
    }

}