--- ResultDetailsDialog.cpp 2006/09/04 08:54:27 37 +++ ResultDetailsDialog.cpp 2006/09/12 09:09:30 54 @@ -54,13 +54,12 @@ if (m_loadingData == true) return; m_loadingData = true; - Equipment currentdata = CommonStorage::Instance()->getSearchResult()[m_resultIndex]; - GetDlgItem(IDC_BARCODE)->SetWindowText(currentdata.barcode); - GetDlgItem(IDC_NAME)->SetWindowText(currentdata.name); - GetDlgItem(IDC_DESCRIPTION)->SetWindowText(currentdata.description); - GetDlgItem(IDC_PLACEMENT)->SetWindowText(currentdata.placement); - GetDlgItem(IDC_STATUS)->SetWindowText(currentdata.status); + GetDlgItem(IDC_BARCODE)->SetWindowText(m_equipment.barcode); + GetDlgItem(IDC_NAME)->SetWindowText(m_equipment.name); + GetDlgItem(IDC_DESCRIPTION)->SetWindowText(m_equipment.description); + GetDlgItem(IDC_PLACEMENT)->SetWindowText(m_equipment.placement); + GetDlgItem(IDC_STATUS)->SetWindowText(m_equipment.status); m_loadingData = false; } @@ -68,17 +67,16 @@ void ResultDetailsDialog::LoadListControls(void) { if (CommonStorage::Instance()->getAdmin() ) { - Equipment currentdata = CommonStorage::Instance()->getSearchResult()[m_resultIndex]; //load Equipment::checkouts CListCtrl *checkouts = (CListCtrl*) GetDlgItem(IDC_CHECKOUTS); checkouts->DeleteAllItems(); - for (int i=0; iInsertItem(i,currentdata.checkouts[i].inits); - checkouts->SetItemText(nItem,1,currentdata.checkouts[i].startdate); - checkouts->SetItemText(nItem,2,currentdata.checkouts[i].enddate); - checkouts->SetItemText(nItem,3,currentdata.checkouts[i].numdays); + for (int i=0; iInsertItem(i, m_equipment.checkouts[i].inits); + checkouts->SetItemText(nItem,1, m_equipment.checkouts[i].startdate); + checkouts->SetItemText(nItem,2, m_equipment.checkouts[i].enddate); + checkouts->SetItemText(nItem,3, m_equipment.checkouts[i].numdays); } checkouts->SetColumnWidth(0,LVSCW_AUTOSIZE_USEHEADER); checkouts->SetColumnWidth(1,LVSCW_AUTOSIZE_USEHEADER); @@ -90,16 +88,16 @@ reservations->DeleteAllItems(); - for (int i=0; iInsertItem(i, tmp); - reservations->SetItemText(nItem,1, currentdata.reservations[i].inits); - reservations->SetItemText(nItem,2, currentdata.reservations[i].startdate); + reservations->SetItemText(nItem, 1, m_equipment.reservations[i].inits); + reservations->SetItemText(nItem, 2, m_equipment.reservations[i].startdate); } - if (currentdata.reservations.size() > 0) + if (m_equipment.reservations.size() > 0) GetDlgItem(IDC_DELRES)->EnableWindow(true); @@ -145,18 +143,10 @@ GetDlgItem(IDC_CHECKOUT)->EnableWindow(CommonStorage::Instance()->getAdmin()); GetDlgItem(IDC_RETURN)->EnableWindow(CommonStorage::Instance()->getAdmin()); - CString status = CommonStorage::Instance()->getSearchResult()[m_resultIndex].status; - - if (status == "Ledig") { - GetDlgItem(IDC_RETURN)->EnableWindow(false); - GetDlgItem(IDC_RESERVE)->EnableWindow(false); - } - - if (status == "Udlånt") - GetDlgItem(IDC_CHECKOUT)->EnableWindow(false); - if (status == "Reserveret") - GetDlgItem(IDC_RETURN)->EnableWindow(false); + m_equipment = CommonStorage::Instance()->getDBLayer()->GetEquipment(m_barcode); + + EnableControls(); LoadData(); LoadListControls(); @@ -201,25 +191,22 @@ void ResultDetailsDialog::OnBnClickedReturn() { - CString barcode = CommonStorage::Instance()->getSearchResult()[m_resultIndex].barcode; - CommonStorage::Instance()->getDBLayer()->ReturnEquipment(barcode); - ((SearchDialog*)CommonStorage::Instance()->getTabCtrl()->m_tabs[0])->OnBnClickedSearch(); - ((ResultDialog*)CommonStorage::Instance()->getTabCtrl()->m_tabs[1])->LoadResults(); - OnOK(); + DatabaseLayer *dblayer = CommonStorage::Instance()->getDBLayer(); + dblayer->ReturnEquipment(m_barcode); + this->ReloadData(); } void ResultDetailsDialog::OnBnClickedCheckout() { - CString status = CommonStorage::Instance()->getSearchResult()[m_resultIndex].status; CheckoutDialog check; - check.m_checkoutMode = true; - + check.m_checkoutMode = true; Reservation topReservation; - if (status == "Reserveret") { - topReservation = CommonStorage::Instance()->getSearchResult()[m_resultIndex].reservations[0]; + if (m_equipment.status == "Reserveret") { + + topReservation = m_equipment.reservations[0]; check.m_reservedTo = topReservation.inits; } @@ -233,12 +220,10 @@ dblayer->CheckoutEquipment(p, eq, atoi(check.m_numdays) ); - if (status == "Reserveret") { //if the equipment was reserved, we must delete the reservation + if (m_equipment.status == "Reserveret") { //if the equipment was reserved, we must delete the reservation dblayer->DeleteReservation(eq.barcode, topReservation.reservationID); } - ((SearchDialog*)CommonStorage::Instance()->getTabCtrl()->m_tabs[0])->OnBnClickedSearch(); - ((ResultDialog*)CommonStorage::Instance()->getTabCtrl()->m_tabs[1])->LoadResults(); - OnOK(); + this->ReloadData(); } } @@ -254,10 +239,7 @@ GetDlgItem(IDC_BARCODE)->GetWindowText(barcode); dblayer->EquipmentReservation(barcode,p); - ((SearchDialog*)CommonStorage::Instance()->getTabCtrl()->m_tabs[0])->OnBnClickedSearch(); - ((ResultDialog*)CommonStorage::Instance()->getTabCtrl()->m_tabs[1])->LoadResults(); - LoadListControls(); - + this->ReloadData(); } } @@ -265,13 +247,42 @@ { int sel = ((CListCtrl*)GetDlgItem(IDC_RESERVATIONS))->GetSelectionMark(); if (sel != -1) { - CString reservationID = CommonStorage::Instance()->getSearchResult()[m_resultIndex].reservations[sel].reservationID; - CString barcode = CommonStorage::Instance()->getSearchResult()[m_resultIndex].barcode; + CString reservationID = m_equipment.reservations[sel].reservationID; + CString barcode = m_equipment.barcode; CommonStorage::Instance()->getDBLayer()->DeleteReservation(barcode, reservationID); - ((SearchDialog*)CommonStorage::Instance()->getTabCtrl()->m_tabs[0])->OnBnClickedSearch(); - ((ResultDialog*)CommonStorage::Instance()->getTabCtrl()->m_tabs[1])->LoadResults(); - LoadListControls(); + this->ReloadData(); + } else { MessageBox("No reservation is selected"); } } + +void ResultDetailsDialog::ReloadData(void) +{ + m_equipment = CommonStorage::Instance()->getDBLayer()->GetEquipment(m_barcode); + this->LoadData(); + this->LoadListControls(); + this->EnableControls(); + + ((SearchDialog*)CommonStorage::Instance()->getTabCtrl()->m_tabs[0])->OnBnClickedSearch(); + ((ResultDialog*)CommonStorage::Instance()->getTabCtrl()->m_tabs[1])->LoadResults(); +} + +void ResultDetailsDialog::EnableControls(void) +{ + if (CommonStorage::Instance()->getAdmin() ) { + if (m_equipment.status == "Ledig") { + GetDlgItem(IDC_CHECKOUT)->EnableWindow(true); + GetDlgItem(IDC_RETURN)->EnableWindow(false); + GetDlgItem(IDC_RESERVE)->EnableWindow(false); + } else if (m_equipment.status == "Udlånt") { + GetDlgItem(IDC_CHECKOUT)->EnableWindow(false); + GetDlgItem(IDC_RETURN)->EnableWindow(true); + GetDlgItem(IDC_RESERVE)->EnableWindow(true); + } else { //m_equipment.status == "Reserveret" + GetDlgItem(IDC_CHECKOUT)->EnableWindow(true); + GetDlgItem(IDC_RETURN)->EnableWindow(false); + GetDlgItem(IDC_RESERVE)->EnableWindow(true); + } + } +}