--- PostgresLayer.cpp 2006/09/12 10:16:06 56 +++ PostgresLayer.cpp 2007/10/22 13:00:14 60 @@ -18,285 +18,6 @@ db.Close(); } -vector PostgresLayer::GetPersonAll(void) -{ - vector buffer; - CString id, inits, name, isadmin, pass; - - CRecordset rs(&db); - rs.Open(AFX_DB_USE_DEFAULT_TYPE, "SELECT PersonID, Initialer, Navn, Admin, Pass FROM Person ORDER BY Initialer DESC"); - while(!rs.IsEOF()) - { - rs.GetFieldValue((short)0,id); - rs.GetFieldValue(1,inits); - rs.GetFieldValue(2,name); - rs.GetFieldValue(3,isadmin); - rs.GetFieldValue(4,pass); - - Person p; - p.id = id; - p.inits = inits; - p.name = name; - p.isadmin = (isadmin == 1); - p.pass = pass; - - buffer.push_back(p); - - rs.MoveNext(); - } - rs.Close(); - return buffer; -} - -Person PostgresLayer::GetPerson(CString wantInits) -{ - - CString id, inits, name, isadmin, pass; - CString SQL; - - Person p; - - wantInits.Replace("'","\""); - - SQL = "SELECT PersonID, Initialer, Navn, Admin, Pass FROM Person WHERE (Initialer ILIKE '" + wantInits + "')"; - CRecordset rs(&db); - rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL); - - if(!rs.IsEOF() ) - { - rs.GetFieldValue((short)0,id); - rs.GetFieldValue(1,inits); - rs.GetFieldValue(2,name); - rs.GetFieldValue(3,isadmin); - rs.GetFieldValue(4,pass); - - p.id = id; - p.inits = inits; - p.name = name; - p.isadmin = (isadmin == "1"); - p.pass = pass; - } - - return p; -} - -bool PostgresLayer::AddPerson(Person NewPerson) -{ - CString SQL; - NewPerson.inits.Replace("'","\""); - NewPerson.name.Replace("'","\""); - NewPerson.pass.Replace("'","\""); - SQL.Format("INSERT into Person(Initialer, Navn, Admin, Pass) VALUES('%s', '%s', '%d', '%s')", - NewPerson.inits, NewPerson.name, NewPerson.isadmin, NewPerson.pass); - - db.ExecuteSQL(SQL); - return true; -} - -bool PostgresLayer::UpdatePerson(Person ChangePerson) -{ - CString SQL; - ChangePerson.inits.Replace("'","\""); - ChangePerson.name.Replace("'","\""); - ChangePerson.pass.Replace("'","\""); - ChangePerson.id.Replace("'","\""); - SQL.Format("UPDATE Person SET Initialer = '%s', Navn = '%s', Pass = '%s', Admin = '%d' WHERE PersonID = '%s'", - ChangePerson.inits, ChangePerson.name, ChangePerson.pass, ChangePerson.isadmin, ChangePerson.id); - - db.ExecuteSQL(SQL); - return true; -} - -bool PostgresLayer::DeletePerson(Person RemovePerson) -{ - CString SQL; - RemovePerson.id.Replace("'","\""); - SQL.Format("DELETE FROM Person WHERE PersonID = '%s'", RemovePerson.id); - db.ExecuteSQL(SQL); - return true; -} - -bool PostgresLayer::ReturnEquipment(CString barcode) -{ - CString SQL; - barcode.Replace("'","\""); - SQL.Format("UPDATE Udstyr SET Status = '3' WHERE Stregkode= '%s'", barcode); - db.ExecuteSQL(SQL); - - SQL.Format("UPDATE Udlån SET Afleveringsdato = now() WHERE Stregkode= '%s' AND Afleveringsdato IS NULL ", barcode); - db.ExecuteSQL(SQL); - - checkReservations(barcode); - return true; -} - -bool PostgresLayer::CheckoutEquipment(Person CheckPersID, Equipment CheckEquip, int Numdays) -{ - CString SQL; - CheckEquip.barcode.Replace("'","\""); - CheckPersID.id.Replace("'","\""); - SQL.Format("UPDATE Udstyr SET Status = '1' WHERE Stregkode = '%s' ", CheckEquip.barcode); - db.ExecuteSQL(SQL); - SQL.Format("INSERT INTO Udlån (PersonID, Stregkode, Startdato, Antaldage) VALUES( '%s','%s', now(),'%d')", CheckPersID.id, CheckEquip.barcode, Numdays); - db.ExecuteSQL(SQL); - return true; -} - -bool PostgresLayer::EquipmentReservation(CString barcode, Person CheckPerson) -{ - CString SQL; - CheckPerson.id.Replace("'","\""); - barcode.Replace("'","\""); - SQL.Format("INSERT INTO Resevation (PersonID, Stregkode, Startdato) VALUES( '%s','%s', now())", CheckPerson.id, barcode); - db.ExecuteSQL(SQL); - checkReservations(barcode); - return true; -} - -bool PostgresLayer::UpdateEquipment(Equipment CheckEquip) -{ - CString SQL; - CheckEquip.name.Replace("'","\""); - CheckEquip.description.Replace("'","\""); - CheckEquip.placement.Replace("'","\""); - CheckEquip.status.Replace("'","\""); - CheckEquip.barcode.Replace("'","\""); - SQL.Format("UPDATE Udstyr SET Navn = '%s', Beskrivelse = '%s', Placering = '%s' WHERE Stregkode = '%s'", CheckEquip.name, CheckEquip.description, CheckEquip.placement, CheckEquip.barcode); - db.ExecuteSQL(SQL); - return true; -} - -bool PostgresLayer::AddEquipment(Equipment AddEquip) -{ - CString SQL; - AddEquip.barcode.Replace("'","\""); - AddEquip.name.Replace("'","\""); - AddEquip.description.Replace("'","\""); - AddEquip.placement.Replace("'","\""); - SQL.Format("INSERT into Udstyr(Stregkode, Navn, Beskrivelse, Placering, Status) VALUES('%s', '%s', '%s', '%s', '%s')",AddEquip.barcode, AddEquip.name, AddEquip.description, AddEquip.placement, "3"); - db.ExecuteSQL(SQL); - return true; -} - -vector PostgresLayer::GetEquipmentAll(void) -{ - vector buffer; - CString barcode, name, description, placement, status; - - CRecordset rs(&db); - rs.Open(AFX_DB_USE_DEFAULT_TYPE, "SELECT Stregkode, Navn, Beskrivelse, Placering, Status FROM Udstyr"); - while(!rs.IsEOF()) - { - rs.GetFieldValue((short)0,barcode); - rs.GetFieldValue(1,name); - rs.GetFieldValue(2,description); - rs.GetFieldValue(3,placement); - rs.GetFieldValue(4,status); - - Equipment p; - p.barcode = barcode; - p.name = name; - p.description = description; - p.placement = placement; - p.status = status; - buffer.push_back(p); - - rs.MoveNext(); - } - rs.Close(); - return buffer; -} - -Equipment PostgresLayer::GetEquipment(CString wantBarcode) -{ - - CString barcode,name,description,placement,status,statusid; - - CString SQL; - - wantBarcode.Replace("'","\""); - - Equipment e; - - SQL.Format((CString)"SELECT Stregkode,Navn,Udstyr.Beskrivelse,Placering,Status.Beskrivelse,Udstyr.Status FROM Udstyr " + - "INNER JOIN Status ON Udstyr.Status = Status.StatusID Where (Stregkode = '%s')", wantBarcode); - CRecordset rs(&db); - rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL); - if (!rs.IsEOF() ) - { - rs.GetFieldValue((short)0,barcode); - rs.GetFieldValue(1,name); - rs.GetFieldValue(2,description); - rs.GetFieldValue(3,placement); - rs.GetFieldValue(4,status); - rs.GetFieldValue(5,statusid); - - e.barcode = barcode; - e.name = name; - e.description = description; - e.placement = placement; - e.status = status; - e.statusid = atoi( statusid ); - - rs.Close(); - - //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 = " + 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); - - e.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 = " + 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); - - e.reservations.push_back(res); - rs.MoveNext(); - } - } - rs.Close(); - - - } - return e; -} - -bool PostgresLayer::DeleteEquipment(Equipment DelEquip) -{ - CString SQL; - DelEquip.barcode.Replace("'","\""); - SQL.Format("DELETE FROM Udstyr WHERE Stregkode = '%s'", DelEquip.barcode); - db.ExecuteSQL(SQL); - return true; -} // Developed by Torben H. Nielsen @@ -371,61 +92,13 @@ return buffer; } -// Developed by Torben H. Nielsen -void PostgresLayer::FillEquipmentVector(vector &buffer, CRecordset &rs) -{ - CString barcode,name,description,placement,status; - if (rs.GetRecordCount()>0) { - rs.MoveFirst(); - while (!rs.IsEOF() ) { - Equipment eq; - rs.GetFieldValue((short)0, eq.barcode); - rs.GetFieldValue(1, eq.name); - rs.GetFieldValue(2, eq.description); - rs.GetFieldValue(3, eq.placement); - rs.GetFieldValue(4, eq.status); - - buffer.push_back(eq); - - rs.MoveNext(); - } - } -} -//Developed by Torben H. Nielsen -void PostgresLayer::checkReservations(CString barcode) +CString PostgresLayer::GenerateQueryForLatestCheckouts( CString barcode ) { - CString scount,status; - barcode.Replace("'","\""); - CString SQL = "SELECT count(*) FROM Resevation WHERE Resevation.Stregkode = '" + barcode + "'"; - CRecordset rs(&db); - rs.Open(AFX_DB_USE_DEFAULT_TYPE,SQL); - rs.MoveFirst(); - rs.GetFieldValue((short)0,scount); - int reservationCount = atoi(scount); - rs.Close(); - - SQL = "SELECT status FROM Udstyr WHERE Udstyr.Stregkode = '" + barcode + "'"; - rs.Open(AFX_DB_USE_DEFAULT_TYPE,SQL); - if (rs.GetRecordCount() >0) { - rs.MoveFirst(); - rs.GetFieldValue((short)0,status); - } - rs.Close(); - - if (reservationCount > 0 && status == "3") {//equipment is available and has at lease one reservation - SQL = "UPDATE Udstyr SET Status = 2 WHERE Stregkode = '" + barcode + "'"; - db.ExecuteSQL(SQL); - } -} + CString SQL; + 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 = " + barcode + " ORDER BY STARTDATO DESC LIMIT 10"; -//Developed by Torben H. Nielsen -bool PostgresLayer::DeleteReservation(CString barcode, CString resid) -{ - barcode.Replace("'","\""); - resid.Replace("'","\""); - CString SQL = "DELETE FROM Resevation WHERE resevationid = " + resid; - db.ExecuteSQL(SQL); - checkReservations(barcode); - return true; + return SQL; } -