It CIS 470 Design Specification Team: Team B Team Members: Cale Coyle Michael Kozy Brian Maerhofer Christopher Ozaetta Dave Rigsby Date: August 27, 2007 Project Tile Taylor’s Professional Services – eCommerce Web Site 1. Scope 1.1. Project Objective The purpose of this project is to create a web-based application that will fill the needs for TPS with staffing requests. To create a web site so that their clients can complete a staffing request over the internet. This system will be design to allow the maintenance and retrieval of four types of data: Staffing Requests Contracts Staff Information User Access Control 1.2. Deliverables This system will manage employment information from user input. The project will also include various access/security levels depending on the user type. Each type of user has different functionality to be able to maintenance the system fully. 1.3. Milestones Milestone Due Date Project Plan July 15, 2007 Requirements Specification July 22, 2007 Team Charter July 22, 2007 System Design Specification August 5, 2007 Component/Unit Code August 19, 2007 Testing Complete August 26, 2007 Final Presentation August 27, 2007 1.4. Technical Requirements The system will be designed to be hosted using Microsoft Internet Information Server running on the Windows Server 2000 operating system. This system is also designed for 20 con-current users. 1.5. Limits and Exclusions Non-authenticated users which browse the site (Public Users) will be able to view the home page which will contain a link to the Login page which will allow users to authenticate to the web site. 1.6. System Description Taylor’s Professional Services (TPS) is a technical and engineering staffing service. TPS wants to provide a web site so that their clients can complete a staffing request over the internet. In addition, TPS wants to provide their clients with a list of potential candidates based on experience, education, salary, and location. The purpose of this project is to create a web-based application that will fill the needs for TPS with staffing requests. The following is a basic model of how our website will allow all these functions and interactions between the staff, client, and contract manager. 1.7. Major Software Functions 1.7.1 User Authentication The application will be partitioned into two main sections, public and authenticated. The public portion of the web site will allow visitors to view the front page, the login page, and the contact us web pages. In order to increase site security, automatic logins (cookie-based, etc) will not be supported. In addition, the Login will occur over Secure Socket (HTTPS) in order to help maintain the confidentiality of information. Authentication credentials will consist of a user name and password that will be validated by the back end server processes. The User Credentials Validation process will compare the supplied credentials against user account information in the database and will return a true or false value. If the return value is true, then a match for the supplied credentials was found in the database. If the return value is false then no match was found. If the credentials cannot be validated, the Login page will display an error message indicating that the user name and password could not be validated. As a hacker deterrent, the error message will not indicate which value (user name or password) was invalid. In addition, the account will become locked if within a two minute period three login attempts are unsuccessful. Upon account lockout, the Email contact for system messages will be notified that the account has been locked. The administrator may then take corrective actions. Though the password that exists in the database will not be transmitted back to the client, the password will be encrypted for enhanced security purposes. 1.7.2 Access Control The site administrator will have the ability to define system roles which will be granted permissions to specific pages on the web site. A user may only be assigned to a system role. Multiple role assignments will not be supported. The creation and configuration of roles will allow the administrator flexibility in assigning permissions to system roles, thus negating the need for multiple role assignment. Users will be assigned a system role and will inherit access permissions from the assigned system role. The default system roles are Administrator, Client, Staff, and Contract Manager Administrator The initial system configuration will include a default Administrative user name and password. This default account will be associated with the Administrator. The Administrator role will have the ability to perform the following actions: Create User Profiles Update User Profiles Delete User Profiles Site Configuration SMTP Server Configuration System Role Administration Email notification contact (must be a user assigned to the Administrator role) The goal of the Administrator role is to administer the technical portions of the application as well as supporting database records and configuration data. The Administrator will not have the ability to maintain business level data such as staffing requests and contracts. The business level data will be maintainable by the appropriate business level system roles. Client The client system role is intended for users which are TPS customers. This role allows assigned users to perform the following actions: Create Staffing Requests Search Staffing Requests Search Staff Member profiles Select Staff Members for Staffing Requests Submit Staffing Requests This role provides assigned users the ability to add information to their profiles such as resumes. They can review the job openings to see which suits their needs the best. Staff Member This system role is intended for users which are considered TPS staff which may be used to fill and work on staffing requests. Users assigned to this role may perform the following actions: Update Staff Member Profile o Update Resume o Update Picture o Update Personal Information o Update User Profile (password) View Staffing Request Assignment History View Pending Staffing Request Assignments (own) Contract Manager Users assigned to this role are considered to be TPS employees who are authorized to administer contracts, staffing requests, and staff member information. Users assigned to this role may perform the following actions: Validate Staffing Requests Search Staffing Requests Search Staff Member profiles Update Staff Member Profile o Update Resume o Update Picture o Update Personal Information o Update User Profile (password) View Staffing Request Assignment History o By staff member o By contract o By customer Outside of the default and defined system roles exists the non-authenticated users, or Public Users. Public users are non-authenticated users which browse the site. Public users will be able to view the home page. The home page will contain a links to the Login, Contact TPS, and About TPS web pages. The Login page will allow public users to authenticate to the web site. Users that do not authenticate will only be able to view the public pages of the web site. 1.7.3 Staffing Request Processing Clients will have the ability to create and submit staffing requests to the contract manager. The staffing requests will consist of the following information: Attribute STAFFING_REQUEST_ID STAFFING_REQUEST_DESC STATUS_ID FILL_STATUS_ID CONTRACT_ID Description Unique Key used to identify the staffing request within the database. This value will be auto-generated. A description of the staffing request. This value will be specified by the Client. A value that specifies the status of the staffing request. The valid values are found in the STAFFING_REQUEST_STATUS_TYPES table. This value will be auto-assigned by the system during the creation of the staffing request. This value is used to indicate the fill status of the staffing request. Valid values are found in the STAFF_FILL_STATUS table. This value represents the contract for which the staffing request is being created. The client will select this value from a list of contracts (non-expired) associated with their CLIENT_ID. The client will also have the ability to select up to three staff members which to assign to the staffing request. The client will have the ability to search for staff members based on experience, education, salary (hourly rate), and location. Staff members with an hourly rate outside of the CONTRACT_HIGH_FEE and CONTRACT_LOW_FEE value range may not be added to the request. Selected staff members will be recorded into the STAFFING_REQUEST_STAFF table using the following attribute mappings: STAFFING_REQUEST_STAFF.STAFFING_REQUEST_I D = STAFFING_REQUEST.STAFFING_REQUEST_ID STAFFING_REQUEST_STAFF.EMPLOYEE_ID = TPS_STAFF.EMPLOYEE_ID Once the staffing request has been submitted by the client, the system will send both the client and the contract manager an Email. The email that the client receives will contain the following verbiage: Subject: Staffing Request #[Request ID] Received. Dear [Contact Name] We have received your staffing request. A contract manager will validate your staffing request within 24 hours. Thank you Taylor’s Professional Services Inc. support@tps-inc.net The contract manager will then login to the system and retrieve the staffing request specified in the Email. The contract manager will then perform the manual validation steps and mark the request as valid or invalid. If the request is deemed invalid then the contract manager will provide an explanation as to why the request was rejected. After the contract manager has validated the staffing request, an Email will be sent to the user that submitted the request. The Email will specify whether the staffing request was valid or invalid. 1.7.4 Staffing Request Validation Once the client submits a request, the contract manager must validate the request before it may continue processing through the system. For the initial rollout of this product, the validation of the staffing request is based on a manual process executed by the contract manager. 1.7.5 Contract Maintenance The contract manager will have the ability to create, modify, and retrieve contracts. The contract manager will have the ability to specify values for the following contract attributes: Attribute CLIENT_ID CONTRACT_NUMBER CONTRACT_BEGIN_DATE CONTRACT_END_DATE CONTRACT_HIGH_FEE CONTRACT_LOW_FEE Source Table TPS_CONTRACTS TPS_CONTRACTS TPS_CONTRACTS TPS_CONTRACTS TPS_CONTRACTS TPS_CONTRACTS Contract Creation Rules The CLIENT_ID must be specified and may be selected from a drop-down list which displays the available organization names from the TPS_CLIENTS table. The CONTRACT_NUMBER cannot be empty and must be specified. The CONTRACT_BEGIN_DATE and CONTRACT_END_DATE attributes must be specified. The CONTRACT_END_DATE must be a higher value than CONTRACT_BEGIN_DATE. The CONTRACT_HIGH_FEE and COTNRACT_LOW_FEE columns represent the minimum and maximum hourly rates of TPS_STAFF which the contract will allow. Both of these attributes must be specified. The COTNRACT_HIGH_FEE must be a value greater than or equal to the CONTRACT_LOW_FEE. Once a contract has been created, the CLIENT_ID attribute may not be altered by the contract manager. Search The contract manager will have the ability to search contracts by any combination of the following attributes: CLIENT_ID (mapped via ORG_NAME) CONTRACT_NUMBER CONTRACT_BEGIN_DATE CONTRACT_END_DATE CONTRACT_HIGH_FEE CONTRACT_LOW_FEE 1.7.6 Staff Member Maintenance Staff members will have the ability to login to the system and modify the nonsystem level attributes (such as system role) of their user profile. Staff members will have the ability to modify the following attributes of their user profile: Attribute EMP_FIRST_NAME EMP_LAST_NAME EMP_ADDRESS EMP_CITY EMP_STATE EMP_EMAIL EMP_PHONE EMP_MOBILE_PHONE PASSWORD STAFF_RESUME STAFF_PICTURE Source Table TPS_EMPLOYEES TPS_EMPLOYEES TPS_EMPLOYEES TPS_EMPLOYEES TPS_EMPLOYEES TPS_EMPLOYEES TPS_EMPLOYEES TPS_EMPLOYEES TPS_USERS TPS_STAFF TPS_STAFF 1.7.7 User Profile Maintenance All users will have the ability to maintain their user profile. Users will have the ability to maintain non-system level attributes (such as system role) of their profile. The following lists the profile attributes which a contract manager may modify: Attribute EMP_FIRST_NAME EMP_LAST_NAME EMP_ADDRESS EMP_CITY EMP_STATE EMP_EMAIL EMP_PHONE Source Table TPS_EMPLOYEES TPS_EMPLOYEES TPS_EMPLOYEES TPS_EMPLOYEES TPS_EMPLOYEES TPS_EMPLOYEES TPS_EMPLOYEES EMP_MOBILE_PHONE PASSWORD TPS_EMPLOYEES TPS_USERS The following lists the profile attributes which a client may modify: Attribute CLIENT_NAME* CLIENT_ADDRESS* CLIENT_CITY* CLIENT_STATE* CLIENT_ZIP* CONTACT_FIRST_NAME CONTACT_LAST_NAME CONTACT_EMAIL CONTACT_PHONE CONTACT_TYPE PASSWORD Source Table TPS_CLIENTS TPS_CLIENTS TPS_CLIENTS TPS_CLIENTS TPS_CLIENTS TPS_CLIENT_CONTACTS TPS_CLIENT_CONTACTS TPS_CLIENT_CONTACTS TPS_CLIENT_CONTACTS TPS_CLIENT_CONTACTS TPS_USERS *Only Client Contacts with a role from the TPS_ROLES table with the IS_CLIENT_ADMIN flag set to true will have the ability to modify these attributes. Clients that are not mapped to an IS_CLIENT_ADMIN type of role will only be able to maintain their own TPS_CLIENT_CONTACT record information. 1.8. Database Description Microsoft Access will serve as the database for this project. The database is designed to the third normal form. 1.8.1 Data Dictionary Table Name Column Name Description of Data Data Type Len NOT NULL P K Y Y F K DEGREE_TYPE_ID Unique Identifier within the system by which to identify the record AUTONUMBER DEGREE_TYPE_NAME The name of the degree type (EG: PhD, Bachelors, etc) TEXT EDUCATION_ID Unique Identifier within the system by which to identify the record AUTONUMBER Y EMPLOYEE_ID The ID of the Employee (of Staff Member) to which the education record belongs NUMBER Y Y DEGREE_TYPE_ID The ID of the Degree Type for this degree NUMBER Y Y DEGREE_TYPES 30 Y STAFF_EDUCATION Y Table Name Column Name Description of Data Data Type Len NOT NULL EDUCATION_DEGREE_NAME A description of the type of degree (EG: Computer Information Systems, Physics, etc) TEXT 255 Y EDUCATION_DEGREE_YEAR The year in which the degree was earned INTEGER EDUCATION_DEGREE_LOCATION The organization from which the degree was obtained (EG: DeVry University) TEXT FILL_STATUS_ID Unique Identifier within the system by which to identify the record AUTONUMBER FILL_STATUS_DESC The description of the fill status TEXT IS_FILLED_FLAG Flag indicating whether this status represents a status of filled YES/NO Y IS_UNFILLED_FLAG Flag indicating whether this status represents a status of unfilled YES/NO Y P K Y 255 STAFF_FILL_STATUS STAFFING_REQUEST Y 255 Y Y F K Table Name Column Name Description of Data Data Type Len NOT NULL P K Y Y F K STAFFING_REQUEST_ID Unique Identifier within the system by which to identify the record AUTONUMBER STAFFING_REQUEST_DESC Description of the staffing request TEXT 255 Y WORK_LOCATION Location in which the work for the request will take place. TEXT 255 Y FROM_DATE The date on which the work will begin DATE Y TO_DATE The date on which the work will end DATE Y TOTAL_TIME The total amount of work required between the FROM and TO date. NUMBER Y TIME_UNITS_ID The unit of measure for the TOTAL_TIME NUMBER Y Y STATUS_ID The Status ID of the staffing request NUMBER Y Y FILL_STATUS_ID The Fill Status ID of the staffing request NUMBER Y Y CONTRACT_ID The Contract ID against which the staffing NUMBER Y Y Table Name Column Name Description of Data Data Type Len 255 NOT NULL P K Y F K request is being filed. COMMENTS Comments or notes concerning the staffing request. TEXT STAFFING_REQUEST_STAFF_ID Unique Identifier within the system by which to identify the record YES/NO Y STAFFING_REQUEST_ID Staffing Request for which the staff member is being requested YES/NO Y Y EMPLOYEE_ID The Employee ID of the staff member selected for the staffing request YES/NO Y Y FILL_STATUS_ID The Fill Status ID for the staff member record YES/NO Y Y STATUS_ID Unique Identifier within the system by which to identify the record AUTONUMBER Y STATUS_NAME The short name for the status TEXT STAFFING_REQUEST_STAFF STAFFING_REQUEST_STATUS_T YPES 20 Y Y Table Name Column Name Description of Data Data Type Len NOT NULL IS_VALID_FLAG Flag indicating whether this status represents a valid request YES/NO Y IS_INVALID_FLAG Flag indicating whether this status represents an invalid request YES/NO Y IS_CLOSED_FLAG Flag indicating whether this status represents a closed request YES/NO Y IS_OPEN_FLAG Flag indicating whether this status represents an open request YES/NO Y IS_PENDING_FLAG Flag indicating whether this status represents a pending request YES/NO Y TIME_UNIT_ID Unique Identifier within the system by which to identify the record AUTONUMBER Y TIME_UNIT_NAME The name given to the unit of time. For example: Hours, Days, Months, Years. TEXT P K TIME_UNITS TPS_CLIENT_CONTACTS 15 Y Y F K Table Name Column Name Description of Data Data Type CONTACT_ID Unique Identifier within the system by which to identify the record CLIENT_ID Len NOT NULL P K AUTONUMBER Y Y The Client ID to which the contact is associated NUMBER Y CONTACT_FIRST_NAME The first name of the contact TEXT 40 Y CONTACT_LAST_NAME The last name of the contact TEXT 40 Y CONTACT_EMAIL The Email address for the contact TEXT 120 Y CONTACT_PHONE The phone number for the contact TEXT 20 CONTACT_TYPE A note describing the purpose of the contact (EG: Accounts Payable Manager) TEXT 255 USER_ID The User ID of the contact NUMBER Y CLIENT_ID Unique Identifier within the system by which to identify the record AUTONUMBER Y F K Y Y TPS_CLIENTS Y Table Name Column Name Description of Data Data Type Len NOT NULL CLIENT_NAME The name of the client TEXT 80 Y CLIENT_ADDRESS The address of the client TEXT 255 CLIENT_CITY The city in which the client is based TEXT 40 CLIENT_STATE The state in which the client is based TEXT 2 CLIENT_ZIP The zip code in which the client is based TEXT 9 CONTRACT_ID Unique Identifier within the system by which to identify the record AUTONUMBER Y CLIENT_ID The client to which the contract belongs NUMBER Y CONTRACT_NUMBER A value assigned by the contract manager that identifies the contract as known by TPS and the customer TEXT COTNRACT_BEGIN_DATE The first date on which the contract is valid DATE Y CONTRACT_END_DATE The last date on which DATE Y P K F K TPS_CONTRACTS 80 Y Y Y Table Name Column Name Description of Data Data Type Len NOT NULL P K F K the contract is valid CONTRACT_HIGH_FEE The highest hourly fee allowed by the contract CURRENCY Y CONTRACT_LOW_FEE The lowest hourly fee allowed by the contract CURRENCY Y DEPT_NO Unique Identifier within the system by which to identify the record AUTONUMBER Y Y DEPT_NAME The name of the department TEXT EMPLOYEE_ID Unique Identifier within the system by which to identify the record AUTONUMBER Y Y USER_ID The user account to which the employee record is linked NUMBER Y EMP_FIRST_NAME The first name of the employee TEXT 40 Y EMP_LAST_NAME The last name of the employee TEXT 40 Y TPS_DEPARTMENTS 40 TPS_EMPLOYEES Y Table Name Column Name Description of Data Data Type Len NOT NULL EMP_ADDRESS The address of the employee TEXT 255 EMP_CITY The city in which the employee lives TEXT 40 EMP_STATE The state in which the employee lives TEXT 2 EMP_EMAIL The employee’s Email address TEXT 120 Y EMP_PHONE The employee’s phone number TEXT 20 Y EMP_MOBILE_PHONE The employee’s mobile phone number TEXT 20 DEPT_NO The Department to which the employee belongs NUMBER Y IS_STAFF Flag indicating whether this employee is a billable staff member YES/NO Y FEATURE_ID Unique Identifier within the system by which to identify the record AUTONUMBER Y P K F K Y TPS_FEATURES Y Table Name Column Name Description of Data Data Type Len NOT NULL P K F K FEATURE_PAGE_NAME The page name of the feature TEXT 255 Y FEATURE_DESCRIPTION A simple description of the feature TEXT 50 Y FEATURE_GROUP The group to which the feature belongs TEXT 30 FEATURE_ROLE_ID Unique Identifier within the system by which to identify the record AUTONUMBER Y FEATURE_ID The Feature ID to be associated with a given role NUMBER Y Y ROLE_ID The role which will be granted access to the specified feature NUMBER Y Y DIRECT_ACCESS Specified whether or not the role has direct access to this feature YES/NO Y ROLE_ID Unique Identifier within the system by which to identify the record AUTONUMBER Y TPS_ROLE_ACCESS_CONTROL Y TPS_ROLES Y Table Name Column Name Description of Data Data Type Len NOT NULL ROLE_NAME The name of the role TEXT 40 Y IS_SYSTEM_ADMIN Flag indicating whether the role is a System Administrator role YES/NO Y IS_CLIENT_ADMIN Flag indicating whether the role is a Client Administrator role YES/NO Y IS_CLIENT_ROLE Flag indicating whether the role is a client assignable role (only by client users with the IS_CLIENT_ADMIN flag) YES/NO Y IS_CONTRACT_MGR Flag indicating whether the role is a Contract Manager role YES/NO Y IS_STAFF Flag indicating whether the role is a staff role YES/NO Y EMPLOYEE_ID Unique Identifier within the system by which to identify the record AUTONUMBER Y STAFF_RESUME The resume of the staff member OLE Object Y P K TPS_STAFF Y F K Table Name Column Name Description of Data Data Type Len NOT NULL STAFF_PICTURE A picture of the staff member OLE Object STAFF_HOURLY_RATE The hourly rate of the staff member CURRENCY Y YEARS_EXPERIENCE The staff member’s years of experience NUMBER Y IS_AVAILABLE A flag indicating whether or not the staff member is available YES/NO Y RESUME_FILE_NAME A logical name for the resume file. When the staff member’s resume is downloaded this is the name by which it will be downloaded. TEXT USER_ID Unique Identifier within the system by which to identify the record AUTONUMBER USERNAME The name of the user TEXT 30 Y PASSWORD Encrypted user password TEXT 20 Y ROLE_ID The role assigned to the NUMBE P K F K 255 TPS_USER Y Y Y Y Table Name Column Name Description of Data Data Type Len NOT NULL P K Y user USStates StateID The two letter abbreviation of the state. Text 2 Y StateName The name of the state Text 50 Y F K 2. Design Description TPS Home Page Contact TPS About TPS Login Authenticated User Home Page Staffing Requests Create Staffing Request Update Staffing Request Search Staffing Requests Contracts Create Contract Update Contract Search Contracts Access Control Roles Features ACLs Users and Employees Users 2.1. Data Description Staff Employees 2.1.1 Relational Schema TPS_ROLES PK,I1 ROLE_NAME IS_SYSTEM_ADMIN IS_CLIENT_ADMIN IS_CLIENT_ROLE IS_CONTRACT_MGR IS_STAFF TPS_ROLE_ACCESS_CONTROL PK,I2 ROLE_ID FEATURE_ROLE_ID FK1,I4,I1 FEATURE_ID FK2,I5,I3 ROLE_ID DIRECT_ACCESS TPS_USERS PK USER_ID USERNAME PASSWD FK1,I2,I1 ROLE_ID TPS_DEPTARTMENTS PK DEPT_NO DEPT_NAME TPS_EMPLOYEES PK,I1 TPS_FEATURES PK,I1 FEATURE_ID FEATURE_PAGE_NAME FEATURE_DESCRIPTION FEATURE_GROUP PK,I2 CONTACT_ID FK1,I1 CLIENT_ID CONTACT_FIRST_NAME CONTACT_LAST_NAME CONTACT_EMAIL CONTACT_PHONE CONTACT_TYPE USER_ID FK2,I3 EMPLOYEE_ID FK2,I4,I3 USER_ID EMP_FIRST_NAME EMP_LAST_NAME EMP_ADDRESS EMP_CITY EMP_STATE EMP_ZIP EMP_EMAIL EMP_PHONE EMP_MOBILE_PHONE FK1,I2 DEPT_NO IS_STAFF TPS_CLIENT_CONTACTS TPS_STAFF PK,FK1,I1 STAFF_RESUME STAFF_PICTURE STAFF_HOURLY_RATE YEARS_EXPERIENCE IS_AVAILABLE RESUME_FILE_NAME USStates PK,I1 StateID FK1 StateName EMPLOYEE_ID TPS_CONTRACTS STAFF_EDUCATION PK,I2 CONTRACT_ID FK1,I1 CLIENT_ID CONTRACT_NUMBER CONTRACT_BEGIN_DATE CONTRACT_END_DATE CONTRACT_HIGH_FEE CONTRACT_LOW_FEE TPS_CLIENTS PK,I1 FK1 PK,I1 EDUCATION_ID FK2,I2 FK1 EMPLOYEE_ID DEGREE_TYPE_ID EDUCATION_DEGREE_NAME EDUCATION_DEGREE_YEAR EDUCATION_DEGREE_LOCATION CLIENT_ID CLIENT_NAME CLIENT_ADDRESS CLIENT_CITY CLIENT_STATE CLIENT_ZIP PK,I2 FK3 FK2,I4 FK1,I3 FK4,I1 STAFFING_REQUEST_ID STATUS_ID STATUS_NAME IS_VALID_FLAG IS_INVALID_FLAG IS_CLOSED_FLAG IS_OPEN_FLAG IS_PENDING_FLAG STAFFING_REQUEST_DESC WORK_LOCATION FROM_DATE TO_DATE TOTAL_TIME TIME_UNITS_ID STATUS_ID FILL_STATUS_ID CONTRACT_ID COMMENTS TIME_UNITS PK,I1 TIME_UNIT_ID TIME_UNIT_NAME STAFF_FILL_STATUS PK,I1 STAFFING_REQUEST_STAFF PK,I3 STAFFING_REQUEST_STAFF_ID FK1,I2 FK2,I1 STAFFING_REQUEST_ID EMPLOYEE_ID FILL_STATUS_ID Figure 1 Relational Schema DEGREE_TYPE_ID DEGREE_TYPE_NAME STAFFING_REQUEST_STATUS_TYPES PK,I1 STAFFING_REQUEST DEGREE_TYPES PK,I1 FILL_STATUS_ID FILL_STATUS_DESC IS_FILLED_FLAG IS_UNFILLED_FLAG 2.2. Data Flow TPS_STAFF TPS_CONTRACTS Search for TPS staff based on Experience, Location, Hourly Rate, And Education Staff Education Education STAFF_EDUCATION Submit Staffing Request Retrieve Contracts for Client Create Staffing Request Maintain Profile Staff Member Profile Types of degree for Staff Education Records Client DEGREE_TYPES Search own staffing requests Requested Staff STAFFING_REQUEST_ STAFF Role access controls Record Staffing Request Search Staffing Requests Maintain Own Profile TPS_ROLES STAFFING_REQUEST_ STATUS_TYPES STAFFING_REQUEST Logged in User role TPS_RULE_ACCESS_CON TROLS Requested Staff Open Staffing Requests Contract Manager Access Control TPS_FEATURES Status Types Maintain Organization Contacts Records Time Role access controls Fill Status Staff Member If request is invalid TIME_UNITS User Credentials and Role Validate and Approve Staffing Requests STAFF_FILL_STATUS TPS_UNABLE_TO_FILL_ME MO Create and modify contracts TPS_CLIENT_CONTACTS Maintain Contacts Contract Maintenance TPS_CLIENTS Maintain Employees Users Employees Departments TPS_EMPLOYEES Maintain Maintain TPS_USER Figure 2 Data Flow Diagram Maintain User Profile Maintenance System Administrator Maintain Staff Members TPS_DEPARTMENTS 2.3. Program Architecture As illustrated in Error! Reference source not found.3, external users shall access the TPS web application via the internet. The web server shall exist on the DMZ portion of the internal network, protected by the firewall. The Firewall shall prevent unwanted access to the web server. Internal TPS users will communicate with the web application in the DMZ through the firewall. Internet User DMZ Internal Network DMZ Web Server ASP.NET AJAX.NET TPS Web Application Architecture Components Data Access Components .NET Framework User Interface Components TPS User AJAX Extensions Internet Information Server Access Control Firewall Access Database Operating System Figure 3 Program Architecture 2.4. Component Interfaces 2.4.1 Create User Input String: USERNAME String: PASSWORD Integer: ROLE ID Output Integer: USER ID String: Error 2.4.2 Update User Input Integer: USER ID String: USERNAME String: PASSWORD Integer: ROLE ID Output Boolean: Success String: Error 2.4.3 Create Employee Input (all optional except identifier) Integer: USER ID String: FIRST NAME String: LAST NAME String: ADDRESS String: CITY String: STATE String: EMAIL ADDRESS String: PHONE String: MOBILE PHONE String: DEPARTMENT NAME Bool: IS STAFF MEMBER Output Integer: EMPLOYEE ID String: Error 2.4.4 Update Employee Input (all optional except identifier) Integer: EMPLOYEE ID (required) Integer: USER ID String: FIRST NAME String: LAST NAME String: ADDRESS String: CITY String: STATE String: EMAIL ADDRESS String: PHONE String: MOBILE PHONE String: DEPARTMENT NAME Output Boolean: Success String: Error 2.4.5 Create Staff Member Profile Input Integer: EMPLOYEE ID (required) byte[]: RESUME byte[]: PICTURE Currency: HOURLY RATE Integer: YEARS OF EXPERIENCE String: LOCATION Output Boolean: Success String: Error 2.4.6 Update Staff Member Input (all optional except identifier) Integer: EMPLOYEE ID (required) Integer: USER ID Output Boolean: Success String: Error String: FIRST NAME String: LAST NAME String: ADDRESS String: CITY String: STATE String: EMAIL ADDRESS String: PHONE String: MOBILE PHONE String: DEPARTMENT NAME byte[]: RESUME byte[]: PICTURE Currency: HOURLY RATE Integer: YEARS OF EXPERIENCE String: LOCATION 2.4.7 Add Staff Member Education Input Integer: EMPLOYEE ID (required) Integer: DEGREE TYPE ID Integer: DEGREE NAME Integer: DEGREE YEAR String: DEGREE LOCATION Output Integer: EDUCATION ID String: Error 2.4.8 Update Staff Member Education Input (all optional except identifier) Integer: EDUCATION ID (required) Integer: DEGREE TYPE ID Integer: DEGREE NAME Integer: DEGREE YEAR String: DEGREE LOCATION Output Boolean: Success or Failure String: Error 2.4.9 Search Employees Input (at least one value is required) String: USERNAME Integer: ROLE ID Integer: EMPLOYEE ID String: FIRST NAME String: LAST NAME Output Integer: EMPLOYEE ID Integer: USER ID String: FIRST NAME String: LAST NAME String: ADDRESS String: CITY String: STATE String: EMAIL ADDRESS String: PHONE String: MOBILE PHONE String: DEPARTMENT NAME Date: DATE OF BIRTH String: SOCIAL SECURITY NUMBER 2.4.10 Search Staff Members Input (all optional) Integer: EMPLOYEE ID String: FIRST NAME String: LAST NAME Currency: HOURLY_RATE Integer: YEARS OF EXPERIENCE String: DEGREE NAME Output Integer: EMPLOYEE ID Integer: USER ID String: FIRSTNAME String: LAST_NAME String: EMAIL ADDRESS Memo: RESUME Memo: PICTURE Currency: HOURLY RATE Integer: YEARS OF EXPERIENCE STAFF EDUCATION RECORDS DEGREE TYPE DEGREE NAME DEGREE YEAR DEGREE LOCATION 2.4.11 Create Feature Input (all optional) String: PAGE NAME String: DESCRIPTION String: FEATURE_GROUP Output Integer: FEATURE ID String: Error 2.4.12 Update Feature Input (all optional) Integer: FEATURE ID String: PAGE NAME String: DESCRIPTION String: FEATURE_GROUP Output Boolean: Success or Failure String: Error 2.4.13 Search Features Input (all optional) String: PAGE NAME String: DESCRIPTION Output Integer: FEATURE ID String: PAGE NAME String: DESCRIPTION 2.4.14 Create Role Input (all optional) String: ROLE NAME Bool: IS SYSTEM ADMIN ROLE Bool: IS CLIENT ADMIN ROLE Bool: IS CLIENT ASSIGNABLE ROLE Bool: IS STAFF Output Integer: ROLE_ID String: Error 2.4.15 Update Role Input Integer: ROLE ID String: ROLE NAME Bool: IS SYSTEM ADMIN ROLE Bool: IS CLIENT ADMIN ROLE Bool: IS CLIENT ASSIGNABLE ROLE Bool: IS CONTRACT MANAGER Output Boolean: Success or Failure String: Error 2.4.16 Search Roles Input (all optional) String: ROLE NAME Bool: IS SYSTEM ADMIN ROLE Bool: IS CLIENT ADMIN ROLE Bool: IS CLIENT ASSIGNABLE ROLE Output Integer: ROLE_ID String: ROLE NAME Byte: IS SYSTEM ADMIN ROLE Byte: IS CLIENT ADMIN ROLE Byte: IS CLIENT ASSIGNABLE ROLE 2.4.17 Create Access Control List Input Integer: FEATURE ID Integer: ROLE ID Bool: DIRECT ACCESS Output Integer: FEATURE ROLE ID String: Error 2.4.18 Update Access Control List Input Integer: FEATURE ROLE ID Integer: ROLE ID Integer: FEATURE ID Bool: DIRECT ACCESS Output Boolean: Success or Failure String: Error 2.4.19 Delete Access Control List Input Integer: FEATURE ROLE ID Output Boolean: Success or Failure String: Error 2.4.20 Search Access Control List Input (all optional) Integer: FEATURE ID Integer: ROLE ID Output Integer: FEATURE ROLE ID Integer: FEATURE ID Integer: ROLE ID String: FEATURE NAME String: ROLE NAME 2.4.21 Create Client Input (all optional) String: CLIENT NAME String: ADDRESS String: CITY String: STATE String: ZIP Output Integer: CLIENT ID String: Error 2.4.22 Update Client Input (all optional except identifier) Integer: CLIENT ID (required) String: CLIENT NAME String: ADDRESS String: CITY String: STATE String: ZIP CODE Output Boolean: Success or Failure String: Error 2.4.23 Search Client Input (all optional) String: CLIENT NAME String: ADDRESS String: CITY String: STATE String: ZIP CODE Output Integer: CLIENT ID String: CLIENT NAME String: ADDRESS String: CITY String: STATE String: ZIP CODE 2.4.24 Create Client Contact Input Integer: CLIENT ID String: FIRST NAME Output Boolean: Success or Failure String: Error String: LAST NAME String: EMAIL ADDRESS String: PHONE NUMBER String: CONTACT TYPE String: USERNAME String: PASSWORD 2.4.25 Update Client Contact Input (all optional except identifier) Integer: CONTACT ID (required) String: FIRST NAME String: LAST NAME String: EMAIL ADDRESS String: PHONE NUMBER String: CONTACT TYPE String: USERNAME String: PASSWORD Output Integer: CONTACT ID String: Error 2.4.26 Delete Client Contact Input Integer: CONTACT ID Output Integer: CONTACT ID String: Error 2.4.27 Search Client Contacts Input Integer: CLIENT ID Output Integer: CONTACT ID String: FIRST NAME String: LAST NAME String: EMAIL ADDRESS String: PHONE NUMBER String: CONTACT TYPE String: USERNAME 2.4.28 Retrieve User Menu Input Integer: USER ID Output MENU: Features to which the specified user has access. 2.4.29 User Login Input Output String: USER NAME String: PASSWORD Boolean: Success or Failure String: Error 2.4.30 Validate Page Access Input ACTION: Page Access Request Output RESPONSE: Feature Page String: Error 2.4.31 Create Contract Input (all required) Integer: CLIENT_ID String: CONTRACT_NUMBER Currency: CONTRACT_LOW_FEE Currency: CONTRACT_HIGH_FEE String: CONTRACT_BEGIN_DATE String: CONTRACT_END_DATE Output Integer: CONTRACT_ID String: Error 2.4.32 Update Contract Input String: CONTRACT_NUMBER Currency: CONTRACT_LOW_FEE Currency: CONTRACT_HIGH_FEE String: CONTRACT_BEGIN_DATE String: CONTRACT_END_DATE Output Integer: CONTRACT_ID String: Error 2.4.33 Retrieve Contract Input Integer: CLIENT_ID String: CONTRACT_NUMBER String: CONTRACT_BEGIN_DATE String: CONTRACT_END_DATE Currency: CONTRACT_HIGH_FEE Currency: CONTRACT_LOW_FEE Output String: Error String: CONTRACT_NUMBER Double: CONTRACT_LOW_FEE Double: CONTRACT_HIGH_FEE String: CONTRACT_BEGIN_DATE String: CONTRACT_END_DATE Integer: CONTRACT_ID Integer: CLIENT_ID String: CONTRACT_NUMBER 3. Detailed Design 3.1. User Access Control 3.1.1 Overview Users will be granted or denied access to features based upon the role to which they have been assigned. The TPS_ROLES table will contain the list of roles recognized by the system as well as the classification of each role: System Administrator Role, Client Administrator Role, and Client Assignable Role. 1. System Administrator Role This flag indicates that the specified role is a System Administrator Role. 2. Client Administrator Role This flag indicates that the role is a Client Administrator Role. Client Administrators may add, modify, or delete client contacts (TPS_CLIENT_CONTACTS) for their organization. 3. Client Assignable Role This flag indicates whether the role is assignable by a Client Administrator to another user within the Client’s user base. Features are defined in the TPS_FEATURES table. The feature records specify the page name and a short description of the feature implemented by the page. Roles are granted access to features through associations in the TPS_ROLE_ACCESS_CONTROL table. This table contains the ROLE_ID from the TPS_ROLE table and the FEATURE_ID from the TPS_FEATURES table to which the specified role will be granted access. Authenticated users will only have access to those pages and features for which role and feature associations have been defined. Only System Administrator type users may maintain TPS_ROLES, TPS_FEATURES, and TPS_ROLE_ACCESS_CONTROL data. Create ACL Update ACL System Administrator Delete ACL Search ACL Public Site User «uses» Request Page Authenticated Site User Figure 4 User Access Control User Cases Validate Access 3.1.2 Processing Description TPS_FEATURES Features Create ACL Roles Features System Administrator Features Update ACL TPS_ROLES Roles Feature/Role Pairs Search ACL Features Roles Feature/Role Pairs Feature/Role Pair Updated ACL TPS_ROLE_ACCESS_CONTROL Roles Delete ACL Figure 5 User Access Control Processing Feature/Role Pairs 3.1.3 Interface Description Figure 6 User Access Control Maintenance Page 3.1.4 Pseudocode Validate Access (in response to a user request to access a web page) FUNCTION OnPageLoad() BEGIN LET USER_ID equal SESSION[“USER_ID”] IF USER_ID is equal to NULL OR ValidateUser(USER_ID) is equal to FALSE THEN BEGIN Show Page “Unauthorized” ELSE LET AUTH equal INVOKE ValidatePageAccess(USER_ID) IF AUTH is equal to FALSE then BEGIN Show Page “Unauthorized” ELSE Show Page as Requested END END END FUNCTION ValidatePageAccess(INPUT INTEGER pUserID) BEGIN LET USER_ROLE equal SELECT ROLE_ID from TPS_USERS where USER_ID is equal to pUserID; IF USER_ROLE is equal to NULL THEN BEGIN RETURN FALSE ELSE LET PAGE_NAME equal URL from REQUEST LET PAGE_ID equal SELECT FEATURE_ID from TPS_FEATURES Where FEATURE_PAGE_NAME is equal to PAGE_NAME LET AUTHORIZED = SELECT count(PAGE_NAME) from TPS_ROLE_ACCESS_CONTROL where FEATURE_ID is equal to PAGE_ID and ROLE_ID is equal to USER_ROLE IF AUTHORIZED >0 THEN BEGIN RETURN TRUE ELSE RETURN FALSE END END END 3.1.5 Module Uses Uses Roles Features Used By 3.2. ValidatePageAccess Site Master Page (all page access) User Maintenance User Maintenance is comprised of the Create Users, Update Users, Search Users, and Assign Roles use cases. Create Users «uses» «uses» Update Users Delete User Search Users System Administrator Figure 7 User Maintenance Use Cases Assign Roles 3.2.1 Processing Description Create User Roles TPS_ROLES System Administrator Update User Roles Updated User User account Assign Role Roles User Account Delete User User Account New User Updated User Delete User TPS_USERS List of Matching Users Roles Search Users Figure 8 User Maintenance Processing 3.2.2 Interface Description Figure 9 User Maintenance Page 3.2.3 Pseudocode No out of the ordinary decisions or complex calculations are involved in this process. 3.2.4 Module Uses Uses Users Roles Used By UserLogin ValidatePageAccess 3.3. Client Contact Maintenance Client Administrators will have the ability to create, update, delete, and search (maintenance page) contacts and users associated with their organization. «uses» Create Contact «uses» Assign Roles Update Contact Search Contacts Client Administrator Delete Contact Figure 10 Client Contacts Use Cases 3.3.1 Processing Description Client Administrators will have the ability to maintain contacts for the organization. TPS_USERS Client Administrator New Contact TPS_CLIENT_CONTACTS New User Updated Contact TPS_ROLES Delete associated user account Associated Updated User Updated User Account User Associated Client Contact Create Contact List of Roles Associated Client User Accounts Associated Client Contact Roles matching user records List of Client Roles Associated Client Contact Update Contacts TPS_CLIENT (Own Contact Record) Delete Contacts Delete Contacts List of Client Contacts Search Contacts Client (Non-Client Admin) Figure 11 Client Contact Processing 3.3.2 Interface Description Figure 12 Client Contact Maintenance Page 3.3.3 Pseudocode No out of the ordinary decisions or complex calculations are involved in this process. 3.3.4 Module Uses Uses Users Roles Used By UserLogin ValidateAccess 3.4. Feature Maintenance System Administrators will have the ability to maintain the features of the web site. Feature Maintenance is comprised of the Create Feature, Update Feature, Delete Feature, and Search Features use cases. Create Features Update Feature Search Features System Administrator Delete Feature Figure 13 Feature Maintenance Use Cases 3.4.1 Processing Description Create Feature System Administrator New Feature TPS_FEATURES List of Features Updated Feature Update Feature Search Feature Delete Feature List of Features Delete Feature Figure 14 Feature Maintenance Processing 3.4.2 Interface Description Figure 15 Feature Maintenance Page 3.4.3 Pseudocode No out of the ordinary decisions or complex calculations are involved in this process. 3.4.4 Module Uses Uses Features Used By ValidatePageAccess ACL Maintenance 3.4.5 Role Maintenance System Administrators will have the ability to create, update, delete, and search (role maintenance page) roles within the system. The System Administrator will be able to designate the type for each role (SYSTEM ADMIN, CLIENT ADMIN) and the authority required to access the role. If a role has not been specified as CLIENT ASSIGNABLE, only System Administrator will have the authority to view or assign the role to other users. Create Role Update Role Delete Role System Administrator Search Roles Figure 16 Role Maintenance Use Cases 3.4.6 Processing Description Create Role New Role TPS_ROLES Updated Role System Administrator Update Role Roles Delete Role Roles Search Roles Roles Delete Role Figure 17 Role Maintenance Processing 3.4.7 Interface Description Figure 18 Role Maintenance Page 3.4.8 Pseudocode List Client Roles FUNCTION ListClientRoles(INPUT INTEGER pUserID) BEGIN IF INVOKE ValidateUser(pUserID) is equal to FALSE THEN BEGIN RETURN ERROR “Not Authorized” ELSE FETCH SELECT TPS_USERS.ROLE_ID, TPS_ROLES.IS_SYSTEM_ADMIN, TPS_ROLES.IS_CLIENT_ADMIN from TPS_USERS and TPS_ROLES where TPS_USERS.ROLE_ID is equal to TPS_ROLES.ROLE_ID and TPS_USERS.USER_ID is equal to pUserID into USER_ROLE_TABLE_OBJECT IF INVOKE ValidateRole(USER_ROLE_TABLE_OBJECT.ROLE_ID) is equal to FALSE THEN BEGIN RETURN ERROR “Not Authorized” ELSE IF USER_ROLE_TABLE_OBJECT.IS_CLIENT_ADMIN THEN BEGIN RETURN ROLE_ID and ROLE_NAME from (SELECT ROLE_ID and ROLE_NAME from TPS_ROLES where IS_CLIENT_ROLE is equal to TRUE) ELSE IF USER_ROLE_TABLE_OBJECT.IS_SYSTEM_ADMIN THEN BEGIN RETURN ROLE_ID and ROLE_NAME from (SELECT ROLE_ID and ROLE_NAME from TPS_ROLES ELSE RETURN ERROR “Not Authorized” END END END END END Assign Role FUNCTION AssignRole(INPUT INTEGER pUserID, INPUT INTEGER pRoleID) BEGIN IF ValidateUser(USER_ID) is equal to TRUE BEGIN IF pRoleID EXISTS IN TPS_ROLES THEN BEGIN UPDATE TPS_USERS set ROLE_ID equal to pRoleID where USER_ID is equal to pUserID RETURN SUCCESS ELSE RETURN ERROR “Role ID is not valid” END ELSE RETURN ERROR “User ID is not valid” END END FUNCTION ValidateUser(INPUT INTEGER pUserID) BEGIN IF pUserID EXISTS IN TPS_USERS THEN BEGIN RETURN TRUE ELSE RETURN FALSE END END FUNCTION ValidateRole(INPUT INTEGER pRoleID) BEGIN IF pRoleID EXISTS IN TPS_ROLES THEN BEGIN RETURN TRUE ELSE RETURN FALSE END END 3.4.9 Module Uses Uses Users Roles Used By ValidatePageAccess UserAccessControl 3.4.10 Staff Member Profiles Staff Members will have the ability to update their staff member profiles (TPS_EMPLOYEES and TPS_STAFF tables). Contract Managers will have the ability to Update Staff Members as well as search through the profiles of all Staff Members (users within the TPS_STAFF table). Contract Managers and Client that search Staff Member profiles will not have the ability to view sensitive staff member data such as Social Security Number. Update Staff Contract Manager Staff Member Search Staff Members Client Figure 19 Staff Member Use Cases 3.4.11 Processing Description Updated Staff TPS_STAFF Staff Member TPS_ROLES STAFF_EDUCATION Updated Education Associated Role Education Update Staff Member Staff Member Departments Updated Associated User Account User Account Contract Manager Associated Employee Record Staff Education Degree Types TPS_USERS Updated Employee Record Degree Types Search Staff Members Employee Record Departments DEGREE_TYPES TPS_EMPLOYEE Client Figure 20 Staff Member Processing Staff Members TPS_DEPARTMENTS 3.4.12 Interface Description Figure 21 Search Staff Members Page Figure 22 Employee Maintenance Page Figure 23 Staff Member Profile Maintenance 3.4.13 Pseudocode Search Staff Members FUNCTION SearchStaff(INPUT STRING pCity, INPUT STRING pState, INPUT CURRENCY pHourlyRate, INPUT STRING pEducation, INPUT STRINF pExperience) BEGIN LET whereClause equal BLANKS LET JOINER equal BLANKS IF pCity is not equal to NULL then BEGIN LET whereClause equal “EMP_CITY = ‘“+pCity+”’” LET JOINER equal “ AND “ END IF pState is not equal to NULL then BEGIN LET whereClause equal whereClase+JOINER+ “ EMP_STATE = ‘“+pState+”’” LET JOINER equal “ AND “ END IF pHourlyRate is not equal to NULL then BEGIN LET whereClause equal whereClase+JOINER+ “ STAFF_HOURLY_RATE = “+pHourylRate LET JOINER equal “ AND “ END IF pEducation is not equal to NULL then BEGIN LET whereClause equal whereClase+JOINER+ “ EDUCATION_DEGREE_NAME = ‘”+pEducation+”’” LET JOINER equal “ AND “ END IF pExperience is not equal to NULL then BEGIN LET whereClause equal whereClase+JOINER+ “ STAFF_RESUME like %”+pEducation+”%” END LET STAFF_MEMBER_LIST equal SELECT STAFF MEMBERS from TPS_STAFF, TPS_EMPLOYEES, STAFF_EDUCATION IF whereClause is not equal to BLANKS THEN BEGIN LET STAFF_MEMBER_LIST equal STAFF_MEMBER_LIST with “ where “+whereClause END TRY RETURN EXECUTE QUERY STAFF_MEMBER_LIST CATCH EXCEPTION BEGIN RETURN EXCEPTION END END 3.4.14 Module Uses Uses Employees Staff Education Used By Create Staffing Request Update Staffing Request Search Staffing Request 3.5. Staffing Requests 3.5.1 Overview Users assigned to the Client role will have the ability to create, update, and search staffing requests. In addition, Clients will have the ability to search for staff members to add to the staffing request based on: 1. 2. 3. 4. Experience Education Salary (hourly rate) Location The staff member search will accept any combination of the above criteria. The staff member search will return all staff member records that match the values specified. Create Staffing Request «uses» Search Staff Members Update Staffing Request Client Contract Manager Search Staffing Request Figure 24 Staffing Request Use Cases 3.5.2 Processing Description STAFFING_REQUEST_STATUS_TYPES TIME_UNITS Client Status Types Search Staffing Requests Time Unit of Measure Staffing Requests DEGREE_TYPES Create Staffing Request Time Unit of Measures TPS_STAFF Staff Members STAFF_EDUCATION Staff Education Search Staff Members Degree Types Staff Members Assigned Staff Information Request Staff Members STAFFING_REQUEST New Staffing Request Updated Staffing Request Time Unit of Measure Contract Manager Assigned Staff Education STAFFING_REQUEST_STAFF Updated Staff Assignments Assigned Staff Figure 25 Staffing Request Processing Update Staffing Request Staffing Request Staffing Request Closeout The following state chart illustrates the processing of a staffing request from submission to closeout. Figure 26 Staffing Request Closeout State Machine 3.5.3 Interface Description Create Staffing Request The Create Staffing Request page will consist of: Heading at top of page – Create Staffing Request The following Fields will be available: • Work Location – Location of position • Staffing Request Description • From Date – Job Date From Date • To Date – Job Date To Date • Total Time – Total time that position is needed • Status ID – ID of staffing request • Fill Status ID – Filled or Vacant These Fields are automatically generated: • Staffing Request ID – ID for request • Contract ID – ID for contract The user will then need to click the Submit button at the bottom of the page. Areas not filled in correctly will be highlighted in red when the Submit button is pressed. Update Staffing Request The Update Staffing Request page will consist of: Heading at top of page – Update Staffing Request The following Fields will be available and adjust to update: • Work Location – Location of position • Staffing Request Description • From Date – Job Date From Date • To Date – Job Date To Date • Total Time – Total time that position is needed • Status ID – ID of staffing request • Fill Status ID – Filled or Vacant These Fields are automatically generated: • Staffing Request ID – ID for request • Contract ID – ID for contract The user will then need to click the Submit button at the bottom of the page. Search Staffing Request The Search Staffing Request page will consist of: Heading at top of page – Search Staffing Request The following Fields will be available to search from: • Work Location – Location of position • Staffing Request Description • From Date – Job Date From Date • To Date – Job Date To Date • Total Time – Total time that position is needed • Status ID – ID of staffing request • Fill Status ID – Filled or Vacant These Fields are automatically generated: • Staffing Request ID – ID for request • Contract ID – ID for contract The user will then need to click the Search button located at the bottom of the screen. The search results will show at bottom of page under the Search button. If no matches can be found, an error message will pop up prompting the user to try again. When the results are displayed, the appropriate Request can be selected. This will allow the user to view all of its contents and be able to edit information. An Edit option will be next to all information that can be updated and then saved again if needed. 3.5.4 Pseudocode No out of the ordinary decisions or complex calculations are involved in this process. 3.5.5 Module Uses Uses Contract StaffMember StaffEducation Employees StaffingRequestStatus FillStatus TimeUnits 3.6. Contracts The contract manager will be able to create the contract information by using the client’s request. The contract manager will have the role of creating the contract by assembling clients that fit the criteria. 3.6.1 Overview Contract managers will have the ability to create, update, and retrieve contract information. Clients will have the ability to retrieve (view) their contract information. Create Contract Update Contract Contract Manager Client Retrieve Contract Figure 27 Contracts Use Cases 3.6.2 Processing Description TPS_STAFF Staff Education CLIENT_ID, CONTRACT_HIGH_FEE CONTRACT_LOW_FEE TIME_UNITS Time Unit of Measure Contract_ID Create Contract STAFF_EDUCATION Create Contract Contract Manager Employee ID EMPLOYEE_ID DEGREE_TYPES Submit Contract STAFFING_REQUEST_ STAFF TPS_CONTRACTS Search new Contract Search Match Criteria Client Search Contract Information Search New Contract Figure 28 Create Contract Event Diagram Contract Manager TPS_CONTRACTS Match search criteria Update Contract Submit Update Update Contract TIME_UNITS Time Units of Measurement Search for new contract Search Contract Information Search for new contract Client Figure 29 Modify Contract Event Diagram Contract Manager TPS_CONTRACTS Match search criteria Search for new contract Search Contract Information Figure 30 Retrieve New Contract Event Diagram Search for new contract Client 3.6.3 Interface Description Create Contract The Create Contract page will consist of: Heading at top of page – Create Contract Criteria listed with blank tab for user to enter data. This data is required and will consist of Client ID, Contract Number, Contract Low Fee, Contract High Fee, Contract Begin Date, and Contract End Date. The user will then need to click the Submit button at the bottom of the page. Areas not filled in correctly will be highlighted in red when the Submit button is pressed. The Contract Information will be submitted and the Contract ID will be displayed as completed. Retrieve Contract The Retrieve Contract page will consist of: Heading at top of page – Retrieve Contract User will be asked to fill in known criteria to aid in the search. These fields will include Client ID, Contract Number, Contract Low Fee, Contract High Fee, Contract Begin Date, and Contract End Date. The user will then need to click the Search button located at the bottom of the screen. The search results will show at bottom of page under the Search button. If no matches can be found, an error message will pop up prompting the user to try again. When the results are displayed, the appropriate Contract can be selected. This will allow the user to view all of its contents and be able to edit information. An Edit option will be next to all information that can be updated. 3.6.4 Pseudocode Create Contract Function createContract(INPUT INT ClientID, INPUT STRING ContractNumber, INPUT CURRENCY ContractLowFee, INPUT CURRENCY ContractHighFee, INPUT STRING ContractBeginDate, INPUT STRING ContractEndDate) BEGIN Submit Contract IF all input requirements aren’t entered THEN RETURN error message to user. IF all requirements are met RETURN CONTRACT_ID END Retrieve Contract FUNCTION SearchContract(INPUT INT ClientID, INPUT STRING ContractNumber, INPUT CURRENCY ContractLowFee, INPUT CURRENCY ContractHighFee, INPUT STRING ContractBeginDate, INPUT STRING ContractEndDate) BEGIN LET whereClause equal BLANKS LET JOINER equal BLANKS IF ClientID is not equal to NULL then BEGIN LET whereClause equal “CLI_ID = ‘“+ClientID+”’” LET JOINER equal “ AND “ END IF ContractNumber is not equal to NULL then BEGIN LET whereClause equal whereClase+JOINER+ “ CON_NUM = ‘“+ContractNumber+”’” LET JOINER equal “ AND “ END IF ContractLowFee is not equal to NULL then BEGIN LET whereClause equal whereClase+JOINER+ “ CON_LOW_FEE = “+ContractLowFee LET JOINER equal “ AND “ END IF ContractHighFee is not equal to NULL then BEGIN LET whereClause equal whereClase+JOINER+ “ CON_HIGH_FEE = ‘”+ContractHighFee+”’” LET JOINER equal “ AND “ END IF ContractBeginDate is not equal to NULL then BEGIN LET whereClause equal whereClase+JOINER+ “ CON_BEGIN_DATE like %”+ContractBeginDate+”%” END IF ContractEndDate is not equal to NULL then BEGIN LET whereClause equal whereClase+JOINER+ “ CON_END_DATE like %”+ContractEndDate+”%” END LET CONTRACT_LIST equal SELECT CONTRACT from TPS_CONTRACT IF whereClause is not equal to BLANKS THEN BEGIN LET CONTRACT_LIST equal CONTRACT_LIST with “ where “+whereClause END TRY RETURN EXECUTE QUERY CONTRACT_LIST CATCH EXCEPTION BEGIN RETURN EXCEPTION END END 3.6.5 Module Uses Uses Client Contract Manager Used By Create Contract Update Contract Retrieve Contract 3.7. Web Site User Interface Description The user interface will consist of the following elements: 1. 2. 3. 4. A fixed banner on the top Fixed navigation on the left Main content in the right portion of the body A fixed footer on the bottom of each page The left navigation will change to reflect the allowable actions for the user. Public (nonauthenticated) users will only be allowed to perform the following actions: 1. Login 2. View the Contact TPS page 3. View the About TPS page User that successfully login will be presented with a fixed left-hand navigation containing the actions and features which they are allowed to perform as specified in the TPS_ROLE_ACCESS_CONTROL table via associated with the ROLE_ID stored in the TPS_USERS table. Following are representative screen shots of the web site’s look and feel. These screen shots constitute the design form and layout that will be used for each page in the site. 3.7.1 Home Page 3.7.2 Login Page 3.7.3 Client (authenticated) Portal Page