/// <summary> /// 新規従業員登録 /// </summary> /// <param name="name">名前</param> /// <param name="pass">パスワード</param> /// <param name="birth">生年月日</param> /// <returns>登録可能な情報はTrue、不可能ならfalseを返します。</returns> public bool AddEmp(string name, int pass, DateTime birth, bool authority) { using (var db = new GoingToWorkAppContext()) { var userCheck = db.Emp.Where(x => x.EmpName.Equals(name)) .Where(x => x.EmpPassword.Equals(pass)) .ToList(); //既に登録されている従業員の場合 if (userCheck.Count >= 1) { return(false); } //登録処理 db.Emp.Add(new Emp() { EmpName = name, EmpPassword = pass, EmpBirth = birth, IsGoingToWork = false, Authority = authority, }); db.SaveChanges(); //登録できた場合 return(true); } }
/// <summary> /// 社員テーブルから名前とパスワードで検索 /// </summary> /// <param name="name">名前</param> /// <param name="pass">パスワード</param> /// <returns></returns> public IEnumerable <Emp> SelectEmp(string name, int pass) { using (var db = new GoingToWorkAppContext()) { //名前とパスワードで検索 var selectName = db.Emp.Where(x => x.EmpName.Equals(name)).ToList(); var selectPass = selectName.Where(x => x.EmpPassword.Equals(pass)).ToList(); //名前、パスワードどちらかが検索できなかったら処理を抜ける if (!selectName.Count.Equals(1)) { return(selectName.AsEnumerable <Emp>()); } if (!selectPass.Count.Equals(1)) { return(selectPass.AsEnumerable <Emp>()); } var selectEmp = db.Emp.Where(x => x.EmpName.Equals(name)) .Where(x => x.EmpPassword.Equals(pass)) .ToList(); return(selectEmp.AsEnumerable <Emp>()); } }
/// <summary> /// 休憩終了時刻を記録 /// </summary> /// <param name="name"></param> /// <param name="pass"></param> public void BreakEndInsert(string empName, int empPass) { var selectEmp = this.SelectEmp(empName, empPass); if (selectEmp.Count().Equals(0)) { return; } using (var db = new GoingToWorkAppContext()) { var workDateEmpName = db.WorkDate.Where(x => x.EmpName.Equals(empName)) .Where(x => x.WorkStart != null) .Where(x => x.BreakStart != null) .Where(x => x.BreakEnd == null) .Where(x => x.WorkEnd == null).ToList(); if (workDateEmpName.Count.Equals(0)) { return; } workDateEmpName.Select(x => x.BreakEnd = DateTime.Now).ToList(); db.SaveChanges(); } }
/// <summary> /// 出勤時間の記録 /// </summary> /// <param name="empName">名前</param> /// <param name="empPass">パスワード</param> public void WorkStartInsert(string empName, int empPass) { using (var db = new GoingToWorkAppContext()) { var selectEmp = this.SelectEmp(empName, empPass); if (selectEmp.Count().Equals(0)) { MessageBox.Show("出勤できませんでした。", "出勤エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //出勤時間の記録 db.WorkDate.Add(new WorkDate() { EmpName = empName, WorkStart = DateTime.Now, }); //出勤した従業員の出勤中フラグを立てる var emp = db.Emp.Where(x => x.EmpName.Equals(empName)).ToList(); emp.Select(x => x.IsGoingToWork = true).ToList(); db.SaveChanges(); } }
/// <summary> /// 勤務日テーブルの社員の名前を取得 /// </summary> /// <param name="empName">登録済の名前</param> /// <returns></returns> public IEnumerable <WorkDate> GetWorkDateName(string empName) { using (var db = new GoingToWorkAppContext()) { var emp = db.WorkDate.Where(x => x.EmpName.Equals(empName)).ToList(); if (emp.Count.Equals(0)) { IEnumerable <WorkDate> nullEmp = null; return(nullEmp); } return(emp.AsEnumerable <WorkDate>()); } }
/// <summary> /// 退勤時刻を記録 /// </summary> /// <param name="empName">名前</param> /// <param name="empPass">パスワード</param> public void WorkEndInsert(string empName, int empPass) { var selectEmp = this.SelectEmp(empName, empPass); if (selectEmp.Count().Equals(0)) { return; } using (var db = new GoingToWorkAppContext()) { var breakCheck = db.WorkDate.Where(x => x.EmpName.Equals(empName)) .Where(x => x.BreakStart != null) .Where(x => x.BreakEnd == null).ToList(); if (!breakCheck.Count.Equals(0)) { MessageBox.Show("この従業員は現在休憩中です。\n退勤するには休憩を終了して下さい。", "確認画面", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } //出勤時間が記録され、かつ退勤記録がないものを検索 var workDateEmpName = db.WorkDate.Where(x => x.EmpName.Equals(empName)) .Where(x => x.WorkStart != null) .Where(x => x.WorkEnd == null).ToList(); if (workDateEmpName.Count.Equals(0)) { return; } workDateEmpName.Select(x => x.WorkEnd = DateTime.Now).ToList(); var emp = db.Emp.Where(x => x.EmpName.Equals(empName)) .Where(x => x.EmpPassword.Equals(empPass)).ToList(); emp.Select(x => x.IsGoingToWork = false).ToList(); db.SaveChanges(); } }
/// <summary> /// 現在勤務中の従業員を検索 /// </summary> /// <param name="empName">登録済みの名前</param> /// <param name="empPass">登録済みのパスワード</param> /// <returns></returns> public bool IsNowGoingToWork(string empName, int empPass) { using (var db = new GoingToWorkAppContext()) { var selectEmp = this.SelectEmp(empName, empPass); //var selectName = db.Emp.Where(x => x.EmpName == empName).ToList(); //var selectNameAndPass = selectEmp.Where(x => x.EmpPassword.Equals(empPass)).ToList(); var isNowGoingEmp = selectEmp.Where(x => x.IsGoingToWork == true).ToList(); if (isNowGoingEmp.Count.Equals(0)) { //出勤していない return(false); } else { //現在出勤中 return(true); } } }
private void btnLogin_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(this.txtName.Text)) { log.Warn(); MessageBox.Show("名前を入力して下さい", "入力確認", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); this.txtName.Focus(); return; } if (string.IsNullOrEmpty(this.txtPassword.Text)) { log.Warn(); MessageBox.Show("パスワードを入力して下さい", "入力確認", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); this.txtPassword.Focus(); return; } if (!Regex.IsMatch(txtPassword.Text, @"^[0-9]+$")) { log.Warn(); MessageBox.Show("パスワードは半角数字を入力して下さい", "入力確認", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); this.txtPassword.Text = string.Empty; this.txtPassword.Focus(); return; } var name = this.txtName.Text; var pass = Convert.ToInt32(this.txtPassword.Text); var dbConn = new DBConnection(); try { log.Info(); //従業員登録チェック var emp = dbConn.SelectEmp(name, pass); //従業員の登録が確認できなかったら処理を抜ける if (emp.Count().Equals(0)) { log.Warn(); MessageBox.Show("この従業員は登録されていないか、パスワードが違います。"); return; } //権限チェック using (var db = new GoingToWorkAppContext()) { var adminCheck = db.Emp.Where(x => x.EmpName.Equals(name)) .Where(x => x.EmpPassword.Equals(pass)) .Where(x => x.Authority == true).ToList(); //アカウントが管理者の権限を持っていなかった場合、処理を抜ける if (adminCheck.Count.Equals(0)) { log.Warn(); MessageBox.Show("このアカウントは管理者の権限を持っていません。"); return; } MessageBox.Show("権限を確認しました。"); //権限確認後、管理画面へ var management = new ManagementForm(); management.Show(); this.Close(); } } catch (Exception) { log.Error(); throw; } }