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; } // Nouvel utilisateur $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; } // Choix de la langue $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); } // Conditions générales de vente $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; } // Questions matériel échographique $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; } // Mot de passe oublié 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)". "VALUES ('".$userVo->login."', '".$userVo->password."', '".$userVo->answerOne."', '".$userVo->answerTwo."', ".$userVo->help.", NULL,". "'".$userVo->buyer."', ".$personId.", '".$userVo->questionOne."', '".$userVo->questionTwo."', NULL , '".$languageId."')"; $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';/*'support²ipsocloud.com'*/ $sgpass = 'Marignan;/8';/*imtdev75015'*/ $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 = Confirmation par Email de l'inscription $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 = "Bonjour,

Vous avez fait une demande d'inscription sur M'AthCloud.
". "Afin de terminer la validation de votre compte, merci de cliquer sur le lien d'activation ci-dessous:

". "Activer votre compte M'AthCloud

". "Ou vous pouvez copier/coller ce lien directement dans votre navigateur.

". "Cordialement.

IMT Support"; } else if ($lang == 'ES') { $subject = "Su aplicación en M'AthCloud"; $body = "Hola,

Usted ha hecho una solicitud de registro en M'AthCloud.
". "Para completar la validación de su cuenta, gracias clic en el enlace de activación a continuación:

". "Recibe en tu cuenta de M'AthCloud

". "O usted puede copiar / pegar este enlace en su navegador.

". "Cordialmente.

IMT Soporte"; } else if ($lang == 'IT') { $subject = "L'applicazione su M'AthCloud"; $body = "Ciao,

Hai fatto una domanda di registrazione su M'AthCloud.
". "Per completare la convalida del tuo account, grazie clicca sul link di attivazione qui sotto:

". "Attiva il tuo account M'AthCloud

". "In alternativa, è possibile copiare / incollare questo link direttamente nel browser.

". "Cordialmente.

Assistenza di IMT"; } else if ($lang == 'PT') { $subject = "Sua aplicação no M'AthCloud"; $body = "Olá,

Você fez um pedido de registo de M'AthCloud.
". "Para completar a validação de sua conta, agradecer você clicar no link de ativação abaixo:

". "Ative sua conta M'AthCloud

". "Ou você pode copiar / colar este link diretamente em seu navegador.

". "Cordialmente.

Suporte do IMT"; } else if ($lang == 'DE') { $subject = "Uw aanvraag op M'AthCloud"; $body = "Hallo,

U heeft een aanvraag tot inschrijving op M'AthCloud.
". "Om de validatie van uw account te voltooien, dank u klikt op de activatie link te klikken:

". "Activeer je account M'AthCloud

". "Of u kunt kopiëren / plakken deze link rechtstreeks in uw browser.

". "Hartelijk.

Ondersteuning IMT"; } else { $subject = "Account Activation For M'AthCloud"; $body = "Welcome to M'AthCloud.

We have received and processed your registration request.
". "To activate your account, please click the link below:

". "Activate your M'Ath Cloud account

". "Or you can copy and paste this link directly into your browser.

". "Best regards,

