Skip to content

Commit 4aced75

Browse files
authored
Merge branch 'development' into anonymous-questions
2 parents 41b8c87 + dfc58d1 commit 4aced75

File tree

61 files changed

+1380
-1062
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+1380
-1062
lines changed

.env.example

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,9 @@ PDFLATEX_COMMAND=/usr/bin/pdflatex
8989
WORKSHOP_BALANCE_EXTERN=0.45
9090
WORKSHOP_BALANCE_RESIDENT=0.6
9191

92-
APPLICATION_DEADLINE=
93-
APPLICATION_EXTENDED=false
94-
9592
GITHUB_AUTH_TOKEN=
9693
GITHUB_REPO=EotvosCollegium/mars
9794

98-
MR_AND_MISS_DEADLINE="2020-03-15 00:00:00"
99-
SEMESTER_EVALUATION_DEADLINE="2020-06-15 23:59:00"
100-
10195
BACKUP_PATH=
10296
RADIUS_LOG_PATH=/var/log/freeradius/radius.log.1 #yesterday's log
10397
DHCP_LEASES_PATH=/var/lib/dhcp/dhcpd.leases

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
/resources/lang/la
1818
/resources/lang/sp
1919
/vendor
20+
/data
2021
.env
2122
.env.backup
23+
.phpunit.cache/
2224
.phpunit.result.cache
2325
Homestead.json
2426
Homestead.yaml

app/Console/Commands/RefreshEventTriggers.php

Lines changed: 0 additions & 50 deletions
This file was deleted.

app/Http/Controllers/Auth/ApplicationController.php

Lines changed: 46 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,59 @@
66
use App\Http\Controllers\Controller;
77
use App\Models\ApplicationForm;
88
use App\Models\Faculty;
9-
use App\Models\User;
10-
use App\Models\Workshop;
11-
use App\Models\RoleUser;
129
use App\Models\File;
1310
use App\Models\Role;
11+
use App\Models\RoleUser;
12+
use App\Models\Semester;
13+
use App\Models\User;
14+
use App\Models\Workshop;
15+
use App\Utils\HasPeriodicEvent;
1416
use Carbon\Carbon;
1517
use Illuminate\Auth\Access\AuthorizationException;
1618
use Illuminate\Http\RedirectResponse;
1719
use Illuminate\Http\Request;
18-
use Illuminate\View\View;
19-
use Illuminate\Support\Facades\Storage;
2020
use Illuminate\Support\Facades\Cache;
2121
use Illuminate\Support\Facades\DB;
22+
use Illuminate\Support\Facades\Storage;
23+
use Illuminate\View\View;
2224
use Maatwebsite\Excel\Facades\Excel;
2325

