%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/Exports/ |
Upload File : |
<?php
namespace App\Exports;
use App\Http\Controllers\AccountBaseController;
use App\Models\User;
use Carbon\Carbon;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
/**
* App\Exports\EmployeeTimelogs
*
* @property-read \App\Exports\EmployeeTimelogs $user
* @property-read \App\Exports\EmployeeTimelogs $modules
* @property-read \App\Exports\EmployeeTimelogs $viewTimeLogPermission
* @mixin \Eloquent
*/
class EmployeeTimelogs extends AccountBaseController implements FromView, ShouldAutoSize, WithStyles
{
private $viewTimelogPermission;
private $employees;
public function __construct()
{
parent::__construct();
$this->middleware(function ($request, $next) {
abort_403(!in_array('timelogs', $this->user->modules));
return $next($request);
});
}
public function view(): View
{
$this->startDate = $startDate = Carbon::createFromFormat(company()->date_format, urldecode(request()->startDate))->toDateString(); /** @phpstan-ignore-line */
$this->endDate = $endDate = Carbon::createFromFormat(company()->date_format, urldecode(request()->endDate))->toDateString(); /** @phpstan-ignore-line */
$employee = request()->employee;
$projectId = request()->projectID;
$this->viewTimelogPermission = user()->permission('view_timelogs');
$this->employees = User::join('employee_details', 'users.id', '=', 'employee_details.user_id')
->leftJoin('project_time_logs', 'project_time_logs.user_id', '=', 'users.id');
$where = '';
if ($projectId != 'all') {
$where .= ' and project_time_logs.project_id="' . $projectId . '" ';
}
$this->employees = $this->employees->select(
'users.name',
'users.id',
DB::raw(
"(SELECT SUM(project_time_logs.total_minutes) FROM project_time_logs WHERE project_time_logs.user_id = users.id and DATE(project_time_logs.start_time) >= '" . $startDate . "' and DATE(project_time_logs.start_time) <= '" . $endDate . "' '" . $where . "' GROUP BY project_time_logs.user_id) as total_minutes"
)
);
if (!is_null($employee) && $employee !== 'all') {
$this->employees = $this->employees->where('project_time_logs.user_id', $employee);
}
if (!is_null($projectId) && $projectId !== 'all') {
$this->employees = $this->employees->where('project_time_logs.project_id', '=', $projectId);
}
if ($this->viewTimelogPermission == 'owned') {
$this->employees = $this->employees->where('project_time_logs.user_id', user()->id);
}
if ($this->viewTimelogPermission == 'added') {
$this->employees = $this->employees->where('project_time_logs.added_by', user()->id);
}
if ($this->viewTimelogPermission == 'both') {
$this->employees = $this->employees->where(function ($q) {
$q->where('project_time_logs.added_by', user()->id)
->orWhere('project_time_logs.user_id', '=', user()->id);
});
}
$this->employees = $this->employees->groupBy('project_time_logs.user_id')
->orderBy('users.name')
->get();
return view('exports.employee_timelogs', $this->data);
}
// phpcs:ignore
public function styles(Worksheet $sheet)
{
return [
1 => ['font' => ['bold' => true, 'size' => 14]],
3 => ['font' => ['bold' => true]],
];
}
}