Example #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);
    }
}