VOLUNTEER MANAGEMENT SYSTEM Manali Suresh Ghate B.S., Cummins College of Engineering for Women,Pune, 2006 PROJECT Submitted in partial satisfaction of the requirements for the degree of MASTER OF SCIENCE in COMPUTER SCIENCE at CALIFORNIA STATE UNIVERSITY, SACRAMENTO FALL 2011 VOLUNTEER MANAGEMENT SYSTEM A Project by Manali Suresh Ghate Approved by: __________________________________, Committee Chair Jinsong Ouyang, PhD __________________________________, Second Reader Kwai_Ting Lan, PhD ____________________________ Date ii Student: Manali Suresh Ghate I certify that this student has met the requirements for format contained in the University format manual, and that this project is suitable for shelving in the Library and credit is to be awarded for the Project. __________________________, Graduate Coordinator Nikrouz Faroughi, PhD Department of Computer Science iii ________________ Date Abstract of VOLUNTEER MANAGEMENT SYSTEM by Manali Suresh Ghate The Volunteer Management System is an application developed to help aid the City Of Sacramento for managing their volunteers and the events hosted by the different departments. The volunteer coordinators currently handle such activities manually over the phone and by emails since they have chosen not to opt for the paid applications available in the market. Along with developing the application, I researched various methods by which a database can be updated using a Short Message Service. I used an API to update the SQL Server database of my application through a SMS received from registered volunteers for the number of hours they have worked. Using this feature will provide convenience to the volunteers as well as the coordinators to keep a track of the number of hours worked for the events. This involves allowing interaction between your database and the API service for updating it. Further research can be done to discover alternative ways to interact with the system. _______________________, Committee Chair Jinsong Ouyang, PhD _______________________ Date iv ACKNOWLEDGMENTS Firstly, I offer my sincere gratitude to my project advisor Dr. Jinsong Ouyang, who has supported me throughout with his patience and knowledge while allowing me the room to work in my own way. Dr. Ouyang is simply the best professor I have likely encountered during my Masters. I would like to thank the City Of Sacramento for giving me the opportunity to serve them. I am indebted to William Taylor and Mary Lynn Perry at the City Of Sacramento for the countless times they spent with me through all the project phases and providing their valuable feedback and suggestions. I would also like to thank Professor Kwai Ting Lan for reviewing this project report. A special thank you to my land lady Mary Becker for continually inspiring me to succeed in completing my project and also my friends for being there for me all throughout the various ups and downs I have gone through. Finally, I owe my parents Mrs. Sunita Ghate and Mr. Suresh Ghate and my sisters Dr. Anjali Ghate and Rupali Ghate for their endless love and support throughout my studies. . v TABLE OF CONTENTS Page Acknowledgments......................................................................................................... v List of Tables ............................................................................................................ viii List of Figures ............................................................................................................. ix Chapter 1. INTRODUCTION .............................................................................................… 1 1.1 Overview ..................................................................................................... 1 1.2 Purpose ....................................................................................................... 2 1.3 Comparison with existing systems ..............................................................2 2. REQUIREMENTS ANALYSIS. ............................................................................4 2.1 Software Requirements ...............................................................................4 2.2 Hardware Requirements ..............................................................................5 2.3 Major components ......................................................................................6 2.4 Assumptions ................................................................................................7 2.5 Design of Entity Relationship Model .........................................................7 2.6 Use case Diagrams .......................................................................................8 3. TECHNOLOGIES ............................................................................................... 11 3.1 Microsoft .NET Framework...................................................................... 11 3.1.1 Visual Studio IDE ..................................................................... 12 3.1.2 C#.Net ....................................................................................... 12 3.2 Microsoft SQL Server Express 2005 ........................................................ 15 3.3 SMS Gateway & SMS API ...................................................................... 16 4. SYSTEM DESIGN AND IMPLEMENTATION ................................................. 17 4.1 System Architecture ................................................................................. 17 4.2 Messaging Architecture ............................................................................18 4.3 System Design ...........................................................................................21 4.4 Database Design ....................................................................................... 23 vi 4.5 Implementation…. .....................................................................................31 4.6 User Interface .............................................................................................47 5. CONCLUSION ..................................................................................................... 60 5.1 Summary .................................................................................................. 60 5.2 Future Work ............................................................................................. 60 Bibliography. ...............................................................................................................62 vii LIST OF TABLES Tables Page 1. Entity Relationship Model…………………………………….……….………… 8 2. Volunteer Entities ………………….…….………….…………………….…...... 24 3. Volunteer Details Entities …….…….…….………….………………………….. 25 4. Coordinator Entities ……………………....……….…………………………….. 27 5. Department Entities ……………….…………………………………………….. 28 6. Events Entities …………………….……….….………..……………………….. 29 7. Vol_Login Entities ….……….…………………...……….…………………….. 30 8. SMS_Received Entities …………..……….……….………….……………….... 31 viii LIST OF FIGURES Figures Page 1. Coordinator Use Case Diagram …………………………………… . …………9 2. Volunteer Use Case Diagram………………………………………………… 10 3. DOT NET framework in context ………………..…………………… . ……. 11 4. Visual Studio IDE Tools.……………………….……………………… . …... 12 5. Typical C# Application ………………………………………………… . ….. 13 6. System Architecture ………………………… . .…………….………………. 17 7. Two-way Messaging Architecture… . ………….……………………………. 19 8. System Design.. ................................................................................................ 21 9. Database Design.......................................................................................... …. 24 10. SMS Snapshot.. ................................................................................................. 45 11. Login Page… .................................................................................................... 48 12. Volunteer Home Page ....................................................................................... 49 13. Volunteer Registration Page ............................................................................. 50 14. Create Login Page ............................................................................................. 51 15. Coordinator Home Page.. .................................................................................. 52 16. View Events Page ............................................................................................. 53 17. Generate Sign-up Sheets Page. ......................................................................... 53 18. Post Events Page ............................................................................................... 54 19. Export Active Volunteers Page. ........................................................................ 55 20. View Departments Page... ................................................................................. 56 ix 21. Terminate Volunteers Page. .............................................................................. 56 22. Send SMS Page... .............................................................................................. 57 23. Generate Dynamic Reports Page ...................................................................... 58 24. Export options of Crystal Report.. .................................................................... 59 x 1 Chapter 1 INTRODUCTION 1.1. Overview The Volunteer Management System is an application developed to help aid the City Of Sacramento for managing their volunteers and the events hosted by the different departments. The volunteer coordinators currently handle such activities over the phone and by emails since they have chosen not to opt for the paid applications available in the market. The system will allow users to register as a volunteer online, apply for the posted events, log the hours worked and provide reporting and tracking facilities to the co-ordinators. Along with developing the application, various methods were researched for implementing the feature of enabling two-way Short Message Service for updating multiple records into a database. A third party text messaging API has been integrated to serve as an interface between the application’s SQL Server database and the Short Messaging Service from the user to facilitate their interaction. Using this feature will provide convenience to the volunteers as well as the coordinators to keep a track of the number of hours worked for the events. The volunteers can also enter it online by logging into the system if they wish to. 2 1.2. Purpose The purpose of this project is to develop a stand-alone web based application used on the public internet. The project is aimed to empower the City Of Sacramento to sign up volunteers and manage them for various events happening throughout the various departments. The project included research and implementation of a two-way Short Messaging Service feature. Using this, the system can send the volunteer a Short Messaging Service showing a list of events and the hours worked present in the system and the volunteer can reply with the hours he/she worked. Since, the City of Sacramento as well as the web hosting solutions available online don’t allow their database to be exposed for outside services to update their database, I used a dedicated virtual server for this purpose. The virtual server was setup, the database configured and a third party Ez Texting’s message solution was used to deliver SMS to the application from any mobile carrier and vice versa. 1.3. Comparison with existing systems Analysis included that of examining the various existing systems available in the market. Some of the systems available in the market are described below along with their features and drawbacks. One of the well-known Volunteer Management System is Volgistics, which is a paid browser based system to manage volunteer information, track their service and provide scheduling and reporting facilities. The pricing is based on the number of volunteers you want to manage, number of volunteer records you want to store, the 3 number of system operators you want and if you want to have a Volunteer Information Center available with it. There are various systems (i.e., CERVIS, NEON, Ebase, I-VolunteerOnline.com, Son of Service, etc.) to name a few. Ebase is free to use for a single user whereas IVolutneerOnline.com allows only one user to coordinate the events. Son of Service system does not allow the volunteers to access the system at all. The Volunteer Management System was designed keeping the various drawbacks of these systems into consideration as well as providing similar features which most of these provide along with the added facility of two-way SMS. 4 Chapter 2 REQUIREMENTS ANALYSIS The requirements for the Volunteer Management System were analyzed and drafted under the guidance of Mary Lynn Perry, William Taylor and Diane Hartline with the City of Sacramento. The citywide webmasters and content managers also contributed to review the features and provide their feedback and suggestions. The system will be accessible on all standard HTML web browsers after being hosted on the City’s website at http://cityofsacramento.org/volunteers. The software and hardware specifications required for implementation of the project are as follows: 2.1. Software Requirements The development of the application required installation of: Microsoft DOT NET Framework 3.5: Microsoft DOT NET framework is the software framework that runs primarily on Microsoft windows. Software can be produced by combining source code with the DOT NET framework and other libraries. Microsoft Visual Studio DOT NET 2008: This is the popular integrated development environment provided by Microsoft. In Microsoft DOT NET, the programming language C#.NET was chosen due to the features it provides as well as giving me an opportunity to learn a new language. 5 Microsoft SQL Server 2005 Express Edition: This is the free edition of SQL Server distributed by Microsoft. This backend has been chosen in order to avoid the City the cost of purchasing a paid version or licenses. Third party Ez Texting Server API: It is a simple SMS Marketing service. It provides a text messaging API that serves as an interface to facilitate the interaction between the SQL Server database and the user through a Short Messaging Service. All the above are described in detail in chapter 3. 2.2. Hardware Requirements Virtual dedicated server This was required only for the purpose of project implementation since the security policies of web hosting solutions do not permit external API’s to update their database. Go Daddy’s virtual dedicated server has been used for the project. A Virtual dedicated server refers to a virtual machine that appears to the user as a dedicated server but installed on a computer serving multiple web sites. It is a simulation of hardware by a host operating system that allows another operating system to run on it. Virtual private servers offer more control than what is offered with a shared web hosting account. The virtual server is isolated from the others and the host server manages access to hardware resources like RAM, CPU, Disk Space, network throughput. It can run its own full-fledged operating system and can be independently rebooted. 6 2.3. Major components Three major components identified for the system are as follows: 1. Managing events and volunteer time: a. Volunteers should have the ability to sign-up on-line for specific opportunities or events. The sign up information would go into a database that would sort the data and allow sign-in sheets to be generated for the day of the project. b. Event/department volunteer co-ordinators have the facility to approve or reject volunteer requests received for the events. c. Volunteers would be able to enter time volunteered at an event by two ways. One would be to login online and update it themselves and another would be with the help of an SMS. Application would include the capability of a web-based text messaging system helping the volunteers to update the hours by sending them a list of the events and hours worked and their response will update the database system entry. 2. Managing Volunteer Personnel Data: a. Managing the personal information of volunteers such as name, address, phone number, email address, skills and emergency contact information. Volunteers can update their information online anytime. b. Tracking of the various departments/projects in which they have worked and their hours worked is available. 7 c. Dates of volunteering commencement and date of termination are saved. Terminating a volunteer disables the volunteer from logging into the system, applying to events and accessing the events information already present in the system. 3. Reporting Tools: a. Report active volunteers in the system. b. Exporting of the report data to some suitable file like Microsoft Excel. c. Generating reports for SMS requests status based on date range. 2.4. Assumptions The volunteer’s phone number should be registered with the system for identifying purpose. The volunteer should use the format which includes the keyword VOLVM space the event id followed by the number of hours he/she worked in order to update the database. 2.5. Design of Entity Relationship Model The entity relationship model for the Volunteer Management System is as follows. This describes the type of information that is to be stored in the database. The following entities can be uniquely identified and are capable of having an independent existence. 8 Table 1: Entity Relationship Model Entity Name Description Vol_Login Contains login information for volunteers and co-coordinators Volunteer_Details Contains volunteer details information Coordinator Contains coordinator details information Volunteer Contains information about the volunteer volunteering for a particular event of a department Events Contains Events information Department Contains Departments information SMS_Received Contains registered users volunteer hours information received through SMS SMS_New Contains all the SMS received information irrespective of registered users to ensure they have been delivered 2.6. Use case Diagrams Use case is the type of behavioral diagram to present a graphical overview of the functionality provided by the system in terms of actors and their goals. The use cases identified for co-ordinator are as follows: A co-ordinator can manage volunteers or the events as well as terminate them. Active Volunteers in the system can be exported. 9 Events can be viewed and new events can be posted. Sign-up sheets can be generated. Accept or reject the volunteer requests for applying to events. Accept or reject the hours worked from the SMS requests received. Manage /Terminate Volunteers View/Post Events Generate signup sheets Export Active Volunteers COORDINATOR Accept/Reject Volunteers Accept/Reject SMS Requests Figure 1: Coordinator Use Case Diagram 10 The use cases identified for volunteers are as follows: A new user can register as a volunteer. A volunteer can apply for events posted online. Hours worked for the various events can be entered. Status of applied events can be viewed. Apply Events Register Enter Hours Worked VOLUNTEER View Status of Events Figure 2: Volunteer Use Case Diagram 11 Chapter 3 TECHNOLOGIES 3.1. Microsoft .NET framework ASP.Net is a Web application framework for development of web sites, web applications and web services. It has an object-oriented architecture and uses object based programming languages like VB or C#. Figure 3: DOT NET framework in context Programs written for the .NET framework execute in a software environment known as the Common Language Runtime, an application virtual machine that provides important services such as security, memory management, and exception handling. The class 12 library and CLR together constitute the .NET framework. The .NET Framework’s Base Class Library provides user interface, data access, database connectivity, cryptography, web application development, numeric algorithms and network communications. Programmers produce software by combining their own source code with the .NET Framework and other libraries. [9] 3.1.1. Visual Studio IDE Visual Studio IDE is the popular and powerful integrated development environment largely for .NET software. It supports multiple programming languages C#, C++, Visual Basic, J# and data markup languages HTML, XML and CSS. Figure 4: Visual Studio IDE Tools It is used to build ASP.NET web applications, XML web services, desktop applications as well as mobile applications. Visual Studio supports Visual C# with a full featured Code Editor, project templates, designers, code wizards, a powerful and easy to use debugger and other tools. 3.1.2. C#.Net C#.NET is a simple object oriented programming language. It is intended for use in developing software components suitable for deployment in distributed environments. 13 Combined with the .NET framework, Visual C# enables the creation of Windows applications, web services, database tools, components, client-server applications, controls and more. C# syntax simplifies many of the complexities of C++ and provides powerful features such as nullable value types, enumerations, delegates, lambda expressions and direct memory access, which are not found in JAVA. C# supports generic methods and types, which provide increased type safety and performance, and iterators, which enable implementers of collection classes to define custom iteration behaviors that are simple to use by client code. Language Integrated Query expressions make the strongly typed query a first-class language construct. [12] Figure 5: Typical C# Application The above diagram illustrates the compile-time and run-time relationships of C# source code files, the .NET Framework class libraries, assemblies, and the CLR. Source code 14 written in C# is compiled into an intermediate language (IL) that conforms to the CLI specification. The IL code and resources, such as bitmaps and strings, are stored on disk in an executable file called an assembly, typically with an extension of .exe or .dll. When the C# program is executed, the assembly is loaded into the CLR, which might take various actions based on the information in the manifest. The CLR then performs just in time (JIT) compilation to convert the IL code to native machine instructions. The CLR also provides other services related to automatic garbage collection, exception handling, and resource management. Code that is executed by the CLR is sometimes referred to compiles the site effectively. Microsoft as "managed code," in contrast to "unmanaged code" which is compiled into native machine language that targets a specific system. Features of ASP.Net: 1. It provides intrinsic state management functionality that enables to store information between page requests. 2. ASP.Net works in concert with Microsoft .Net Framework and Microsoft Internet Information Services to help provide Web application security. 3. When users request pages from the production server, ASP.NET dynamically compiles the site effectively. When the ASP.Net application is running, it can use built-in ASP.NET security features as well as that of the .NET framework. Choosing an authentication approach: 15 Identity would be at the application level. Per user data retrieval done using trusted query parameters. Choosing an authorization strategy Between the two basic authorization strategies, I have used the role-based approach since it is suited for the application. It is also the best choice for .NET web applications where scalability is essential. In this, the access to operations is secured based on the role membership of the caller. Users are mapped to the roles and if the user is authorized to perform the requested operation, the application uses fixed identities with which to access resources. The pattern used is: 1. Users are authenticated within the front-end web application. 2. The users are then mapped to the roles. Authorize access to operations is provided based on the role membership. The necessary back–end resources are accessed by using fixed service identities. 3.2. Microsoft SQL Server Express 2005 Microsoft SQL Server 2005 Express Edition (SQL Server Express) is a powerful and reliable data management product that delivers rich features, data protection, and performance for embedded application clients, light Web applications, and local data stores. Designed for easy deployment and rapid prototyping, SQL Server Express is available at no cost. [8] It is designed to work with Visual Studio and ASP.NET. The SQL Server express database can also be migrated to SQL Server 2005. 16 3.3. SMS Gateway & SMS API In order to send and receive SMS text messages on the server, one needs to connect to the Short Message Service Centers (SMSC’s) of different wireless carriers. With the help of a SMS gateway, the text messaging application needs to connect only to the SMS gateway. The gateways can handle the connections to mobile phones and GSM/GPRS modems for exchange of SMS messages. The gateway has the capability to translate the SMS into whichever protocol the recipient carrier uses. The gateway is normally a server over the internet that has access to SMS services and the API is an interface implemented by a software program that enables to interact with the software. The SMS API is implemented in software, enabling successful interactions in an IT system. The SMS API’s can be classified as HTTPS/API, SOAP API, FTP API, SMTP API, SMPP API, Com Object API, and XML API according to the way it works. 17 Chapter 4 SYSTEM DESIGN AND IMPLEMENTATION 4.1. System Architecture The system architecture diagram below provides a comprehensive architectural overview of the system. The components include the Microsoft SQL Server database, the application server that in this case is a virtual dedicated server, the internet, Microsoft Internet Information Services, web clients, mobile network over which an SMS is forwarded to and from a mobile device. MOBILE NETWORK MOBILE DEVICE INTERNET WEB CLIENTS SQL SERVER DATABASE APPLICATION SERVER Figure 6: System Architecture 18 A web client can typically be a computer application such as a web browser that runs on a local computer or workstation and connects to the server as necessary. All the web clients communicate through the internet via the Microsoft Internet Information Server or IIS. The Microsoft Internet Information Services or the IIS is a web server application that includes a set of programs to build and administer sites. The web clients connect to the application server via the internet with the help of it. The IIS authenticates the web client requests and then locates the requested resource. The application server used in the system is a virtual dedicated server. The client requests are processed and responses are sent out that are routed over the internet and the IIS Server. The application server handles the communication needed for sending and receiving messages. In order to send an SMS from the database to the mobile device, the application server interacts with the database for generating the required message content and sends it across to the mobile network with the help of a communication interface that is the SMS gateway API. In addition, the API forwards the SMS from the mobile device to the application from the mobile network to the application server. All these modules exist independently and communicate with each other. 4.2. Messaging Architecture After researching about two-way messaging feature, the following ways were discovered: The first method is by using an SMS gateway. 19 Another method includes using a GSM modem for the purpose and AT commands. SMS messages can also be exchanged using SMTP. Gmail’s SMTP server can be used for this. I opted for using the first method of SMS gateway since the second method included buying a GSM modem and the third one simply made use of a SMTP server but used email to achieve its goal. In addition, the SMS gateway possessed the capability of supporting a number of mobile carries as opposed to being limited to using a GSM phone for this purpose as in the second case. The SMS gateway application consists of two main components sending SMS from the computer and reading the received SMS. The messages stored in the GSM modem or mobile phone storage consists of four parts, the mobile phone number, the message number, status and the message itself. Figure 7: Two-way Messaging Architecture The diagram above describes the architecture behind implementing the SMS updating the SQL Server database through the C#.Net Application and the database sending stored data to the user through an SMS. 20 The messaging architecture includes the start point as the user sending the Short Message Service, the Short Message Service Center, the SMS gateway, the ASP.NET application and the Microsoft SQL Server database. When any user sends out an SMS, it is received by the Short Messaging Service Center of the mobile carrier. A third party Ez Texting’s Keyword API SMS gateway has been used. Ez texting allows SMS messages to be sent to the user. Ez Texting allows SMS messages to be received using HTTP through the means of keywords on the short code 313131. The Ez texting SMS Server pushes the received SMS messages by making an HTTP GET request to the provided URL, in this case the Virtual Dedicated Server to indicate the receipt of an SMS message. The ten digit phone number and the message are sent as parameters of the request. On receiving this GET post, the C#.Net application reads the incoming data. The phone number from which the SMS is received is validated and the volunteer hours worked by the user are then stored in the Microsoft SQL Server. There are two methods for receiving text message replies back to the API: Polling the SMS gateway: Replies are stored on the SMS gateway until a request from the API polls for the messages. Messages can then be downloaded to the API and handled by the application. Pushing messages: The alternative is your messages can be pushed to your application through HTTP GET variables as soon as they are received by the SMS gateway. 21 4.3. System Design The Volunteer Management System designed was developed from scratch as shown in the below diagram. WEB PAGES APPLICATION LAYER BUSINESS LOGIC DATA ACCESS LAYER DATABASE Figure 8: System Design The design uses a Microsoft Internet Information Server, an application server, a SQL Server and a commercial of the shelf (COTS) API for sending and receiving text messages. However, the design doesn’t include all the intricacies in the architecture. The above diagram shows the overall system design and the way in which each layer interacts with each other. All the respective interfaces were developed using C#.NET components. The Volunteer Management System has been envisioned as an operational demonstration all the time. During the test, real calls were made to the system. Testing included functional validation as well as sending the SMS from the system and receiving the SMS to the system. 22 Application Layer: Application layer of the system comprises of various DOT NET aspx pages. The application layer has been designed using various ASP.NET components. All the web pages have been designed according to the user requirements and connected to the application server. Some complex logic has been used to create reports using crystal reports. Business Logic: The business logic resides in the code behind the files of the respective pages. For login purpose, email and password credentials have been used. If the user fails to provide the correct parameters, the forgot password page pulls up the security question from the database and matches the answer the user provides. While registering a new user to the system, the volunteer provides his personal information as well as priorities to set up his profile. A volunteer can register for the events through web page. He/she can update his/her hours using web page as well just by sending an SMS to the system. The volunteer can also edit his or her profile. The same page has been used for creating and editing the volunteers profile by tweaking the query string. For sending the message to the user, the message string has been built by retrieving the entries needed from the database and appending them to a single string. The entries included here are for a volunteer who has been approved for events and the event end date is lesser than the system date in order to include only those events that have passed. 23 Logic for parsing the message received from the volunteer: The received message from the API in the form of a query string has been parsed and manipulated using regular expressions to extract the data needed for updating the database. The data is then sent to the coordinator for approval or rejection. Data access layer: A SQL Credentials class has been created which establishes connection with the database that is used throughout the project for all the pages. Therefore, each time you run a page, you do not need to establish the connection but simply connect through a connection string. Database: A detailed data model of the database has been created. The database comprises of a SQL Server and seven tables representing the business objects. The database design has been explained in detail below. 4.4. Database Design The database design includes the Volunteer, Volunteer Details, Department, Events, Coordinator, SMS Received and Login tables. The database has been normalized. The volunteer table saves the volunteer applying to events information in a separate table from the volunteer details and uses ids of other tables in order to avoid duplication. 24 Figure 9: Database Design I. VOLUNTEER This table would contain the volunteer ids and the event ids of the events they would be volunteering for. It will also include the department id of the department for which the event is taking place. The entire information of the volunteer is saved in another table named volunteer details in order to avoid having redundant information in this table. Table 2: Volunteer Entities Fields Field Name Data type Key Volunteer id vol_id Int Primary Event id vol_event_id Int Department id vol_dept_id Int 25 II. Hours Worked vol_event_hours Int Approval approval Varchar(50) VOLUNTEER_DETAILS Mostly a volunteer would be working for a particular department. So the field volunteer department id has been added. Even if the volunteer is covering events for some other department, that would be saved. The field status states whether the volunteer is active or inactive in the system. The field times_available would state if the volunteer is available in the morning, evening or only on the weekends. The field employment_type would state if the volunteer has a full-time or part time job elsewhere or is unemployed, which would help to know the availability of the volunteer. The field volunteering_reason would help to know the reason the person is volunteering. For example if he wants to help others, gain work experience or other reasons that he likes to meet new people, etc. Table 3: Volunteer Details Entities Fields Field Name Data type Key Volunteer Id volunteer_id Varchar(10) Foreign First name first_name Varchar(20) Required Middle name middle_name Varchar(20) 26 Last name last_name Varchar(20) Salutation Salutation Varchar(5) Postal mailing address postal_add Varchar(80) Apartment Number Apartment_no Varchar(50) City City Varchar(10) Zip Code zip_code Varchar(5) Day phone day_phone Varchar(15) Evening phone evening_phone Varchar(15) Fax phone fax_phone Varchar(15) Email address email_add Varchar(20) Alternate email address alt_email_add Varchar(20) Birth date birth_date Date Sex Sex Varchar(1) Ethnicity Ethnicity Varchar(20) Hire Date hire_date Date Date information updated updated_date Date Status Status Varchar(10) Total Hours volunteered hours_volunteered Varchar(10) Times individual times_available Varchar(20) employment_type Varchar(20) available Type of Employment Required 27 III. Reason for volunteering volunteering_reason Varchar(80) Expenses Expenses Varchar(20) Awards received Awards Varchar(100) Training Training Varchar(100) Skills Set skills_set Varchar(100) Notes Notes Varchar(200) Emergency Contact emergency_contact Varchar(80) CO-ORDINATOR The details of the co-ordinators managing the system are saved here. Every department has a unique co-ordinator. The basic information of the coordinator has been saved here including name and contact details. Table 4: Coordinator Entities Fields Field Name Data type Key Co-ordinator Id coordinator_id Varchar(10) Primary Department Id coordinator_dept_id Varchar(10) Foreign Co-ordinator first name co_first_name Varchar(20) Required Co-ordinator middle co_midle_name Varchar(20) Co-ordinator last name co_last_name Varchar(20) Salutation co_salutation Varchar(20) name 28 IV. Day phone co_day_phone Varchar(20) Evening phone co_evening_phone Varchar(20) Fax phone co_fax_phone Varchar(20) Email address co_email_add Varchar(20) Required DEPARTMENT The department table saves the information of the various departments present. Table 5: Department Entities Fields Field Name Data type Key Department Id dept_id Varchar(10) Primary Manager Id manager_id Varchar(10) Foreign Department name dept_name Varchar(20) Required Description Description Varchar(100) Location Location Varchar(20) No. of volunteers no_vol_working Varchar(10) no_co_working Varchar(10) working No. of co-ordinators working The field manager_id would specify the particular co-ordinator id of the manager of the department. 29 V. EVENTS The events table stores the information of the events taking place in the various departments. Table 6: Events Entities Fields Field Name Data type Key Event Id event_id Varchar(10) Primary Department Id event_dept_id Varchar(10) Foreign Event name event_name Varchar(20) Required Event Type event_type Varchar(20) Event Description event_description Varchar(200) Eligibility eligibility Varchar(200) Event start date event_start_date Date Event end date event_end_date Date Event Expenses event_expenses Varchar(20) No. of volunteers no_registered Varchar(20) no_attended Varchar(20) registered No. of volunteers attended Additional information Notes Varchar(100) The field event_type will specify if the event if special or ongoing. Required 30 VI. VOL_LOGIN This table saves the login information for the volunteers as well as the coordinators. Table 7: Vol_Login Entities Fields Field Name Data type Key Login id login_id Varchar(10) Primary Username Username Varchar(20) Required Password Password Varchar(20) Required Login type Type_login Varchar(20) Required Id of Volunteer/Co- vol_or_co_id Varchar(10) Email address login_email_add Varchar(20) Password recovery recovery_question Varchar(50) recovery_answer Varchar(20) login_alt_email_add Varchar(20) Creation date login_create_date Date Last login date last_login_date Date Last password reset last_reset_date Date ordinator question Password recovery answer Alternate email address 31 date The field login_type will specify if the person logging in is a volunteer or a coordinator. The field vol_or_co_id will specify the id of the volunteer or the co-ordinator. VII. SMS_RECEIVED This table saves the messages received from the user with the event ids and the number of hours they worked for each of these events. Table 8: SMS_Received Entities Fields Field Name Data type Key Track id track_id Int Primary Volunteer id vol_id Int Event id event_id Int Hours Worked Hours_sent Int Status Status nchar(10) SMS Date Sms_date Datetime Phone Number Phone_number Varchar(12) Email Address Email_address Nvarchar(50) 4.5. Implementation The above system design has been implemented using Microsoft Visual studio 2008 for application development using DOT NET framework 3.5 to write the business logic. The data access layer has been implemented using C#.NET and ADO.NET. The database has 32 been implemented in SQL Server 2005 Express. The application server and IIS server were implemented on a public server. The independent server slice was leased out from a vendor. The system has been implemented on Windows Server platform. The implementation of the system was very crucial as the design has complex interaction between client, IIS server, application server, internet, mobile network and the database. The SMS gateway API connects the SMS module of the application that resides on the application server to the mobile device through the mobile network. Code implementation: Error checks and validations have been added throughout in order to catch all the possible exceptions that can be generated. Co-ordinator Module implementation: Approve/reject volunteers for events The co-ordinator can approve or reject volunteers at his or her discretion based on the eligibility. protected void btnApprove_Click(object sender, EventArgs e){ if (GridViewEvents.SelectedIndex != -1) string { vol_id = GridViewEvents.SelectedRow.Cells[1].Text.ToString(); string vol_event_id GridViewEvents.SelectedRow.Cells[2].Text.ToString(); = 33 In the above code snippet, firstly you need to check if the co-ordinator has selected an entry to approve or reject. Following this, the update command is run to update the entry in the volunteer table. SQLCredentials.SQLCredentials sqlHomeCredObj = new SQLCredentials.SQLCredentials(); string var = sqlHomeCredObj.SQLSERVERCONNSTRING; SqlConnection cs = new SqlConnection(var); SqlDataAdapter da = new SqlDataAdapter(); da.UpdateCommand = VOLUNTEERS_DB.dbo.VOLUNTEER new SET SqlCommand("UPDATE approval = 'Approved' where vol_id = " + vol_id + " and vol_event_id = " + vol_event_id, cs); The connection is opened and the query is executed upon which the connection is closed and the selected grid view is reset to unselected. cs.Open(); da.UpdateCommand.ExecuteNonQuery(); cs.Close(); GridViewEvents.SelectedIndex = -1; Response.Redirect("Coordinator.aspx"); } else { lblVolRequests.Text = "Please Select the Request!"; } } 34 In order to hide the columns of the gridview, we need to use the rowdatabound property. protected void GridViewEvents_RowDataBound(object GridViewRowEventArgs e) sender, { e.Row.Cells[1].Visible = false; e.Row.Cells[2].Visible = false; e.Row.Cells[9].Visible = false; } Similar function has been used to reject the volunteer requests that set the approval status to rejected. Approve/reject SMS request for updating hours worked The volunteers send out a request to update the hours they worked into the system. The volunteer id and the volunteer event id is extracted from the grid view and used to update the database. The implementation of this function is similar to the one above. protected void btnReject_Click(object sender, EventArgs e){ if (GridViewEvents.SelectedIndex != -1){ string vol_id = GridViewEvents.SelectedRow.Cells[1].Text.ToString(); string vol_event_id = GridViewEvents.SelectedRow.Cells[2].Text.ToString(); On establishing the connection to the database, the update command is run which updates the entry in the database. 35 da.UpdateCommand = new SqlCommand("UPDATE VOLUNTEERS_DB.dbo.VOLUNTEER SET approval = 'Rejected' where vol_id = " + vol_id + " and vol_event_id = " + vol_event_id, cs); cs.Open(); da.UpdateCommand.ExecuteNonQuery(); cs.Close(); GridViewEvents.SelectedIndex = -1; Response.Redirect("Coordinator.aspx"); } else { lblVolRequests.Text = "Please Select the Request!"; } } The approve SMS function works in the similar way and adds the hours worked to the hours present in the system. Terminate volunteer In order to terminate a volunteer from the system, the volunteer id is extracted from the grid view and firstly the termination date is set to system date, which is updated in the Volunteer Details table. //Set Termination Date da.UpdateCommand = new SqlCommand("UPDATE VOLUNTEERS_DB.dbo.VOLUNTEER_DETAILS SET termination_date = '" + DateTime.Now.ToString() + "' where volunteer_id = " + vol_id, cs); 36 cs.Open(); da.UpdateCommand.ExecuteNonQuery(); Secondly, the login of the volunteer is disabled in the Volunteer Login table. //Disable Login da.UpdateCommand = new SqlCommand("UPDATE VOLUNTEERS_DB.dbo.VOL_LOGIN SET vol_password = 'terminated' WHERE type_login = 'volunteer' AND vol_or_co_id = " + vol_id, cs); da.UpdateCommand.ExecuteNonQuery(); The various events that the volunteer applied to are rejected and updated in the Volunteer table. //Reject All Volunteered Events da.UpdateCommand = new SqlCommand("UPDATE VOLUNTEERS_DB.dbo.VOLUNTEER SET approval = 'Rejected' where vol_id = " + vol_id, cs); da.UpdateCommand.ExecuteNonQuery(); cs.Close(); GridViewVolunteer.SelectedIndex = -1; lblTerminate.Text = "Volunteer terminated Successfully!"; populateVolunteers(); The list is populated again. 37 Generating excel sheet Using a string builder class, the stored data is written into an Excel file while constructing the response. The export data library is used for the implementation. It converts the data table to html table format and then writed the data as output stream to a csv. private void ExportToCsvFromDataSet(DataSet dsExport) { bool IsOutputStreamed = false; Firstly, you get the data table you want to export. try{ StringBuilder dataToExport = new StringBuilder(); foreach (DataTable dtExport in dsExport.Tables) { The header of the report is generated here and appended. string headerToExport = string.Empty; foreach (DataColumn dCol in dtExport.Columns) headerToExport = (char)34 + dCol.ColumnName + (char)34 + (char)44; headerToExport.Remove(headerToExport.Length - 1, 1); headerToExport = headerToExport + Environment.NewLine Environment.NewLine; dataToExport.Append(headerToExport); The body of the excel sheet is generated and appended. string bodyToExport = string.Empty; foreach (DataRow dRow in dtExport.Rows) { + 38 foreach (object obj in dRow.ItemArray) bodyToExport = bodyToExport + obj.ToString() + (char)44; bodyToExport.Remove(bodyToExport.Length - 1, 1); bodyToExport = bodyToExport + Environment.NewLine; } dataToExport.Append(bodyToExport); dataToExport.Append(Environment.NewLine); dataToExport.Append(Environment.NewLine); The content type of response object is set to excel and the file name is added. if (dataToExport.ToString().Length != 0){ Response.Clear(); Response.ContentType = "Text/vnd.ms-excel"; Response.AddHeader("Content-Disposition", "attachment;filename=report.csv"); Response.Write(dataToExport.ToString()); IsOutputStreamed = true; }} } Co-ordinator Post Event In order to post an event, the insert command is used which collects the parameters from the web page. SqlDataAdapter da = new SqlDataAdapter(); da.InsertCommand = new SqlCommand("INSERT INTO VOLUNTEERS_DB.dbo.EVENTS(event_dept_id,event_name,event_type,even 39 t_description,eligibility,event_start_date,event_end_date,event_e xpenses,num_registered,num_attended,notes) VALUES(@DeptId,@EventName,@EventType,@Description,@Eligibility,@S tartDate,@EndDate,@Expenses,@No_Reg,@No_Attended,@Notes)", cs); The parameters are added to the insert command as follows using the SQL data types they have present in the database. da.InsertCommand.Parameters.Add("@DeptId", SqlDbType.Int).Value = DropDownListDeptName.SelectedValue; da.InsertCommand.Parameters.Add("@EventName", SqlDbType.VarChar).Value = txtEventName.Text; da.InsertCommand.Parameters.Add("@EventType", SqlDbType.VarChar).Value = DropDownListType.Text; da.InsertCommand.Parameters.Add("@Description", SqlDbType.VarChar).Value = txtDescription.Text; da.InsertCommand.Parameters.Add("@Eligibility", SqlDbType.VarChar).Value = txtEligibility.Text; da.InsertCommand.Parameters.Add("@StartDate", SqlDbType.DateTime).Value = txtStartDate.Text; da.InsertCommand.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = txtEndDate.Text; da.InsertCommand.Parameters.Add("@Expenses", SqlDbType.VarChar).Value = txtExpenses.Text; da.InsertCommand.Parameters.Add("@No_Reg", SqlDbType.Int).Value = "0"; 40 da.InsertCommand.Parameters.Add("@No_Attended", SqlDbType.Int).Value = "0"; da.InsertCommand.Parameters.Add("@Notes", SqlDbType.VarChar).Value = txtNotes.Text; da.InsertCommand.ExecuteNonQuery(); cs.Close(); Response.Redirect("Vol_View_Event.aspx"); } catch (Exception _ex){ WebMsgBox.WebMsgBox.Show(_ex.Message); } } Volunteer Module implementation: Applying for events While applying for events, the department id, event id and the event name are extracted from the grid and the volunteer id is found out from the username in the session. da.SelectCommand = new SqlCommand ("SELECT vol_or_co_id FROM VOLUNTEERS_DB.dbo.VOL_LOGIN WHERE username = '" + sUserName + "'", cs); da.Fill(ds); string vol_id = ds.Tables[0].Rows[0][0].ToString(); An entry is added to the Volunteer table using all the values. 41 da.InsertCommand = new SqlCommand("INSERT INTO VOLUNTEERS_DB.dbo.VOLUNTEER(vol_id,vol_event_id,vol_dept_id,appro val)VALUES('"+vol_id+"','"+event_id+"','"+dept_id+"','Pending')", cs); da.InsertCommand.ExecuteNonQuery(); cs.Close(); lblApplied.Text="Successfully applied to "+event_name+""; populateEvents(); populateStatus(); GridViewEventsApply.SelectedIndex = -1; } Updating profile information Following is a short code snippet of how to extract information from the database and display it on the web page. The same page is used for creating a new volunteer as well as editing the volunteer information. If the operator is edit, the page knows that it is editing the profile. if (Request.QueryString["op"].ToString() == "edit"){ btnSubmit.Visible = false; btnUpdate.Visible = true; SQLCredentials.SQLCredentials sqlHomeCredObj = new SQLCredentials.SQLCredentials(); string var = sqlHomeCredObj.SQLSERVERCONNSTRING; SqlConnection cs = new SqlConnection(var); 42 SqlDataAdapter da = new SqlDataAdapter(); DataSet ds = new DataSet(); cs.Open(); string sUserName = Session["UserName"].ToString(); Select all the information needed from the volunteer details table da.SelectCommand = new SqlCommand("SELECT a.first_name,a.middle_name,a.last_name,a.salutation,a.postal_add, a.apartment_no,a.city,a.zip_code,a.state,a.day_phone,a.evening_ph one,a.fax_phone,a.email_add,a.alt_email_add,a.birth_date,a.sex,a. ethnicity,a.hire_date,a.times_available,a.employment_type,a.volun teering_reason,a.awards,a.training,a.skills_set,a.emergency_conta ct FROM VOLUNTEERS_DB.dbo.VOLUNTEER_DETAILS a,VOLUNTEERS_DB.dbo.VOL_LOGIN b WHERE a.volunteer_id = b.vol_or_co_id AND b.username = '" + sUserName + "'", cs); Fill the dataset with the values retrieved from the table. da.Fill(ds); txtFirstName.Text = ds.Tables[0].Rows[0]["first_name"].ToString(); txtFirstName.Enabled = false; txtMiddleName.Text = ds.Tables[0].Rows[0]["middle_name"].ToString(); txtLastName.Text = ds.Tables[0].Rows[0]["last_name"].ToString(); 43 Send SMS Implementation: The data that needs to be sent to the user in the SMS is retrieved from the database and the message string is generated. Firstly the phone number of the user is extracted as shown below. string sPhoneNumber = ds.Tables[0].Rows[0][0].ToString(); After this, the message is generated and the events and the hours are appended to the message string. The initial message string includes the username, password, phone number and message according to the specifications of the Ez Texting API. The message string generated is shown below. string sMsg = "user=manali&pass=volvm;;84&phonenumber="+ sPhoneNumber +"&message=test message=VOLVM "; for(int i =0;i < ds.Tables[0].Rows.Count;i++){ sMsg += (" EVTID:" + ds.Tables[0].Rows[i][0].ToString() + " EVTHRS:" + ds.Tables[0].Rows[i][1].ToString() ); } The send SMS function is called following this. In this function, an http web request is used for sending SMS. Firstly, a request is created for the URL. WebRequest w = WebRequest.Create("https://app.eztexting.com/api/sending/"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; The request stream is written and the stream containing the content is returned to the server. The client running on the computer connects a socket to the server and sends an HTTP POST request along with message contents. The GetRequestStream method 44 initiates a request to send data to the internet resource and returns a stream instance for sending data to the internet resource. The code snippet is as follows. using (Stream writeStream = w.GetRequestStream()){ byte[] bytes = Encoding.UTF8.GetBytes(sMsg); writeStream.Write(bytes, 0, bytes.Length); } The GetResponse method sends a request to an internet resource and returns a WebResponse instance. Since the request has already been initiated by a call to GetRequestStream, the GetResponse method completes the request and returns any response. using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()){ using(Stream responseStream = r.GetResponseStream()){ using(StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)){ ret = readStream.ReadToEnd(); } } } The GetResponseStream method is used upon receiving the response to get the stream containing content returned by the server. The Ex texting’s text messaging API does the operation of forwarding the Short Message Service to the appropriate mobile carrier and then to the user. A sample of the message sent from the system is as shown below. 45 Figure 10: SMS Snapshot Receive SMS Implementation: The SMS sent out by the user is received by the mobile carrier and forwarded by the Ez Texting Server to a base URL with the specified parameters. A server listening on the base URL with the specified parameters can easily process the messages. Once the web server receives a HTTP request, the callback function is called. The method will end the asynchronous operation and immediately start a new context for the next request. The method can then process the incoming request. Each parameter of the request can be accessed by its name. The query string received extracts the phone number and the message from it. The from parameter is used for extracting the phone number. 46 string mysender = Request.QueryString["from"].ToString(); da.SelectCommand =new SqlCommand("SELECT a.volunteer_id, b.vol_event_id,a.first_name,a.last_name FROM [VOLUNTEERS_DB].[dbo].[VOLUNTEER_DETAILS] a,[VOLUNTEERS_DB].[dbo].[VOLUNTEER] b where a.volunteer_id = b.vol_id and a.day_phone = " + mysender, cs); The system then checks to see if the phone number is registered with the Volunteer Management System using the Select command as shown above. string original_message = Request.QueryString["message"].ToString(); string[] message; message = original_message.Split(' '); int ievents = (message.Count())/3; It splits the message according to the number of entries of events received based on the keyword VOLVM and then saves each of the hours based on the event id into the database. The following code shows how the message is retrieved and saved into the database. for (int i = 0; i < ievents; i++){ string vol_id = ds.Tables[0].Rows[0][0].ToString(); string vol_event_id = message[i * 3 + 1]; string vol_hrs = message[i * 3 + 2]; da.InsertCommand = new SqlCommand("INSERT INTO VOLUNTEERS_DB.dbo.SMS_RECEIVED(vol_id,event_id,hours_sent,s 47 tatus,sms_date,phone_number,approval_date) VALUES(@VolId,@VolEventId,@Hours,@Status,@Date,@PhoneNo,@Pe ndingDate)", cs); The parameters are added to the insert command the query is executed. These entries are then available for the coordinator to approve. For the purpose of implementation in order to test for the functionality, a temporary table SMS_NEW was used to save what the server receives. A sample of the SMS sent by the user can be seen above which is received by the system. 4.6. User Interface The log in page enables all users to view the events without having to log in to the system. The page provides options for new users to register to the site as well as to recover their password if forgotten. Volunteers and co-ordinators both login from this page selecting their login type from the dropdown list which will take them to their respective home pages. 48 Figure 11: Login Page Volunteer Accessed Pages: This is the Volunteer home page on logging in where the volunteer can apply for events, enter hours for the events worked and view the status of the applied events. On selecting a particular event, the user can enter hours and save it which is as shown below. 49 Figure 12: Volunteer Home Page The new volunteers can sign up through the registration page shown below which accepts the personal information of the volunteers along with their contact and volunteering information. 50 Figure 13: Volunteer Registration Page The create login page shows up upon submitting this information. The email address is by default the username of the user. 51 Figure 14: Create Login Page 52 Co-ordinator accessed pages: The home page of the coordinator upon logging in is shown below. Figure 15: Coordinator Home Page The co-ordinator is provided with the following options: 53 a. View Events Figure 16: View Events Page The coordinator can generate sign-up sheets for the various events from this page which exports the volunteers information into an Excel sheet. Figure 17: Generate Sign-up Sheets Page 54 If no volunteers are registered, the page will display no entries found for it. b. Post Event The coordinators can post the events to the site through this page. Figure 18: Post Events Page c. Export Active Volunteers A report can be generated for the volunteers that are active in the system. 55 Figure 19: Export Active Volunteers Page d. Export Volunteers to Excel This option exports the volunteer’s information to an Excel sheet. e. View Departments Page The coordinators can view the departments present in the system from this page. 56 Figure 20: View Departments Page f. Manage Volunteers Through this page, the coordinator can terminate any volunteer. The volunteer’s login gets disabled and he/she can no longer access the system. The events that were previously applied to get rejected. Figure 21: Terminate Volunteers Page 57 g. Approve/Reject Volunteers for the events The coordinators use this option to approve or reject the volunteer requests received in the system. h. Approve/Reject Volunteer hours received through SMS The coordinators use this option to approve or reject the SMS requests for updating the hours worked sent by the volunteers to the system. i. Send SMS to volunteers to update their hours The volunteers working for various events will be displayed in a list on the page. The co-ordinator can select to send the SMS to a particular volunteer. A screenshot of the SMS sent to the user with the list of events along with the hours present in the database is shown below. Figure 22: Send SMS Page 58 j. Generate Dynamic Reports The dynamic reports generation page has been implemented with the help of a stored procedure at the back end that accepts the parameters of start date, end date and the status selected by the user. These parameters then query the database to extract the required information for the report. The user can select any date range and view the pending, approved and rejected requests. If no records are found, it will display so. Below is the screenshot of how the page looks like. Figure 23: Generate Dynamic Reports Page You can export the report if you wish to by clicking on the leftmost option. 59 Figure 24: Export options of Crystal Report The browser opens a pop up window that gives you the options to export into PDF format, Microsoft Word, Microsoft Excel and rich text format as shown above. 60 Chapter 5 CONCLUSION 5.1. Summary The volunteer management system will be used by the City of Sacramento coordinators to manage the volunteers and the various events of the departments. It will be available on the internet at www.cityofsacramento.org/volunteers/ for anyone to access. The projects major goal was to provide the City with a Management Solution. The project demonstrated a method of communicating from the database to the user via a Short Messaging Service as well as updating the database with a Short Message Service from the user. The project accomplished the development of a system, which is not available freely in the market with the different features included. One thing I would do differently if I were to do this project again given the time and infrastructure would be to integrate a GSM modem and implement the functionality of the third party service, which Ez Texting provided to me. This project has been a great learning opportunity and the research can be used further. 5.2. Future Work The system holds the scope for adding a number of more facilities to the ones that currently exist. Few of those are as follows: Sending the volunteers event updates and other information through SMS if they wish to opt for it. Sending message to volunteers would be subject under 61 the jurisdiction of the California laws on text messaging and they can opt out to stop receiving messages if they wish to. A real time secure payment system to accept donations to the site using the credit card information of the donors. Email reminders for the volunteers as well as co-ordinators. Sending out birthday cards to the volunteers. Allowing the facility to add and remove advertisements over the time using a web interface. 62 BIBLIOGRAPHY [1] http://www.volgistics.com , Accessed on August 14th, 2010 [2] http://www.ivolunteeronline.com , Accessed on August 20th, 2010 [3] http://www.cervistech.com/, Accessed on August 22th, 2010 [4] http://www.microsoft.com/sqlserver/2005/en/us/default.aspx , Accessed on October 1st, 2010 [5] http://www.coyotecommunications.com/tech/volmanage.html , Accessed on August 30th, 2010 [6] http://www.asp.net/get-started , Accessed on September 5th, 2010 [7] http://msdn.microsoft.com/en-us/library/ , Accessed on September 10th, 2010 [8] Microsoft SQL Server 2005, http://www.microsoft.com/download/en/details.aspx?id=21844 , Accessed on August 28th, 2011 [9] http://en.wikipedia.org/wiki/.NET_Framework, Accessed on October 29th, 2011 [10] http://msdn.microsoft.com/en-us/library/zw4w595w(v=vs.80).aspx [11] http://msdn.microsoft.com/en-US/library/ms173064(v=VS.80).aspx [12] http://msdn.microsoft.com/library/z1zx9t92, Accessed on November 1st, 2011 [13] http://justtechnika.com/articles/free-sms-gateway-api/ , Accessed on October 15th, 2011 [14] http://www.eztexting.com , Accessed on October 20th, 2011 [15] http://msdn.microsoft.com/en-us/library/system.net.webrequest.aspx, Accessed on November 4th, 2011 [16] http://www.godaddy.com/ , Accessed on October 28th, 2011