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); }
/// <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; }
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); }
protected override void update() { AttendanceStatus.update(UserAccount.LoggedInAccount.Id, selectedRowID(), itxt_Name.ValueText, itxt_Notes.ValueText); }
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); }
protected override System.Data.DataView loadGridviewDataSource() { return(AttendanceStatus.get(chkIncludeInactive.Checked, null, getFilterValue <string>(itxt_Name), getFilterValue <string>(itxt_Notes) ).DefaultView); }
protected override void populateInputFields() { AttendanceStatus obj = new AttendanceStatus(selectedRowID()); itxt_Name.ValueText = obj.Name; itxt_Notes.ValueText = obj.Notes; }
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 })); }
/*******************************************************************************************************/ #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; }
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); } }
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; }
/// <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; }
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); }
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."; } }
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()); }
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); }
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; } } }
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; } } }
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"); } }
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); }
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; }
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(); } }
/// <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); }
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 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; }
/// <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()); }