2426
class ApplicationController extends Controller
2527
{
28+
use HasPeriodicEvent;
29+
2630
private const EDUCATIONAL_ROUTE = 'educational';
2731
private const QUESTIONS_ROUTE = 'questions';
2832
private const FILES_ROUTE = 'files';
2933
private const DELETE_FILE_ROUTE = 'files.delete';
3034
private const ADD_PROFILE_PIC_ROUTE = 'files.profile';
3135
private const SUBMIT_ROUTE = 'submit';
3236

37+
/**
38+
* Update the PeriodicEvent connected to the applications.
39+
* @throws AuthorizationException
40+
*/
41+
public function updateApplicationPeriod(Request $request): RedirectResponse
42+
{
43+
$this->authorize('finalize', ApplicationForm::class);
44+
45+
$request->validate([
46+
'semester_id' => 'required|exists:semesters,id',
47+
'start_date' => 'required|date',
48+
'end_date' => 'required|date|after:now|after:start_date',
49+
'extended_end_date' => 'nullable|date|after:end_date',
50+
]);
51+
52+
$this->updatePeriodicEvent(
53+
Semester::find($request->semester_id),
54+
Carbon::parse($request->start_date),
55+
Carbon::parse($request->end_date),
56+
$request->extended_end_date ? Carbon::parse($request->extended_end_date) : null
57+
);
58+
59+
return back()->with('message', __('general.successful_modification'));
60+
}
61+
3362
/**
3463
* Return the view based on the request's page parameter.
3564
* @param Request $request
@@ -48,8 +77,8 @@ public function showApplicationForm(Request $request): View|RedirectResponse
4877
$data = [
4978
'workshops' => Workshop::all(),
5079
'faculties' => Faculty::all(),
51-
'deadline' => self::getApplicationDeadline(),
52-
'deadline_extended' => self::isDeadlineExtended(),
80+
'deadline' => $this->getDeadline(),
81+
'deadline_extended' => $this->isExtended(),
5382
'user' => user(),
5483
];
5584
switch ($request->input('page')) {
@@ -74,7 +103,7 @@ public function storeApplicationForm(Request $request)
74103
{
75104
$user = $request->user();
76105

77-
if (now() > self::getApplicationDeadline()) {
106+
if (now() > $this->getDeadline()) {
78107
return redirect()->route('application')->with('error', 'A jelentkezési határidő lejárt');
79108
}
80109

@@ -113,13 +142,13 @@ public function showApplications(Request $request): View
113142
if ($request->has('id')) { // return one application in detail
114143
$user = User::withoutGlobalScope('verified')
115144
->with('application')->findOrFail($request->input('id'));
116-
$this->authorize('viewApplication', $user);
145+
$this->authorize('view', $user->application);
117146
return view('auth.application.applications_details', [
118147
'user' => $user,
119148
]);
120149
} else { //return all applications that can be visible
121-
$this->authorize('viewSomeApplication', User::class);
122-
if($authUser->can('viewAllApplications', User::class)) {
150+
$this->authorize('viewSome', ApplicationForm::class);
151+
if($authUser->can('viewAll', ApplicationForm::class)) {
123152
$workshops = Workshop::all();
124153
} else {
125154
$workshops = $authUser->roleWorkshops->concat($authUser->applicationCommitteWorkshops);
@@ -150,7 +179,8 @@ public function showApplications(Request $request): View
150179
'workshop' => $request->input('workshop'), //filtered workshop
151180
'workshops' => $workshops, //workshops that can be chosen to filter
152181
'status' => $request->input('status'), //filtered status
153-
'applicationDeadline' => self::getApplicationDeadline(),
182+
'applicationDeadline' => $this->getDeadline(),
183+
'periodicEvent' => $this->periodicEvent()
154184
]);
155185
}
156186
}
@@ -163,7 +193,7 @@ public function showApplications(Request $request): View
163193
*/
164194
public function editApplication(Request $request): RedirectResponse
165195
{
166-
$this->authorize('viewSomeApplication', User::class);
196+
$this->authorize('viewSome', ApplicationForm::class);
167197
$application = ApplicationForm::findOrFail($request->input('application'));
168198
$newStatus = $request->input('status_'.$application->user->id);
169199
if ($request->has('note')) {
@@ -181,7 +211,7 @@ public function editApplication(Request $request): RedirectResponse
181211
*/
182212
public function finalizeApplicationProcess()
183213
{
184-
$this->authorize('finalizeApplicationProcess', User::class);
214+
$this->authorize('finalize', ApplicationForm::class);
185215
Cache::forget('collegists');
186216
$not_handled_applicants = User::query()->withoutGlobalScope('verified')
187217
->where('verified', 0)
@@ -223,22 +253,6 @@ public function finalizeApplicationProcess()
223253
return back()->with('message', 'Sikeresen jóváhagyta az elfogadott jelentkezőket');
224254
}
225255

226-
/**
227-
* @return Carbon the application deadline set in .env
228-
*/
229-
public static function getApplicationDeadline(): Carbon
230-
{
231-
return Carbon::parse(config('custom.application_deadline'));
232-
}
233-
234-
/**
235-
* @return bool if the deadline has been extended or not
236-
*/
237-
public static function isDeadlineExtended(): bool
238-
{
239-
return config('custom.application_extended');
240-
}
241-
242256

243257
/**
244258
* @param Request $request
@@ -314,7 +328,7 @@ public function submitApplication(User $user)
314328
if ($user->application->missingData() == []) {
315329
$user->application->update(['status' => ApplicationForm::STATUS_SUBMITTED]);
316330
$user->internetAccess->setWifiCredentials($user->educationalInformation->neptun);
317-
$user->internetAccess()->update(['has_internet_until' => $this::getApplicationDeadline()->addMonth(1)]);
331+
$user->internetAccess()->update(['has_internet_until' => $this->getDeadline()?->addMonth()]);
318332
return back()->with('message', 'Sikeresen véglegesítette a jelentkezését!');
319333
} else {
320334
return back()->with('error', 'Hiányzó adatok!');
@@ -326,7 +340,7 @@ public function submitApplication(User $user)
326340
*/
327341
public function exportApplications()
328342
{
329-
$this->authorize('viewAllApplications', User::class);
343+
$this->authorize('viewAll', ApplicationForm::class);
330344

331345
$applications = ApplicationForm::with('user')
332346
->where('status', ApplicationForm::STATUS_SUBMITTED)

0 commit comments

Comments
 (0)