%PDF- %GIF98; %PNG;
Server : ApacheSystem : Linux host.digitalbabaji.in 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64 User : addictionfreeind ( 1003) PHP Version : 7.2.34 Disable Function : exec,passthru,shell_exec,system Directory : /home/addictionfreeind/public_html/admin1/app/Traits/ |
Upload File : |
<?php
namespace App\Traits;
use App\Models\DashboardWidget;
use App\Models\Project;
use App\Models\ProjectMilestone;
use App\Models\ProjectStatusSetting;
use App\Models\ProjectTimeLog;
use App\Models\ProjectTimeLogBreak;
use Carbon\Carbon;
use Carbon\CarbonInterval;
use Illuminate\Support\Facades\DB;
/**
*
*/
trait ProjectDashboard
{
/**
*
* @return void
*/
public function projectDashboard()
{
abort_403($this->viewProjectDashboard !== 'all');
$this->pageTitle = 'app.projectDashboard';
$this->startDate = (request('startDate') != '') ? Carbon::createFromFormat($this->company->date_format, request('startDate')) : now($this->company->timezone)->startOfMonth();
$this->endDate = (request('endDate') != '') ? Carbon::createFromFormat($this->company->date_format, request('endDate')) : now($this->company->timezone);
$startDate = $this->startDate->toDateString();
$endDate = $this->endDate->toDateString();
$this->totalProject = Project::whereBetween(DB::raw('DATE(`created_at`)'), [$startDate, $endDate])->count();
$hoursLogged = ProjectTimeLog::whereDate('start_time', '>=', $startDate)
->whereDate('end_time', '<=', $endDate)
->whereNotNull('project_id')
->where('approved', 1)
->sum('total_minutes');
$breakMinutes = ProjectTimeLogBreak::join('project_time_logs', 'project_time_log_breaks.project_time_log_id', '=', 'project_time_logs.id')
->whereDate('project_time_logs.start_time', '>=', $startDate)
->whereDate('project_time_logs.end_time', '<=', $endDate)
->whereNotNull('project_time_logs.project_id')
->sum('project_time_log_breaks.total_minutes');
$hoursLogged = $hoursLogged - $breakMinutes;
/** @phpstan-ignore-next-line */
$timeLog = CarbonInterval::formatHuman($hoursLogged);
$this->totalHoursLogged = $timeLog;
$this->totalOverdueProject = Project::whereNotNull('deadline')
->where(DB::raw('DATE(deadline)'), '>=', $startDate)
->where(DB::raw('DATE(deadline)'), '<=', $endDate)
->count();
$this->widgets = DashboardWidget::where('dashboard_type', 'admin-project-dashboard')->get();
$this->activeWidgets = $this->widgets->filter(function ($value, $key) {
return $value->status == '1';
})->pluck('widget_name')->toArray();
$this->pendingMilestone = ProjectMilestone::whereBetween(DB::raw('DATE(project_milestones.`created_at`)'), [$startDate, $endDate])
->with('project', 'currency')
->get();
$this->statusWiseProject = $this->statusChartData($startDate, $endDate);
$this->view = 'dashboard.ajax.project';
}
public function statusChartData($startDate, $endDate)
{
$labels = ProjectStatusSetting::where('status', 'active')->pluck('status_name');
$data['labels'] = ProjectStatusSetting::where('status', 'active')->pluck('status_name');
$data['colors'] = ProjectStatusSetting::where('status', 'active')->pluck('color');
$data['values'] = [];
foreach ($labels as $label) {
$data['values'][] = Project::whereBetween(DB::raw('DATE(`created_at`)'), [$startDate, $endDate])->where('status', $label)->count();
}
return $data;
}
}