%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/Http/Controllers/ |
Upload File : |
<?php
namespace App\Http\Controllers;
use App\DataTables\TimeLogReportDataTable;
use App\Helper\Reply;
use App\Models\Project;
use App\Models\ProjectTimeLog;
use App\Models\Task;
use App\Models\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class TimelogReportController extends AccountBaseController
{
public function __construct()
{
parent::__construct();
$this->pageTitle = 'app.menu.timeLogReport';
$this->pageIcon = 'ti-pie-chart';
}
public function index(TimeLogReportDataTable $dataTable)
{
if (!request()->ajax()) {
$this->fromDate = now($this->company->timezone)->startOfMonth();
$this->toDate = now($this->company->timezone);
$this->employees = User::allEmployees();
$this->clients = User::allClients();
$this->projects = Project::allProjects();
$this->tasks = Task::all();
}
// return view('admin.reports.time-log.index', $this->data);
return $dataTable->render('reports.timelogs.index', $this->data);
}
public function timelogChartData(Request $request)
{
$projectId = $request->projectId;
$employee = $request->employee;
$client = $request->client;
$taskId = $request->taskId;
$approved = $request->approved;
$invoice = $request->invoice;
$startDate = now($this->company->timezone)->startOfMonth()->toDateString();
$endDate = now($this->company->timezone)->toDateString();
if ($request->startDate !== null && $request->startDate != 'null' && $request->startDate != '') {
$startDate = Carbon::createFromFormat($this->company->date_format, $request->startDate)->toDateString();
}
if ($request->endDate !== null && $request->endDate != 'null' && $request->endDate != '') {
$endDate = Carbon::createFromFormat($this->company->date_format, $request->endDate)->toDateString();
}
$timelogs = ProjectTimeLog::whereDate('start_time', '>=', $startDate)
->whereDate('end_time', '<=', $endDate)
->leftJoin('projects', 'projects.id', '=', 'project_time_logs.project_id');
if (!is_null($employee) && $employee !== 'all') {
$timelogs = $timelogs->where('project_time_logs.user_id', $employee);
}
if (!is_null($client) && $client !== 'all') {
$timelogs = $timelogs->where('projects.client_id', $client);
}
if (!is_null($projectId) && $projectId !== 'all') {
$timelogs = $timelogs->where('project_time_logs.project_id', '=', $projectId);
}
if (!is_null($taskId) && $taskId !== 'all') {
$timelogs = $timelogs->where('project_time_logs.task_id', '=', $taskId);
}
if (!is_null($approved) && $approved !== 'all') {
if ($approved == 2) {
$timelogs = $timelogs->whereNull('project_time_logs.end_time');
}
else {
$timelogs = $timelogs->where('project_time_logs.approved', '=', $approved);
}
}
if (!is_null($invoice) && $invoice !== 'all') {
if ($invoice == 0) {
$timelogs = $timelogs->where('project_time_logs.invoice_id', '=', null);
}else if ($invoice == 1) {
$timelogs = $timelogs->where('project_time_logs.invoice_id', '!=', null);
}
}
$timelogs = $timelogs->groupBy('date')
->orderBy('start_time', 'ASC')
->get([
DB::raw('DATE_FORMAT(start_time,\'%d-%M-%y\') as date'),
DB::raw('FLOOR(sum(total_minutes/60)) as total_hours')
]);
$data['labels'] = $timelogs->pluck('date')->toArray();
$data['values'] = $timelogs->pluck('total_hours')->toArray();
$data['colors'] = [$this->appTheme->header_color];
$data['name'] = __('modules.dashboard.totalHoursLogged');
$this->chartData = $data;
$html = view('reports.timelogs.chart', $this->data)->render();
return Reply::dataOnly(['status' => 'success', 'html' => $html, 'title' => $this->pageTitle]);
}
}