. */ namespace App\Http\Controllers; use App\Application; use App\Events\ApplicationApprovedEvent; use App\Events\ApplicationDeniedEvent; use App\Services\AbsenceService; use App\Services\AccountSuspensionService; use Illuminate\Http\Request; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Log; class DevToolsController extends Controller { public function __construct() { // } private function singleAuthorise() { if (! Auth::user()->can('admin.developertools.use')) { abort(403, __('You\'re not authorized to access this page.')); } } public function index() { $this->singleAuthorise(); return view('dashboard.administration.devtools') ->with('applications', Application::where('applicationStatus', 'STAGE_PEERAPPROVAL')->get()) ->with('rejectApplications', Application::all()); } /** * Force an application to be approved. */ public function forceApprovalEvent(Request $request) { $this->singleAuthorise(); $application = Application::find($request->application); event(new ApplicationApprovedEvent($application)); return redirect() ->back() ->with('success', __('Event dispatched; Candidate approval sequence initiated.')); } /** * Force an application to be rejected. */ public function forceRejectionEvent(Request $request) { $this->singleAuthorise(); $application = Application::findOrFail($request->application); event(new ApplicationDeniedEvent($application)); return redirect() ->back() ->with('success', __('Event dispatched; Candidate rejection sequence initiated.')); } public function evaluateVotes() { $this->singleAuthorise(); $code = Artisan::call("votes:evaluate"); return redirect() ->back() ->with('success', __('Ran vote evaluation logic, with exit code :exitCode ', ['exitCode' => $code])); } public function purgeSuspensions(AccountSuspensionService $service) { $this->singleAuthorise(); if ($service->purgeExpired()) { return redirect() ->back() ->with('success', __('Force purged all expired suspensions.')); } return redirect() ->back() ->with('error', __('There were no expired suspensions (or no suspensions at all) to purge.')); } public function endAbsencesNow(AbsenceService $service) { $this->singleAuthorise(); $service->endExpired(); Log::alert('(absence cleaner) Forcefully started absence expiration check!'); return redirect() ->back() ->with('success', 'Cleaned up expired absences.'); } }