Example #1
0
        private void CheckInOrCheckOut(AttendanceLog attendance, string workerId)
        {
            var lastAttendance = GetLastAttendanceLog(attendance.UserId, attendance.LogDate);

            Logger.DebugFormat("Last attendance({@attendance}).", lastAttendance);

            AttendanceStatus status = AttendanceStatus.Unknown;

            try
            {
                status = attendance.CalculateStatus(lastAttendance);
                Logger.DebugFormat("Attendance({id}) status: {status}.", attendance.Id, status);
            }
            catch (NotSupportedException ex)
            {
                Logger.ErrorFormat("CheckInOrCheckOut error:{exception}, attendance:{@log}, worker:{id}",
                                   ex.Message, attendance, workerId);
                return;
            }

            if (status == AttendanceStatus.CheckIn)
            {
                CheckIn(attendance, workerId);
                return;
            }

            if (status == AttendanceStatus.CheckOut)
            {
                CheckOut(attendance, workerId);
                return;
            }

            Logger.ErrorFormat("CheckInOrCheckOut: Unknown status, attendance:{@log}, worker:{id}", attendance, workerId);
        }
Example #2
0
        /// <summary>
        /// Creates a new instance of the class
        /// </summary>
        /// <param name="moduleId">The optional Id of the Module associated with the Attendance record.</param>
        /// <param name="userId">The Id of the User associated with the attendance record.</param>
        /// <param name="score">A double representing the score for any exam associated with the event/module.</param>
        /// <param name="status">An <see cref="AttendanceStatus"></see> enum with the desired status.</param>
        public Attendance(int userId, int?moduleId = null, AttendanceStatus status = AttendanceStatus.Present, double score = 0.0)
        {
            if (userId <= 0)
            {
                throw new AttendanceArgumentException("Cannot create Attendance: parameter must be greater than 0.", nameof(userId));
            }
            if (moduleId != null)
            {
                if (moduleId <= 0)
                {
                    throw new AttendanceArgumentException("Cannot create Attendance: paramater must be greater than 0.", nameof(moduleId));
                }
            }
            if (score < 0.0)
            {
                score = 0.0;
            }
            else if (score > 100.0)
            {
                score = 100.0;
            }

            ModuleId = moduleId;
            UserId   = userId;
            Score    = score;
            Status   = status;
        }
Example #3
0
        private List <AttendanceStatus> selectAttendanceStatuses(SqlCommand cmd)
        {
            cmd.CommandType = CommandType.StoredProcedure;
            SqlConnection           con          = cmd.Connection;
            List <AttendanceStatus> listStatuses = new List <AttendanceStatus>();

            con.Open();
            using (con)
            {
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    listStatuses = new List <AttendanceStatus>();
                    while (dr.Read())
                    {
                        AttendanceStatus st = new AttendanceStatus
                        {
                            ID          = Convert.ToInt32(dr[0]),
                            Description = Convert.ToString(dr[1])
                        };

                        listStatuses.Add(st);
                    }
                }
            }
            return(listStatuses);
        }
Example #4
0
 protected override void update()
 {
     AttendanceStatus.update(UserAccount.LoggedInAccount.Id,
                             selectedRowID(),
                             itxt_Name.ValueText,
                             itxt_Notes.ValueText);
 }
Example #5
0
        private void EnsureCheckInOrCheckOut(AttendanceLog log, string workerId)
        {
            var attendance          = _db.GetLastAttendanceLogByEnrollNumber(log.UserId);
            AttendanceStatus status = AttendanceStatus.Unknown;

            try
            {
                status = log.CalculateStatus(attendance);
            }
            catch (NotSupportedException ex)
            {
                _logger.ErrorFormat("EnsureCheckInOrCheckOut error:{exception}, attendance:{@log}, worker:{id}",
                                    ex.Message, attendance, workerId);
                return;
            }

            if (status == AttendanceStatus.CheckIn)
            {
                EnsureCheckIn(log, workerId);
                return;
            }

            if (status == AttendanceStatus.CheckOut)
            {
                EnsureCheckOut(log, workerId);
                return;
            }

            _logger.ErrorFormat("EnsureCheckInOrCheckOut: Unknown status, attendance:{@log}, worker:{id}", attendance, workerId);
        }
