public ActionResult VerifyWithRegistrar(String sn)
		{
			VerifyModel model = new VerifyModel();
			model.Applicant = Applicant.GetApplicant(sn);

			if (model.Applicant != null)
			{
				BSTSmartScholarshipSerializer<Applicant> applicantSerializer = new BSTSmartScholarshipSerializer<Applicant>();
				XmlDocument applicantDoc = applicantSerializer.Serialize(model.Applicant);
				Registrar registrar = new Registrar();
				XmlDocument studentDoc = registrar.VerifyApplicant(applicantDoc);
				BSTSmartScholarshipSerializer<Student> studentSerializer = new BSTSmartScholarshipSerializer<Student>();
				model.Student = studentSerializer.Deserialize(studentDoc);

				return PartialView(model);
			}

			return Content("<div>Invalid Applicant</div>", "text/html");
		}
		public void Registrar_VerifyApplicant_Valid_StudentNumber()
		{
			Registrar registrar = new Registrar();
			BSTSmartScholarshipSerializer<Applicant> serializer = new BSTSmartScholarshipSerializer<Applicant>();
			XmlDocument applicantDoc = serializer.Serialize(this.TestApplicant);
			ISchemaProvider provider = new XmlSchemaProvider();
			applicantDoc.Schemas.Add(provider.GetSchemaFromResource("BSTSmartScholarship.Business.Schemas.Applicant.xsd"));
			applicantDoc.Validate(null);

			XmlDocument studentDoc = registrar.VerifyApplicant(applicantDoc);
			studentDoc.Schemas.Add(provider.GetSchemaFromResource("BSTSmartScholarship.Business.Schemas.Student.xsd"));
			studentDoc.Validate(null);

			BSTSmartScholarshipSerializer<Student> deserializer = new BSTSmartScholarshipSerializer<Student>();
			Student student = deserializer.Deserialize(studentDoc);

			Assert.AreEqual(student.StudentNumber, this.TestApplicant.StudentNumber);
		}
		public void Registrar_RequestTutionAmount_Valid_StudentNumber()
		{
			Registrar registrar = new Registrar();
			TuitionAmountRequest request = new TuitionAmountRequest() { StudentNumber = "88634352" };
			BSTSmartScholarshipSerializer<TuitionAmountRequest> serializer = new BSTSmartScholarshipSerializer<TuitionAmountRequest>();
			XmlDocument requestDoc = serializer.Serialize(request);
			ISchemaProvider provider = new XmlSchemaProvider();
			requestDoc.Schemas.Add(provider.GetSchemaFromResource("BSTSmartScholarship.Business.Schemas.TuitionAmountRequest.xsd"));
			requestDoc.Validate(null);

			XmlDocument responseDoc = registrar.RequestTuitionAmount(requestDoc);
			responseDoc.Schemas.Add(provider.GetSchemaFromResource("BSTSmartScholarship.Business.Schemas.TuitionAmountResponse.xsd"));
			responseDoc.Validate(null);

			BSTSmartScholarshipSerializer<TuitionAmountResponse> deserilaizer = new BSTSmartScholarshipSerializer<TuitionAmountResponse>();
			TuitionAmountResponse response = deserilaizer.Deserialize(responseDoc);

			Assert.AreEqual(response.StudentNumber, request.StudentNumber);
			Assert.AreEqual(response.TuitionAmount, 5500.00);
		}
		public ActionResult AwardApplicant(String sn)
		{
			List<Applicant> applicants = new List<Applicant>(ApplicantList.GetList(a => a.IsVerified.GetValueOrDefault(false) && a.IsEligible.GetValueOrDefault(false)));
			IEmailService emailService = new EmailService();
			EmailUtility email = new EmailUtility(emailService);

			Applicant applicant = applicants.FirstOrDefault(a => a.StudentNumber.Equals(sn, StringComparison.OrdinalIgnoreCase));

			//Notify other applicants that they did not win.
			foreach (String studentNumber in applicants.Where(a=> !a.StudentNumber.Equals(sn, StringComparison.OrdinalIgnoreCase)).Select(a => a.StudentNumber))
			{	
				email.SendNotAwardedEmail(studentNumber);
			}

			///Prepare the request for the registrar.
			TuitionAmountRequest request = new TuitionAmountRequest(applicant.StudentNumber);
			XmlSchemaProvider provider = new XmlSchemaProvider();
			XmlDocument requestDocument = (new BSTSmartScholarshipSerializer<TuitionAmountRequest>()).Serialize(request);
			Registrar registrar = new Registrar();

			XmlDocument responseDocument = registrar.RequestTuitionAmount(requestDocument);
			TuitionAmountResponse response = (new BSTSmartScholarshipSerializer<TuitionAmountResponse>()).Deserialize(responseDocument);

			//Award the scholarship
			Award.AddAward(applicant.StudentNumber, applicant.FirstName, applicant.LastName, response.TuitionAmount);

			//Notify Accounting of the reimbursement amount.
			Award.NotifyAccounting(response.StudentNumber, response.TuitionAmount);

			//Send award emails.
			email.SendAwardedEmail(sn, response.TuitionAmount);

			return RedirectToAction("Awarded", "Admin");
		}