Пример #1
0
function addUserFromCommerce()
{
    $AppModel = new Model();
    $Utente = new UtenteModel();
    $Uform = new UtenteForm();
    $Dbase = new DatabaseModel();
    $Dform = new DatabaseForm();
    $Assoc = new AssociazioneModel();
    $Aform = new AssociazioneForm();
    $request = Slim::getInstance()->request();
    $user = json_decode($request->getBody());
    //Utente
    $Uform->email = trim_string($user->email);
    $Uform->id_utente = null;
    $pwd = Password::randomPassword();
    $Uform->passwd = Password::hashPassword($pwd);
    $Uform->nome = $user->nome;
    $numdb = (int) $user->num_db;
    //TODO: Check for empty number of databases
    $id_utente = $AppModel->getIdUtente($Uform->email);
    $piva = trim_string($user->piva);
    $dbprogr = $AppModel->getNumDB($user->email);
    $INI = $dbprogr;
    $FIN = $dbprogr + $numdb;
    /////////////////////////////////////////////////////////////////////////check if fields are not empty///////////////////////////////
    if (!empty($user->email) && !empty($user->piva) && !empty($user->num_db)) {
        try {
            ///////////////////////////////////////////////////checks if user exist already or no ///////////////////////////////////////
            if (empty($id_utente)) {
                $Utente->saveDb($Uform, 1, 1);
                $testo = "<p>Salve {$user->email},</p>\r\n                            <p>i tuoi dati di accesso presso <b>" . NAME . ":</b><br><br>\r\n                            <b>Nome utente</b>: {$user->email}<br>\r\n                            <b>Password:</b> {$pwd}</p>\r\n                            <p>Una volta effettuato l'accesso ti verrà richiesto di cambiare la password tramite l'apposita funzionalità</p>\r\n                            <p>Adesso puoi effettuare il login al seguente indirizzo: <a href=\"" . URL . "index.php?section=login\">" . URL . "index.php?section=login</a></p>";
                Mailer::sendMail($user->email, NAME, EMAIL, false, NAME . ' - Utente e password', $testo);
                //////////////////////////////////////////////////////////////creates number of databases rquested/////////////////////////////////////////////////
                $Dform->alias = (string) $user->ragsoc;
                $dbnames = createDBName($INI, $FIN, $piva);
                foreach ($dbnames as $key => $value) {
                    $id_database = $AppModel->getIdDb($value);
                    if (empty($id_database)) {
                        $Dform->nome = $value;
                        $Dform->codice = explode("_", $value)[1];
                        if (!$Dbase->esisteDatabase($Dform->nome)) {
                            $Dbase->saveDb($Dform);
                            if (!file_exists(PATH_BASE . DS . CSV . DS . $Dform->codice) && !is_dir(PATH_BASE . DS . CSV . DS . $Dform->codice)) {
                                mkdir(PATH_BASE . DS . CSV . DS . $Dform->codice, 0777, true);
                            }
                        }
                    }
                    $Aform->id_utente = $AppModel->getIdUtente($user->email);
                    $Aform->id_database = $AppModel->getIdDb($Dform->nome);
                    // use name inserted into db ...not something else
                    $Aform->id_associazione = $Assoc->getIDAssociazione($Aform->id_database, $Aform->id_utente);
                    $Aform->data_scadenza = (string) $user->data_scadenza;
                    if (!$Assoc->controllaUnicita($Aform->id_utente, $Aform->id_database, $Aform->id_associazione)) {
                        $Assoc->saveDb($Aform, 1, 1);
                    }
                    // Check if flight is set, enable menu and impose other conditions.
                    if ($user->tipo_gest == '1') {
                        $Dbase->setAuth($AppModel->getIdDb($Dform->nome), 3, 1);
                        $Dbase->ImpostazioneFlight($Dform->nome);
                    }
                }
                //check for errors
                $AppModel->updateNumDB($Uform->email, $numdb);
                //  TODO: Use error checks to send different jsons that is 1 .error in utente, 2. error in database 3.associazione
                $status = array("statuscode" => 200, "response" => array("success" => true, "msg" => "Richiesta eseguita con successo. E stato creato un utente, un database e un abbinamento/associazione.", "data" => array()));
                echo json_encode($status);
            } else {
                // if user doesn't exist
                // 3. send email
                //2. create db,
                //create assocciazione with all
                $Dform->alias = (string) $user->ragsoc;
                $dbnames = createDBName($INI, $FIN, $piva);
                foreach ($dbnames as $key => $value) {
                    $id_database = $AppModel->getIdDb($value);
                    if (empty($id_database)) {
                        $Dform->nome = $value;
                        $Dform->codice = explode("_", $value)[1];
                        if (!$Dbase->esisteDatabase($Dform->nome)) {
                            $Dbase->saveDb($Dform);
                            if (!file_exists(PATH_BASE . DS . CSV . DS . $Dform->codice) && !is_dir(PATH_BASE . DS . CSV . DS . $Dform->codice)) {
                                mkdir(PATH_BASE . DS . CSV . DS . $Dform->codice, 0777, true);
                            }
                        }
                        // else check for errors
                    }
                    //$checkdbname = $Dbase->getDatabase($id_database);
                    // check if database exist already
                    // if so try create associasion
                    //else create db and create association
                    $Aform->id_utente = $AppModel->getIdUtente($user->email);
                    $Aform->id_database = $AppModel->getIdDb($Dform->nome);
                    // use name inserted into db ...not something else
                    $Aform->id_associazione = $Assoc->getIDAssociazione($Aform->id_database, $Aform->id_utente);
                    $Aform->data_scadenza = (string) $user->data_scadenza;
                    if (!$Assoc->controllaUnicita($Aform->id_utente, $Aform->id_database, $Aform->id_associazione)) {
                        $Assoc->saveDb($Aform, 1, 1);
                    }
                    // user alreadey exist  send check if database exist and check if associzoine exist then send email
                    $testo = "<p>Salve {$user->email},</p>\r\n                           <p>La sua richiesta è stata accettata. Abbiamo abbinato una nuova basi di dati a questo utente.</p>\r\n                            <p>i tuoi dati di accesso presso <b>" . NAME . ":</b><br>\r\n                            <p>Si potrebbe usare le tue credenziali già esistente per accedere.</p>\r\n                            <p></p>\r\n                            <p>Adesso puoi effettuare il login al seguente indirizzo: <a href=\"" . URL . "index.php?section=login\">" . URL . "index.php?section=login</a></p>";
                    Mailer::sendMail($user->email, NAME, EMAIL, false, NAME . ' - Utente e password', $testo);
                    // Check if flight is set, enable menu and impose other conditions.
                    if ($user->tipo_gest == '1') {
                        $Dbase->setAuth($AppModel->getIdDb($Dform->nome), 3, 1);
                        $Dbase->ImpostazioneFlight($Dform->nome);
                    }
                }
                // for each
                $AppModel->updateNumDB($Uform->email, $numdb);
                //  TODO: Use error checks to send different jsons that is 1 .error in utente, 2. error in database 3.associazione
                $status = array("statuscode" => 200, "response" => array("success" => true, "msg" => "Richiesta eseguita con successo.E stato creato un database e un abbinamento/associazione. ", "data" => array()));
                echo json_encode($status);
            }
            // else
        } catch (Exception $e) {
            $status = array("statuscode" => 200, "response" => array("success" => false, "msg" => "Iscrizione negato, email/utente già esistente!", "errmsg" => $e->getMessage(), "data" => null));
            echo json_encode($status);
        }
    } else {
        $status = array("statuscode" => 200, "response" => array("success" => false, "msg" => "I campi email, numero di database e partita IVA  non possono  essere vuoti", "data" => null));
        echo json_encode($status);
    }
}
Пример #2
0
/**
 * Write a wrapper function that
 * 1.  Adds users
 * 2. Adds database
 * 3. Creates association between users and database using existing models
 * Added more checks 14/09/2015 . Must be rewritten if there is time.
 */
