Skip to content

Commit d3c1f1e

Browse files
committed
remove unwanted changes
1 parent 2e91a53 commit d3c1f1e

29 files changed

+625
-742
lines changed

.env.example

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

91+
APPLICATION_DEADLINE=
92+
APPLICATION_EXTENDED=false
93+
9194
GITHUB_AUTH_TOKEN=
9295
GITHUB_REPO=EotvosCollegium/mars
9396

97+
MR_AND_MISS_DEADLINE="2020-03-15 00:00:00"
98+
SEMESTER_EVALUATION_DEADLINE="2020-06-15 23:59:00"
99+
94100
BACKUP_PATH=
95101
RADIUS_LOG_PATH=/var/log/freeradius/radius.log.1 #yesterday's log
96102
DHCP_LEASES_PATH=/var/lib/dhcp/dhcpd.leases

app/Http/Controllers/Auth/ApplicationController.php

Lines changed: 32 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -6,58 +6,30 @@
66
use App\Http\Controllers\Controller;
77
use App\Models\ApplicationForm;
88
use App\Models\Faculty;
9-
use App\Models\File;
10-
use App\Models\Role;
11-
use App\Models\RoleUser;
129
use App\Models\User;
1310
use App\Models\Workshop;
14-
use App\Utils\HasPeriodicEvent;
11+
use App\Models\RoleUser;
12+
use App\Models\File;
13+
use App\Models\Role;
1514
use Carbon\Carbon;
1615
use Illuminate\Auth\Access\AuthorizationException;
1716
use Illuminate\Http\RedirectResponse;
1817
use Illuminate\Http\Request;
18+
use Illuminate\View\View;
19+
use Illuminate\Support\Facades\Storage;
1920
use Illuminate\Support\Facades\Cache;
2021
use Illuminate\Support\Facades\DB;
21-
use Illuminate\Support\Facades\Storage;
22-
use Illuminate\View\View;
2322
use Maatwebsite\Excel\Facades\Excel;
2423