IMT Support"; } $sguser = 'support@iimt.fr';/*'support@ipsocloud.com'*/ $sgpass = 'Marignan;/8';/*'imtdev75015'*/ $sendgrid = new SendGrid($sguser, $sgpass); $email = new SendGrid\Email(); $email ->addTo($userVo->login) ->setFrom('support@iimt.fr') // ou support@intimamedia.fr ->setSubject($subject) ->setText($subject) ->setHtml($body) ; try { $sendgrid->send($email); } catch(\SendGrid\Exception $e) { error_log("UserService->register Can't send email2."); Throw new Exception("E002"); // echo $e->getCode(); // foreach($e->getErrors() as $er) { // echo $er; // } } /* if( !PhpMail::sendMail($userVo->login, $subject, $body) ) { Throw new Exception("E002"); } */ } else { SQLServerManager::rollBackTransaction( $transaction ); if(!$validUltraSoundScanner) error_log("UserService->register Invalid ultrasound scanner informations."); if(!$validOrganization) error_log("UserService->register Invalid organization informations."); if(!$validProbe) error_log("UserService->register Invalid probe informations."); if(!$validJoinListProbe) error_log("UserService->register Invalid list probe informations."); if(!$validJoinListFacilities) error_log("UserService->register Invalid list facilities informations."); if(!$validPerson) error_log("UserService->register Invalid person informations."); if(!$validUser) error_log("UserService->register Invalid user informations."); if(!$validRegistration) error_log("UserService->register Invalid registration informations."); if(!$validTerms) error_log("UserService->register Invalid terms informations."); Throw new Exception("E001"); } $returnObjectVo = new ReturnObjectVo(); $returnObjectVo->token = SecurityManager::getToken(); $returnObjectVo->value = $userId; return $returnObjectVo; } public function userHelp($userId, $help) { if ($help == true) $help = 1; else $help = 0; $query = "UPDATE [evolucare].[dbo].[tj_user] set help='". $help ."'". " WHERE id = '".$userId."'"; SQLServerManager::queryOnDatabase( $query ); $returnObjectVo = new ReturnObjectVo(); $returnObjectVo->token = SecurityManager::getToken(); $returnObjectVo->value = $userId; return $returnObjectVo; } public function updateUser(UserVo $userVo) { $hospitalVo = $userVo->hospital; $personVo = $userVo->person; $ultraSoundScannerVo = $userVo->ultraSoundScanner; $probeVo = $ultraSoundScannerVo->probes[0]; $transaction = SQLServerManager::startTransaction(); $organizationQuery = "UPDATE [evolucare].[dbo].[t_organization] SET name = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->name) ). "', address_invoicing = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->addressInvoicing) ). "', address_shipping = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->addressShipping) ). "', city = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->city) )."', zip_code = '".trim($hospitalVo->zipCode). "', phone = '".trim($hospitalVo->phone)."', fax = '".trim($hospitalVo->fax). "', state = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->state) ). "', county = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->county) ). "', disctrict = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->district) )."', fk_country = '".$hospitalVo->country. "' WHERE id = '".$hospitalVo->id."'"; /*$ff=fopen("d:/tmp.jd", "a+"); fprintf($ff, "organizationQuery=%s\n", $organizationQuery); fclose($ff);*/ $validOrganization = SQLServerManager::executeQueryForTransaction( $organizationQuery, $transaction ); $personQuery = "UPDATE [evolucare].[dbo].[t_person] SET first_name = '".SQLServerManager::convertStringToSQLServer( trim($personVo->firstName) ). "', last_name = '".SQLServerManager::convertStringToSQLServer( trim($personVo->lastName) ). "', activity = '".SQLServerManager::convertStringToSQLServer( trim($personVo->activity) ). "', phone = '".SQLServerManager::convertStringToSQLServer( trim($personVo->phone) ). "', fax = '".SQLServerManager::convertStringToSQLServer( trim($personVo->fax) ). "' WHERE id = '" .$personVo->id. "'"; /*$ff=fopen("d:/tmp.jd", "a+"); fprintf($ff, "personQuery=%s\n", $personQuery); fclose($ff);*/ $validPerson = SQLServerManager::executeQueryForTransaction( $personQuery, $transaction ); $ultraSoundScannerQuery = "UPDATE [intimamedia_physician].[dbo].[t_ultra_sound_scanner] SET name = '".SQLServerManager::convertStringToSQLServer( trim($ultraSoundScannerVo->name) ). "', brand = '".SQLServerManager::convertStringToSQLServer( trim($ultraSoundScannerVo->brand) ). "', type = '".SQLServerManager::convertStringToSQLServer( trim($ultraSoundScannerVo->type) )."', age = '".$ultraSoundScannerVo->age. "' WHERE id = '" .$ultraSoundScannerVo->id. "'"; /*$ff=fopen("d:/tmp.jd", "a+"); fprintf($ff, "ultraSoundScannerQuery=%s\n", $ultraSoundScannerQuery); fclose($ff);*/ $validUltraSoundScanner = SQLServerManager::executeQueryForTransaction( $ultraSoundScannerQuery, $transaction ); $probeQuery = "UPDATE [intimamedia_physician].[dbo].[t_probe] SET frequency = '".$probeVo->frequency."' WHERE id = '".$probeVo->id."'"; /*$ff=fopen("d:/tmp.jd", "a+"); fprintf($ff, "validUltraSoundScanner=%s\n", $probeQuery); fclose($ff);*/ $validProbe = SQLServerManager::executeQueryForTransaction( $probeQuery, $transaction ); if( $validUltraSoundScanner && $validOrganization && $validProbe && $validPerson ) { SQLServerManager::commitTransaction( $transaction ); } else { SQLServerManager::rollBackTransaction( $transaction ); Throw new Exception("E001"); } $returnObjectVo = new ReturnObjectVo(); $returnObjectVo->token = SecurityManager::getToken(); $returnObjectVo->value = $userVo->id; return $returnObjectVo; } public function findCitiesByZipCode($zipCode, $country) { $table = "evolucare.dbo.tr_zip_code_" . strtolower( $country ); $query = "SELECT DISTINCT city FROM ". $table ." WHERE zip_code = '". $zipCode ."'"; $results = SQLServerManager::queryOnDatabase( $query ); $resultArray = array(); foreach( $results as $value ) { $city = trim( $value->city ); $city = ucfirst( strtolower( $value->city ) ); array_push( $resultArray, $city ); } return $resultArray; } public function findZipCodesByCity($city, $country) { $table = "evolucare.dbo.tr_zip_code_" . strtolower( $country ); $query = "SELECT DISTINCT zip_code FROM ". $table ." WHERE city LIKE '". $city ."%'"; $results = SQLServerManager::queryOnDatabase( $query ); $resultArray = array(); foreach( $results as $value ) { array_push( $resultArray, $value->zip_code ); } return $resultArray; } public function termsAndConditions($countryCode) { /*$query = "SELECT id, url FROM [evolucare].[dbo].[tr_cgv] ". "WHERE fk_country = '". $countryCode . "' " . "AND fk_application in (SELECT id FROM [evolucare].[dbo].[tr_application] WHERE code = '" . INTIMAMEDIA_APPLICATION . "')";*/ $query = "SELECT id, url FROM [evolucare].[dbo].[tr_cgv] ". "WHERE fk_country = 'FR' " . "AND fk_application in (SELECT id FROM [evolucare].[dbo].[tr_application] WHERE code = '" . INTIMAMEDIA_APPLICATION . "')"; $results = SQLServerManager::queryOnDatabase( $query ); $termsVo = new TermsVo(); foreach( $results as $value ) { $termsVo->id = $value->id; $termsVo->url = $value->url; } $returnObjectVo = new ReturnObjectVo(); $returnObjectVo->token = SecurityManager::getToken(); $returnObjectVo->value = $termsVo; return $returnObjectVo; } public function termsAndConditionsAgreed($userId) { $query = "SELECT c.id, c.url FROM [evolucare].[dbo].[tr_cgv] as c " ."INNER JOIN [evolucare].[dbo].[tj_list_cgv] as lc ON c.id = lc.fk_cgv " ."WHERE lc.fk_user = '". $userId . "'"; $results = SQLServerManager::queryOnDatabase( $query ); $termsVo = new TermsVo(); foreach( $results as $value ) { $termsVo->id = $value->id; $termsVo->url = $value->url; } $returnObjectVo = new ReturnObjectVo(); $returnObjectVo->token = SecurityManager::getToken(); $returnObjectVo->value = $termsVo; return $returnObjectVo; } public function createIntimamediaExample($userId, $patientUid, $organizationId) { $token = time() + 1000; // get personId $query = "SELECT fk_person FROM [evolucare].[dbo].[tj_user] WHERE id = '". $userId ."'"; $results = SQLServerManager::queryOnDatabase( $query ); foreach( $results as $value ) $personId = $value->fk_person; // get patient $returnObjectVo = new ReturnObjectVo(); $returnObjectVo = PatientService::searchPatient('', $organizationId, $token); $patientVo = new PatientVo(); foreach( $returnObjectVo->value as $value ) { if (strcmp($value->uid, $patientUid)) continue; $patientVo->firstName = $value->firstName; $patientVo->lastName = $value->lastName; $patientVo->sex = $value->sex; $patientVo->uid = $value->uid; $patientVo->birthCountry = $value->birthCountry; $patientVo->ethnicGroup = $value->ethnicGroup; $patientVo->creation = $value->creation; $patientVo->birthDate = $value->birthDate; $patientVo->lastVisit = $value->lastVisit; break; } // createPatient $patientId = $this->createExamplePatient($patientVo, $personId); // getAppointments $returnObjectVo = PatientService::searchAppointments($patientUid, $token); $appointmentVo = new AppointmentVo(); $nbAppointment = 1; /*$ff=fopen("d:/tmp.jd", "a+"); fprintf($ff, "createIntimamediaExample, nbappointment=%s\n", sizeof($returnObjectVo->value)); fclose($ff);*/ foreach( $returnObjectVo->value as $value ) { $getMeasures = true; $appointmentVo->number = $nbAppointment; $appointmentVo->patientId = $patientId; $appointmentVo->date = $value->date; $appointmentVo->weight = $value->weight; $appointmentVo->height = $value->height; $appointmentVo->livingCountry = $value->livingCountry; $srcAppointmentId = $value->id; // create appointment $appointmentVo->id = $this->createExampleAppointment($appointmentVo, $patientUid); $atsVo = new AtsVo(); $atsVo = $value->ats; $tobaccoVo = new TobaccoVo(); $tobaccoVo = $value->tobacco; $personalHistoryVo = new PersonalHistoryVo(); $personalHistoryVo = $value->personalHistory; $familyHistoryVo = new FamilyHistoryVo(); $familyHistoryVo = $value->familyHistory; $cvExaminatorVo = new CvExaminatorVo(); $cvExaminatorVo = $value->cvExaminator; $treatments = array(); $treatments = $value->treatments; if ($atsVo && $tobaccoVo) PatientService::addATSRiskToAnAppointment($atsVo, $tobaccoVo, $appointmentVo->id, $token); if ($personalHistoryVo) PatientService::addPersonalHistoryToAnAppointment($personalHistoryVo, $appointmentVo->id, $token); if ($familyHistoryVo) PatientService::addFamilyHistoryToAnAppointment($familyHistoryVo, $appointmentVo->id, $token); if ($cvExaminatorVo) PatientService::addCardiovascularExaminatorToAnAppointment($cvExaminatorVo, $appointmentVo->id, $token); if ($treatments) PatientService::addTreatmentsToAnAppointment($treatments, $appointmentVo->id, $token); // get markers $markerArray = AcquisitionService::getMarkers($srcAppointmentId); AcquisitionService::saveMarker($markerArray, $appointmentVo->id); // get images $imageArray = AcquisitionService::getImages($srcAppointmentId); $imageIdList = array(); foreach( $imageArray as $image ) array_push($imageIdList, $image->id); // get measures try { $measureArray = MeasureService::getMeasures($imageIdList); } catch (Exception $e) {$getMeasures = false;} $matchingId = array(); foreach( $imageArray as $image ) { $newImageId = $this->createExampleImage($image, $srcAppointmentId, $appointmentVo->id); $matchingId["$image->id"] = $newImageId; /*$ff=fopen("d:/tmp.jd", "a+"); fprintf($ff, "createIntimamediaExample, oldimageId = %d, newimageId=%d\n", $image->id, $newImageId); fclose($ff);*/ } if (!$getMeasures) { $nbAppointment++; continue; } $measuresToPersist = array(); foreach( $measureArray as $measure ) { $dragAndDropVo = new DragAndDropVo(); /*$ff=fopen("d:/tmp.jd", "a+"); fprintf($ff, "createIntimamediaExample, matching=%d %d\n", $matchingId["$measure->imageId"], $measure->imageId); fclose($ff);*/ $dragAndDropVo->id = $matchingId["$measure->imageId"]; $dragAndDropVo->scale = $measure->scale; $dragAndDropVo->distance = $measure->distance; $dragAndDropVo->area = $measure->area; $dragAndDropVo->area2 = $measure->area2; $dragAndDropVo->nwImtResult = $measure->nwImt; $dragAndDropVo->fwImtResult = $measure->fwImt; $dragAndDropVo->ultraSoundScanner = 0; array_push($measuresToPersist, $dragAndDropVo); } MeasureService::saveMeasures($measuresToPersist, $token); $nbAppointment++; } } public function createExamplePatient(PatientVo $patientVo, $personId) { $query = "SELECT fk_organization FROM [evolucare].[dbo].[t_person] WHERE id = '". $personId ."'"; $results = SQLServerManager::queryOnDatabase( $query ); foreach( $results as $value ) $fk_organization = $value->fk_organization; $patientVo->uid = substr($patientVo->uid, 3); $patientVo->uid .= $personId; $query = "INSERT INTO [evolucare].[dbo].[t_patient] (uid_physician, first_name, last_name, creation, sex, birth_date, birth_country, ethnic_group, last_visit, fk_physician, fk_organization) VALUES ('". $patientVo->uid ."','". SQLServerManager::convertStringToSQLServer( $patientVo->firstName ) ."','". SQLServerManager::convertStringToSQLServer( $patientVo->lastName ) ."','". $patientVo->creation ."','". $patientVo->sex ."','". $patientVo->birthDate ."', '". $patientVo->birthCountry ."', '". $patientVo->ethnicGroup ."', '". $patientVo->lastVisit ."', " . $personId .", ". $fk_organization .")"; $results = SQLServerManager::queryOnDatabase( $query ); if ($results == "exception") Throw new Exception("E007"); $query = "SELECT id FROM [evolucare].[dbo].[t_patient] WHERE uid_physician = '". $patientVo->uid ."'"; $results = SQLServerManager::queryOnDatabase( $query ); $patientId = -1; foreach( $results as $value ) $patientId = $value->id; return $patientId; } public function createExampleAppointment(AppointmentVo $appointmentVo, $patientUid) { $query = "INSERT INTO [intimamedia_physician].[dbo].[tj_appointment] ( number, date, weight, height, fk_patient, fk_live_country ) VALUES (". $appointmentVo->number .",'". $appointmentVo->date ."',". $appointmentVo->weight .",". $appointmentVo->height .",". $appointmentVo->patientId .",'". $appointmentVo->livingCountry ."')"; /*$ff=fopen("d:/tmp.jd", "a+"); fprintf($ff, "createExampleAppointment, query=%s\n", $query); fclose($ff);*/ $results = SQLServerManager::queryOnDatabase( $query ); if ($results == "exception") Throw new Exception("E008"); $query = "SELECT MAX(id) AS lastId FROM [intimamedia_physician].[dbo].[tj_appointment]"; $results = SQLServerManager::queryOnDatabase( $query ); $appointmentId = -1; foreach( $results as $value ) $appointmentId = $value->lastId; /*$ff=fopen("d:/tmp.jd", "a+"); fprintf($ff, "++++++++++ createExampleAppointment, appointmentId=%s\n", $appointmentId); fclose($ff);*/ return $appointmentId; } public function createExampleImage( DragAndDropVo $dragAndDropVo, $srcAppointmentId, $appointmentId ) { $path = "../images/"; $srcFolder = $path . $srcAppointmentId; $folder = $path . $appointmentId; $keyType = $dragAndDropVo->type; $imageHigh = substr($dragAndDropVo->imageHigh, strrpos($dragAndDropVo->imageHigh, '/')+1); $imageSmall = substr($dragAndDropVo->imageSmall, strrpos($dragAndDropVo->imageSmall, '/')+1); $width = $dragAndDropVo->width; $height = $dragAndDropVo->height; $collection = $dragAndDropVo->collection; $incidence = $dragAndDropVo->incidence; $dicom = ($dragAndDropVo->isDicom) ? 1 : 0; if( !is_dir ( $folder ) ) { mkdir( $folder ); } /*$ff=fopen("d:/tmp.jd", "a+"); fprintf($ff, "saveImages, src=%s dest=%s\n", $srcFolder. "/" . $imageHigh, $folder. "/". $imageHigh); fclose($ff);*/ copy( $srcFolder. "/" . $imageHigh, $folder. "/". $imageHigh); copy( $srcFolder. "/" . $imageSmall, $folder. "/". $imageSmall); $url = "http://" . IP_HOST . "/images/". $appointmentId ."/"; $transaction = SQLServerManager::startTransaction(); $imageQuery = "INSERT INTO [intimamedia_physician].[dbo].[t_image] ( image, image_small, width, height, collection, fk_type, fk_appointment, incidence, dicom ) VALUES ( '". $url . $imageHigh ."', '". $url . $imageSmall ."', ". $width .", ". $height .", '". $collection ."', '".$keyType ."', ". $appointmentId .", '". $incidence ."', " . $dicom . ")"; $validImageQuery = SQLServerManager::executeQueryForTransaction( $imageQuery, $transaction ); $idImage = SQLServerManager::getLastId( "[intimamedia_physician].[dbo].[t_image]", $transaction ); if( $validImageQuery ) { SQLServerManager::commitTransaction( $transaction ); /*$ff=fopen("d:/tmp.jd", "a+"); fprintf($ff, "saveImages, imageid=%s added\n", $idImage); fclose($ff);*/ return $idImage; } Throw new Exception("E017"); } public function createExampleMeasures( $list ) { foreach( $list as $value ) { $imgId = $value->id; $scale = $value->scale; $distance = $value->distance; $area = $value->area; $area2 = $value->area2; $nwImtResult = $value->nwImtResult; $fwImtResult = $value->fwImtResult; $ultraSoundScanner = $value->ultrasoudscanner; $query = "SELECT id FROM [intimamedia_physician].[dbo].[tj_measure] WHERE fk_image = ". $imgId; /*$ff=fopen("d:/tmp.jd", "a+"); fprintf($ff, "createExampleMeasures, list=%d %f %f %f %d %d\n", $imgId, $scale, $distance, $area, $nwImtResult, $fwImtResult); fprintf($ff, "createExampleMeasures, sql=%s\n", $query); fclose($ff);*/ $results = SQLServerManager::queryOnDatabase( $query ); $resultArray = array(); $measureId = 0; foreach( $results as $val ) { $measureId = $val->id; } $operation = INSERT; if ($measureId) { // update $operation = UPDATE; } /*$ff=fopen("d:/tmp.jd", "a+"); fprintf($ff, "createExampleMeasures, measureId=%s\n", $measureId); fclose($ff);*/ MeasureService::persistMeasure($measureId, $imgId, $operation, $scale, $distance, $area, $area2, $fwImtResult, $nwImtResult, $ultraSoundScanner); } } } ?>