00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __CLIDB_H__
00012 #define __CLIDB_H__
00013
00014 #include "gigabase.h"
00015 #include "wwwapi.h"
00016
00017 USE_GIGABASE_NAMESPACE
00018
00019 class History;
00020 class Manager;
00021 class Segment;
00022
00023 class Client {
00024 public:
00025 char const* organization;
00026 char const* phone;
00027 char const* phone2;
00028 char const* fax;
00029 char const* email;
00030 char const* www;
00031 char const* person;
00032 char const* person2;
00033 char const* lpr;
00034 char const* addr;
00035 char const* info;
00036 char const* status;
00037 int clientId;
00038 dbReference<Segment> segment;
00039 dbArray<dbReference<History> > history;
00040
00041 void print(WWWconnection& con) const;
00042
00043 TYPE_DESCRIPTOR((KEY(clientId, INDEXED),
00044 FIELD(organization),
00045 FIELD(phone),
00046 FIELD(phone2),
00047 FIELD(fax),
00048 FIELD(email),
00049 FIELD(www),
00050 FIELD(person),
00051 FIELD(person2),
00052 FIELD(lpr),
00053 FIELD(addr),
00054 FIELD(info),
00055 FIELD(status),
00056 RELATION(segment, clients),
00057 OWNER(history, client)));
00058 };
00059
00060 class History {
00061 public:
00062 int messageId;
00063 char const* message;
00064 dbDateTime date;
00065 dbReference<Manager> manager;
00066 dbReference<Client> client;
00067
00068 void print(WWWconnection& con) const;
00069
00070 TYPE_DESCRIPTOR((KEY(messageId, INDEXED),
00071 FIELD(message),
00072 FIELD(date),
00073 RELATION(client, history),
00074 RELATION(manager, messages)));
00075 };
00076
00077 class Manager {
00078 public:
00079 char const* name;
00080 char const* IPaddr;
00081 int flags;
00082 dbReference<Segment> segment;
00083 dbArray<dbReference<History> > messages;
00084
00085 static bool loginFromAnyHost;
00086
00087 enum {
00088 isMinAdmin = 1,
00089 isAdministrator = 2
00090 };
00091
00092 void print(WWWconnection& con) const;
00093
00094 TYPE_DESCRIPTOR((KEY(name, INDEXED|CASE_INSENSITIVE),
00095 FIELD(IPaddr),
00096 FIELD(flags),
00097 RELATION(segment, managers),
00098 RELATION(messages, manager)));
00099 };
00100
00101 class Segment {
00102 public:
00103 char const* name;
00104 dbArray<dbReference<Client> > clients;
00105 dbArray<dbReference<Manager> > managers;
00106
00107 void print(WWWconnection& con) const;
00108
00109 TYPE_DESCRIPTOR((KEY(name, INDEXED),
00110 OWNER(clients, segment),
00111 OWNER(managers, segment)));
00112 };
00113
00114 class Sequencer {
00115 public:
00116 int lastClientId;
00117 int lastMessageId;
00118
00119 TYPE_DESCRIPTOR((FIELD(lastClientId),
00120 FIELD(lastMessageId)));
00121 };
00122
00123 class ThreadContext {
00124 public:
00125 dbCursor<Client> clients;
00126 dbCursor<Manager> managers;
00127 dbCursor<Segment> segments;
00128 dbCursor<History> messages;
00129 dbCursor<Sequencer> sequencer;
00130
00131 dbQuery qClient;
00132 dbQuery qManager;
00133 dbQuery qClients;
00134 dbQuery qManagers;
00135 dbQuery qSegment;
00136 dbQuery qMessage;
00137 dbQuery qMessages;
00138
00139 bool managerForm;
00140
00141 int clientId;
00142 int messageId;
00143 char* name;
00144 dbArray<dbReference<Client> >* clientsArray;
00145 dbArray<dbReference<Manager> >* managersArray;
00146 dbArray<dbReference<History> >* messagesArray;
00147
00148 ThreadContext();
00149 static ThreadContext& of(WWWconnection& con);
00150 };
00151
00152 #endif