<?php
namespace App\Service;
use App\Entity\Status;
use App\Repository\StatusRepository;
/**
* Class StatusService
* @package App\Service
*/
class StatusService extends BaseService
{
/**
* StatusService constructor.
* @param StatusRepository $repository
*/
public function __construct(
StatusRepository $repository,
BaseService $baseService
) {
$this->reflectFromParent($baseService);
$this->repository = $repository;
}
public function getStatus($statusName)
{
return @constant('App\Entity\Status::' . $statusName);
}
public function processStatus($process)
{
switch ($process) {
case 'submit_your_application':
return [
Status::STATUS_APPLICATION_RECEIVED,
Status::STATUS_APPLICATION_REFUSED
];
case 'examination_of_your_profile':
return [
Status::STATUS_JURY_BOOKED,
Status::STATUS_JURY_ACCEPTED,
Status::STATUS_JURY_REFUSED
];
case 'result_of_your_tests':
return [
Status::STATUS_TEST_VALIDATED,
Status::STATUS_TEST_FAILED,
Status::STATUS_TEST_NOT_TAKEN
];
case 'interview':
return [
Status::STATUS_INTERVIEW_INVITED,
Status::STATUS_INTERVIEW_DONE,
Status::STATUS_INTERVIEW_SKIPPED,
Status::STATUS_STUDENT_REFUSED
];
case 'selection_result':
return [
Status::STATUS_STUDENT_ELIGIBLE,
Status::STATUS_STUDENT_ENROLLED
];
}
}
public function getAllowStatus($currentStatus)
{
$result = [];
switch ($currentStatus) {
case Status::STATUS_PROSPECT:
case Status::STATUS_NEED_CONTACT:
$result = [
Status::STATUS_PROSPECT,
Status::STATUS_NEED_CONTACT,
Status::STATUS_CONTACTED_WAITING,
Status::STATUS_APPLICATION_RECEIVED,
];
break;
case Status::STATUS_CONTACTED_WAITING:
case Status::STATUS_APPLICATION_RECEIVED:
case Status::STATUS_APPLICATION_REFUSED:
$result = [
Status::STATUS_PROSPECT,
Status::STATUS_NEED_CONTACT,
Status::STATUS_CONTACTED_WAITING,
Status::STATUS_APPLICATION_RECEIVED,
Status::STATUS_APPLICATION_REFUSED,
Status::STATUS_JURY_BOOKED,
];
break;
case Status::STATUS_JURY_BOOKED:
$result = [
Status::STATUS_CONTACTED_WAITING,
Status::STATUS_APPLICATION_RECEIVED,
Status::STATUS_APPLICATION_REFUSED,
Status::STATUS_JURY_BOOKED,
Status::STATUS_JURY_ACCEPTED,
Status::STATUS_JURY_REFUSED
];
break;
case Status::STATUS_JURY_ACCEPTED:
case Status::STATUS_TEST_VALIDATED:
$result = [
Status::STATUS_JURY_BOOKED,
Status::STATUS_JURY_ACCEPTED,
Status::STATUS_JURY_REFUSED,
Status::STATUS_TEST_VALIDATED,
Status::STATUS_TEST_FAILED,
Status::STATUS_TEST_NOT_TAKEN,
Status::STATUS_INTERVIEW_INVITED,
];
break;
case Status::STATUS_JURY_REFUSED:
$result = [
Status::STATUS_JURY_BOOKED,
Status::STATUS_JURY_ACCEPTED,
Status::STATUS_JURY_REFUSED
];
break;
case Status::STATUS_TEST_FAILED:
case Status::STATUS_TEST_NOT_TAKEN:
$result = [
Status::STATUS_JURY_BOOKED,
Status::STATUS_JURY_ACCEPTED,
Status::STATUS_JURY_REFUSED,
Status::STATUS_TEST_VALIDATED,
Status::STATUS_TEST_FAILED,
Status::STATUS_TEST_NOT_TAKEN
];
break;
case Status::STATUS_INTERVIEW_INVITED:
$result = [
Status::STATUS_JURY_ACCEPTED,
Status::STATUS_JURY_REFUSED,
Status::STATUS_TEST_VALIDATED,
Status::STATUS_TEST_FAILED,
Status::STATUS_TEST_NOT_TAKEN,
Status::STATUS_INTERVIEW_INVITED,
Status::STATUS_INTERVIEW_DONE,
Status::STATUS_INTERVIEW_SKIPPED
];
break;
case Status::STATUS_INTERVIEW_DONE:
$result = [
Status::STATUS_INTERVIEW_INVITED,
Status::STATUS_INTERVIEW_DONE,
Status::STATUS_INTERVIEW_SKIPPED,
Status::STATUS_STUDENT_ELIGIBLE,
Status::STATUS_STUDENT_REFUSED
];
break;
case Status::STATUS_INTERVIEW_SKIPPED:
$result = [
Status::STATUS_INTERVIEW_INVITED,
Status::STATUS_INTERVIEW_DONE,
Status::STATUS_INTERVIEW_SKIPPED
];
break;
case Status::STATUS_STUDENT_ELIGIBLE:
$result = [
Status::STATUS_INTERVIEW_INVITED,
Status::STATUS_INTERVIEW_DONE,
Status::STATUS_INTERVIEW_SKIPPED,
Status::STATUS_STUDENT_ELIGIBLE,
Status::STATUS_STUDENT_REFUSED,
Status::STATUS_STUDENT_ENROLLED
];
break;
case Status::STATUS_STUDENT_REFUSED:
$result = [
Status::STATUS_INTERVIEW_INVITED,
Status::STATUS_INTERVIEW_DONE,
Status::STATUS_INTERVIEW_SKIPPED,
Status::STATUS_STUDENT_ELIGIBLE,
Status::STATUS_STUDENT_REFUSED,
];
break;
case Status::STATUS_STUDENT_ENROLLED:
$result = [
Status::STATUS_STUDENT_ELIGIBLE,
Status::STATUS_STUDENT_REFUSED,
Status::STATUS_STUDENT_ENROLLED,
];
break;
case Status::STATUS_DISCLAIMER:
$result = [];
break;
case Status::STATUS_CONTACT_NO_RESPONSE:
$result = [
Status::STATUS_STUDENT_ENROLLED
];
break;
default:
$result = [
Status::STATUS_NEED_CONTACT,
Status::STATUS_CONTACTED_WAITING,
Status::STATUS_APPLICATION_RECEIVED,
Status::STATUS_APPLICATION_REFUSED,
Status::STATUS_JURY_BOOKED,
Status::STATUS_JURY_ACCEPTED,
Status::STATUS_JURY_REFUSED,
Status::STATUS_TEST_VALIDATED,
Status::STATUS_TEST_FAILED,
Status::STATUS_TEST_NOT_TAKEN,
Status::STATUS_INTERVIEW_INVITED,
Status::STATUS_INTERVIEW_DONE,
Status::STATUS_INTERVIEW_SKIPPED,
Status::STATUS_STUDENT_ELIGIBLE,
Status::STATUS_STUDENT_REFUSED,
Status::STATUS_STUDENT_ENROLLED,
];
break;
};
return array_merge($result, [Status::STATUS_CONTACT_REFUSED, Status::STATUS_DISCLAIMER, Status::STATUS_CONTACT_NO_RESPONSE]);
}
}