422 lines
11 KiB
C++
422 lines
11 KiB
C++
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1999 - 1999
|
|
//
|
|
// File: dialogs.cpp
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
// Dialogs.cpp: implementation of the CDialogs class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#include "stdafx.h"
|
|
#include "resource.h"
|
|
#include "Dialogs.h"
|
|
#include "WindowsX.h"
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[]=__FILE__;
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
// {01B4A693-D970-11d1-8474-00104B211BE5}
|
|
static const GUID HealthPlan1GUID =
|
|
{ 0x1b4a693, 0xd970, 0x11d1, { 0x84, 0x74, 0x0, 0x10, 0x4b, 0x21, 0x1b, 0xe5 } };
|
|
|
|
// {01B4A694-D970-11d1-8474-00104B211BE5}
|
|
static const GUID HealthPlan2GUID =
|
|
{ 0x1b4a694, 0xd970, 0x11d1, { 0x84, 0x74, 0x0, 0x10, 0x4b, 0x21, 0x1b, 0xe5 } };
|
|
|
|
// {01B4A693-D970-11d1-8474-00104B211BE5}
|
|
static const GUID InvestmentPlan1GUID =
|
|
{ 0x1b4a695, 0xd970, 0x11d1, { 0x84, 0x74, 0x0, 0x10, 0x4b, 0x21, 0x1b, 0xe5 } };
|
|
|
|
// {01B4A694-D970-11d1-8474-00104B211BE5}
|
|
static const GUID InvestmentPlan2GUID =
|
|
{ 0x1b4a696, 0xd970, 0x11d1, { 0x84, 0x74, 0x0, 0x10, 0x4b, 0x21, 0x1b, 0xe5 } };
|
|
|
|
// {01B4A694-D970-11d1-8474-00104B211BE5}
|
|
static const GUID InvestmentPlan3GUID =
|
|
{ 0x1b4a697, 0xd970, 0x11d1, { 0x84, 0x74, 0x0, 0x10, 0x4b, 0x21, 0x1b, 0xe5 } };
|
|
|
|
//
|
|
// Initialize the static plans for health enrollment.
|
|
//
|
|
HEALTHPLANDATA g_HealthPlans[ 2 ] =
|
|
{
|
|
{ L"Plan 1, PPO", &HealthPlan1GUID },
|
|
{ L"Plan 2, Share Pay", &HealthPlan2GUID },
|
|
};
|
|
|
|
//
|
|
// Initialize the static plans for health enrollment.
|
|
//
|
|
INVESTMENTPLANDATA g_InvestmentPlans[ 3 ] =
|
|
{
|
|
{ L"Mild Growth Fund", &InvestmentPlan1GUID },
|
|
{ L"General Fund", &InvestmentPlan2GUID },
|
|
{ L"Extrememe Growth Fund", &InvestmentPlan3GUID },
|
|
};
|
|
|
|
//
|
|
// Initialize the static plans for building information.
|
|
//
|
|
BUILDINGDATA g_Buildings[ 3 ] =
|
|
{
|
|
{ L"Human Resources Building", L"Northwest Campus", 0x00000001 },
|
|
{ L"R. & D. Building", L"Northwest Campus", 0x00000002 },
|
|
{ L"Test Facilities", L"Off-Campus", 0x00000004 },
|
|
};
|
|
|
|
#ifdef _BENEFITS_DIALOGS
|
|
|
|
//
|
|
// Handler to initialize values in dialog. This should map data from the
|
|
// employee to the dialog controls. In this case, all these values will be
|
|
// persisted by the root node.
|
|
//
|
|
LRESULT CHealthEnrollDialog::OnInitDialog( UINT uiMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled )
|
|
{
|
|
UNUSED_ALWAYS( uiMsg );
|
|
UNUSED_ALWAYS( wParam );
|
|
UNUSED_ALWAYS( lParam );
|
|
UNUSED_ALWAYS( fHandled );
|
|
_ASSERTE( m_pEmployee != NULL );
|
|
USES_CONVERSION;
|
|
int nSel = 0;
|
|
|
|
// Add a list of static plan names to the combo.
|
|
CWindow wndCombo = GetDlgItem( IDC_COMBO_BENEFITPLAN );
|
|
for ( int i = 0; i < sizeof( g_HealthPlans ) / sizeof( HEALTHPLANDATA ); i++ )
|
|
{
|
|
int nIndex = ComboBox_AddString( wndCombo, W2CT( g_HealthPlans[ i ].pstrName ) );
|
|
if ( nIndex != CB_ERR )
|
|
{
|
|
//
|
|
// Set the item data of this string.
|
|
//
|
|
ComboBox_SetItemData( wndCombo, nIndex, g_HealthPlans[ i ].pId );
|
|
|
|
//
|
|
// Determine if this matche's the employee's current plan so that
|
|
// the current selection can be set.
|
|
//
|
|
if ( m_pEmployee->m_Health.PlanID == *g_HealthPlans[ i ].pId )
|
|
nSel = nIndex;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Set the current selection.
|
|
//
|
|
ComboBox_SetCurSel( wndCombo, nSel );
|
|
|
|
return( TRUE );
|
|
}
|
|
|
|
//
|
|
// Stores the data and attempts to enroll the given user in the specified
|
|
// health plan.
|
|
//
|
|
LRESULT CHealthEnrollDialog::OnOK( WORD /*wNotifyCode*/, WORD /* wID */, HWND /*hWndCtl*/, BOOL& /*bHandled*/ )
|
|
{
|
|
ENROLLPARAMS EnrollParams;
|
|
GUID* pIdPlan = NULL;
|
|
|
|
//
|
|
// Get prior enrollment.
|
|
//
|
|
EnrollParams.fEnrolled = IsDlgButtonChecked( IDC_CHK_PRIORCOVERAGE ) == BST_CHECKED;
|
|
if ( EnrollParams.fEnrolled )
|
|
{
|
|
//
|
|
// Get the prior enrollment information.
|
|
//
|
|
GetDlgItemText( IDC_EDIT_INSURANCECOMPANY, EnrollParams.szInsurerName, sizeof( EnrollParams.szInsurerName ) * sizeof( TCHAR ) );
|
|
GetDlgItemText( IDC_EDIT_POLICYNUMBER, EnrollParams.szPolicyNumber, sizeof( EnrollParams.szInsurerName ) * sizeof( TCHAR ) );
|
|
if ( EnrollParams.szInsurerName[ 0 ] == ' ' || EnrollParams.szPolicyNumber[ 0 ] == ' ' )
|
|
{
|
|
//
|
|
// The dialog text must contain some characters.
|
|
//
|
|
MessageBox( _T( "The insurance company or policy number you entered is invalid." ) );
|
|
}
|
|
}
|
|
|
|
//
|
|
// Retrieve the selected enrollment plan.
|
|
//
|
|
CWindow wndCombo = GetDlgItem( IDC_COMBO_BENEFITPLAN );
|
|
int nIndex = ComboBox_GetCurSel( wndCombo );
|
|
if ( nIndex != CB_ERR )
|
|
{
|
|
//
|
|
// Get the associated item data with the combobox entry.
|
|
//
|
|
pIdPlan = (GUID*) ComboBox_GetItemData( wndCombo, nIndex );
|
|
|
|
//
|
|
// Actually entroll the employee in the health plan.
|
|
//
|
|
if ( pIdPlan != NULL && Enroll( pIdPlan, &EnrollParams ) )
|
|
{
|
|
//
|
|
// Store the plan to our employee.
|
|
//
|
|
memcpy( &m_pEmployee->m_Health.PlanID, pIdPlan, sizeof( GUID ) );
|
|
|
|
//
|
|
// Inform the user that we successfully enrolled the employee.
|
|
//
|
|
MessageBox( _T( "The employee was successfully registered." ) );
|
|
|
|
::EndDialog( m_hWnd, IDOK );
|
|
}
|
|
else
|
|
{
|
|
//
|
|
// There was an error. Inform the user.
|
|
//
|
|
MessageBox( _T( "There was an error processing your enrollment info." ) );
|
|
}
|
|
}
|
|
|
|
return( TRUE );
|
|
}
|
|
|
|
//
|
|
// A stub function that could be used to enroll the employee.
|
|
//
|
|
BOOL CHealthEnrollDialog::Enroll( GUID* pPlan, PENROLLPARAMS pParams )
|
|
{
|
|
UNUSED_ALWAYS( pPlan );
|
|
UNUSED_ALWAYS( pParams );
|
|
|
|
// For demo purposes, this function does nothing but return success.
|
|
// This is where one might make a request to a remote database, etc.
|
|
return( TRUE );
|
|
}
|
|
|
|
//
|
|
// Sets the initial values of the dialog to the employee's current
|
|
// investment options.
|
|
//
|
|
LRESULT CRetirementEnrollDialog::OnInitDialog( UINT uiMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled )
|
|
{
|
|
UNUSED_ALWAYS( uiMsg );
|
|
UNUSED_ALWAYS( wParam );
|
|
UNUSED_ALWAYS( lParam );
|
|
UNUSED_ALWAYS( fHandled );
|
|
_ASSERTE( m_pEmployee != NULL );
|
|
USES_CONVERSION;
|
|
int nSel = 0;
|
|
|
|
//
|
|
// Set the edit control containing the benefit amount.
|
|
//
|
|
SetDlgItemInt( IDC_EDIT_CONTRIBUTION, m_pEmployee->m_Retirement.nContributionRate );
|
|
|
|
//
|
|
// Cycle through the benefit plans and add them to the combo selection.
|
|
//
|
|
// Add a list of static plan names to the combo.
|
|
CWindow wndCombo = GetDlgItem( IDC_COMBO_INVESTMENTFUNDS );
|
|
for ( int i = 0; i < sizeof( g_InvestmentPlans ) / sizeof( INVESTMENTPLANDATA ); i++ )
|
|
{
|
|
int nIndex = ComboBox_AddString( wndCombo, W2CT( g_InvestmentPlans[ i ].pstrName ) );
|
|
if ( nIndex != CB_ERR )
|
|
{
|
|
//
|
|
// Set the item data of this string.
|
|
//
|
|
ComboBox_SetItemData( wndCombo, nIndex, g_InvestmentPlans[ i ].pId );
|
|
|
|
//
|
|
// Determine if this matche's the employee's current plan so that
|
|
// the current selection can be set.
|
|
//
|
|
if ( m_pEmployee->m_Health.PlanID == *g_InvestmentPlans[ i ].pId )
|
|
nSel = nIndex;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Set the current selection.
|
|
//
|
|
ComboBox_SetCurSel( wndCombo, nSel );
|
|
|
|
|
|
return( TRUE );
|
|
}
|
|
|
|
//
|
|
// Stores the data and attempts to enroll the given user in the specified
|
|
// health plan.
|
|
//
|
|
LRESULT CRetirementEnrollDialog::OnOK( WORD /*wNotifyCode*/, WORD /* wID */, HWND /*hWndCtl*/, BOOL& /*bHandled*/ )
|
|
{
|
|
GUID* pIdPlan = NULL;
|
|
|
|
//
|
|
// Get the new enrollment amount.
|
|
//
|
|
int nNewRate = GetDlgItemInt( IDC_EDIT_CONTRIBUTION );
|
|
|
|
//
|
|
// Retrieve the selected enrollment plan.
|
|
//
|
|
CWindow wndCombo = GetDlgItem( IDC_COMBO_INVESTMENTFUNDS );
|
|
int nIndex = ComboBox_GetCurSel( wndCombo );
|
|
if ( nIndex != CB_ERR )
|
|
{
|
|
//
|
|
// Get the associated item data with the combobox entry.
|
|
//
|
|
pIdPlan = (GUID*) ComboBox_GetItemData( wndCombo, nIndex );
|
|
|
|
//
|
|
// Actually entroll the employee in the health plan.
|
|
//
|
|
if ( pIdPlan != NULL && Enroll( pIdPlan, nNewRate ) )
|
|
{
|
|
//
|
|
// Store the plan to our employee.
|
|
//
|
|
memcpy( &m_pEmployee->m_Retirement.PlanID, pIdPlan, sizeof( GUID ) );
|
|
|
|
//
|
|
// Inform the user that we successfully enrolled the employee.
|
|
//
|
|
MessageBox( _T( "The employee was successfully registered." ) );
|
|
|
|
::EndDialog( m_hWnd, IDOK );
|
|
}
|
|
else
|
|
{
|
|
//
|
|
// There was an error. Inform the user.
|
|
//
|
|
MessageBox( _T( "There was an error processing your enrollment info." ) );
|
|
}
|
|
}
|
|
|
|
return( TRUE );
|
|
}
|
|
|
|
//
|
|
// A stub function that could be used to enroll the employee.
|
|
//
|
|
BOOL CRetirementEnrollDialog::Enroll( GUID* pPlan, int nNewRate )
|
|
{
|
|
UNUSED_ALWAYS( pPlan );
|
|
UNUSED_ALWAYS( nNewRate );
|
|
|
|
// For demo purposes, this function does nothing but return success.
|
|
// This is where one might make a request to a remote database, etc.
|
|
return( TRUE );
|
|
}
|
|
|
|
//
|
|
// Sets the initial values of the dialog to the employee's current
|
|
// investment options.
|
|
//
|
|
LRESULT CBuildingAccessDialog::OnInitDialog( UINT uiMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled )
|
|
{
|
|
UNUSED_ALWAYS( uiMsg );
|
|
UNUSED_ALWAYS( wParam );
|
|
UNUSED_ALWAYS( lParam );
|
|
UNUSED_ALWAYS( fHandled );
|
|
USES_CONVERSION;
|
|
_ASSERTE( m_pEmployee != NULL );
|
|
|
|
//
|
|
// Cycle through the benefit plans and add them to the combo selection.
|
|
//
|
|
// Add a list of static plan names to the combo.
|
|
CWindow wndCombo = GetDlgItem( IDC_COMBO_BUILDINGS );
|
|
for ( int i = 0; i < sizeof( g_Buildings ) / sizeof( BUILDINGDATA ); i++ )
|
|
{
|
|
int nIndex = ComboBox_AddString( wndCombo, W2CT( g_Buildings[ i ].pstrName ) );
|
|
if ( nIndex != CB_ERR )
|
|
{
|
|
//
|
|
// Set the item data of this string.
|
|
//
|
|
ComboBox_SetItemData( wndCombo, nIndex, g_Buildings[ i ].dwId );
|
|
}
|
|
}
|
|
|
|
//
|
|
// Set the default current selection to the first item.
|
|
//
|
|
ComboBox_SetCurSel( wndCombo, 0 );
|
|
|
|
return( TRUE );
|
|
}
|
|
|
|
//
|
|
// Stores the data and attempts to enroll the given user in the specified
|
|
// health plan.
|
|
//
|
|
LRESULT CBuildingAccessDialog::OnOK( WORD /*wNotifyCode*/, WORD /* wID */, HWND /*hWndCtl*/, BOOL& /*bHandled*/ )
|
|
{
|
|
//
|
|
// Retrieve the selected enrollment plan.
|
|
//
|
|
CWindow wndCombo = GetDlgItem( IDC_COMBO_BUILDINGS );
|
|
int nIndex = ComboBox_GetCurSel( wndCombo );
|
|
if ( nIndex != CB_ERR )
|
|
{
|
|
DWORD dwBuildingId;
|
|
|
|
//
|
|
// Get the associated item data with the combobox entry.
|
|
//
|
|
dwBuildingId = ComboBox_GetItemData( wndCombo, nIndex );
|
|
|
|
//
|
|
// Actually entroll the employee in the health plan.
|
|
//
|
|
if ( GrantAccess( dwBuildingId ) )
|
|
{
|
|
//
|
|
// Store the plan to our employee.
|
|
//
|
|
m_pEmployee->m_Access.dwAccess |= dwBuildingId;
|
|
|
|
//
|
|
// Inform the user that we successfully enrolled the employee.
|
|
//
|
|
MessageBox( _T( "The employee was successfully granted access." ) );
|
|
|
|
::EndDialog( m_hWnd, IDOK );
|
|
}
|
|
else
|
|
{
|
|
//
|
|
// There was an error. Inform the user.
|
|
//
|
|
MessageBox( _T( "There was an error granting the employee access." ) );
|
|
}
|
|
}
|
|
|
|
return( TRUE );
|
|
}
|
|
|
|
//
|
|
// A stub function that could be used to enroll the employee.
|
|
//
|
|
BOOL CBuildingAccessDialog::GrantAccess( DWORD dwBuildingId )
|
|
{
|
|
UNUSED_ALWAYS( dwBuildingId );
|
|
|
|
// For demo purposes, this function does nothing but return success.
|
|
// This is where one might make a request to a remote database, etc.
|
|
return( TRUE );
|
|
}
|
|
|
|
#endif |