public static function post() { $page = new Page(); $page->data['title'] = 'Inchecken'; $errMsgs = CheckInFormViewValidator::validate($_POST); $user = null; if (empty($errMsgs)) { $checkInOk = false; $weeklyWinnerOk = true; //Get user to check in try { //Get the user who's card number for this year was entered $user = UserDB::getBasicUserByCardNumber($_POST['card_number']); } catch (Exception $ex) { //Check-in failed (can't get user) CheckInController::buildCheckInFormView($page, true); $page->data['CheckInFormView']['errMsgs']['global'] = '<h2 class="error_message" id="check_in_form_error_message">Kan gebruiker niet inchecken, probeer het opnieuw.</h2>'; $page->showWithMenu(); exit; } if (!$user) { //There's no user for this card CheckInController::buildCheckInFormView($page, true); $page->data['CheckInFormView']['errMsgs']['global'] = '<h2 class="error_message" id="check_in_form_error_message">Dit kaartnummer is niet gekoppeld aan een gebruiker.</h2>'; $page->showWithMenu(); exit; } else { //Check user in try { $checkInOk = CheckInDB::checkIn($user->userId); } catch (Exception $ex) { //Check-in failed (something went wrong or check-in isn't valid) CheckInController::buildCheckInFormView($page, true); $page->data['CheckInFormView']['errMsgs']['global'] = '<h2 class="error_message" id="check_in_form_error_message">Kan gebruiker niet inchecken, probeer het opnieuw.</h2>'; $page->showWithMenu(); exit; } } if (!$checkInOk) { //The user has already checked in CheckInController::buildCheckInFormView($page, true); $page->data['CheckInFormView']['errMsgs']['global'] = '<h2 class="error_message" id="check_in_form_error_message">Deze gebruiker is de voorbije 12 uur al ingechecked.</h2>'; $page->showWithMenu(); exit; } else { //Check in successful, check whether he is the winner of the week $isWinner = false; try { //Check if this user is the winner of the week $weeklyWinnerData = WeeklyWinnerDB::getThisWeeksWinnerData(); $isWinner = $weeklyWinnerData && $weeklyWinnerData->userId == $user->userId && !$weeklyWinnerData->hasCollectedPrize; //If he is the winner we set in the database that the user collected his prize if ($isWinner) { $newWeeklyWinnerData = new WeeklyWinnerData($weeklyWinnerData->startOfWeek, $weeklyWinnerData->userId, true); WeeklyWinnerDB::updateWeeklyWinnerData($weeklyWinnerData, $newWeeklyWinnerData); } } catch (Exception $ex) { $weeklyWinnerOk = false; } //If he is the winner, add the winner views and try to send an email to all usermanagers if ($isWinner) { $page->addView('checkIn/CheckInWeeklyWinnerTitleView'); CheckInController::buildCheckInSuccessfulView($page, $user); try { $select = array('email' => true); $searchFilter = array('isUserManager' => true); $searchUsers = UserDB::getSearchUsers($select, $searchFilter, null); $extras['common']['winnerFirstName'] = $user->firstName; $extras['common']['winnerLastName'] = $user->lastName; $failedAddresses = Email::sendEmails('WeeklyWinnerNotification.html', 'Winnaar van de week', EmailConfig::FROM_ADDRESS, array_column($searchUsers, 'user'), $extras); if (!empty($failedAddresses)) { $page->data['ErrorMessageWithDescriptionNoLinkView']['errorTitle'] = 'Kan e-mail niet versturen.'; $page->data['ErrorMessageWithDescriptionNoLinkView']['description'] = 'Kan geen e-mail versturen naar het bestuur om te laten weten dat je gewonnen hebt. Meld dit even aan een tapper of bestuurslid.'; $page->addView('error/ErrorMessageWithDescriptionNoLinkView'); } } catch (Exception $ex) { $page->data['ErrorMessageWithDescriptionNoLinkView']['errorTitle'] = 'Kan e-mail niet versturen.'; $page->data['ErrorMessageWithDescriptionNoLinkView']['errorDescription'] = 'Kan geen e-mail versturen naar het bestuur om te laten weten dat je gewonnen hebt. Meld dit even aan een tapper of bestuurslid.'; $page->addView('error/ErrorMessageWithDescriptionNoLinkView'); } $page->addView('checkIn/CheckInWeeklyWinnerImageView'); $page->showWithMenu(); } else { $page->addView('checkIn/CheckInSuccessfulTitleView'); CheckInController::buildCheckInSuccessfulView($page, $user); if (!$weeklyWinnerOk) { $page->data['ErrorMessageNoDescriptionNoLinkView']['errorTitle'] = 'Kan niet controleren of je de winnaar van de week bent.'; $page->addView('error/ErrorMessageNoDescriptionNoLinkView'); } else { $page->addExtraJsFile('views/checkIn/CheckInRedirector.js'); $page->addExtraJsFile('views/checkIn/checkInSuccessfulOnLoadHandler.js'); } $page->showWithMenu(); } } } else { //Errors in the form, retry CheckInController::buildCheckInFormView($page, true); $page->data['CheckInFormView']['errMsgs'] = array_merge($page->data['CheckInFormView']['errMsgs'], $errMsgs); $page->showWithMenu(); } }