Example #6
0
 protected override System.Data.DataView loadGridviewDataSource()
 {
     return(AttendanceStatus.get(chkIncludeInactive.Checked, null,
                                 getFilterValue <string>(itxt_Name),
                                 getFilterValue <string>(itxt_Notes)
                                 ).DefaultView);
 }
Example #7
0
        protected override void populateInputFields()
        {
            AttendanceStatus obj = new AttendanceStatus(selectedRowID());

            itxt_Name.ValueText  = obj.Name;
            itxt_Notes.ValueText = obj.Notes;
        }
Example #8
0
 public AttendanceEntry(string userId, string name, AttendanceStatus status, string message = null)
 {
     UserId  = userId;
     Name    = name;
     Status  = status;
     Message = message;
 }
        public IHttpActionResult Get(int eventPageId, AttendanceStatus status)
        {
            List <EventPageAttendance> attendees = null;

            switch (status)
            {
            case AttendanceStatus.Going:
                attendees = _eventPageAttendanceService.GetAllGoing(eventPageId);
                break;

            case AttendanceStatus.NotGoing:
                attendees = _eventPageAttendanceService.GetAllNotGoing(eventPageId);
                break;

            case AttendanceStatus.Maybe:
                attendees = _eventPageAttendanceService.GetAllMaybies(eventPageId);
                break;

            case AttendanceStatus.Invited:
                attendees = _eventPageAttendanceService.GetAllInvited(eventPageId);
                break;
            }
            var userIds = attendees.Select(x => x.CustomerId);

            var users = _userService.Get(x => userIds.Contains(x.Id)).ToArray();

            var models = new List <object>();

            foreach (var user in users)
            {
                models.Add(user.ToModel(_mediaService, _mediaSettings));
            }

            return(RespondSuccess(new { Users = models }));
        }
Example #10
0
        /*******************************************************************************************************/
        #region METHODS

        private void setupControls()
        {
            this.ShowIcon = false;
            setupControlsBasedOnRoles();

            iddl_DayOfWeek.populate(typeof(DayOfWeek));
            AttendanceStatus.populateDropDownList(iddl_AttendanceStatuses, false);

            idtp_FilterAttendance_StartDate.Value = DateTime.Today.AddMonths(-3);
            idtp_FilterAttendance_EndDate.Value   = DateTime.Today;

            dgvAttendances.AutoGenerateColumns                                 = false;
            col_dgvAttendances_Id.DataPropertyName                             = Attendance.COL_DB_Id;
            col_dgvAttendances_In.DataPropertyName                             = Attendance.COL_DB_TimestampIn;
            col_dgvAttendances_Out.DataPropertyName                            = Attendance.COL_DB_TimestampOut;
            col_dgvAttendances_EffectiveIn.DataPropertyName                    = Attendance.COL_DB_EffectiveTimestampIn;
            col_dgvAttendances_EffectiveOut.DataPropertyName                   = Attendance.COL_DB_EffectiveTimestampOut;
            col_dgvAttendances_EffectiveWorkHours.DataPropertyName             = Attendance.COL_EffectiveWorkHours;
            col_dgvAttendances_Flag1.DataPropertyName                          = Attendance.COL_DB_Flag1;
            col_dgvAttendances_Flag2.DataPropertyName                          = Attendance.COL_DB_Flag2;
            col_dgvAttendances_Approved.DataPropertyName                       = Attendance.COL_DB_Approved;
            col_dgvAttendances_Rejected.DataPropertyName                       = Attendance.COL_DB_Rejected;
            col_dgvAttendances_Notes.DataPropertyName                          = Attendance.COL_DB_Notes;
            col_dgvAttendances_PayrollItems_Id.DataPropertyName                = Attendance.COL_DB_PayrollItems_Id;
            col_dgvAttendances_Employee_UserAccounts_Id.DataPropertyName       = Attendance.COL_DB_UserAccounts_Id;
            col_dgvAttendances_Employee_UserAccounts_Fullname.DataPropertyName = Attendance.COL_UserAccounts_Fullname;
            col_dgvAttendances_Clients_Name.DataPropertyName                   = Attendance.COL_Clients_CompanyName;
            col_dgvAttendances_Workshifts_DayOfWeek.DataPropertyName           = Attendance.COL_Workshifts_DayOfWeek_Name;
            col_dgvAttendances_PayRate.DataPropertyName                        = Attendance.COL_DB_AttendancePayRates_Amount;
            col_dgvAttendances_Payrolls_No.DataPropertyName                    = Attendance.COL_Payrolls_No;
            col_dgvAttendances_Payrolls_HasPayment.DataPropertyName            = Attendance.COL_Payrolls_HasPayment;
        }