function addUser()
{
    $request = Slim::getInstance()->request();
    $user = json_decode($request->getBody());
    $AppModel = new Model();
    $Utente = new UtenteModel();
    $Uform = new UtenteForm();
    $Dbase = new DatabaseModel();
    $Dform = new DatabaseForm();
    $Assoc = new AssociazioneModel();
    $Aform = new AssociazioneForm();
    //Utente
    $Uform->email = trim_string($user->email);
    $Uform->id_utente = null;
    $pwd = Password::randomPassword();
    $Uform->passwd = Password::hashPassword($pwd);
    //Database
    $piva = (string) trim_string($user->piva);
    $Dform->nome = INIDB_WKI . "{$piva}";
    $Dform->alias = !empty($user->ragsoc) ? $user->ragsoc : $user->piva;
    $Dform->codice = $user->piva;
    //$Dform->id_database =  $AppModel->getIdDb($Dform->nome);
    $Dform->id_database = $AppModel->getIdDbbyCodice($Dform->codice);
    $id_utente = $AppModel->getIdUtente($Uform->email);
    if (!empty($user->email) && !empty($user->piva)) {
        try {
            if (empty($id_utente)) {
                ///////////////////////////// User doesn't exist, save user and send and email with password//////////////////////////////////////////////////
                if ($Utente->saveDb($Uform, 1, 1)) {
                    $testo = "<p>Salve {$user->email},</p>\r\n                                <p>i tuoi dati di accesso presso <b>" . NAME . ":</b><br><br>\r\n                                <b>Nome utente</b>: {$user->email}<br>\r\n                                <b>Password:</b> {$pwd}</p>\r\n                                <p>Una volta effettuato l'accesso ti verrà richiesto di cambiare la password tramite l'apposita funzionalità</p>\r\n                                <p>Adesso puoi effettuare il login al seguente indirizzo: <a href=\"" . URL . "index.php?section=login\">" . URL . "index.php?section=login</a></p>";
                    Mailer::sendMail($user->email, NAME, EMAIL, false, NAME . ' - Utente e password', $testo);
                }
                ///////////////////////////// If database exist already, then create association of user and database and date of expiry//////////////////////////
                if (!empty($Dform->id_database)) {
                    $Aform->id_utente = $AppModel->getIdUtente($user->email);
                    $Aform->id_database = $AppModel->getIdDbbyCodice($Dform->codice);
                    $Aform->data_scadenza = (string) $user->data_scadenza;
                    $Assoc->saveDb($Aform, 1, 1);
                } else {
                    //////////////////////////// If database  does not exist , create datbase and associate it with the user ///////////////////////////////////////////
                    $Dbase->saveDb($Dform);
                    if (!file_exists(PATH_BASE . DS . CSV . DS . $Dform->codice) && !is_dir(PATH_BASE . DS . CSV . DS . $Dform->codice)) {
                        mkdir(PATH_BASE . DS . CSV . DS . $Dform->codice, 0777, true);
                    }
                    $Aform->id_utente = $AppModel->getIdUtente($user->email);
                    $Aform->id_database = $AppModel->getIdDbbyCodice($Dform->codice);
                    $Aform->data_scadenza = (string) $user->data_scadenza;
                    $Assoc->saveDb($Aform, 1, 1);
                }
                ////////////////////////// If request is for complete application(f-light), launch this procedure to modify application ////////////////////////////////////
                if ($user->tipo_gest == '1') {
                    $Dbase->setAuth($AppModel->getIdDbbyCodice($Dform->codice), 3, 1);
                    $Dbase->ImpostazioneFlight($Dform->nome);
                    // maintain name as in name of Database
                }
                //////////////////////// If all this is done we are sure that a user, database and their association has been succefully done so throw out json ///////////
                $status = array("statuscode" => 200, "response" => array("success" => true, "msg" => "E stato creato un utente, database e un  abbinamento/associazione.", "data" => array()));
                echo json_encode($status);
            } else {
                ////////////////////////  We arrived here because user id was found, so we send a message to the user saying we added a database/company to them and they can use old password//////
                $testo = "<p>Salve {$user->email},</p>\r\n                           <p>La sua richiesta è stata accettata. Abbiamo abbinato una nuova basi di dati a questo utente.</p>\r\n                            <p>i tuoi dati di accesso presso <b>" . NAME . ":</b><br>\r\n                            <p>Si potrebbe usare le tue credenziali già esistente per accedere.</p>\r\n                            <p></p>\r\n                            <p>Adesso puoi effettuare il login al seguente indirizzo: <a href=\"" . URL . "index.php?section=login\">" . URL . "index.php?section=login</a></p>";
                $Aform->id_utente = $AppModel->getIdUtente($user->email);
                $Aform->id_database = $AppModel->getIdDbbyCodice($Dform->codice);
                $Aform->data_scadenza = (string) $user->data_scadenza;
                $Dform->id_database = $AppModel->getIdDbbyCodice($Dform->codice);
                ///////////////////////// If a database already exist, we send and email and create and create and association with the user ///////////////////////////////////////////////////
                if (!empty($Dform->id_database)) {
                    Mailer::sendMail($user->email, NAME, EMAIL, false, NAME . ' - Utente e password', $testo);
                    if (!$Assoc->controllaUnicita($Aform->id_utente, $Aform->id_database, $Aform->id_associazione)) {
                        $Assoc->saveDb($Aform, 1, 1);
                        $status = array("statuscode" => 200, "response" => array("success" => true, "msg" => "Un abbinamento/associazione è stato creato.", "data" => array()));
                        echo json_encode($status);
                    } else {
                        $status = array("statuscode" => 200, "response" => array("success" => true, "msg" => "Operazione eseguito con succeso, esiste già un associazione", "data" => array()));
                        echo json_encode($status);
                    }
                    ///////////////////////////// If there is no database, then we create database , send email and create folder and association////////////
                } else {
                    $Dform->id_database = $AppModel->getIdDbbyCodice($Dform->codice);
                    $Dbase->saveDb($Dform);
                    Mailer::sendMail($user->email, NAME, EMAIL, false, NAME . ' - Utente e password', $testo);
                    if (!file_exists(PATH_BASE . DS . CSV . DS . $Dform->codice) && !is_dir(PATH_BASE . DS . CSV . DS . $Dform->codice)) {
                        mkdir(PATH_BASE . DS . CSV . DS . $Dform->codice, 0777, true);
                    }
                    $Assoc->saveDb($Aform, 1, 1);
                    $status = array("statuscode" => 200, "response" => array("success" => true, "msg" => "E stato creato un database e un abbinamento/associazione. ", "data" => array($Dform->id_database)));
                    echo json_encode($status);
                }
            }
        } catch (Exception $e) {
            // TODO: What to return
            $status = array("statuscode" => 200, "response" => array("success" => false, "msg" => "Errori nel inserimento su database o nella creazione della cartella !", "errmsg" => $e->getMessage(), "data" => null));
            echo json_encode($status);
        }
    } else {
        $status = array("statuscode" => 200, "response" => array("success" => false, "msg" => "I campi email e partita IVA  non possono  essere vuoti", "data" => null));
        echo json_encode($status);
    }
}