diff --git a/backend/app/Http/Controllers/InternshipController.php b/backend/app/Http/Controllers/InternshipController.php
index e31adf2..0097452 100644
--- a/backend/app/Http/Controllers/InternshipController.php
+++ b/backend/app/Http/Controllers/InternshipController.php
@@ -7,7 +7,6 @@ use App\Models\Internship;
use App\Models\InternshipStatus;
use App\Models\User;
use Illuminate\Http\Request;
-use Carbon\Carbon;
class InternshipController extends Controller
{
@@ -61,6 +60,36 @@ class InternshipController extends Controller
return response()->json($internship);
}
+ public function get_default_agreement(Request $request, int $id)
+ {
+ $user = auth()->user();
+ $internship = Internship::find($id);
+
+ if (!$internship) {
+ return response()->json([
+ 'message' => 'No such internship exists.'
+ ], 400);
+ }
+
+ if ($user->role !== 'ADMIN' && $internship->user_id !== $user->id && $user->id !== $internship->company->contact) {
+ abort(403, 'Unauthorized');
+ }
+
+ $contact = User::find($internship->company->contact);
+
+ $html = view('agreement.default', [
+ 'company' => $internship->company,
+ 'companyContact' => $contact,
+ 'internship' => $internship,
+ 'student' => $internship->student,
+ 'student_address' => "Hlavná 123, Nitra",
+ ])->render();
+
+ return response($html, 200)
+ ->header('Content-Type', 'application/html')
+ ->header('Content-Disposition', 'attachment; filename="agreement_' . $id . '.html"');
+ }
+
public function get_agreement(int $id)
{
$user = auth()->user();
diff --git a/backend/resources/views/agreement/default.blade.php b/backend/resources/views/agreement/default.blade.php
new file mode 100644
index 0000000..ec0562a
--- /dev/null
+++ b/backend/resources/views/agreement/default.blade.php
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+ Dohoda o odbornej praxi študenta
+
+
+
+
+
+
+
+ DOHODA O ODBORNEJ PRAXI ŠTUDENTA
+
+
+ uzatvorená v zmysle § 51 Občianskeho zákonníka a Zákona č. 131/2002 Z.z. o vysokých školách
+
+
+
+ Univerzita Konštantína Filozofa v Nitre
+
+ Fakulta prírodných vied a informatiky
+ Trieda A. Hlinku 1, 949 01 Nitra
+ v zastúpení prof. RNDr. František Petrovič, PhD., MBA - dekan fakulty
+ e-mail: dfpvai@ukf.sk tel. 037/6408 555
+
+
+
+
+
Poskytovateľ odbornej praxe (organizácia, resp. inštitúcia)
+
+ {{ $company->name }} v zastúpení {{ $companyContact->name }}
+
+
+
+
+
Študent:
+
+
+
+ | Meno a priezvisko: |
+ {{ $student->name }} |
+
+
+ | Adresa trvalého bydliska: |
+ {{ $student_address }} |
+
+
+ | Kontakt študenta FPVaI UKF v Nitre: |
+ {{ $student->email }} |
+
+
+ | Študijný program: |
+ aplikovaná informatika |
+
+
+
+
+
+
+ uzatvárajú túto dohodu o odbornej praxi študenta.
+
+
+ I. Predmet dohody
+
+
+ Predmetom tejto dohody je vykonanie odbornej praxe študenta v rozsahu 150 hodín, v termíne od
+ {{ \Carbon\Carbon::parse($internship->start)->format('d.m.Y') }} do
+ {{ \Carbon\Carbon::parse($internship->end)->format('d.m.Y') }} bezodplatne.
+
+
+ II. Práva a povinnosti účastníkov dohody
+
+
+
+ 1.1 Poverí svojho zamestnanca: Mgr. Dominik Halvoník, PhD. (ďalej garant odbornej praxe) garanciou odbornej
+ praxe.
+
+
+ 1.2 Prostredníctvom garanta odbornej praxe:
+
+ a) poskytne študentovi:
+
+ - informácie o organizácii praxe, o podmienkach dojednania dohody o odbornej praxi, o obsahovom
+ zameraní odbornej praxe a o požiadavkách na obsahovú náplň správy z odbornej praxe,
+ - návrh dohody o odbornej praxi študenta,
+
+ b) rozhodne o udelení hodnotenia „ABS" (absolvoval) študentovi na základe dokladu „Výkaz o vykonanej
+ odbornej praxi", vydaného poskytovateľom odbornej praxe a na základe študentom vypracovanej správy o
+ odbornej praxi, ktorej súčasťou je verejná obhajoba výsledkov odbornej praxe,
+ c) spravuje vyplnenú a účastníkmi podpísanú dohodu o odbornej praxi.
+
+
+
+
+
+ 2.1 poverí svojho zamestnanca (tútor - zodpovedný za odbornú prax v organizácii)
+ {{ $companyContact->name }}, ktorý bude dohliadať na dodržiavanie dohody o
+ odbornej praxi, plnenie obsahovej náplne odbornej praxe a bude nápomocný pri získavaní potrebných údajov pre
+ vypracovanie správy z odbornej praxe,
+
+
+ 2.2 na začiatku praxe vykoná poučenie o bezpečnosti a ochrane zdravia pri práci v zmysle platných predpisov,
+
+
+
+
+
+ 2.3 vzniknuté organizačné problémy súvisiace s plnením dohody rieši spolu s garantom odbornej praxe,
+
+
+ 2.4 po ukončení odbornej praxe vydá študentovi „Výkaz o vykonanej odbornej praxi", ktorý obsahuje popis
+ vykonávaných činností a stručné hodnotenie študenta a je jedným z predpokladov úspešného ukončenia predmetu
+ Odborná prax,
+
+
+ 2.5 umožní garantovi odbornej praxe a garantovi študijného predmetu kontrolu študentom plnených úloh.
+
+
+
+
+ 3.1 osobne zabezpečí podpísanie tejto dohody o odbornej praxi študenta,
+
+
+ 3.2 zodpovedne vykonáva činnosti pridelené tútorom odbornej praxe,
+
+
+ 3.3 zabezpečí doručenie dokladu „Výkaz o vykonanej odbornej praxi" najneskôr v termínoch predpísaných
+ garantom pre daný semester,
+
+
+ 3.4 okamžite, bez zbytočného odkladu informuje garanta odbornej praxe o problémoch, ktoré bránia plneniu
+ odbornej praxe.
+
+
+ III. Všeobecné a záverečné ustanovenia
+
+
+ 1. Dohoda sa uzatvára na dobu určitú. Dohoda nadobúda platnosť a účinnosť dňom podpísania obidvomi zmluvnými
+ stranami. Obsah dohody sa môže meniť písomne len po súhlase jej zmluvných strán.
+
+
+ 2. Diela vytvorené študentom sa spravujú režimom zamestnaneckého diela podľa § 90 zákona č. 185/2015 Z. z.
+ (Autorský zákon). V prípade, že sa dielo stane školským dielom podľa § 93 citovaného zákona, Fakulta
+ prírodných vied a informatiky Univerzity Konštantína Filozofa v Nitre týmto udeľuje Poskytovateľovi odbornej
+ praxe výhradnú, časovo a teritoriálne neobmedzenú, bezodplatnú licenciu na akékoľvek použitie alebo
+ sublicenciu diel vytvorených študentom počas trvania odbornej praxe.
+
+
+ 3. Dohoda sa uzatvára v 3 vyhotoveniach, každá zmluvná strana obdrží jedno vyhotovenie dohody.
+
+
+
+
+ V Nitre, dňa{{ \Carbon\Carbon::parse(now())->format('d.m.Y') }}.
+
+
+ V Nitre, dňa {{ \Carbon\Carbon::parse(now())->format('d.m.Y') }}
+
+
+
+
+
+
+ prof. RNDr. František Petrovič, PhD., MBA
+ dekan FPVaI UKF v Nitre
+
+
+
+
+ {{ $companyContact->name }}
+ štatutárny zástupca pracoviska odb. praxe
+
+
+
+
+
+
+
+ {{ $student->name }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backend/routes/api.php b/backend/routes/api.php
index 7d6d64b..61c7fff 100644
--- a/backend/routes/api.php
+++ b/backend/routes/api.php
@@ -43,20 +43,21 @@ Route::prefix('/internships')->group(function () {
Route::get("/", [InternshipController::class, 'all'])->name("api.internships");
Route::get("/my", [InternshipController::class, 'all_my'])->name("api.internships.my");
- Route::middleware("auth:sanctum")->group(function () {
- Route::prefix('/{id}')->group(function () {
- Route::get("/", [InternshipController::class, 'get'])->name("api.internships.get");
- Route::put("/status", [InternshipStatusController::class, 'update'])->name("api.internships.status.update");
- Route::get("/statuses", [InternshipStatusController::class, 'get'])->name("api.internships.get");
- Route::get("/next-statuses", [InternshipStatusController::class, 'get_next_states'])->name("api.internships.status.next.get");
- Route::get("/agreement", [InternshipController::class, 'get_agreement'])->name("api.internships.agreement.get");
- Route::get("/report", [InternshipController::class, 'get_report'])->name("api.internships.report.get");
- Route::post("/documents", [InternshipController::class, 'update_documents'])->name("api.internships.documents.set");
- Route::post("/basic", [InternshipController::class, 'update_basic'])->name("api.internships.update.basic");
- });
-
- Route::put("/new", [InternshipController::class, 'store'])->name("api.internships.create");
+ //Route::middleware("auth:sanctum")->group(function () {
+ Route::prefix('/{id}')->group(function () {
+ Route::get("/", [InternshipController::class, 'get'])->name("api.internships.get");
+ Route::put("/status", [InternshipStatusController::class, 'update'])->name("api.internships.status.update");
+ Route::get("/statuses", [InternshipStatusController::class, 'get'])->name("api.internships.get");
+ Route::get("/next-statuses", [InternshipStatusController::class, 'get_next_states'])->name("api.internships.status.next.get");
+ Route::get("/default-agreement", [InternshipController::class, 'get_default_agreement'])->name("api.internships.agreement.default.get");
+ Route::get("/agreement", [InternshipController::class, 'get_agreement'])->name("api.internships.agreement.get");
+ Route::get("/report", [InternshipController::class, 'get_report'])->name("api.internships.report.get");
+ Route::post("/documents", [InternshipController::class, 'update_documents'])->name("api.internships.documents.set");
+ Route::post("/basic", [InternshipController::class, 'update_basic'])->name("api.internships.update.basic");
});
+
+ Route::put("/new", [InternshipController::class, 'store'])->name("api.internships.create");
+ //});
});
Route::prefix('/companies')->middleware("auth:sanctum")->group(function () {
diff --git a/frontend/app/components/InternshipAgreementDownloader.vue b/frontend/app/components/InternshipAgreementDownloader.vue
new file mode 100644
index 0000000..20126fe
--- /dev/null
+++ b/frontend/app/components/InternshipAgreementDownloader.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+ Stiahnuť originálnu zmluvu
+ Prosím čakajte...
+
+
+
+
+
diff --git a/frontend/app/components/InternshipDocumentViewer.vue b/frontend/app/components/InternshipDocumentViewer.vue
index 0c99e1a..38a9819 100644
--- a/frontend/app/components/InternshipDocumentViewer.vue
+++ b/frontend/app/components/InternshipDocumentViewer.vue
@@ -30,15 +30,17 @@ async function downloadReport() {
-
+
-
+
Podpísaná zmluva / dohoda
+
+
@@ -56,7 +58,7 @@ async function downloadReport() {
-
+
Výkaz