--- DatabaseLayer.cpp 2006/09/01 03:24:34 26 +++ DatabaseLayer.cpp 2006/09/03 09:14:24 27 @@ -106,6 +106,8 @@ SQL.Format("UPDATE Udlån SET Afleveringsdato = Getdate() WHERE Stregkode= '%s' AND Afleveringsdato IS NULL ", barcode); db.ExecuteSQL(SQL); + + checkReservations(barcode); return true; } @@ -119,13 +121,12 @@ return true; } -bool DatabaseLayer::EquipmentReservation(Person CheckPersID, Equipment CheckEquip, int Numdays) +bool DatabaseLayer::EquipmentReservation(CString barcode, Person CheckPerson) { CString SQL; - SQL.Format("UPDATE Udstyr SET Status = '2' WHERE Stregkode = '%s' ", CheckEquip.barcode); - db.ExecuteSQL(SQL); - SQL.Format("INSERT INTO Resevation (PersonID, Stregkode, Startdato, Antaldage) VALUES( '%s','%s', GetDate(),'%d')", CheckPersID.id, CheckEquip.barcode, Numdays); + SQL.Format("INSERT INTO Resevation (PersonID, Stregkode, Startdato) VALUES( '%s','%s', GetDate())", CheckPerson.id, barcode); db.ExecuteSQL(SQL); + checkReservations(barcode); return true; } @@ -306,7 +307,7 @@ rs.Close(); // fill Equipment::reservations - SQL = "SELECT Resevation.ResevationID, Resevation.StartDato, Resevation.Antaldage, Person.Initialer\ + 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"; @@ -318,8 +319,7 @@ Reservation res; rs.GetFieldValue((short)0, res.reservationID); rs.GetFieldValue(1, res.startdate); - rs.GetFieldValue(2, res.numdays); - rs.GetFieldValue(3, res.inits); + rs.GetFieldValue(2, res.inits); buffer[i].reservations.push_back(res); rs.MoveNext(); @@ -351,3 +351,38 @@ } } } + +void DatabaseLayer::checkReservations(CString barcode) +{ + CString scount,status; + 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); + } +} + +bool DatabaseLayer::DeleteReservation(CString barcode, CString resid) +{ + CString SQL = "DELETE FROM Resevation WHERE resevationid = " + resid; + db.ExecuteSQL(SQL); + checkReservations(barcode); + return true; +} +