Example #11
0
 protected override void virtual_dgv_CellContentClick(object sender, DataGridViewCellEventArgs e)
 {
     if (Util.isColumnMatch(sender, e, col_dgv_IsReplace))
     {
         AttendanceStatus.updateReplaceStatus(UserAccount.LoggedInAccount.Id, Util.getSelectedRowID(dgv, col_dgv_Id), !Util.getCheckboxValue(sender, e));
         populateGridViewDataSource(true);
     }
 }
Example #12
0
        private static void TestAttendanceEntryStateChange(AttendanceStatus initial, AttendanceStatus expected, Action <AttendanceEntry> action)
        {
            var entry = new AttendanceEntry("some id", "some name", initial);

            action(entry);

            Assert.AreEqual(expected, entry.Status);
        }
 public AttendanceRecord(
     User attendee,
     AttendanceStatus status = default,
     string comment          = default)
 {
     Attendee = attendee;
     Status   = status;
     Comment  = comment;
 }
Example #14
0
 /// <summary>
 /// Read instance from database.
 /// </summary>
 /// <param name="id"></param>
 /// <param name="enrollNumber"></param>
 /// <param name="state"></param>
 /// <param name="mode"></param>
 /// <param name="logDate"></param>
 /// <param name="workCode"></param>
 /// <param name="machineNumber"></param>
 /// <param name="projectId"></param>
 /// <param name="deviceName"></param>
 /// <param name="type"></param>
 /// <param name="status"></param>
 public AttendanceLog(string id, string enrollNumber, int state, int mode,
                      DateTime logDate, int workCode, int machineNumber, string projectId,
                      string deviceName, DeviceType type, AttendanceStatus status) : this(enrollNumber, state, mode, workCode, machineNumber, deviceName, type)
 {
     Id        = id;
     LogDate   = logDate;
     ProjectId = projectId;
     LogStatus = status;
 }
Example #15
0
 protected override Boolean isInputFieldsValid()
 {
     Util.sanitize(itxt_Name, itxt_Notes);
     if (string.IsNullOrEmpty(itxt_Name.ValueText))
     {
         return(itxt_Name.isValueError("Please provide name"));
     }
     else if ((Mode != FormModes.Update && AttendanceStatus.isNameExist(null, itxt_Name.ValueText)) ||
              (Mode == FormModes.Update && AttendanceStatus.isNameExist(selectedRowID(), itxt_Name.ValueText)))
     {
         return(itxt_Name.isValueError("Name is already in the list."));
     }
     return(true);
 }
Example #16
0
 private string FormatAttendance(AttendanceStatus status)
 {
     switch (status)
     {
         case AttendanceStatus.Absent:
             return "F";
         case AttendanceStatus.Attended:
             return "P";
         case AttendanceStatus.Dismissed:
             return "D";
         default:
             return "Undefined AttendanceStatus.";
     }
 }
