/***************************************************************************
 *   Copyright (C) 2004 by Sevin Roland                                    *
 *   upsis@club-internet.fr                                                *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/
#ifndef C_APP_H
#define C_APP_H

#include <qstring.h>
#include "../../MedinTuxTools/CMedinTuxApp.h"

#include <qsqldatabase.h>
#include <qtextedit.h>

#define Min(a, b)             ((a) < (b) ? (a) : (b))
#define Max(a, b)             ((a) > (b) ? (a) : (b))
#define SKIP_BLANK_CAR(a)     while( *(a) && (*(a)==' ' || *(a)=='\t')) (a)++
#define NEXT_LINE(a)          while( *(a) && *(a)!='\r' && *(a)!='\n')(a)++; while( *(a) && (*(a)=='\r'|| *(a)=='\n'))(a)++
//.......................... Note pour disposer des GUID ...................................................................
// pour disposer des fonctions GUID: il faut installer avec drakconf:  libext2fs2-devel-1.32-2mdk
// qui installe les bibliothèques:
//
//                  /usr/include/uuid
//                  /usr/include/uuid/uuid.h
//                  /usr/lib/libuuid.a
//                  /usr/lib/libuuid.so    (lien sur: /lib/libuuid.so.1.2)
//                  /lib/libuuid.so.1.2
//                  /lib/libuuid.so.1      (lien sur: /lib/libuuid.so.1.2)
//
// pour pouvoir linker avec ces bibliothèques rajouter dans:
//
//                Boite de dialogue de QMake, bouton de droite: "Configurer le projet" (icone en forme de clef anglaise)
//                Onglet: "Bibliothèques" , zone de dialogue du bas: "Link libraries outside project"
//                la ligne: /lib/libuuid.so.1.2
//
// Rajouter le .h suivant pour inclure les prototypes des fonctions fournies par la lib:     /lib/libuuid.so.1.2
/*
#ifdef Q_WS_X11
     #include <uuid/uuid.h>
     typedef struct _GUID {u_int32_t    Data1;
                           u_int16_t    Data2;
                           u_int16_t    Data3;
                           u_int8_t     Data4[8];
                          } GUID;
#else
     #include <quuid.h>

     #include <objbase.h>
#endif
*/
//================================================= CApp ==============================================================
class CApp : public CMedinTuxApp
{
 public:
    CApp(int & argc, char ** argv);
    int   SetConfBase(const char* confFile, QString err);
    char *SetConfBaseGetToken(char *pt, const char *token, int *line , QString &err);
    char *SetConfBaseGetValue(char *pt, QString &value, int *line , QString &errMess );
    QString         GUID_Create();

    void  OutSQL_error( const QSqlQuery &cur, const char *messFunc =0, const char *requete =0 );
    //..................................... Codes Postaux ..............................................................
    QString         GetVilleFromCodePostal(const QString &codePostal);
    QString         GetCodePostalFromVille(const QString &Ville);
    void            GetVilleFromCodePostal(const QString &codePostal, QStringList &villeList);
    void            GetCodePostalFromVille(const QString &ville     , QStringList &codePostalList);
    bool            IsThisDroitExist(const char *droitToFind);
    bool            IsThisDroitExist(const char *listDroits, const char *droitToFind);
    QString         m_Start_ID;
    QString         m_Droits;              /*!< Droits de l'utilisateur */
    int             m_CloseAfterQuery;

    int            OpenBase();
    void           setOpenCloseMode(int mode);
    void           CloseBase(); //

    //............................ DATA .........................................................
    QString       m_INTERVENANTS_TBL_NAME;            // nom de la table des intervenants

    QString       m_INTERVENANTS_GUID;                // Identifiant unique de cet intervenant
    QString       m_INTERVENANTS_LOGIN_SIGEMS;        // Identifiant Sigems d'intervenant
    QString       m_INTERVENANTS_LOGIN;               // Identifiant d'intervenant
    QString       m_INTERVENANTS_PASSWORD_SIGEMS;     // mot de passe Sigems
    QString       m_INTERVENANTS_PASSWORD;            // mot de passe
    QString       m_INTERVENANTS_DROITS;              // Droits
    QString       m_INTERVENANTS_CODE_SPEC;           // spécialité de l'intervenant
    QString       m_INTERVENANTS_NUM_ORDRE;           // Numéro d'ordre (si il y en a un)
    QString       m_INTERVENANTS_NOM;                 // nom de l'intervenant
    QString       m_INTERVENANTS_PRENOM;              // prenom de l'intervenant
    QString       m_INTERVENANTS_ADRESSE;             // spécialité de l'intervenant
    QString       m_INTERVENANTS_CONVENTION;          // convention exple "01 MEDECINE GENERALE"
    QString       m_INTERVENANTS_CODE_POST;           // Code postal de l'intervenant
    QString       m_INTERVENANTS_VILLE;               // Ville de l'intervenant
    QString       m_INTERVENANTS_TEL_1;               // Numero de telephone
    QString       m_INTERVENANTS_TEL_2;               // Numero de telephone
    QString       m_INTERVENANTS_TEL_3;               // Numero de telephone
    QString       m_INTERVENANTS_EMAIL;               // Email
    QString       m_INTERVENANTS_PK;                  // primary key
    QString       m_INTERVENANTS_NOTE;                // Note de l'intervenant (Dr Pr Mr Mm etc...)
    QString       m_INTERVENANTS_QUALITE;             // Type d'intervenant (exple: Medecin Urgentiste)
    QString       m_INTERVENANTS_CODE_REGIME;         // Code Regime
    QString       m_INTERVENANTS_SEXE;                // sexe
    QString       m_INTERVENANTS_TITRE;               // Titre de l'intervenant (Mr Dr Pr Melle)
    QString       m_INTERVENANTS_CHER;                // Lien de politesse (cher ami etc ...)
    QString       m_INTERVENANTS_TEL_TYPE_1;          // type de Numero de telephone
    QString       m_INTERVENANTS_TEL_TYPE_2;          // type de Numero de telephone
    QString       m_INTERVENANTS_TEL_TYPE_3;          // type de Numero de telephone
    QString       m_INTERVENANTS_TEL_ABR_1;           // Numero de telephone abrégé
    QString       m_INTERVENANTS_TEL_ABR_2;           // Numero de telephone abrégé
    QString       m_INTERVENANTS_TEL_ABR_3;           // Numero de telephone abrégé
    QSqlDatabase* m_DataBase;
};

extern CApp* G_pCApp;

#endif

