#region File Header & Copyright Notice /* * Copyright (C) 2014XXXXXX */ #endregion using System; using System.Threading; using System.Windows.Forms; using System.ServiceModel; using System.ComponentModel; using Constant; using Model; using OES.Teacher; using Tool; namespace OES { /// <summary> /// This class is used for login. /// </summary> public partial class FormLogin : Form { #region Field private log4net.ILog log = log4net.LogManager.GetLogger(EqualsConst.GetLoggerName); public User user = null; #endregion #region Constructor public FormLogin() { InitializeComponent(); } #endregion #region Private Method /// <summary> /// The processing of btnSubmit. /// </summary> /// <param name="sender">The source object of event.</param> /// <param name="e">The parameter of event.</param> private void BtnSubmit_Click(object sender, EventArgs e) { UserBllService.UserBllClient userBll = new UserBllService.UserBllClient(); if (String.IsNullOrWhiteSpace(this.txtUsername.Text)) { this.lblLoginResult.Text = Constant.UserException.UserNameIsNull; } else if (String.IsNullOrWhiteSpace(this.txtPassword.Text)) { this.lblLoginResult.Text = Constant.UserException.PasswordIsNull; } else { string userName = CheckForParameter.ReplaceSqlChar(this.txtUsername.Text.Trim()); string password = CheckForParameter.ReplaceSqlChar(this.txtPassword.Text.Trim()); try { BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += new DoWorkEventHandler( delegate { user = userBll.RetrieveUserByUserName(userName); }); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler( delegate(object obj, RunWorkerCompletedEventArgs arg) { if (arg.Error == null) { if (null != user && user.Password.Equals(MD5Tool.MD5Tostring(password), StringComparison.InvariantCultureIgnoreCase)) { this.DialogResult = DialogResult.OK; } else { this.lblLoginResult.Text = UserException.LoginedFailed; } } else { log.Error(arg.Error); MessageBox.Show(UIException.ConnectionWithWCFFail); } }); bw.RunWorkerAsync(); } catch (FaultException<MyExceptionContainer> myException) { log.Error(myException.Message, myException); } catch (FaultException faultException) { log.Error(faultException.Message, faultException); } catch (Exception exception) { log.Error(exception.Message, exception); } } } /// <summary> /// The processing of close the form. /// </summary> /// <param name="sender">The source object of event.</param> /// <param name="e">The parameter of event.</param> private void BtnCancel_Click(object sender, EventArgs e) { this.Close(); this.Dispose(); } #endregion } }
using System.Collections; using System.Collections.Generic; using Model; using Constant; namespace Dal { /// <summary> /// This interface id defined for exam's functions. /// </summary> public interface IExamDal { #region Return List /// <summary> /// Gets exam list when first load in take exam. /// </summary> /// <param name="order">Judge get the exam is finished or not. 0 equals finished ohter equals unfinished.</param> /// <returns>Return list of exam</returns> IList<Exam> RetrieveExamList(string userName, int order); /// <summary> /// Gets the list of finished exam. /// </summary> /// <param name="userName">The user's name.</param> /// <param name="isFinished">The exam is finished or not.</param> /// <param name="keyWord">The search of finished exam key word.</param> /// <returns>Returns finished exam list.<ExamFinshed></returns> IList<ExamFinished> RetrieveFinishedExamList(string userName, bool isFinished, string keyWord); /// <summary> /// Gets QuestionID list for taking exmaing. /// </summary> /// <param name="examId">The exam's id.</param> /// <returns>Returns the question's id list of the exam.</returns> ArrayList RetrieveQuestionIdList(int examId); /// <summary> /// Gets exams by examName key words. /// </summary> /// <param name="keyWork">The key work.</param> /// <returns>Return exam list.</returns> IList<Exam> RetrieveUnFinishedExamListByKeyWord(string userName, string keyWork); /// <summary> /// Retrieves exam result. /// </summary> /// <returns>Returns examreport list.</returns> IList<ExamReport> RetrieveExamReportList(Page page); /// <summary> /// Retrieves score by exam id for paging. /// </summary> /// <see cref="Model.Page"/> /// <param name="examId">The id of exam.</param> /// <returns>Returns the score list.</returns> IList<Score> RetrieveDetailExamScore(Page page, int examId); /// <summary> /// Retrieve score list by exam's id. /// </summary> /// <param name="examId">The exam's id.</param> /// <returns>Returns the list of score.</returns> IList<Score> RetrieveScoreByExamId(int examId); #endregion #region Returns Model /// <summary> /// Gets the question by question id. /// </summary> /// <param name="questionID">The id of the question.</param> /// <returns>Returns question model.</returns> Question RetrieveQuestionById(int questionId); /// <summary> /// Gets the exam model by exam id. /// </summary> /// <param name="examId">The id of exam.</param> /// <returns>Return exam model.</returns> Exam RetrieveExamByExamId(int examId); /// <summary> /// Gets score by userName and examId. /// </summary> /// <param name="userName">The user's name.</param> /// <param name="examId">The exam's id.</param> /// <returns>Score</returns> Score RetrieveScoreByUserNameAndExamId(string userName, int examId); #endregion #region Void /// <summary> /// Records the exam information when user loads exam testing. /// </summary> /// <see cref="Model.Score"/> int InsertIntoScore(Score score); /// <summary> /// Submits the answer and record use's answer and update score. /// </summary> /// <see cref="Model.RecordAnswer"/> /// <see cref="Model.Score"/> int SubmitExam(RecordAnswer recordAnswer, Score score); /// <summary> /// Updates the score information of exam when user click finished button. /// </summary> /// <see cref="Model.Score"/> /// <returns>Returns score model.</returns> int SubmitFinishedExam(Score score); /// <summary> /// Submits the exam by system when role loaded. /// </summary> /// <param name="userName">The user's name.</param> int SubmitOutTimeExamByUser(string userName, string roleType); /// <summary> /// Updates score table of currentExamPaperQuestionID column. /// </summary> /// <see cref="Model.Score"/> /// <returns>Return the influence number.</returns> int UpdateScoreByTimer(Score score); #endregion #region Returns Bool /// <summary> /// Judges the exam is out time or not. /// </summary> /// <param name="userName">The user's name.</param> /// <param name="examId">The exam's id.</param> /// <returns>Returns a bool result about the exam is out time or not.</returns> bool IsExamOutTime(string userName, int examId); #endregion } }
namespace Dal { /// <summary> /// This class is provided to implement <c>IExamDal</c> methods. /// </summary> public class ExamDal : IExamDal { #region Returns List /// <summary> /// Gets exam list when first loaded in take exam. /// </summary> /// <param name="order">Judge get the exam is finished or not. 0 equals finished ohter equals unfinished.</param> /// <returns>Return exam list.</returns> public IList<Exam> RetrieveExamList(string userName, int order) { IList<Exam> examList = null; try { string sqlText = null; if (order == 0) { sqlText = SqlText.RetrieveUNFinishedExam; } else { sqlText = SqlText.RetrieveToDoExam; } SqlParameter[] prams = new SqlParameter[] { new SqlParameter("@userName", userName), }; SqlDataReader sqlDataReader = SqlHelper.ExecureReader(sqlText, prams); examList = new List<Exam>(); Exam exam = null; while (sqlDataReader.Read()) { exam = new Exam(); exam.ExamId = (int)sqlDataReader["exam_id"]; exam.Name = sqlDataReader["name"].ToString(); exam.SingleQuestionScore = (int)sqlDataReader["single_question_score"]; exam.Quantity = (int)sqlDataReader["quantity"]; exam.TotalScore = (int)sqlDataReader["total_score"]; exam.Duration = (int)sqlDataReader["duration"]; exam.Description = sqlDataReader["description"].ToString(); exam.PassScore = (int)sqlDataReader["pass_score"]; examList.Add(exam); } SqlHelper.CloseSqlDataReader(sqlDataReader); } catch (SqlException ex) { throw new ExamException(ExamException.RetrieveExamList,ex); } return examList; }