Example #17
0
        public static int GetAttendanceCount(this ioschools.DB.user usr, int year, AttendanceStatus status, bool forClass)
        {
            var results = usr.attendances.Where(x => x.status == status.ToString() && x.date >= new DateTime(year, 1, 1) && x.date <= new DateTime(year, 12, 31));

            if (forClass)
            {
                results = results.Where(x => x.classid.HasValue);
            }
            else
            {
                results = results.Where(x => x.ecaid.HasValue);
            }

            return(results.Count());
        }
Example #18
0
        public void Can_Update_Status_Present()
        {
            // Arrange
            int validUserId = 1;
            AttendanceStatus validStatus = AttendanceStatus.Absent;
            var entity = new Attendance(validUserId, null, validStatus);

            Assert.Equal(AttendanceStatus.Absent, entity.Status);

            // Act
            entity.UpdateStatusPresent();

            // Assert
            Assert.Equal(AttendanceStatus.Present, entity.Status);
        }
Example #19
0
 private void iddl_AttendanceStatuses_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (_IsFinishPopulateAttendanceStatuses && iddl_AttendanceStatuses.hasSelectedValue())
     {
         AttendanceStatus attendanceStatus = new AttendanceStatus((Guid)iddl_AttendanceStatuses.SelectedValue);
         if (attendanceStatus.IsReplace)
         {
             itxt_ReplacementAttendance.Visible = true;
         }
         else
         {
             itxt_ReplacementAttendance.Visible = false;
         }
     }
 }
Example #20
0
        protected override void setupFields()
        {
            setColumnsDataPropertyNames(AttendancePayRate.COL_DB_Id, AttendancePayRate.COL_DB_Active, null, null, null, null);
            col_dgv_WorkshiftTemplates_Name = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_Workshifts_Name", "Templates", AttendancePayRate.COL_WorkshiftTemplates_Name, true, true, "", true, false, 60, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_Workshifts_Name         = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_Workshifts_Name", "Workshifts", AttendancePayRate.COL_Workshifts_Name, true, true, "", true, false, 60, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_AttendanceStatuses_Name = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_AttendanceStatuses_Name", iddl_AttendanceStatuses.LabelText, AttendancePayRate.COL_AttendanceStatuses_Name, true, true, "", true, false, 60, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_Amount             = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_Amount", in_Amount.LabelText, AttendancePayRate.COL_DB_Amount, true, true, "N0", true, false, 50, DataGridViewContentAlignment.MiddleRight);
            col_dgv_Notes              = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_Notes", itxt_Notes.LabelText, AttendancePayRate.COL_DB_Notes, true, true, "", true, false, 50, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_Notes.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

            AttendanceStatus.populateDropDownList(iddl_AttendanceStatuses, false);
            if (_RefId != null)
            {
                itxt_Ref.setValue(_RefName, (Guid)_RefId);
            }
        }
        public void ColorRows()
        {
            foreach (DataGridViewRow row in dgvAttendance.Rows)
            {
                AttendanceStatus aStatus = (AttendanceStatus)row.Cells[5].Value;

                if (aStatus == AttendanceStatus.Attended)
                {
                    row.DefaultCellStyle.BackColor = Color.LawnGreen;
                }
                else if (aStatus == AttendanceStatus.Absent)
                {
                    row.DefaultCellStyle.BackColor = Color.Orange;
                }
            }
        }
Example #22
0
        private static string ToStatusString(this AttendanceStatus status)
        {
            switch (status)
            {
            case AttendanceStatus.LATE:
                return("<span class='status_orange'>LATE</span>");

            case AttendanceStatus.ABSENT:
                return("<span class='status_red'>ABSENT</span>");

            case AttendanceStatus.EXCUSED:
                return("<span class='status_blue'>EXCUSED</span>");

            default:
                return("ERROR");
            }
        }
