Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Χάρης Παπαδόπουλος
e-epal
Commits
7725eceb
Commit
7725eceb
authored
Jun 08, 2017
by
Χάρης Παπαδόπουλος
Browse files
Merge branch 'appsubmit-ws' into 'develop'
Alpha version for service consumption See merge request !142
parents
73aa06e4
9ce83f59
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
drupal/modules/epal/src/Client.php
View file @
7725eceb
...
...
@@ -30,23 +30,11 @@ class Client
$this
->
_settings
=
array_merge
(
$this
->
_settings
,
$settings
);
$this
->
_settings
[
'ws_endpoint_token'
]
=
"
{
$this
->
_settings
[
'ws_endpoint'
]
}
/oauth2/token"
;
$this
->
_settings
[
'ws_endpoint_token_granttype'
]
=
'password'
;
$this
->
_settings
[
'ws_endpoint_studentepalinfo'
]
=
"
{
$this
->
_settings
[
'ws_endpoint'
]
}
/api/epal/GetStudentEpalInfo"
;
$this
->
_settings
[
'ws_endpoint_studentepalcertification'
]
=
"
{
$this
->
_settings
[
'ws_endpoint'
]
}
/api/epal/GetStudentEpalCertification"
;
$this
->
_settings
[
'ws_endpoint_studentepalpromotion'
]
=
"
{
$this
->
_settings
[
'ws_endpoint'
]
}
/api/epal/GetStudentEpalPromotion"
;
$this
->
_settings
[
'ws_endpoint_alldidactiyear'
]
=
"
{
$this
->
_settings
[
'ws_endpoint'
]
}
/api/general/GetAllDidactiYear"
;
}
/**
* Επιστρέφει πίνακα με κλειδιά τα property names των πεδίων που επιστρέφει η GetStudentEpalInfo
* και τιμές λεκτικά - ετικέτες τους.
*
* @return array
*/
public
function
getStudentInfoFields
()
{
return
$this
->
studentInfoFields
;
}
/**
* Λαμβάνει το authentication token
*
...
...
drupal/modules/epal/src/ClientConsumer.php
0 → 100755
View file @
7725eceb
<?php
namespace
Drupal\epal
;
use
Drupal\Core\Entity\EntityTypeManagerInterface
;
use
Symfony\Component\DependencyInjection\ContainerInterface
;
use
Drupal\Core\Logger\LoggerChannelFactoryInterface
;
use
Drupal\epal\Client
;
class
ClientConsumer
{
protected
$entityTypeManager
;
protected
$logger
;
protected
$client
;
protected
$settings
;
protected
$cached_didactic_years
=
[
"1"
=>
"2008 - 2009"
,
"2"
=>
"2011 - 2012"
,
"3"
=>
"1999 - 2000"
,
"4"
=>
"2000 - 2001"
,
"5"
=>
"2009 - 2010"
,
"6"
=>
"2010 - 2011"
,
"7"
=>
"2001 - 2002"
,
"8"
=>
"2002 - 2003"
,
"9"
=>
"2003 - 2004"
,
"10"
=>
"2004 - 2005"
,
"11"
=>
"2005 - 2006"
,
"12"
=>
"2006 - 2007"
,
"13"
=>
"2007 - 2008"
,
"17"
=>
"2012 - 2013"
,
"18"
=>
"2013 - 2014"
,
"22"
=>
"2014 - 2015"
,
"23"
=>
"2015 - 2016"
,
"24"
=>
"2016 - 2017"
];
protected
$cached_level_names
=
[
"1"
=>
"Α"
,
"2"
=>
"Β"
,
"3"
=>
"Γ"
,
"4"
=>
"Δ"
];
public
function
__construct
(
$settings
,
EntityTypeManagerInterface
$entityTypeManager
,
LoggerChannelFactoryInterface
$loggerChannel
)
{
$this
->
settings
=
$settings
;
$this
->
entityTypeManager
=
$entityTypeManager
;
$this
->
logger
=
$loggerChannel
->
get
(
'epal-school'
);
$this
->
client
=
new
Client
(
$this
->
settings
,
$this
->
logger
);
}
public
function
getAllDidactiYear
()
{
$ts_start
=
microtime
(
true
);
// try {
// $catalog = $this->client->getAllDidactiYear();
// } catch (\Exception $e) {
// $catalog = [];
// }
$catalog
=
$this
->
cached_didactic_years
;
$duration
=
microtime
(
true
)
-
$ts_start
;
$this
->
logger
->
info
(
__METHOD__
.
" :: timed [
{
$duration
}
]"
);
return
$catalog
;
}
public
function
getStudentEpalPromotion
(
$didactic_year_id
,
$lastname
,
$firstname
,
$father_firstname
,
$mother_firstname
,
$birthdate
,
$registry_no
,
$level_name
)
{
$ts_start
=
microtime
(
true
);
try
{
$result
=
$this
->
client
->
getStudentEpalPromotion
(
$didactic_year_id
,
$lastname
,
$firstname
,
$father_firstname
,
$mother_firstname
,
$birthdate
,
$registry_no
,
$level_name
);
}
catch
(
\
Exception
$e
)
{
$result
=
-
1
;
}
$duration
=
microtime
(
true
)
-
$ts_start
;
$this
->
logger
->
info
(
__METHOD__
.
" :: timed [
{
$duration
}
]"
);
return
$result
;
}
public
function
getStudentEpalCertification
(
$didactic_year_id
,
$lastname
,
$firstname
,
$father_firstname
,
$mother_firstname
,
$birthdate
,
$registry_no
,
$level_name
)
{
$ts_start
=
microtime
(
true
);
try
{
$result
=
$this
->
client
->
getStudentEpalCertification
(
$didactic_year_id
,
$lastname
,
$firstname
,
$father_firstname
,
$mother_firstname
,
$birthdate
,
$registry_no
,
$level_name
);
}
catch
(
\
Exception
$e
)
{
$result
=
-
1
;
}
$duration
=
microtime
(
true
)
-
$ts_start
;
$this
->
logger
->
info
(
__METHOD__
.
" :: timed [
{
$duration
}
]"
);
return
$result
;
}
/**
* If $ending is provided
* it is assumed as the second part of the academic-year (i.e. 2017 for 2016-2017),
* the function returns the corresponding id to match first;
* If $id is provided, return the corresponding label.
* $id has priority over $ending, if both are supplied.
*
* @return null|string null if no input or no info located
*/
public
function
getDidacticYear
(
$ending
=
null
,
$id
=
null
)
{
$value
=
null
;
if
(
$id
!==
null
)
{
if
(
array_key_exists
(
$id
,
$this
->
cached_didactic_years
))
{
$value
=
$this
->
cached_didactic_years
[
$id
];
}
}
elseif
(
$ending
!==
null
)
{
$remain
=
array_filter
(
$this
->
cached_didactic_years
,
function
(
$v
)
use
(
$ending
)
{
$pos
=
strpos
(
$v
,
"
$ending
"
);
return
(
$pos
!==
false
&&
$pos
>
4
);
});
if
(
count
(
$remain
)
>
0
)
{
$values
=
array_keys
(
$remain
);
$value
=
$values
[
0
];
}
}
return
$value
;
}
/**
* Get the level name of the denoted class level
*
* @return string|mixed The level name of the provided failsafe value if not found
*/
public
function
getLevelName
(
$id
,
$failsafe_value
=
'X'
)
{
$value
=
$failsafe_value
;
if
(
array_key_exists
(
$id
,
$this
->
cached_level_names
))
{
$value
=
$this
->
cached_level_names
[
"
$id
"
];
}
return
$value
;
}
private
function
generateRandomString
(
$length
)
{
$characters
=
[
'Α'
,
'Β'
,
'Γ'
,
'Δ'
,
'Ε'
,
'Ζ'
,
'Η'
,
'Θ'
,
'Ι'
,
'Κ'
,
'Λ'
,
'Μ'
,
'Ν'
,
'Ξ'
,
'Ο'
,
'Π'
,
'Ρ'
,
'Σ'
,
'Τ'
,
'Υ'
,
'Φ'
,
'Χ'
,
'Ψ'
,
'Ω'
];
$charactersLength
=
count
(
$characters
);
$randomString
=
''
;
for
(
$i
=
0
;
$i
<
$length
;
$i
++
)
{
$randomString
.
=
$characters
[
rand
(
0
,
$charactersLength
-
1
)];
}
return
$randomString
;
}
}
drupal/modules/epal/src/Controller/ApplicationSubmit.php
View file @
7725eceb
...
...
@@ -13,63 +13,83 @@ use Symfony\Component\HttpFoundation\Request;
use
Symfony\Component\HttpFoundation\Response
;
use
Drupal\Core\Logger\LoggerChannelFactoryInterface
;
class
ApplicationSubmit
extends
ControllerBase
{
use
Drupal\epal\ClientConsumer
;
class
ApplicationSubmit
extends
ControllerBase
{
const
UNIT_TYPE_NIP
=
1
;
const
UNIT_TYPE_DIM
=
2
;
const
UNIT_TYPE_GYM
=
3
;
const
UNIT_TYPE_LYK
=
4
;
const
UNIT_TYPE_EPAL
=
5
;
const
CERT_GYM
=
'Απολυτήριο Γυμνασίου'
;
const
CERT_LYK
=
'Απολυτήριο Λυκείου'
;
protected
$entityTypeManager
;
protected
$logger
;
protected
$connection
;
protected
$client
;
// client consumer
public
function
__construct
(
EntityTypeManagerInterface
$entityTypeManager
,
Connection
$connection
,
LoggerChannelFactoryInterface
$loggerChannel
)
{
$this
->
entityTypeManager
=
$entityTypeManager
;
$this
->
connection
=
$connection
;
$this
->
logger
=
$loggerChannel
->
get
(
'epal'
);
public
function
__construct
(
EntityTypeManagerInterface
$entityTypeManager
,
Connection
$connection
,
LoggerChannelFactoryInterface
$loggerChannel
)
{
$this
->
entityTypeManager
=
$entityTypeManager
;
$this
->
connection
=
$connection
;
$this
->
logger
=
$loggerChannel
->
get
(
'epal'
);
$config
=
$this
->
config
(
'epal.settings'
);
$settings
=
[];
foreach
([
'ws_endpoint'
,
'ws_username'
,
'ws_password'
,
'verbose'
,
'NO_SAFE_CURL'
]
as
$setting
)
{
$settings
[
$setting
]
=
$config
->
get
(
$setting
);
}
$this
->
client
=
new
ClientConsumer
(
$settings
,
$entityTypeManager
,
$loggerChannel
);
}
public
static
function
create
(
ContainerInterface
$container
)
public
static
function
create
(
ContainerInterface
$container
)
{
return
new
static
(
$container
->
get
(
'entity_type.manager'
),
$container
->
get
(
'database'
),
$container
->
get
(
'logger.factory'
)
);
$container
->
get
(
'entity_type.manager'
),
$container
->
get
(
'database'
),
$container
->
get
(
'logger.factory'
)
);
}
public
function
appSubmit
(
Request
$request
)
{
if
(
!
$request
->
isMethod
(
'POST'
))
{
return
$this
->
respondWithStatus
([
"error_code"
=>
2001
],
Response
::
HTTP_METHOD_NOT_ALLOWED
);
}
$applicationForm
=
array
();
$content
=
$request
->
getContent
();
if
(
!
empty
(
$content
))
{
$applicationForm
=
json_decode
(
$content
,
TRUE
);
}
else
{
return
$this
->
respondWithStatus
([
"error_code"
=>
5002
],
Response
::
HTTP_BAD_REQUEST
);
}
$transaction
=
$this
->
connection
->
startTransaction
();
try
{
//insert records in entity: epal_student
$authToken
=
$request
->
headers
->
get
(
'PHP_AUTH_USER'
);
$epalUsers
=
$this
->
entityTypeManager
->
getStorage
(
'epal_users'
)
->
loadByProperties
(
array
(
'authtoken'
=>
$authToken
)
);
$epalUser
=
reset
(
$
epal
U
sers
);
if
(
!
$epalUser
){
return
$this
->
respondWithStatus
([
"error_code"
=>
4003
],
Response
::
HTTP_FORBIDDEN
);
}
$student
=
array
(
public
function
appSubmit
(
Request
$request
)
{
if
(
!
$request
->
isMethod
(
'POST'
))
{
return
$this
->
respondWithStatus
([
"error_code"
=>
2001
],
Response
::
HTTP_METHOD_NOT_ALLOWED
);
}
$applicationForm
=
array
();
$content
=
$request
->
getContent
();
if
(
!
empty
(
$content
))
{
$applicationForm
=
json_decode
(
$content
,
true
);
}
else
{
return
$this
->
respondWithStatus
([
"error_code"
=>
5002
],
Response
::
HTTP_BAD_REQUEST
);
}
$transaction
=
$this
->
connection
->
startTransaction
();
try
{
//insert records in entity: epal_student
$authToken
=
$request
->
headers
->
get
(
'PHP_AUTH_USER'
);
$epalUser
s
=
$this
->
entityTypeManager
->
getStorage
(
'
epal
_u
sers
'
)
->
loadByProperties
(
array
(
'authtoken'
=>
$authToken
)
);
$epalUser
=
reset
(
$epalUser
s
);
if
(
!
$epalUser
)
{
return
$this
->
respondWithStatus
([
"error_code"
=>
4003
],
Response
::
HTTP_FORBIDDEN
);
}
$student
=
array
(
'langcode'
=>
'el'
,
'student_record_id'
=>
0
,
'sex'
=>
0
,
...
...
@@ -84,40 +104,42 @@ class ApplicationSubmit extends ControllerBase {
'points'
=>
0
,
'user_id'
=>
$epalUser
->
user_id
->
target_id
,
'epaluser_id'
=>
$epalUser
->
id
(),
'name'
=>
$applicationForm
[
0
][
'name'
],
'studentsurname'
=>
$applicationForm
[
0
][
'studentsurname'
],
'birthdate'
=>
$applicationForm
[
0
][
'studentbirthdate'
],
'fatherfirstname'
=>
$applicationForm
[
0
][
'fatherfirstname'
],
'motherfirstname'
=>
$applicationForm
[
0
][
'motherfirstname'
],
'regionaddress'
=>
$applicationForm
[
0
][
'regionaddress'
],
'regionarea'
=>
$applicationForm
[
0
][
'regionarea'
],
'regiontk'
=>
$applicationForm
[
0
][
'regiontk'
],
'name'
=>
$applicationForm
[
0
][
'name'
],
'studentsurname'
=>
$applicationForm
[
0
][
'studentsurname'
],
'birthdate'
=>
$applicationForm
[
0
][
'studentbirthdate'
],
'fatherfirstname'
=>
$applicationForm
[
0
][
'fatherfirstname'
],
'motherfirstname'
=>
$applicationForm
[
0
][
'motherfirstname'
],
'regionaddress'
=>
$applicationForm
[
0
][
'regionaddress'
],
'regionarea'
=>
$applicationForm
[
0
][
'regionarea'
],
'regiontk'
=>
$applicationForm
[
0
][
'regiontk'
],
'certificatetype'
=>
$applicationForm
[
0
][
'certificatetype'
],
'graduation_year'
=>
$applicationForm
[
0
][
'graduation_year'
],
'graduation_year'
=>
$applicationForm
[
0
][
'graduation_year'
],
'lastschool_registrynumber'
=>
$applicationForm
[
0
][
'lastschool_registrynumber'
],
'lastschool_unittypeid'
=>
$applicationForm
[
0
][
'lastschool_unittypeid'
],
'lastschool_schoolname'
=>
$applicationForm
[
0
][
'lastschool_schoolname'
],
'lastschool_schoolyear'
=>
$applicationForm
[
0
][
'lastschool_schoolyear'
],
'lastschool_class'
=>
$applicationForm
[
0
][
'lastschool_class'
],
'currentclass'
=>
$applicationForm
[
0
][
'currentclass'
],
'currentclass'
=>
$applicationForm
[
0
][
'currentclass'
],
'guardian_name'
=>
$applicationForm
[
0
][
'cu_name'
],
'guardian_surname'
=>
$applicationForm
[
0
][
'cu_surname'
],
'guardian_fathername'
=>
$applicationForm
[
0
][
'cu_fathername'
],
'guardian_mothername'
=>
$applicationForm
[
0
][
'cu_mothername'
],
'agreement'
=>
$applicationForm
[
0
][
'disclaimer_checked'
],
'relationtostudent'
=>
$applicationForm
[
0
][
'relationtostudent'
],
'telnum'
=>
$applicationForm
[
0
][
'telnum'
]
'relationtostudent'
=>
$applicationForm
[
0
][
'relationtostudent'
],
'telnum'
=>
$applicationForm
[
0
][
'telnum'
]
);
if
((
$errorCode
=
$this
->
validateStudent
(
$student
))
>
0
)
{
return
$this
->
respondWithStatus
([
"error_code"
=>
$errorCode
],
Response
::
HTTP_OK
);
"error_code"
=>
$errorCode
],
Response
::
HTTP_OK
);
}
$lastSchoolRegistryNumber
=
$student
[
'lastschool_registrynumber'
];
$lastSchoolYear
=
(
int
)(
substr
(
$student
[
'lastschool_schoolyear'
],
-
4
));
if
((
int
)
date
(
"Y"
)
===
$lastSchoolYear
&&
(
int
)
$student
[
'lastschool_unittypeid'
]
===
5
)
{
$epalSchools
=
$this
->
entityTypeManager
->
getStorage
(
'eepal_school'
)
->
loadByProperties
(
array
(
'registry_no'
=>
$lastSchoolRegistryNumber
));
$epalSchool
=
reset
(
$epalSchools
);
$epalSchool
=
reset
(
$epalSchools
);
/* if (!$epalSchool){
return $this->respondWithStatus([
"error_code" => 4004
...
...
@@ -128,79 +150,166 @@ class ApplicationSubmit extends ControllerBase {
}
else
{
$student
[
'currentepal'
]
=
0
;
}
}
else
{
$student
[
'currentepal'
]
=
0
;
}
$entity_storage_student
=
$this
->
entityTypeManager
->
getStorage
(
'epal_student'
);
$entity_object
=
$entity_storage_student
->
create
(
$student
);
$entity_storage_student
->
save
(
$entity_object
);
$created_student_id
=
$entity_object
->
id
();
for
(
$i
=
0
;
$i
<
sizeof
(
$applicationForm
[
1
]);
$i
++
)
{
$epalchosen
=
array
(
'student_id'
=>
$created_student_id
,
'epal_id'
=>
$applicationForm
[
1
][
$i
][
'epal_id'
],
'choice_no'
=>
$applicationForm
[
1
][
$i
][
'choice_no'
]
);
$entity_storage_epalchosen
=
$this
->
entityTypeManager
->
getStorage
(
'epal_student_epal_chosen'
);
$entity_object
=
$entity_storage_epalchosen
->
create
(
$epalchosen
);
$entity_storage_epalchosen
->
save
(
$entity_object
);
}
if
(
$applicationForm
[
0
][
'currentclass'
]
===
"3"
||
$applicationForm
[
0
][
'currentclass'
]
===
"4"
)
{
$course
=
array
(
'student_id'
=>
$created_student_id
,
'coursefield_id'
=>
$applicationForm
[
3
][
'coursefield_id'
]
);
$entity_storage_course
=
$this
->
entityTypeManager
->
getStorage
(
'epal_student_course_field'
);
$entity_object
=
$entity_storage_course
->
create
(
$course
);
$entity_storage_course
->
save
(
$entity_object
);
}
else
if
(
$applicationForm
[
0
][
'currentclass'
]
===
"2"
)
{
$sector
=
array
(
'student_id'
=>
$created_student_id
,
'sectorfield_id'
=>
$applicationForm
[
3
][
'sectorfield_id'
]
);
$entity_storage_sector
=
$this
->
entityTypeManager
->
getStorage
(
'epal_student_sector_field'
);
$entity_object
=
$entity_storage_sector
->
create
(
$sector
);
$entity_storage_sector
->
save
(
$entity_object
);
}
return
$this
->
respondWithStatus
([
"error_code"
=>
0
],
Response
::
HTTP_OK
);
}
catch
(
\
Exception
$e
)
{
print_r
(
$e
->
getMessage
());
$this
->
logger
->
warning
(
$e
->
getMessage
());
$transaction
->
rollback
();
return
$this
->
respondWithStatus
([
"error_code"
=>
5001
],
Response
::
HTTP_INTERNAL_SERVER_ERROR
);
}
}
private
function
respondWithStatus
(
$arr
,
$s
)
{
$res
=
new
JsonResponse
(
$arr
);
$res
->
setStatusCode
(
$s
);
return
$res
;
}
private
function
validateStudent
(
$student
)
{
if
(
!
$student
[
"agreement"
])
{
return
1001
;
}
if
(
!
$student
[
"lastschool_schoolyear"
]
||
strlen
(
$student
[
"lastschool_schoolyear"
])
!==
9
)
{
return
1002
;
}
return
0
;
}
$entity_storage_student
=
$this
->
entityTypeManager
->
getStorage
(
'epal_student'
);
$entity_object
=
$entity_storage_student
->
create
(
$student
);
$entity_storage_student
->
save
(
$entity_object
);
$created_student_id
=
$entity_object
->
id
();
for
(
$i
=
0
;
$i
<
sizeof
(
$applicationForm
[
1
]);
$i
++
)
{
$epalchosen
=
array
(
'student_id'
=>
$created_student_id
,
'epal_id'
=>
$applicationForm
[
1
][
$i
][
'epal_id'
],
'choice_no'
=>
$applicationForm
[
1
][
$i
][
'choice_no'
]
);
$entity_storage_epalchosen
=
$this
->
entityTypeManager
->
getStorage
(
'epal_student_epal_chosen'
);
$entity_object
=
$entity_storage_epalchosen
->
create
(
$epalchosen
);
$entity_storage_epalchosen
->
save
(
$entity_object
);
}
if
(
$applicationForm
[
0
][
'currentclass'
]
===
"3"
||
$applicationForm
[
0
][
'currentclass'
]
===
"4"
)
{
$course
=
array
(
'student_id'
=>
$created_student_id
,
'coursefield_id'
=>
$applicationForm
[
3
][
'coursefield_id'
]
);
$entity_storage_course
=
$this
->
entityTypeManager
->
getStorage
(
'epal_student_course_field'
);
$entity_object
=
$entity_storage_course
->
create
(
$course
);
$entity_storage_course
->
save
(
$entity_object
);
}
elseif
(
$applicationForm
[
0
][
'currentclass'
]
===
"2"
)
{
$sector
=
array
(
'student_id'
=>
$created_student_id
,
'sectorfield_id'
=>
$applicationForm
[
3
][
'sectorfield_id'
]
);
$entity_storage_sector
=
$this
->
entityTypeManager
->
getStorage
(
'epal_student_sector_field'
);
$entity_object
=
$entity_storage_sector
->
create
(
$sector
);
$entity_storage_sector
->
save
(
$entity_object
);
}
return
$this
->
respondWithStatus
([
"error_code"
=>
0
],
Response
::
HTTP_OK
);
}
catch
(
\
Exception
$e
)
{
$this
->
logger
->
warning
(
$e
->
getMessage
());
$transaction
->
rollback
();
return
$this
->
respondWithStatus
([
"error_code"
=>
5001
],
Response
::
HTTP_INTERNAL_SERVER_ERROR
);
}
}
private
function
respondWithStatus
(
$arr
,
$s
)
{
$res
=
new
JsonResponse
(
$arr
);
$res
->
setStatusCode
(
$s
);
return
$res
;
}
/**
*
* @return int error code ελέγχου; 0 εάν ο έλεγχος επιτύχει, μη μηδενικό εάν αποτύχει:
* 1001 δεν επιλέχθηκε το πλαίσιο συμφωνης γνώμης
* 1002 λανθασμένο τελευταίο έτος φοίτησης
* 1003 λανθασμένη ημερομηνία
* 8000 μη αναμενόμενο λάθος
* 8001 δικτυακό λάθος κλήσης υπηρεσίας επιβεβαίωσης στοιχείων
* 8002 τα στοιχεία φοίτησης δεν επικυρώθηκαν
* 8003 τα στοιχεία φοίτησης δεν είναι έγκυρα
*/
private
function
validateStudent
(
$student
)
{
if
(
!
$student
[
"agreement"
])
{
return
1001
;
}
if
(
!
$student
[
"lastschool_schoolyear"
]
||
strlen
(
$student
[
"lastschool_schoolyear"
])
!==
9
)
{
return
1002
;
}
// date in YYY-MM-DD, out d-m-Y
$date_parts
=
explode
(
'-'
,
$student
[
'birthdate'
],
3
);
if
((
count
(
$date_parts
)
!==
3
)
||
(
checkdate
(
$date_parts
[
1
],
$date_parts
[
2
],
$date_parts
[
0
])
!==
true
))
{
return
1003
;
}
$birthdate
=
"
{
$date_parts
[
2
]
}
-
{
$date_parts
[
1
]
}
-
{
$date_parts
[
0
]
}
"
;
// check as per specs:
// - can't check certification prior to 2014, pass through
// - check certification if last passed class is gym
// - check promotion if last passed class is not gym
$check_certification
=
true
;
$check_promotion
=
true
;
if
(
intval
(
$student
[
'lastschool_unittypeid'
])
==
self
::
UNIT_TYPE_GYM
)
{
$check_promotion
=
false
;
$check_certification
=
true
;
}
if
(
intval
(
$student
[
'graduation_year'
])
<
2014
&&
intval
(
$student
[
'certificatetype'
])
==
self
::
CERT_GYM
)
{
$check_certification
=
false
;
}
// now check service
$pass
=
true
;
$error_code
=
0
;
if
((
$check_certification
===
true
)
||
(
$check_promotion
===
true
))
{
if
(
$check_promotion
===
true
)
{
$service
=
'getStudentEpalPromotion'
;
}
else
{
$service
=
'getStudentEpalCertification'
;
}
try
{
$didactic_year_id
=
$this
->
client
->
getDidacticYear
(
substr
(
$student
[
"lastschool_schoolyear"
],
-
4
,
4
));
$level_name
=
$this
->
client
->
getLevelName
(
$student
[
'lastschool_class'
]);
$service_rv
=
$this
->
client
->
$service
(
$didactic_year_id
,
$student
[
'studentsurname'
],
$student
[
'name'
],
$student
[
'fatherfirstname'
],
$student
[
'motherfirstname'
],
$birthdate
,
$student
[
'lastschool_registrynumber'
],
$level_name
);
$pass
=
(
$service_rv
===
true
);
if
(
$service_rv
===
true
)
{
$error_code
=
0
;
}
elseif
(
$service_rv
===
false
)
{
$error_code
=
8002
;
}
elseif
(
$service_rv
===
null
)
{
$error_code
=
8003
;
}
else
{
// -1 is an exception and data is already validated
$error_code
=
8001
;
}
}
catch
(
\
Exception
$e
)
{
$pass
=
false
;
$error_code
=
8000
;
}
}