/[H6]/PostgresLayer.cpp
ViewVC logotype

Diff of /PostgresLayer.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 43 by torben, Wed Sep 6 18:40:35 2006 UTC revision 56 by torben, Tue Sep 12 10:16:06 2006 UTC
# Line 6  Line 6 
6  #include ".\PostgresLayer.h"  #include ".\PostgresLayer.h"
7    
8    
9  PostgresLayer::PostgresLayer(void)  PostgresLayer::PostgresLayer(ConfigFile &config)
10  {  {
11          //db.OpenEx("ODBC;Description=asd;DRIVER=PostgreSQL ANSI;SERVER=172.16.11.25; user=gruppe2;password=1337",CDatabase::noOdbcDialog);          CString dsn;
12          db.OpenEx("ODBC;Description=asd;DRIVER=PostgreSQL ANSI;SERVER=192.168.10.1; uid=torben;password=nielsen;database=h6projekt");          dsn.Format("ODBC;Description=asd;DRIVER=PostgreSQL ANSI;SERVER=%s; uid=%s;password=%s;database=%s",config.host, config.username, config.password, config.database);
13            db.OpenEx(dsn, CDatabase::noOdbcDialog);
14  }  }
15    
16  PostgresLayer::~PostgresLayer(void)  PostgresLayer::~PostgresLayer(void)
# Line 209  vector<Equipment> PostgresLayer::GetEqui Line 210  vector<Equipment> PostgresLayer::GetEqui
210  Equipment PostgresLayer::GetEquipment(CString wantBarcode)  Equipment PostgresLayer::GetEquipment(CString wantBarcode)
211  {  {
212    
213          CString barcode,name,description,placement,status;          CString barcode,name,description,placement,status,statusid;
214    
215          CString SQL;          CString SQL;
216    
# Line 217  Equipment PostgresLayer::GetEquipment(CS Line 218  Equipment PostgresLayer::GetEquipment(CS
218    
219          Equipment e;          Equipment e;
220    
221          SQL.Format((CString)"SELECT Stregkode,Navn,Udstyr.Beskrivelse,Placering,Status.Beskrivelse FROM Udstyr " +          SQL.Format((CString)"SELECT Stregkode,Navn,Udstyr.Beskrivelse,Placering,Status.Beskrivelse,Udstyr.Status FROM Udstyr " +
222                  "INNER JOIN Status ON Udstyr.Status = Status.StatusID Where (Stregkode = '%s')", wantBarcode);                  "INNER JOIN Status ON Udstyr.Status = Status.StatusID Where (Stregkode = '%s')", wantBarcode);
223          CRecordset rs(&db);          CRecordset rs(&db);
224          rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);          rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);
# Line 228  Equipment PostgresLayer::GetEquipment(CS Line 229  Equipment PostgresLayer::GetEquipment(CS
229                  rs.GetFieldValue(2,description);                  rs.GetFieldValue(2,description);
230                  rs.GetFieldValue(3,placement);                  rs.GetFieldValue(3,placement);
231                  rs.GetFieldValue(4,status);                  rs.GetFieldValue(4,status);
232                    rs.GetFieldValue(5,statusid);
233    
234                  e.barcode = barcode;                  e.barcode = barcode;
235                  e.name = name;                  e.name = name;
236                  e.description = description;                  e.description = description;
237                  e.placement = placement;                  e.placement = placement;
238                  e.status = status;                  e.status = status;
239                    e.statusid = atoi( statusid );
240    
241                    rs.Close();
242    
243                    //fill Equipment::checkouts
244                    
245                    SQL = "SELECT Udlån.StartDato, Udlån.Afleveringsdato,Udlån.Antaldage, Person.Initialer\
246                                    FROM Udlån\
247                                    INNER JOIN Person ON Udlån.PersonID = Person.PersonID ";
248                    SQL += "WHERE Udlån.Stregkode = " + barcode + " ORDER BY STARTDATO DESC LIMIT 10";
249                    CRecordset rs(&db);
250                    rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);
251                    if (rs.GetRecordCount()>0) {
252                            rs.MoveFirst();
253                            while ( !rs.IsEOF() ) {
254                                    Checkout check;
255                                    rs.GetFieldValue((short)0, check.startdate);
256                                    rs.GetFieldValue(1, check.enddate);
257                                    rs.GetFieldValue(2, check.numdays);
258                                    rs.GetFieldValue(3, check.inits);
259    
260                                    e.checkouts.push_back(check);
261                                    rs.MoveNext();
262                            }
263                    }
264                    rs.Close();
265                                    
266                    // fill Equipment::reservations
267                    SQL = "SELECT Resevation.ResevationID, Resevation.StartDato,  Person.Initialer\
268                                    FROM Resevation\
269                                    INNER JOIN Person ON Resevation.PersonID = Person.PersonID ";
270                    SQL += "WHERE Resevation.Stregkode = " + barcode + " ORDER BY STARTDATO ASC";
271                    
272                    rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);
273                    if (rs.GetRecordCount()>0) {
274                            rs.MoveFirst();
275                            while ( !rs.IsEOF() ) {
276                                    Reservation res;
277                                    rs.GetFieldValue((short)0, res.reservationID);
278                                    rs.GetFieldValue(1, res.startdate);
279                                    rs.GetFieldValue(2, res.inits);
280    
281                                    e.reservations.push_back(res);
282                                    rs.MoveNext();
283                            }
284                    }
285                    rs.Close();
286    
287    
288          }          }
         rs.Close();  
