windows-nt/Source/XPSP1/NT/admin/activec/samples/benefits/dialogs.cpp

422 lines
11 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
//+-------------------------------------------------------------------------
//
// 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