Example #23
0
        public void Given_All_Valid_Values_Attendance_Is_Valid()
        {
            // Arrange
            int validUserId              = 1;
            int validModuleId            = 1;
            AttendanceStatus validStatus = AttendanceStatus.Excused;
            double           validScore  = 100.00;

            // Act
            var entity = new Attendance(validUserId, validModuleId, validStatus, validScore);

            // Assert
            Assert.Equal(validUserId, entity.UserId);
            Assert.Equal(validScore, entity.Score);
            Assert.Equal(validStatus, entity.Status);
            Assert.Equal(validModuleId, entity.ModuleId);
        }
Example #24
0
        protected override void setupFields()
        {
            disableFieldActive();
            idtp_TimestampIn.Value  = DateTime.Now;
            idtp_TimestampOut.Value = DateTime.Now;

            setColumnsDataPropertyNames(Attendance.COL_DB_Id, null, null, null, null, null);
            dgv.AutoGenerateColumns       = false;
            col_dgv_UserAccounts_FullName = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_UserAccounts_FullName", itxt_UserAccount.LabelText, Attendance.COL_UserAccounts_Fullname, true, true, "", true, false, 60, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_Clients_CompanyName   = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_Clients_CompanyName", itxt_Client.LabelText, Attendance.COL_Clients_CompanyName, true, true, "", true, false, 60, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_hasWorkshifts_Id      = base.addColumn <DataGridViewCheckBoxCell>(dgv, "col_dgv_hasWorkshifts_Id", itxt_Workshift.LabelText, Attendance.COL_HasWorkshifts_Id, true, false, "", true, false, 50, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_Workshifts_Name       = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_Workshifts_Name", itxt_Workshift.LabelText, Attendance.COL_Workshifts_Name, true, true, "", true, false, 50, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_Workshifts_DayOfWeek  = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_Workshifts_DayOfWeek", "Day Of Week", Attendance.COL_Workshifts_DayOfWeek_Name, true, true, "", true, false, 50, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_Workshifts_Start      = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_Workshifts_Start", "Start", Attendance.COL_DB_Workshifts_Start, true, true, @"HH:mm", true, false, 50, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_Workshifts_Duration   = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_Workshifts_Duration", "Duration", Attendance.COL_DB_Workshifts_DurationMinutes, true, true, "", true, false, 45, DataGridViewContentAlignment.MiddleCenter);
            col_dgv_AttendanceStatuses    = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_AttendanceStatuses", iddl_AttendanceStatuses.LabelText, Attendance.COL_AttendanceStatuses_Name, true, true, "", true, false, 50, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_TimestampIn           = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_TimestampIn", idtp_TimestampIn.LabelText, Attendance.COL_DB_TimestampIn, true, true, @"dd/MM/yy  HH:mm", true, false, 30, DataGridViewContentAlignment.MiddleCenter);
            col_dgv_TimestampOut          = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_TimestampOut", idtp_TimestampOut.LabelText, Attendance.COL_DB_TimestampOut, true, true, @"dd/MM/yy  HH:mm", true, false, 30, DataGridViewContentAlignment.MiddleCenter);
            col_dgv_EffectiveTimestampIn  = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_EffectiveTimestampIn", idtp_EffectiveTimestampIn.LabelText, Attendance.COL_DB_EffectiveTimestampIn, true, true, @"dd/MM/yy  HH:mm", true, false, 30, DataGridViewContentAlignment.MiddleCenter);
            col_dgv_EffectiveTimestampOut = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_EffectiveTimestampOut", idtp_EffectiveTimestampOut.LabelText, Attendance.COL_DB_EffectiveTimestampOut, true, true, @"dd/MM/yy  HH:mm", true, false, 30, DataGridViewContentAlignment.MiddleCenter);
            col_dgv_Flag1                      = base.addColumn <DataGridViewCheckBoxCell>(dgv, "col_dgv_Flag1", Attendance.COL_DB_Flag1, Attendance.COL_DB_Flag1, true, true, "", true, false, 50, DataGridViewContentAlignment.MiddleCenter);
            col_dgv_Flag2                      = base.addColumn <DataGridViewCheckBoxCell>(dgv, "col_dgv_Flag2", Attendance.COL_DB_Flag2, Attendance.COL_DB_Flag2, true, true, "", true, false, 50, DataGridViewContentAlignment.MiddleCenter);
            col_dgv_Approved                   = base.addColumn <DataGridViewCheckBoxCell>(dgv, "col_dgv_Approved", Attendance.COL_DB_Approved, Attendance.COL_DB_Approved, true, true, "", true, false, 60, DataGridViewContentAlignment.MiddleCenter);
            col_dgv_Rejected                   = base.addColumn <DataGridViewCheckBoxCell>(dgv, "col_dgv_Rejected", Attendance.COL_DB_Rejected, Attendance.COL_DB_Rejected, true, false, "", true, false, 30, DataGridViewContentAlignment.MiddleCenter);
            col_dgv_PayrollItems_Id            = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_PayrollItems_Id", "", Attendance.COL_DB_PayrollItems_Id, false, false, "", false, false, 30, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_Payrolls_No                = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_Payrolls_No", "Payrolls", Attendance.COL_Payrolls_No, false, true, "", false, false, 50, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_HasPayment                 = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_HasPayment", "HasPayment", Attendance.COL_Payrolls_HasPayment, false, false, "", false, false, 30, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_Replacement_Attendances_Id = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_Replacement_Attendances_Id", itxt_ReplacementAttendance.LabelText, Attendance.COL_DB_Replacement_Attendances_Id, true, false, "", true, false, 30, DataGridViewContentAlignment.MiddleCenter);

            // note :
            //Saya pakai method addLinkColumn agar bisa melakukan format Link (seperti yang di Form Timesheet)
            //Saya coba pakai method addColumn biasa, tidak ada pilihan untuk setting LinkBehavior dll.

            //col_dgv_Replacement_Attendances_Fullname = base.addColumn<DataGridViewLinkCell>(dgv, "col_dgv_Replacement_Attendances_Fullname", "Replacement", Attendance.COL_Replacement_Attendances_Fullname, true, true, "", true, false, 100, DataGridViewContentAlignment.MiddleCenter);
            col_dgv_Replacement_Attendances_Fullname = addLinkColumn(dgv, "col_dgv_Replacement_Attendances_Fullname", "Replacement", Attendance.COL_Replacement_Attendances_Fullname, 100, DataGridViewAutoSizeColumnMode.None, DataGridViewContentAlignment.MiddleCenter);

            col_dgv_Notes = base.addColumn <DataGridViewTextBoxCell>(dgv, "col_dgv_Notes", itxt_Notes.LabelText, Attendance.COL_DB_Notes, true, true, "", true, false, 50, DataGridViewContentAlignment.MiddleLeft);
            col_dgv_Notes.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

            ptInputPanel.PerformClick();


            AttendanceStatus.populateDropDownList(iddl_AttendanceStatuses, false);
            _IsFinishPopulateAttendanceStatuses = true;
        }