289          return e;          return e;
290  }  }
291    
# Line 318  vector<Equipment> PostgresLayer::Search( Line 368  vector<Equipment> PostgresLayer::Search(
368                  rs.Close();                  rs.Close();
369          }          }
370    
         // now I have the equipment rows the user asked for, now I need some more checkout and  
         // reservation data for each piece of equipment  
   
         for (int i=0; i<buffer.size(); i++) {  
                 //fill Equipment::checkouts  
                   
                 SQL = "SELECT Udlån.StartDato, Udlån.Afleveringsdato,Udlån.Antaldage, Person.Initialer\  
                                 FROM Udlån\  
                                 INNER JOIN Person ON Udlån.PersonID = Person.PersonID ";  
                 SQL += "WHERE Udlån.Stregkode = " + buffer[i].barcode + " ORDER BY STARTDATO DESC LIMIT 10";  
                 CRecordset rs(&db);  
                 rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);  
                 if (rs.GetRecordCount()>0) {  
                         rs.MoveFirst();  
                         while ( !rs.IsEOF() ) {  
                                 Checkout check;  
                                 rs.GetFieldValue((short)0, check.startdate);  
                                 rs.GetFieldValue(1, check.enddate);  
                                 rs.GetFieldValue(2, check.numdays);  
                                 rs.GetFieldValue(3, check.inits);  
   
                                 buffer[i].checkouts.push_back(check);  
                                 rs.MoveNext();  
                         }  
                 }  
                 rs.Close();  
                                   
                 // fill Equipment::reservations  
                 SQL = "SELECT Resevation.ResevationID, Resevation.StartDato,  Person.Initialer\  
                                 FROM Resevation\  
                                 INNER JOIN Person ON Resevation.PersonID = Person.PersonID ";  
                 SQL += "WHERE Resevation.Stregkode = " + buffer[i].barcode + " ORDER BY STARTDATO ASC";  
                   
                 rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);  
                 if (rs.GetRecordCount()>0) {  
                         rs.MoveFirst();  
                         while ( !rs.IsEOF() ) {  
                                 Reservation res;  
                                 rs.GetFieldValue((short)0, res.reservationID);  
                                 rs.GetFieldValue(1, res.startdate);  
                                 rs.GetFieldValue(2, res.inits);  
   
                                 buffer[i].reservations.push_back(res);  
                                 rs.MoveNext();  
                         }  
                 }  
                 rs.Close();  
         }  
   
371          return buffer;          return buffer;
372  }  }
373    

Legend:
Removed from v.43  
changed lines
  Added in v.56

  ViewVC Help
Powered by ViewVC 1.1.20