2524
class ApplicationController extends Controller
2625
{
27-
//TODO attach application forms to semesters (from the periodicEvent)
28-
use HasPeriodicEvent;
29-
3026
private const EDUCATIONAL_ROUTE = 'educational';
3127
private const QUESTIONS_ROUTE = 'questions';
3228
private const FILES_ROUTE = 'files';
3329
private const DELETE_FILE_ROUTE = 'files.delete';
3430
private const ADD_PROFILE_PIC_ROUTE = 'files.profile';
3531
private const SUBMIT_ROUTE = 'submit';
3632

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-
$show_until = Carbon::parse($request->input('end_date'))->addMonths(2);
52-
53-
$this->updatePeriodicEvent(array_merge(
54-
$request->only(['semester_id', 'start_date', 'end_date', 'extended_end_date']),
55-
['show_until' => $show_until]
56-
));
57-
58-
return back()->with('message', __('general.successful_modification'));
59-
}
60-
6133
/**
6234
* Return the view based on the request's page parameter.
6335
* @param Request $request
@@ -76,8 +48,8 @@ public function showApplicationForm(Request $request): View|RedirectResponse
7648
$data = [
7749
'workshops' => Workshop::all(),
7850
'faculties' => Faculty::all(),
79-
'deadline' => $this->getDeadline(),
80-
'deadline_extended' => $this->isExtended(),
51+
'deadline' => self::getApplicationDeadline(),
52+
'deadline_extended' => self::isDeadlineExtended(),
8153
'user' => user(),
8254
];
8355
switch ($request->input('page')) {
@@ -102,7 +74,7 @@ public function storeApplicationForm(Request $request)
10274
{
10375
$user = $request->user();
10476

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

@@ -141,13 +113,13 @@ public function showApplications(Request $request): View
141113
if ($request->has('id')) { // return one application in detail
142114
$user = User::withoutGlobalScope('verified')
143115
->with('application')->findOrFail($request->input('id'));
144-
$this->authorize('view', $user->application);
116+
$this->authorize('viewApplication', $user);
145117
return view('auth.application.applications_details', [
146118
'user' => $user,
147119
]);
148120
} else { //return all applications that can be visible
149-
$this->authorize('viewSome', ApplicationForm::class);
150-
if($authUser->can('viewAll', ApplicationForm::class)) {
121+
$this->authorize('viewSomeApplication', User::class);
122+
if($authUser->can('viewAllApplications', User::class)) {
151123
$workshops = Workshop::all();
152124
} else {
153125
$workshops = $authUser->roleWorkshops->concat($authUser->applicationCommitteWorkshops);
@@ -178,8 +150,7 @@ public function showApplications(Request $request): View
178150
'workshop' => $request->input('workshop'), //filtered workshop
179151
'workshops' => $workshops, //workshops that can be chosen to filter
180152
'status' => $request->input('status'), //filtered status
181-
'applicationDeadline' => $this->getDeadline(),
182-
'periodicEvent' => $this->periodicEvent()
153+
'applicationDeadline' => self::getApplicationDeadline(),
183154
]);
184155
}
185156
}
@@ -192,7 +163,7 @@ public function showApplications(Request $request): View
192163
*/
193164
public function editApplication(Request $request): RedirectResponse
194165
{
195-
$this->authorize('viewSome', ApplicationForm::class);
166+
$this->authorize('viewSomeApplication', User::class);
196167
$application = ApplicationForm::findOrFail($request->input('application'));
197168
$newStatus = $request->input('status_'.$application->user->id);
198169
if ($request->has('note')) {
@@ -210,7 +181,7 @@ public function editApplication(Request $request): RedirectResponse
210181
*/
211182
public function finalizeApplicationProcess()
212183
{
213-
$this->authorize('finalize', ApplicationForm::class);
184+
$this->authorize('finalizeApplicationProcess', User::class);
214185
Cache::forget('collegists');
215186
$not_handled_applicants = User::query()->withoutGlobalScope('verified')
216187
->where('verified', 0)
@@ -252,6 +223,22 @@ public function finalizeApplicationProcess()
252223
return back()->with('message', 'Sikeresen jóváhagyta az elfogadott jelentkezőket');
253224
}
254225

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+
255242

256243
/**
257244
* @param Request $request
@@ -327,7 +314,7 @@ public function submitApplication(User $user)
327314
if ($user->application->missingData() == []) {
328315
$user->application->update(['status' => ApplicationForm::STATUS_SUBMITTED]);
329316
$user->internetAccess->setWifiCredentials($user->educationalInformation->neptun);
330-
$user->internetAccess()->update(['has_internet_until' => $this->getDeadline()?->addMonth()]);
317+
$user->internetAccess()->update(['has_internet_until' => $this::getApplicationDeadline()->addMonth(1)]);
331318
return back()->with('message', 'Sikeresen véglegesítette a jelentkezését!');
332319
} else {
333320
return back()->with('error', 'Hiányzó adatok!');
@@ -339,7 +326,7 @@ public function submitApplication(User $user)
339326
*/
340327
public function exportApplications()
341328
{
342-
$this->authorize('viewAll', ApplicationForm::class);
329+
$this->authorize('viewAllApplications', User::class);
343330

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

app/Http/Controllers/Secretariat/SemesterEvaluationController.php

Lines changed: 58 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
namespace App\Http\Controllers\Secretariat;
44

55
use App\Http\Controllers\Controller;
6-
use App\Mail\EvaluationFormAvailable;
7-
use App\Mail\EvaluationFormAvailableDetails;
86
use App\Mail\EvaluationFormClosed;
9-
use App\Mail\EvaluationFormReminder;
107
use App\Mail\StatusDeactivated;
8+
use App\Models\EventTrigger;
119
use App\Models\Faculty;
1210
use App\Models\GeneralAssemblies\GeneralAssembly;
1311
use App\Models\Role;
@@ -17,7 +15,7 @@
1715
use App\Models\SemesterStatus;
1816
use App\Models\User;
1917
use App\Models\Workshop;
20-
use App\Utils\HasPeriodicEvent;
18+
use Carbon\Carbon;
2119
use Illuminate\Auth\Access\AuthorizationException;
2220
use Illuminate\Auth\AuthenticationException;
2321
use Illuminate\Http\Request;
@@ -27,42 +25,31 @@
2725

2826
class SemesterEvaluationController extends Controller
2927
{
30-
use HasPeriodicEvent;
31-
32-
public function updateEvaluationPeriod(Request $request)
28+
/**
29+
* Check if the evaluation is available.
30+
*/
31+
public static function isEvaluationAvailable(): bool
3332
{
34-
$this->authorize('manage', SemesterEvaluation::class);
35-
36-
$request->validate([
37-
'semester_id' => 'required|exists:semesters,id',
38-
'start_date' => 'required|date',
39-
'end_date' => 'required|date|after:now',
40-
]);
41-
42-
$this->updatePeriodicEvent(
43-
$request->only(['semester_id', 'start_date', 'end_date'])
44-
);
45-
46-
return back()->with('message', __('general.successful_modification'));
47-
48-
}
33+
$available = EventTrigger::find(EventTrigger::SEMESTER_EVALUATION_AVAILABLE)->date;
34+
$deadline = self::deadline();
4935

50-
public function handlePeriodicEventStart(): void
51-
{
52-
Mail::to(config('contacts.mail_membra'))->queue(new EvaluationFormAvailable($this->getDeadline()));
53-
if (User::secretary()) {
54-
Mail::to(User::secretary())->queue(new EvaluationFormAvailableDetails(User::secretary()->name, $this->getDeadline()));
55-
}
56-
if (User::president()) {
57-
Mail::to(User::president())->queue(new EvaluationFormAvailableDetails(User::president()->name, $this->getDeadline()));
58-
}
36+
return now() <= $deadline && $available >= Semester::next()->getStartDate();
5937
}
6038

61-
public function handlePeriodicEventReminder(int $daysBeforeEnd): void
39+
public static function deadline(): Carbon
6240
{
63-
if($daysBeforeEnd < 3) {
64-
$userCount = self::usersHaventFilledOutTheForm()->count();
65-
Mail::to(config('contacts.mail_membra'))->queue(new EvaluationFormReminder($userCount, $this->getDeadline()));
41+
$custom_deadline = config('custom.semester_evaluation_deadline');
42+
$system_deadline = EventTrigger::find(EventTrigger::DEACTIVATE_STATUS_SIGNAL)->date;
43+
if (!isset($custom_deadline)) {
44+
return $system_deadline;
45+
} else {
46+
$custom_deadline = Carbon::parse($custom_deadline);
47+
//if the deadline has not been updated, use the system_deadline
48+
if ($custom_deadline < Semester::current()->getStartDate()) {
49+
return $system_deadline;
50+
} else {
51+
return $custom_deadline;
52+
}
6653
}
6754
}
6855

@@ -72,7 +59,10 @@ public function handlePeriodicEventReminder(int $daysBeforeEnd): void
7259
*/
7360
public function show()
7461
{
75-
$this->authorize('fillOrManage', SemesterEvaluation::class);
62+
$this->authorize('is-collegist');
63+
if (!self::isEvaluationAvailable()) {
64+
return redirect('home')->with('error', 'Lejárt a határidő a kérdőív kitöltésére. Keresd fel a titkárságot.');
65+
}
7666

7767
return view('secretariat.evaluation-form.app', [
7868
'phd' => user()->educationalInformation->studyLines()->currentlyEnrolled()->where('type', 'phd')->exists(),
@@ -83,17 +73,19 @@ public function show()
8373
'general_assemblies' => GeneralAssembly::all()->sortByDesc('closed_at')->take(2),
8474
'community_services' => user()->communityServiceRequests()->where('semester_id', Semester::current()->id)->get(),
8575
'position_roles' => user()->roles()->whereIn('name', Role::STUDENT_POSTION_ROLES)->get(),
86-
'periodicEvent' => $this->periodicEvent(),
76+
'deadline' => self::deadline(),
8777
]);
8878
}
8979

9080
/**
9181
* Update form information.
92-
* @throws \Exception
9382
*/
9483
public function store(Request $request)
9584
{
96-
$this->authorize('fill', SemesterEvaluation::class);
85+
$this->authorize('is-collegist');
86+
if (!self::isEvaluationAvailable()) {
87+
return redirect('home')->with('error', 'Lejárt a határidő a kérdőív kitöltésére. Keresd fel a titkárságot.');
88+
}
9789

9890
$validator = Validator::make($request->all(), [
9991
'section' => 'required|in:alfonso,courses,avg,general_assembly,feedback,other,status',
@@ -124,13 +116,9 @@ public function store(Request $request)
124116
$validator->validate();
125117

126118
$user = user();
127-
$semester = self::semester();
128-
if(!$semester) {
129-
throw new \Exception('No semester found for the event');
130-
}
131-
$evaluation = $user->semesterEvaluations()->where('semester_id', $semester->id)->first();
119+
$evaluation = $user->semesterEvaluations()->where('semester_id', Semester::current()->id)->first();
132120
if (!$evaluation) {
133-
$evaluation = SemesterEvaluation::create(['semester_id' => $semester->id, 'user_id' => $user->id]);
121+
$evaluation = SemesterEvaluation::create(['semester_id' => Semester::current()->id, 'user_id' => $user->id]);
134122
}
135123
switch ($request->section) {
136124
case 'alfonso':
@@ -176,7 +164,7 @@ public function store(Request $request)
176164
if (!isset($request->next_status)) {
177165
return back()->with('error', "A státusz megadása kötelező!")->with('section', $request->section);
178166
}
179-
$user->setStatusFor(self::semester()->succ(), $request->next_status, $request->next_status_note);
167+
$user->setStatusFor(Semester::next(), $request->next_status, $request->next_status_note);
180168
if ($request->has('resign_residency') && $user->isResident()) {
181169
$user->setExtern();
182170
}
@@ -189,6 +177,30 @@ public function store(Request $request)
189177
return back()->with('message', __('general.successful_modification'))->with('section', $request->section);
190178
}
191179

180+
/**
181+
* Send out the request to fill out the form.
182+
*/
183+
public static function sendEvaluationAvailableMail()
184+
{
185+
Mail::to(config('contacts.mail_membra'))->queue(new \App\Mail\EvaluationFormAvailable());
186+
if (User::secretary()) {
187+
Mail::to(User::secretary())->queue(new \App\Mail\EvaluationFormAvailableDetails(User::secretary()->name));
188+
}
189+
if (User::president()) {
190+
Mail::to(User::president())->queue(new \App\Mail\EvaluationFormAvailableDetails(User::president()->name));
191+
}
192+
}
193+
194+
/**
195+
* Send out a reminder.
196+
*/
197+
public static function sendEvaluationReminder()
198+
{
199+
$userCount = self::usersHaventFilledOutTheForm()->count();
200+
201+
Mail::to(config('contacts.mail_membra'))->queue(new \App\Mail\EvaluationFormReminder($userCount));
202+
}
203+
192204
/**
193205
* @return User[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Support\Collection
194206
*/

0 commit comments

Comments
 (0)