Example #25
0
        private List <EmployeeAttendance> selectEmployeeAttendances(SqlCommand cmd)
        {
            cmd.CommandType = CommandType.StoredProcedure;
            SqlConnection             con            = cmd.Connection;
            List <EmployeeAttendance> listAttendance = new List <EmployeeAttendance>();

            con.Open();
            using (con)
            {
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    listAttendance = new List <EmployeeAttendance>();
                    while (dr.Read())
                    {
                        EmployeeRole role = new EmployeeRole();

                        role.ID          = Convert.ToInt32(dr[3]);
                        role.Description = Convert.ToString(dr[4]);

                        Employee currEmployee = new Employee();
                        currEmployee.ID   = Convert.ToString(dr[1]);
                        currEmployee.Name = Convert.ToString(dr[2]);

                        AttendanceStatus currAttendanceStatus = new AttendanceStatus()
                        {
                            ID          = Convert.ToInt32(dr[5]),
                            Description = Convert.ToString(dr[6])
                        };

                        EmployeeAttendance attendance = new EmployeeAttendance
                        {
                            AttendanceDateTime = Convert.ToDateTime(dr[0]),
                            Emp    = currEmployee,
                            Status = currAttendanceStatus
                        };

                        listAttendance.Add(attendance);
                    }
                }
            }
            return(listAttendance);
        }
 /// <summary>
 /// Validate the object.
 /// </summary>
 /// <exception cref="ValidationException">
 /// Thrown if validation fails
 /// </exception>
 public virtual void Validate()
 {
     if (AttendanceStatusId == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "AttendanceStatusId");
     }
     if (ContextId == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "ContextId");
     }
     if (DisplayName == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "DisplayName");
     }
     if (AttendanceStatus != null)
     {
         AttendanceStatus.Validate();
     }
 }
