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);
        }
예제 #2
0
        /// <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();
        }
예제 #3
0
        /// <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);
            }
        }
예제 #5
0
        /// <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);
        }
예제 #6
0
        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;
        }
예제 #7
0
        /// <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);
        }