public AttendanceMonthTest(ITestOutputHelper tempOutput) : base(tempOutput) { currentDay1 = new AttendanceMonth(1, true); currentDay2 = new AttendanceMonth(2, true); currentDay15 = new AttendanceMonth(15, true); currentDay28 = new AttendanceMonth(28, true); NotCurrentDay1 = new AttendanceMonth(1, false); NotCuurentDay2 = new AttendanceMonth(2, false); NotCurrentDay15 = new AttendanceMonth(15, false); NotCurrentDay28 = new AttendanceMonth(28, false); }
/// <summary> /// 来月ボタンクリックイベント /// 表示中の月の1か月の情報を表示する /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button2_Click(object sender, EventArgs e) { //表示中の月が12月なら、表示する月を1月に設定 if (ShowingMonth == AttendanceMonth.December) { ShowingMonth = AttendanceMonth.January; } else { ShowingMonth++; } // 1か月後の勤怠情報を取得し、画面に表示 ConfigureAttendanceInfo(); }
/// <summary> /// 先月ボタンクリックイベント /// 表示中の月の1か月前の情報を表示する /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button1_Click(object sender, EventArgs e) { //表示中の月が1月なら、表示する月を12月に設定 if (this.ShowingMonth == AttendanceMonth.January) { this.ShowingMonth = AttendanceMonth.December; } else { this.ShowingMonth--; } //1か月前の勤怠情報を取得し、画面に表示 ConfigureAttendanceInfo(); }
public void PrepareCalendarSummary() { try { headerGroupMain.ValuesPrimary.Heading = string.Format("Attendance {1} {0}", ServiceEmployee.GetEmployeeNameByID(this.EmployeeID), AttendanceMonth.ToString("MMMM yyyy")); lblTotalDays.Text = lblNonWorkingDays.Text = lblPaidDays.Text = string.Empty; lblPL.Text = lblCL.Text = lblSL.Text = lblCompOff.Text = string.Empty; lblPresent.Text = lblAbsent.Text = lblOutdoor.Text = lblLateComing.Text = lblEarlyLeaving.Text = string.Empty; MODEL = (new ServiceAttendance()).GetAttendanceSummaryOfEmployeeForMonth(this.EmployeeID, this.AttendanceMonth); if (MODEL != null) { lblTotalDays.Text = MODEL.TotalDays.Text; lblNonWorkingDays.Text = MODEL.NonWorkingDays.Text; lblPaidDays.Text = MODEL.PaidDays.Text; if (MODEL.PaidDays.Days > MODEL.TotalDays.Days) { lblPaidDays.Text = MODEL.TotalDays.Text; } lblPL.Text = MODEL.PLs.Text; lblCL.Text = MODEL.CLs.Text; lblSL.Text = MODEL.SLs.Text; lblCompOff.Text = MODEL.CompOffs.Text; lblPresent.Text = MODEL.Present.Text; lblAbsent.Text = MODEL.Absent.Text; lblOutdoor.Text = MODEL.Outdoor.Text; lblLateComing.Text = MODEL.LateComings.Text; lblEarlyLeaving.Text = MODEL.EarlyGoings.Text; } } catch (Exception ex) { string errMessage = ex.Message; if (ex.InnerException != null) { errMessage += string.Format("\n{0}", ex.InnerException.Message); } MessageBox.Show(errMessage, "ControlEmployeeAttendanceSummary::PrepareCalendarSummary", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// データベースから勤務時間情報を取得 /// </summary> /// <param name="userID">ログインユーザーのユーザーID</param> /// <param name="attendanceMonth">何月の情報を取得するか</param> /// <returns>勤務時間情報リスト</returns> public List <AttendanceTimeInfo> GetAttendanceTimeInfo(string userID, AttendanceMonth attendanceMonth) { var attendanceTimeInfoList = new List <AttendanceTimeInfo>(); //勤務時間情報 //データベースに接続するための文字列を取得 string connString = new CommonDBAccess().MakeAccessString(); using (var conn = new NpgsqlConnection(connString)) { conn.Open(); string sql = @"select 勤務開始時間,勤務終了時間,休憩時間 from 勤怠テーブル where ユーザーid = :userID and extract(year from 勤務開始時間) = :DateTime.Now.Year and extract(month from 勤務開始時間) = :attendanceMonth order by 勤務開始時間"; var cmd = new NpgsqlCommand(sql, conn); cmd.Parameters.Add(new NpgsqlParameter("userID", NpgsqlTypes.NpgsqlDbType.Varchar)); cmd.Parameters["userID"].Value = userID; cmd.Parameters.Add(new NpgsqlParameter("attendanceMonth", NpgsqlTypes.NpgsqlDbType.Integer)); cmd.Parameters["attendanceMonth"].Value = (int)attendanceMonth; cmd.Parameters.Add(new NpgsqlParameter("DateTime.Now.Year", NpgsqlTypes.NpgsqlDbType.Integer)); cmd.Parameters["DateTime.Now.Year"].Value = DateTime.Now.Year; var dataReader = cmd.ExecuteReader(); while (dataReader.Read()) { attendanceTimeInfoList.Add(new AttendanceTimeInfo( (DateTime)dataReader.GetValue(0), (DateTime)dataReader.GetValue(1), (int)(decimal)dataReader.GetValue(2))); } } return(attendanceTimeInfoList); }
ClosingType ClosingStatus = ClosingType.DoNothing; //FormClosingイベントが発生した際の挙動の種類 /// <summary> /// コンストラクタ /// フォーム起動時にすべき画面表示を行う /// </summary> /// <param name="userInfo">ログインユーザーのユーザー情報</param> /// <param name="callerLocation">呼び出し元の座標</param> public AttendanceForm(UserInfo userInfo, Point callerLocation) { InitializeComponent(); this.AttendanceInfoList = new List <AttendanceInfo>(); this.UserInfo = userInfo; this.Location = callerLocation; //ログインユーザーの名前を画面に表示 label1.Text = "ログインユーザー:" + this.UserInfo.UserName; //現在の月を、表示中の月として設定 this.ShowingMonth = (AttendanceMonth)DateTime.Now.Month; //現在の月の勤怠情報を画面に表示 ConfigureAttendanceInfo(); //入力不可な列の色を灰色にする(曜日、残業時間) dataGridView1.Columns[1].DefaultCellStyle.BackColor = Color.LightGray; dataGridView1.Columns[5].DefaultCellStyle.BackColor = Color.LightGray; }
/// <summary> /// 勤怠情報を取得 /// </summary> /// <param name="userID">ログインユーザーのユーザーID</param> /// <param name="attendanceMonth">何月の情報を取得するか</param> /// <returns>勤怠情報リスト</returns> public List <AttendanceInfo> GetAttendanceInfo(string userID, AttendanceMonth attendanceMonth) { const int regularWorkingMinutes = 480; //所定労働時間を480分(8時間)とする var attendanceTimeInfoList = new List <AttendanceTimeInfo>(); //勤務時間情報リスト var attendanceInfoList = new List <AttendanceInfo>(); //勤怠情報リスト //データベースから勤務時間情報を取得 attendanceTimeInfoList = new AttendanceDBAccess().GetAttendanceTimeInfo(userID, attendanceMonth); //勤務時間情報を元に、勤怠情報リストを作成 foreach (var attendanceTimeInfo in attendanceTimeInfoList) { //勤務開始から勤務終了までの時間を算出 TimeSpan ts = attendanceTimeInfo.EndTime - attendanceTimeInfo.StartTime; //労働時間を算出 int workingTime = (int)ts.TotalMinutes - attendanceTimeInfo.BreakTime; //残業時間を算出 int overTime = workingTime - regularWorkingMinutes; if (overTime < 0) { overTime = 0; } //リストに要素を追加 attendanceInfoList.Add(new AttendanceInfo( attendanceTimeInfo.StartTime.Day, attendanceTimeInfo.StartTime. ToString("ddd", System.Globalization.CultureInfo.GetCultureInfo("ja-JP")), attendanceTimeInfo, overTime )); } return(attendanceInfoList); }