// AdminDialog.cpp : implementation file // #include "stdafx.h" #include "h6-udlånssystem.h" #include "AdminDialog.h" #include ".\admindialog.h" #include "databaselayer.h" #include "commonstorage.h" #include "Containers.h" #include "UserEditDialog.h" #include "EquipmentEditDialog.h" // AdminDialog dialog IMPLEMENT_DYNAMIC(AdminDialog, CDialog) AdminDialog::AdminDialog(CWnd* pParent /*=NULL*/) : CDialog(AdminDialog::IDD, pParent) { } AdminDialog::~AdminDialog() { } void AdminDialog::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } 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() // AdminDialog message handlers void AdminDialog::OnCancel() { // TODO: Add your specialized code here and/or call the base class //CDialog::OnCancel(); } void AdminDialog::OnOK() { // TODO: Add your specialized code here and/or call the base class //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() { LoadUsers(); } void AdminDialog::OnBnClickedRdequipment() { 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/equipment to delete"); return; } DatabaseLayer *dblayer = CommonStorage::Instance()->getDBLayer(); CString id = list->GetItemText(sel,0); CString name = list->GetItemText(sel,1); CString question; question.Format("Are you sure you want to delete %s : %s ?", id,name); if ( ((CButton*)GetDlgItem(IDC_RDUSERS))->GetCheck() ) { if (MessageBox(question, "Delete user",MB_YESNO) == IDYES) { Person p = CommonStorage::Instance()->getDBLayer()->GetPerson(id); CommonStorage::Instance()->getDBLayer()->DeletePerson(p); LoadUsers(); } } else { if (MessageBox(question,"Delete equipment", MB_YESNO) == IDYES) { Equipment e; e.barcode = id; dblayer->DeleteEquipment(e); LoadEquipment(); } } }