--- AdminDialog.cpp 2006/08/30 08:19:13 5 +++ AdminDialog.cpp 2006/08/30 21:57:57 9 @@ -6,6 +6,12 @@ #include "AdminDialog.h" #include ".\admindialog.h" +#include "databaselayer.h" +#include "commonstorage.h" +#include "Containers.h" + +#include "UserEditDialog.h" +#include "EquipmentEditDialog.h" // AdminDialog dialog @@ -26,6 +32,13 @@ BEGIN_MESSAGE_MAP(AdminDialog, CDialog) + ON_BN_CLICKED(IDC_LOGIN, OnBnClickedLogin) + ON_BN_CLICKED(IDC_LOGOUT, OnBnClickedLogout) + ON_BN_CLICKED(IDC_RDUSERS, OnBnClickedRdusers) + ON_BN_CLICKED(IDC_RDEQUIPMENT, OnBnClickedRdequipment) + ON_BN_CLICKED(IDC_NEW, OnBnClickedNew) + ON_BN_CLICKED(IDC_MODIFY, OnBnClickedModify) + ON_BN_CLICKED(IDC_DELETE, OnBnClickedDelete) END_MESSAGE_MAP() @@ -44,3 +57,200 @@ //CDialog::OnOK(); } + +void AdminDialog::OnBnClickedLogin() +{ + CString username, password; + GetDlgItem(IDC_USERNAME)->GetWindowText(username); + GetDlgItem(IDC_PASSWORD)->GetWindowText(password); + + if (username.GetLength()>0) + { + Person p = CommonStorage::Instance()->getDBLayer()->GetPerson(username); + if ( (p.inits.GetLength()>0) && (p.pass == password) && (p.isadmin == 1)) + { + CommonStorage::Instance()->setAdmin(true); + + ShowControls(true); + ((CButton*)GetDlgItem(IDC_RDUSERS))->SetCheck(true); + LoadUsers(); + } + } + GetDlgItem(IDC_USERNAME)->SetWindowText(""); + GetDlgItem(IDC_PASSWORD)->SetWindowText(""); +} + +void AdminDialog::ShowControls(bool login) +{ + GetDlgItem(IDC_USERNAME)->ShowWindow(!login); + GetDlgItem(IDC_PASSWORD)->ShowWindow(!login); + GetDlgItem(IDC_STATIC_USERNAME)->ShowWindow(!login); + GetDlgItem(IDC_STATIC_PASSWORD)->ShowWindow(!login); + GetDlgItem(IDC_LOGIN)->ShowWindow(!login); + + GetDlgItem(IDC_NEW)->ShowWindow(login); + GetDlgItem(IDC_MODIFY)->ShowWindow(login); + GetDlgItem(IDC_DELETE)->ShowWindow(login); + GetDlgItem(IDC_LOGOUT)->ShowWindow(login); + GetDlgItem(IDC_RDUSERS)->ShowWindow(login); + GetDlgItem(IDC_RDEQUIPMENT)->ShowWindow(login); + GetDlgItem(IDC_LIST)->ShowWindow(login); +} + +void AdminDialog::OnBnClickedLogout() +{ + CommonStorage::Instance()->setAdmin(false); + ShowControls(false); +} + +BOOL AdminDialog::OnInitDialog() +{ + CDialog::OnInitDialog(); + + // TODO: Add extra initialization here + CListCtrl *list = (CListCtrl *) GetDlgItem(IDC_LIST); + list->SetExtendedStyle( LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT ); + + + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} + +void AdminDialog::OnBnClickedRdusers() +{ + GetDlgItem(IDC_DELETE)->EnableWindow(true); + LoadUsers(); +} + +void AdminDialog::OnBnClickedRdequipment() +{ + GetDlgItem(IDC_DELETE)->EnableWindow(false); + LoadEquipment(); +} + +void AdminDialog::LoadEquipment(void) +{ + CListCtrl *list = (CListCtrl*) GetDlgItem(IDC_LIST); + list->DeleteAllItems(); + list->DeleteColumn(0); + list->DeleteColumn(1); + + list->InsertColumn(0,"Barcode"); + list->InsertColumn(1,"Name"); + + vector buffer = CommonStorage::Instance()->getDBLayer()->GetEquipmentAll(); + + for (unsigned int i=0; i < buffer.size(); i++) { + int nItem = list->InsertItem(0, buffer[i].barcode); + list->SetItemText(nItem,1,buffer[i].name); + } + + list->DeleteColumn(2); + list->DeleteColumn(3); + list->SetColumnWidth(0, LVSCW_AUTOSIZE); + list->SetColumnWidth(1, 200); +} + + + +void AdminDialog::LoadUsers(void) +{ + CListCtrl *list = (CListCtrl*) GetDlgItem(IDC_LIST); + list->DeleteAllItems(); + + list->DeleteColumn(0); + list->DeleteColumn(1); + + + list->InsertColumn(0,"Inits"); + list->InsertColumn(1,"Name"); + + vector buffer = CommonStorage::Instance()->getDBLayer()->GetPersonAll(); + + for (unsigned int i=0; i < buffer.size(); i++) { + int nItem = list->InsertItem(0, buffer[i].inits); + list->SetItemText(nItem,1,buffer[i].name); + } + + list->DeleteColumn(2); + list->DeleteColumn(3); + + list->SetColumnWidth(0, LVSCW_AUTOSIZE); + list->SetColumnWidth(1, 220); +} + +void AdminDialog::OnBnClickedNew() +{ + if ( ((CButton*)GetDlgItem(IDC_RDUSERS))->GetCheck() ) { + UserEditDialog user; + + if (user.DoModal() == IDOK) { + CommonStorage::Instance()->getDBLayer()->AddPerson( user.m_currentPerson ); + LoadUsers(); + } + + } else { //equipment section + EquipmentEditDialog equipment; + + if (equipment.DoModal() == IDOK) { + CommonStorage::Instance()->getDBLayer()->AddEquipment( equipment.m_currentEquipment ); + LoadEquipment(); + } + } +} + +void AdminDialog::OnBnClickedModify() +{ + CListCtrl *list = (CListCtrl*) GetDlgItem(IDC_LIST); + int sel = list->GetSelectionMark(); + if (sel == -1) { + MessageBox("You must select an user/equipment to modify"); + return; + } + + DatabaseLayer *dblayer = CommonStorage::Instance()->getDBLayer(); + + CString selected = list->GetItemText(sel,0); + + if ( ((CButton*)GetDlgItem(IDC_RDUSERS))->GetCheck() ) { + UserEditDialog user; + user.m_currentPerson = dblayer->GetPerson(selected); + + if (user.DoModal() == IDOK) { + dblayer->UpdatePerson( user.m_currentPerson); + LoadUsers(); + } + + } else { //equipment section + EquipmentEditDialog equipment; + equipment.m_currentEquipment = dblayer->GetEquipment(selected); + + if (equipment.DoModal() == IDOK) { + dblayer->UpdateEquipment( equipment.m_currentEquipment ); + LoadEquipment(); + } + } +} + +void AdminDialog::OnBnClickedDelete() +{ + CListCtrl *list = (CListCtrl*) GetDlgItem(IDC_LIST); + int sel = list->GetSelectionMark(); + + if (sel == -1) { + MessageBox("You must select an user to delete"); + return; + } + + CString inits = list->GetItemText(sel,0); + CString name = list->GetItemText(sel,1); + + CString question; + question.Format("Are you sure you want to delete %s : %s ?", inits,name); + if (MessageBox(question, "Delete",MB_YESNO) == IDYES) { + Person p = CommonStorage::Instance()->getDBLayer()->GetPerson(inits); + CommonStorage::Instance()->getDBLayer()->DeletePerson(p); + LoadUsers(); + } + +}