@extends('layouts.site') @php $my_name_view = 'Statystyki szkolen - JO'; $my_short_view_name = 'Statystyki JO'; @endphp @php // Lata bazujemy na danych szkolen. $trainingCountByYear = DB::table('t051_szkolenia') ->whereNotNull('data') ->whereRaw("TRIM(COALESCE(data, '')) <> ''") ->select(DB::raw('YEAR(data) as rok'), DB::raw('COUNT(*) as szkolenia_count')) ->whereRaw('YEAR(data) > 0') ->groupBy(DB::raw('YEAR(data)')) ->pluck('szkolenia_count', 'rok'); // Przypisanie uczestnika do struktury: // bierzemy pierwszy aktywny wpis pracownika w strukturze. $participantDepartmentSub = DB::table('t021_pracownicy_w_dziale') ->select('pracownik_id', DB::raw('MIN(id) as row_id')) ->where('status', 1) ->groupBy('pracownik_id'); // Statystyki uczestnikow per rok, z przypisaniem osoby przez strukture. // Nie korzystamy z t051.szkolenie_dla_ko_id. $participantStatsByYear = DB::table('t052_szkolenie_osoba as so') ->join('t051_szkolenia as s', 's.id', '=', 'so.id_szkolenie') ->joinSub($participantDepartmentSub, 'pwd_first', function ($join) { $join->on('pwd_first.pracownik_id', '=', 'so.id_osoba'); }) ->join('t021_pracownicy_w_dziale as pwd', 'pwd.id', '=', 'pwd_first.row_id') ->whereNotNull('s.data') ->whereRaw("TRIM(COALESCE(s.data, '')) <> ''") ->whereRaw('YEAR(s.data) > 0') ->select([ DB::raw('YEAR(s.data) as rok'), DB::raw('COUNT(*) as zapisani_count'), DB::raw('SUM(CASE WHEN COALESCE(so.zaliczono, 0) = 1 THEN 1 ELSE 0 END) as ukonczyli_pozytywnie_count'), DB::raw('SUM(CASE WHEN COALESCE(so.uczestnictwo, 0) = 1 AND COALESCE(so.zaliczono, 0) <> 1 THEN 1 ELSE 0 END) as nie_ukonczyli_pozytywnie_count'), DB::raw('SUM(CASE WHEN COALESCE(so.uczestnictwo, 0) <> 1 AND COALESCE(so.zaliczono, 0) <> 1 THEN 1 ELSE 0 END) as nie_przystapili_count'), ]) ->groupBy(DB::raw('YEAR(s.data)')) ->get() ->keyBy('rok'); // Zawsze pokazujemy ostatnie 6 lat (nawet gdy wszystkie sa zerowe). $currentYear = (int) date('Y'); $allYears = collect(range($currentYear - 5, $currentYear)); $yearRows = collect(); foreach ($allYears as $year) { $year = (int) $year; $participantStats = $participantStatsByYear->get($year); $passedCount = (int) ($participantStats->ukonczyli_pozytywnie_count ?? 0); $notPassedCount = (int) ($participantStats->nie_ukonczyli_pozytywnie_count ?? 0); $notStartedCount = (int) ($participantStats->nie_przystapili_count ?? 0); $signedCount = $passedCount + $notPassedCount + $notStartedCount; $yearRows->push([ 'rok' => $year, 'szkolenia_count' => (int) ($trainingCountByYear[$year] ?? 0), 'zapisani_count' => $signedCount, 'ukonczyli_pozytywnie_count' => $passedCount, 'nie_ukonczyli_pozytywnie_count' => $notPassedCount, 'nie_przystapili_count' => $notStartedCount, ]); } $orgSummary = [ 'szkolenia_count' => (int) $yearRows->sum('szkolenia_count'), 'zapisani_count' => (int) $yearRows->sum('zapisani_count'), 'ukonczyli_pozytywnie_count' => (int) $yearRows->sum('ukonczyli_pozytywnie_count'), 'nie_ukonczyli_pozytywnie_count' => (int) $yearRows->sum('nie_ukonczyli_pozytywnie_count'), 'nie_przystapili_count' => (int) $yearRows->sum('nie_przystapili_count'), ]; $chartLabels = $yearRows->pluck('rok')->map(function ($year) { return (string) $year; })->values(); $chartPassed = $yearRows->pluck('ukonczyli_pozytywnie_count')->values(); $chartNotPassed = $yearRows->pluck('nie_ukonczyli_pozytywnie_count')->values(); $chartNotStarted = $yearRows->pluck('nie_przystapili_count')->values(); @endphp @section('title', 'SZKOL - Statystyki szkolen - JO') @section('procesy') {{-- Statystyki szkolen nie korzystaja z panelu procesow. --}} @endsection @section('content')

@if ($yearRows->count() > 0)
Szkolenia
{{ $orgSummary['szkolenia_count'] }}
Zapisani
{{ $orgSummary['zapisani_count'] }}
Ukonczyli pozytywnie
{{ $orgSummary['ukonczyli_pozytywnie_count'] }}
Ukonczyli negatywnie
{{ $orgSummary['nie_ukonczyli_pozytywnie_count'] }}
Nie przystapili
{{ $orgSummary['nie_przystapili_count'] }}
@foreach ($yearRows as $index => $row) @endforeach
Lp Rok Szkolenia Zapisani Ukonczyli pozytywnie Ukonczyli negatywnie Nie przystapili
{{ $index + 1 }} {{ $row['rok'] }} {{ $row['szkolenia_count'] }} {{ $row['zapisani_count'] }} {{ $row['ukonczyli_pozytywnie_count'] }} {{ $row['nie_ukonczyli_pozytywnie_count'] }} {{ $row['nie_przystapili_count'] }}
- Suma {{ $orgSummary['szkolenia_count'] }} {{ $orgSummary['zapisani_count'] }} {{ $orgSummary['ukonczyli_pozytywnie_count'] }} {{ $orgSummary['nie_ukonczyli_pozytywnie_count'] }} {{ $orgSummary['nie_przystapili_count'] }}
@else
Brak danych do prezentacji.
@endif
@endsection @section('navbar') @include('sites.szkol._navbar_szkol') @endsection @section('menu') @include('sites.szkol.menu_szkol') @endsection @push('scripts') @if ($yearRows->count() > 0) @endif @endpush