application."')
AND u.login = '".$user->login."' AND u.pass_print = '".$user->password."'";
$results = SQLServerManager::queryOnDatabase( $query );
if( count($results) != 1 )
Throw new Exception("E003");
foreach( $results as $value )
{
if ($value->last_connection == NULL)
Throw new Exception("E005");
$queryPerson = "SELECT * FROM [evolucare].[dbo].[t_person] WHERE id = '". $value->fk_person ."'";
$resultsPerson = SQLServerManager::queryOnDatabase( $queryPerson );
$personVo = new PersonVo();
foreach( $resultsPerson as $valuePerson )
{
$personVo->id = $valuePerson->id;
$personVo->uid = trim( $valuePerson->uid );
$personVo->firstName = trim( $valuePerson->first_name );
$personVo->lastName = trim( $valuePerson->last_name );
$personVo->creation = $valuePerson->creation->format('Y-m-d');
$personVo->phone = trim( $valuePerson->phone );
$personVo->fax = trim( $valuePerson->fax );
$personVo->activity = trim( $valuePerson->activity );
$personVo->cellular = trim( $valuePerson->cellular );
$personVo->mail = trim( $valuePerson->mail );
$personVo->organization = $valuePerson->fk_organization;
}
$userVo = new UserVo();
$userVo->login = trim( $value->login );
$userVo->person = $personVo;
$userVo->id = $value->id;
$userVo->uid = $value->uid;
$userVo->help = ($value->help == 1)? true : false;
$userVo->cptCredits = $value->nbCredits;
$userVo->cptMesures = $value->nbMesures;
$query = "SELECT * FROM [evolucare].[dbo].[t_organization] WHERE id = '". $valuePerson->fk_organization ."'";
$resultsOrganization = SQLServerManager::queryOnDatabase( $query );
$hospitalVo = new HospitalVo();
foreach( $resultsOrganization as $valueOrganization )
{
$hospitalVo->id = $valueOrganization->id;
$hospitalVo->name = trim($valueOrganization->name);
$hospitalVo->addressInvoicing = trim($valueOrganization->address_invoicing);
$hospitalVo->addressShipping = trim($valueOrganization->address_shipping);
$hospitalVo->city = trim($valueOrganization->city);
$hospitalVo->zipCode = trim($valueOrganization->zip_code);
$hospitalVo->phone = trim($valueOrganization->phone);
$hospitalVo->fax = trim($valueOrganization->fax);
$hospitalVo->county = trim($valueOrganization->county);
$hospitalVo->district = trim($valueOrganization->district);
$hospitalVo->country = $valueOrganization->fk_country;
$userVo->hospital = $hospitalVo;
}
$queryLanguage = "SELECT label
FROM [evolucare].[dbo].[tr_language]
WHERE id = '". $value->fk_language ."'";
$resultLanguage = SQLServerManager::queryOnDatabase( $queryLanguage );
foreach( $resultLanguage as $valueLanguage )
{
$userVo->language = trim($valueLanguage->label);
}
$query = "SELECT fk_cgv
FROM [evolucare].[dbo].[tj_list_cgv]
WHERE fk_user = '". $userVo->id ."'";
$resultsConditions = SQLServerManager::queryOnDatabase( $query );
foreach( $resultsConditions as $valueConditions )
{
$userVo->conditions = $valueConditions->fk_cgv;
}
$query = "SELECT fk_ultra_sound_scanner
FROM [evolucare].[dbo].[tj_facilities]
WHERE fk_organization = '". $valuePerson->fk_organization ."'";
$resultsScanner = SQLServerManager::queryOnDatabase( $query );
if( count($resultsScanner) > 0 )
{
foreach( $resultsScanner as $valueScanner )
{
$query = "SELECT u.id as scanner_id, u.name, u.brand, u.type, u.age, p.id as probe_id, p.frequency
FROM [intimamedia_physician].[dbo].[tj_list_probe] as l
INNER JOIN [intimamedia_physician].[dbo].[t_ultra_sound_scanner] as u ON u.id = l.fk_ultra_sound_scanner
INNER JOIN [intimamedia_physician].[dbo].[t_probe] as p ON p.id = l.fk_probe
WHERE l.fk_ultra_sound_scanner = '".$valueScanner->fk_ultra_sound_scanner."'";
$r = SQLServerManager::queryOnDatabase( $query );
$ultraSoundScannerVo = new UltraSoundScannerVo();
$probeVo = new ProbeVo();
foreach ( $r as $v )
{
$ultraSoundScannerVo->id = $v->scanner_id;
$ultraSoundScannerVo->name = trim($v->name);
$ultraSoundScannerVo->brand = trim($v->brand);
$ultraSoundScannerVo->type = trim($v->type);
$ultraSoundScannerVo->age = $v->age;
$probeVo->id = $v->probe_id;
$probeVo->frequency = $v->frequency;
$userVo->ultraSoundScanner = $ultraSoundScannerVo;
$userVo->probe = $probeVo;
}
}
}
}
$returnObjectVo = new ReturnObjectVo();
$returnObjectVo->token = SecurityManager::getToken();
$returnObjectVo->value = $userVo;
return $returnObjectVo;
}
public function forgetPassword(UserVo $user, $application)
{
// search user
$query = "SELECT u.login, u.answer_one, u.answer_two, u.buyer, u.fk_question_one, u.fk_question_two
FROM [evolucare].[dbo].[tj_user] as u
INNER JOIN [evolucare].[dbo].[tj_registration] as r ON u.id = r.fk_user
INNER JOIN [evolucare].[dbo].[tr_application] as a ON r.fk_application = (SELECT id FROM [evolucare].[dbo].[tr_application] WHERE code = '".$application."')
AND u.login = '".$user->login."'";
$results = SQLServerManager::queryOnDatabase( $query );
if( count($results) != 1 )
{
Throw new Exception("E003");
}
$userVo = new UserVo();
foreach( $results as $value )
{
$userVo->login = trim( $value->login );
$userVo->buyer = trim( $value->buyer );
$userVo->questionOne = trim( $value->fk_question_one );
$userVo->questionTwo = trim( $value->fk_question_two );
$userVo->answerOne = trim( $value->answer_one );
$userVo->answerTwo = trim( $value->answer_two );
}
return $userVo;
}
public function post(MessageVo $messageVo)
{
$subject = "[" . utf8_decode($messageVo->organization) . "]". " Demande de contact de " . utf8_decode($messageVo->lastname) . " " . utf8_decode($messageVo->firstname);
$body = "Bonjour,
Vous venez de recevoir une demande via le formulaire de contact.
".
"Prénom : ". utf8_decode($messageVo->firstname) ."
".
"Nom : ". utf8_decode($messageVo->lastname) ."
".
($messageVo->phone ? "Téléphone : ". $messageVo->phone ."
" : "").
"Mail : ". $messageVo->mail ."
".
"Organisation : ". utf8_decode($messageVo->organization) ."
".
"Message :
\"". utf8_decode(nl2br($messageVo->message)) ."\"
IIMT Support.".
"";
$sguser = 'support@iimt.fr';
$sgpass = 'Marignan;/8';
$sendgrid = new SendGrid($sguser, $sgpass);
$email = new SendGrid\Email();
$email
->addTo('support@intimamedia.com')
->setFrom('support@iimt.fr')
->setSubject($subject)
->setText($subject)
->setHtml($body)
;
try {
$sendgrid->send($email);
} catch(\SendGrid\Exception $e) {
Throw new Exception("E002");
// echo $e->getCode();
// foreach($e->getErrors() as $er) {
// echo $er;
// }
}
/*
if( !PhpMail::sendMail("support@intimamedia.com", $subject, $body) )
{
Throw new Exception("E002");
}
*/
}
public function exportData(UserVo $userVo)
{
$subject = "Demande d'export de données";
$body = "Bonjour,
Vous venez de recevoir une demande d'export de données de l'utilisateur d'id " . $userVo->id . "
IIMT Support.";
$sguser = 'support@iimt.fr';
$sgpass = 'Marignan;/8';
$sendgrid = new SendGrid($sguser, $sgpass);
$email = new SendGrid\Email();
$email
->addTo('support@intimamedia.com')
->setFrom('support@iimt.fr')
->setSubject($subject)
->setText($subject)
->setHtml($body)
;
try {
$sendgrid->send($email);
} catch(\SendGrid\Exception $e) {
Throw new Exception("E002");
// echo $e->getCode();
// foreach($e->getErrors() as $er) {
// echo $er;
// }
}
/* if( !PhpMail::sendMail("support@intimamedia.com", $subject, $body) )
{
Throw new Exception("E002");
}
*/
}
public function validateAccount($userEncrypted, $passwordEncrypted)
{
if (!$userEncrypted || !$passwordEncrypted)
{
Throw new Exception("E006");
}
$key = "3HFdkfjdz*$)kn;!fdD1nsf~2@KL-{{";
$userId = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode(rawurldecode($userEncrypted)), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
$password = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode(rawurldecode($passwordEncrypted)), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
/*$ff=fopen("tmp.jd", "a+");
fprintf($ff, "activation, user=%s, password=%s\n", $user, $password);
fclose($ff);*/
$query = "SELECT id, last_connection FROM [evolucare].[dbo].[tj_user] WHERE id = '".$userId."' AND pass_print = '". $password ."';";
$result = SQLServerManager::queryOnDatabase( $query );
$idFound = 0;
foreach( $result as $value )
{
$idFound = $value->id;
$lastConnection = $value->last_connection;
}
if (!$idFound)
{
Throw new Exception("E006");
}
if ($lastConnection)
{
Throw new Exception("E025");
}
$now = date( "Y-m-d H:i:s" );
$query = "UPDATE [evolucare].[dbo].[tj_user] SET last_connection = '". $now ."' WHERE id = '" . $userId . "'";
$transaction = SQLServerManager::startTransaction();
$executeQuery = SQLServerManager::executeQueryForTransaction( $query, $transaction );
SQLServerManager::commitTransaction( $transaction );
// last, create example patient file, for testing purpose
$this->createIntimamediaExample($userId, EXAMPLE_PATIENT_FILE_UID_1, EXAMPLE_PATIENT_FILE_ORGANIZATION_1);
//$this->createIntimamediaExample($userId, EXAMPLE_PATIENT_FILE_UID_2, EXAMPLE_PATIENT_FILE_ORGANIZATION_2);
$returnObjectVo = new ReturnObjectVo();
$returnObjectVo->token = SecurityManager::getToken();
$returnObjectVo->value = $userId;
/*$ff=fopen("d:/tmp.jd", "a+");
fprintf($ff, "validateAccount, userId=%d\n", $userId);
fclose($ff);*/
return $returnObjectVo;
}
public function register(UserVo $userVo, $lang)
{
error_log("UserService->register");
$hospitalVo = $userVo->hospital;
$personVo = $userVo->person;
$ultraSoundScannerVo = $userVo->ultraSoundScanner;
$probeVo = $ultraSoundScannerVo->probes[0];
$userExist = "SELECT login FROM [evolucare].[dbo].[tj_user] WHERE login = '". $userVo->login ."'";
$userExistResult = SQLServerManager::queryOnDatabase( $userExist );
if ($userExistResult)
{
error_log("UserService->register User already exists.");
Throw new Exception("E004");
}
$query = "SELECT id FROM [evolucare].[dbo].[tr_application] WHERE code = '". $userVo->application ."'";
$results = SQLServerManager::queryOnDatabase( $query );
foreach( $results as $value )
{
$application = $value->id;
}
//D�but de la transaction
//A chaque �tape une requ�te est pr�par�e, elle est execut�e puis si besoin l'id de l'insertion est r�cup�r�.
$transaction = SQLServerManager::startTransaction();
//Insertion de l'echographe (�tape 1)
$ultraSoundScanner = "INSERT INTO [intimamedia_physician].[dbo].[t_ultra_sound_scanner] (name, brand, type, age) VALUES ".
"('".SQLServerManager::convertStringToSQLServer( $ultraSoundScannerVo->name )."', '".SQLServerManager::convertStringToSQLServer( $ultraSoundScannerVo->brand )."', '".SQLServerManager::convertStringToSQLServer( $ultraSoundScannerVo->type )."', '01-01-".$ultraSoundScannerVo->age."')";
$validUltraSoundScanner = SQLServerManager::executeQueryForTransaction( $ultraSoundScanner, $transaction );
$idUltraSoundScanner = SQLServerManager::getLastId( "[intimamedia_physician].[dbo].[t_ultra_sound_scanner]", $transaction );
// Organization insertion (step 2)
$organization = "INSERT INTO [evolucare].[dbo].[t_organization] (name, creation, address_invoicing, address_shipping, city, zip_code, phone, fax, state, county, disctrict, fk_country) VALUES ".
"('".SQLServerManager::convertStringToSQLServer( $hospitalVo->name )."', '".date( "Y-m-d", $hospitalVo->creation/1000 )."', '".SQLServerManager::convertStringToSQLServer( $hospitalVo->addressInvoicing )."', '".SQLServerManager::convertStringToSQLServer( $hospitalVo->addressShipping )."', '".SQLServerManager::convertStringToSQLServer( $hospitalVo->city )."', ".
"'".$hospitalVo->zipCode."', '".$hospitalVo->phone."', '".$hospitalVo->fax."', '".SQLServerManager::convertStringToSQLServer( $hospitalVo->state )."', '".SQLServerManager::convertStringToSQLServer( $hospitalVo->county )."', '".SQLServerManager::convertStringToSQLServer( $hospitalVo->district )."', '".
$hospitalVo->country ."')";
error_log($organization);
$validOrganization = SQLServerManager::executeQueryForTransaction( $organization, $transaction );
$idOrganization = SQLServerManager::getLastId( "[evolucare].[dbo].[t_organization]", $transaction );
// Probe insertion (step 3)
$probe = "INSERT INTO [intimamedia_physician].[dbo].[t_probe] (frequency) VALUES (".$probeVo->frequency.")";
$validProbe = SQLServerManager::executeQueryForTransaction( $probe, $transaction );
$idProbe = SQLServerManager::getLastId( "[intimamedia_physician].[dbo].[t_probe]", $transaction );
// Probe and scanner association insertion (step 4)
$joinListProbe = "INSERT INTO [intimamedia_physician].[dbo].[tj_list_probe] (fk_ultra_sound_scanner, fk_probe) VALUES (".$idUltraSoundScanner.", ".$idProbe.")";
$validJoinListProbe = SQLServerManager::executeQueryForTransaction( $joinListProbe, $transaction );
// Probe and organization association insertion (step 5)
$joinListFacilities = "INSERT INTO [evolucare].[dbo].[tj_facilities] (date, fk_organization, fk_ultra_sound_scanner) VALUES ('".date( "Y-m-d" )."', ".$idOrganization.", ".$idUltraSoundScanner.")";
$validJoinListFacilities = SQLServerManager::executeQueryForTransaction( $joinListFacilities, $transaction );
// Person insertion (step 6)
$person = "INSERT INTO [evolucare].[dbo].[t_person] (uid, first_name, last_name, creation, phone, fax, activity, cellular, mail, fk_organization)".
"VALUES ('".$personVo->uid."', '".SQLServerManager::convertStringToSQLServer( $personVo->firstName )."', '".SQLServerManager::convertStringToSQLServer( $personVo->lastName )."', '".date( "Y-m-d", $personVo->creation/1000 )."',".
"'".$personVo->phone."', '".$personVo->fax."', '".SQLServerManager::convertStringToSQLServer( $personVo->activity )."', '".$personVo->cellular."', '".$personVo->mail."',".
"".$idOrganization.")";
$validPerson = SQLServerManager::executeQueryForTransaction( $person, $transaction );
$personId = SQLServerManager::getLastId( "[evolucare].[dbo].[t_person]", $transaction );
//Etape interm�diaire pour l'insertion de l'utilisateur
$queryLanguage = "SELECT fk_language FROM [evolucare].[dbo].[tr_country] WHERE alpha2 = '".$lang."'";
$result = SQLServerManager::queryOnDatabase( $queryLanguage );
$languageId = 1;
foreach( $result as $value )
{
$languageId = $value->fk_language;
}
// User insertion (step 7)
$user = "INSERT INTO [evolucare].[dbo].[tj_user] (login, pass_print, answer_one, answer_two, help, last_connection, buyer, fk_person, fk_question_one, fk_question_two, fk_preference, fk_language, nbCredits, nbMesures)".
"VALUES ('".$userVo->login."', '".$userVo->password."', '".$userVo->answerOne."', '".$userVo->answerTwo."', ".$userVo->help.", NULL,".
"'".$userVo->buyer."', ".$personId.", '".$userVo->questionOne."', '".$userVo->questionTwo."', NULL , '".$languageId."',30, 0)";
$validUser = SQLServerManager::executeQueryForTransaction( $user, $transaction );
$userId = SQLServerManager::getLastId( "[evolucare].[dbo].[tj_user]", $transaction );
// User and application association insertion (step 8)
$registration = "INSERT INTO [evolucare].[dbo].[tj_registration] (fk_user, fk_application)".
"VALUES (".$userId.", ".$application.")";
$validRegistration = SQLServerManager::executeQueryForTransaction( $registration, $transaction );
// User and sales conditions association insertion (step 9)
$termsId = $userVo->conditions;
$terms = "INSERT INTO [evolucare].[dbo].[tj_list_cgv] (date, fk_user, fk_cgv)".
"VALUES (". date( "Y-m-d" ) . ", ".$userId.", ".$termsId.")";
$validTerms = SQLServerManager::executeQueryForTransaction( $terms, $transaction );
if( $validUltraSoundScanner && $validOrganization && $validProbe && $validJoinListProbe && $validJoinListFacilities && $validPerson && $validUser && $validRegistration && $validTerms)
{
SQLServerManager::commitTransaction( $transaction );
$subject = "Demande d'inscription IntimaMedia.com (Praticiens)";
$body = "Bonjour,
L'utilisateur ". $personVo->firstName ." ". $personVo->lastName ." a fait une demande d'inscription.
".
"Voici ses coordonnées :
".
"Prénom : ". $personVo->firstName ."
".
"Nom : ". $personVo->lastName ."
".
"Mail : ". $userVo->login ."
".
"Téléphone : ". $personVo->phone ."
".
"Fax : ". $personVo->fax ."
".
"";
$sguser = 'support@iimt.fr';
$sgpass = 'Marignan;/8';
$sendgrid = new SendGrid($sguser, $sgpass);
$email = new SendGrid\Email();
$email
->addTo('support@intimamedia.com')
->setFrom('support@iimt.fr')
->setSubject($subject)
->setText($subject)
->setHtml($body)
;
try {
$sendgrid->send($email);
} catch(\SendGrid\Exception $e) {
error_log("UserService->register Can't send email.");
Throw new Exception("E002");
// echo $e->getCode();
// foreach($e->getErrors() as $er) {
// echo $er;
// }
}
/* if( !PhpMail::sendMail( "support@intimamedia.com", $subject, $body) )
{
Throw new Exception("E002");
}
*/
// send user confirmation
$key = "3HFdkfjdz*$)kn;!fdD1nsf~2@KL-{{";
$userIdEncrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $userId, MCRYPT_MODE_CBC, md5(md5($key))));
$pwdEncrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $userVo->password, MCRYPT_MODE_CBC, md5(md5($key))));
if ($lang == 'FR')
{
$subject = "Votre demande d'inscription sur M'AthCloud";
$body = "