Example #27
0
        /// <summary>
        /// Get a report for the given class
        /// </summary>
        /// <param name="classId">The id of the class</param>
        /// <returns>All the lectures, students, and attendance for a class</returns>
        private ReportViewModel GetTeacherReport(int classId)
        {
            ReportViewModel report = null;
            var             @class = _manager.ClassManager.GetById(classId);

            if (@class != null)
            {
                report = new ReportViewModel()
                {
                    ClassId   = @class.Id,
                    ClassName = @class.Name,
                    Lectures  = new List <Lecture>(@class.Lectures.OrderByDescending(lecture => lecture.RecordDate)),
                    Statuses  = new List <AttendanceStatus>(@class.Enrollment.Count)
                };

                // statusMap[studentId] -> AttendanceStatus
                var statusMap = new Dictionary <int, AttendanceStatus>(@class.Enrollment.Count);
                foreach (var enrollment in @class.Enrollment)
                {
                    var attStatus = new AttendanceStatus()
                    {
                        Student = enrollment.Student
                    };
                    report.Statuses.Add(attStatus);
                    statusMap.Add(enrollment.Student.Id, attStatus);
                }

                foreach (var lecture in @class.Lectures)
                {
                    foreach (var attendance in lecture.Attendance)
                    {
                        var attStatus = statusMap[attendance.Student.Id];
                        attStatus.Attendance.Add(lecture.Id, attendance.Present);
                    }
                }

                // Order statuses by first name
                report.Statuses = report.Statuses.OrderBy(s => s.Student.FirstName).ToList();
            }

            return(report);
        }
        public List <AttendanceStatus> GetAttendanceStatusAsync(
            List <EmployeeStateModel> employeeStates,
            List <AttendanceModel> employeeActives,
            int shiftId)
        {
            var attendancStatuses = new List <AttendanceStatus>();

            var results = employeeStates
                          .Where(x => x.ShiftId == shiftId)
                          .GroupBy(g => new { g.JobFunction.Section.Department.DepartmentName, g.JobFunction.Section.SectionName, g.Shift.ShiftName })
                          .Select(x => new
            {
                Department  = x.Key.DepartmentName,
                Section     = x.Key.SectionName,
                Shift       = x.Key.ShiftName,
                TotalPerson = x.Select(e => e.EmployeeId).Count()
            }).ToList();

            foreach (var item in results)
            {
                var activePerson  = employeeActives.Count(x => x.DepartmentName == item.Department && x.SectionName == item.Section && x.ShiftName == item.Shift);
                var absentPrtson  = item.TotalPerson - activePerson;
                var activePercent = Math.Round((activePerson / (decimal)item.TotalPerson) * 100, 0);

                var attendancStatus = new AttendanceStatus
                {
                    Department    = item.Department,
                    Section       = item.Section,
                    ShiftName     = item.Shift,
                    TotalPerson   = item.TotalPerson,
                    ActivePerson  = activePerson,
                    AbsentPerson  = absentPrtson,
                    ActivePercent = activePercent
                };

                attendancStatuses.Add(attendancStatus);
            }

            var statusResult = attendancStatuses.OrderBy(x => x.Department).ThenBy(x => x.ShiftName).ToList();

            return(statusResult);
        }
