public function store()
{
if (Request::hasFile('entry') !== true) {
abort(422);
}
$user = Auth::user();
$contest = Contest::findOrFail(Request::input('contest_id'));
priv_check('ContestEntryStore', $contest)->ensureCan();
$allowedExtensions = [];
$maxFilesize = 0;
switch ($contest->type) {
case 'art':
$allowedExtensions[] = 'jpg';
$allowedExtensions[] = 'jpeg';
$allowedExtensions[] = 'png';
$maxFilesize = 4000000;
break;
case 'beatmap':
$allowedExtensions[] = 'osu';
$maxFilesize = 1000000;
break;
case 'music':
$allowedExtensions[] = 'mp3';
$maxFilesize = 15000000;
break;
}
if (!in_array(strtolower(Request::file('entry')->getClientOriginalExtension()), $allowedExtensions, true)) {
abort(422);
}
if (Request::file('entry')->getClientSize() > $maxFilesize) {
abort(413);
}
UserContestEntry::upload(Request::file('entry'), $user, $contest);
return $contest->userEntries($user);
}