Passed
Push — master ( 26caeb...0e28f7 )
by Thomas
11:18
created

AFLojaCertificatesService::exportResult()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 18
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 10
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 18
rs 9.9332
1
<?php
2
3
namespace App\Services;
4
5
use App\Interfaces\CertificatesInterface;
6
use App\Models\Course;
7
use App\Models\Enrollment;
8
use Illuminate\Support\Facades\App;
9
use Illuminate\Support\Facades\Gate;
10
use Mpdf\Config\ConfigVariables;
11
use Mpdf\Config\FontVariables;
12
use Mpdf\Mpdf;
13
14
class AFLojaCertificatesService implements CertificatesInterface
15
{
16
    public function __construct()
17
    {
18
        if (config('certificates-generation.style' !== 'afloja')) {
19
            abort(403);
20
        }
21
    }
22
23
    public function exportCertificate(Enrollment $enrollment)
24
    {
25
        if (Gate::forUser(backpack_user())->denies('view-enrollment', $enrollment)) {
26
            abort(403);
27
        }
28
29
        App::setLocale('es');
30
31
        $defaultConfig = (new ConfigVariables())->getDefaults();
32
        $fontDirs = $defaultConfig['fontDir'];
33
34
        $defaultFontConfig = (new FontVariables())->getDefaults();
35
        $fontData = $defaultFontConfig['fontdata'];
36
37
        $mpdf = new Mpdf(['mode' => 'utf-8', 'format' => 'a4', 'orientation' => 'L', 'margin_left' => 25, 'margin_right' => 25, 'margin_top' => 25, 'margin_bottom' => 25, 'margin_header' => 0, 'margin_footer' => 0, 'tempDir' => storage_path('temp'), 'fontDir' => array_merge($fontDirs, [storage_path('afloja/fonts')]), 'fontdata' => $fontData + ['bodoni' => ['R' => 'BOD_R.TTF', 'B' => 'BOD_B.TTF'], 'frenchscript' => ['R' => 'FRSCRIPT.TTF']], 'default_font' => 'bodoni']);
38
39
        $mpdf->WriteHTML(view('results.certificate', ['enrollment' => $enrollment])->render());
40
        $mpdf->Output();
41
    }
42
43
    public function exportCourseResults(Course $course)
44
    {
45
        if (Gate::forUser(backpack_user())->denies('view-course', $course)) {
46
            abort(403);
47
        }
48
49
        App::setLocale('es');
50
51
        $defaultConfig = (new ConfigVariables())->getDefaults();
52
        $fontDirs = $defaultConfig['fontDir'];
53
54
        $defaultFontConfig = (new FontVariables())->getDefaults();
55
        $fontData = $defaultFontConfig['fontdata'];
56
57
        $mpdf = new Mpdf(['mode' => 'utf-8', 'format' => 'a4', 'orientation' => 'L', 'margin_left' => 25, 'margin_right' => 25, 'margin_top' => 25, 'margin_bottom' => 25, 'margin_header' => 0, 'margin_footer' => 0, 'tempDir' => storage_path('temp'), 'fontDir' => array_merge($fontDirs, [storage_path('afloja/fonts')]), 'fontdata' => $fontData + ['calibri' => ['R' => 'calibri.ttf', 'B' => 'calibrib.ttf']], 'default_font' => 'calibri']);
58
59
        $mpdf->WriteHTML(view('results.course-export', ['enrollments' => $course->enrollments()->with('grades')->get(), 'course' => $course])->render());
60
        $mpdf->Output();
61
    }
62
63
    public function exportResult(Enrollment $enrollment)
64
    {
65
        if (Gate::forUser(backpack_user())->denies('view-enrollment', $enrollment)) {
66
            abort(403);
67
        }
68
69
        App::setLocale('es');
70
71
        $defaultConfig = (new ConfigVariables())->getDefaults();
72
        $fontDirs = $defaultConfig['fontDir'];
73
74
        $defaultFontConfig = (new FontVariables())->getDefaults();
75
        $fontData = $defaultFontConfig['fontdata'];
76
77
        $mpdf = new Mpdf(['mode' => 'utf-8', 'format' => 'a4', 'orientation' => 'P', 'margin_left' => 25, 'margin_right' => 25, 'margin_top' => 25, 'margin_bottom' => 25, 'margin_header' => 0, 'margin_footer' => 0, 'tempDir' => storage_path('temp'), 'fontDir' => array_merge($fontDirs, [storage_path('afloja/fonts')]), 'fontdata' => $fontData + ['calibri' => ['R' => 'calibri.ttf', 'B' => 'calibrib.ttf']], 'default_font' => 'calibri']);
78
79
        $mpdf->WriteHTML(view('results.export', ['grades' => $enrollment->grades, 'enrollment' => $enrollment])->render());
80
        $mpdf->Output();
81
    }
82
}
83