Example #29
0
        public void SetAttendanceForDay(AttendanceStatus status)
        {
            var date            = CurrentDayForAttendance;
            var attendanceRow   = _studentRow.GetAttendanceRows().SingleOrDefault(a => a.StudentKey == _studentRow.Key && a.Date == date);
            var ds              = (_studentRow.Table.DataSet as Gradebook);
            var attendanceTable = ds.Attendance;

            if (attendanceRow == null)
            {
                if (status != AttendanceStatus.OnTime)  // don't bother saving it there are on time
                {
                    attendanceTable.AddAttendanceRow(_studentRow, date, status.ToString());
                }
            }
            else
            {
                attendanceRow.State = status.ToString();
            }
            return;
        }
Example #30
0
 public AttandanceControl(Teacher teacher, Student student)
 {
     //indicates which tecaher made a swipe
     Teacher = teacher;
     //which student is swiped
     Student   = student;
     FirstName = student.FirstName;
     LastName  = student.LastName;
     //group of the student (used for filtering as well)
     Group = student.GroupName;
     //access status
     Status = student.In_Out_Status;
     //attendance status
     AStatus   = AttendanceStatus.Absent;
     SwipeTime = DateTime.Now;
     //type of the swipe
     swipeType = SwipeType.Attendance;
     userType  = student.UserType;
     User      = student;
 }
Example #31
0
        /// <summary>
        /// Get a report for the given class
        /// </summary>
        /// <param name="classId">The id of the class</param>
        /// <returns>All the lectures, students, and attendance for a class</returns>
        private ReportViewModel GetStudentReport(int classId, int studentId)
        {
            ReportViewModel report  = null;
            var             @class  = _manager.ClassManager.GetById(classId);
            var             student = _manager.UserManager.GetStudentById(studentId);

            if (@class != null && student != null)
            {
                report = new ReportViewModel()
                {
                    ClassId   = @class.Id,
                    ClassName = @class.Name,
                    Lectures  = new List <Lecture>(@class.Lectures.OrderByDescending(lecture => lecture.RecordDate)),
                    Statuses  = new List <AttendanceStatus>(1)
                };

                // TODO: verify that Student object is included
                var attStatus = new AttendanceStatus()
                {
                    Student = student
                };
                report.Statuses.Add(attStatus);

                foreach (var lecture in @class.Lectures)
                {
                    var att = lecture.Attendance.FirstOrDefault(a => a.Student.Id == student.Id);

                    if (att != null)
                    {
                        attStatus.Attendance.Add(lecture.Id, att.Present);
                    }
                }
            }

            return(report);
        }
 public void SetAttendanceForDay(AttendanceStatus status)
 {
     var date = CurrentDayForAttendance;
     var attendanceRow = _studentRow.GetAttendanceRows().SingleOrDefault(a => a.StudentKey == _studentRow.Key && a.Date == date);
     var ds = (_studentRow.Table.DataSet as Gradebook);
     var attendanceTable = ds.Attendance;
     if (attendanceRow == null)
     {
         if (status != AttendanceStatus.OnTime)  // don't bother saving it there are on time
             attendanceTable.AddAttendanceRow(_studentRow, date, status.ToString());
     }
     else
         attendanceRow.State = status.ToString();
     return;
 }
 public int DaysAttendance(Period p, AttendanceStatus status)
 {
     return _studentRow.GetAttendanceRows().Count(a => a.Date >= p.StartDate && a.Date <= p.EndDate && a.State == status.ToString());
 }