public ActionResult Create(CreateAttendanceViewModel attendanceViewModel) { if (ModelState.IsValid) { TimeSpan?duration = null; if (attendanceViewModel.TimeOut.HasValue) { duration = attendanceViewModel.TimeOut - attendanceViewModel.TimeIn; } var user = db.Users.Single(u => u.Id == attendanceViewModel.ApplicationUserId); var newAttendance = new Attendance { ApplicationUserId = attendanceViewModel.ApplicationUserId, TimeIn = attendanceViewModel.TimeIn, TimeOut = attendanceViewModel.TimeOut, Duration = duration, CampusId = user.CampusId, DepartmentId = user.DepartmentId, CohortId = user.CohortId }; db.Attendances.Add(newAttendance); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(attendanceViewModel)); }
public virtual ActionResult CreateAttendance() { var viewModel = new CreateAttendanceViewModel { Employees = GetEmployeeNames() }; return(View(viewModel)); }
// GET: Attendances/Create public ActionResult Create() { var viewModel = new CreateAttendanceViewModel { ApplicationUsers = db.Users.ToList() }; return(View(viewModel)); }
public virtual ActionResult EditAttendance(CreateAttendanceViewModel viewModel) { var clockIn = Convert.ToDateTime(String.Format("{0} {1}", viewModel.ClockIn.ToShortDateString(), viewModel.ClockInTime)); var clockOut = Convert.ToDateTime(String.Format("{0} {1}", viewModel.ClockOut.ToShortDateString(), viewModel.ClockOutTime)); viewModel.Employees = GetEmployeeNames(); //validate clockin and clockout date, should not be a future date if (clockIn > DateTime.Now || clockOut > DateTime.Now) { ModelState.AddModelError("", ErrorMessages.ATTENDANCE_INVALID_FUTUREDATE); return(View("EditAttendance", viewModel)); } var oldAttendance = _attendanceRepository.GetById(viewModel.AttendanceId); _attendanceRepository.Update(oldAttendance); oldAttendance.IsActive = false; var attendance = viewModel.MapItem <Attendance>(); attendance.IsManuallyEdited = true; attendance.ClockIn = clockIn; attendance.ClockOut = clockOut; _attendanceRepository.Add(attendance); //delete employee hours var employeeHours = _employeeHoursRepository.Find(x => x.OriginAttendanceId == attendance.AttendanceId).ToList(); if (employeeHours.Any()) { foreach (var employeeHour in employeeHours) { if (employeeHour.IsIncludedInTotal) { var employeeTotalHours = _totalEmployeeHoursService.GetByEmployeeDateAndType(employeeHour.EmployeeId, employeeHour.Date, employeeHour.Type); if (employeeTotalHours != null) { _totalEmployeeHoursService.Update(employeeTotalHours); employeeTotalHours.Hours -= employeeHour.Hours; } } _employeeHoursRepository.Update(employeeHour); employeeHour.IsActive = false; } } _unitOfWork.Commit(); RecomputeEmployeeHours(attendance.ClockIn, attendance.ClockOut.Value, attendance.EmployeeId); RecomputeTotalEmployeeHours(attendance.ClockIn, attendance.ClockOut.Value, attendance.EmployeeId); ViewData["EditSuccess"] = "Attendance successfully updated"; return(RedirectToAction("Attendance")); }
public async Task <IActionResult> SubmitAttendanceAfterEvent([FromBody] CreateAttendanceViewModel attendanceViewModel) { try { await _attendanceApplicationService.SubmitAttendanceAfterEvent(attendanceViewModel); return(Created("", attendanceViewModel)); } catch (System.Exception) { return(Ok()); } }
public virtual ActionResult CreateAttendance(CreateAttendanceViewModel viewModel) { var clockIn = Convert.ToDateTime(String.Format("{0} {1}", viewModel.ClockIn.ToShortDateString(), viewModel.ClockInTime)); var clockOut = Convert.ToDateTime(String.Format("{0} {1}", viewModel.ClockOut.ToShortDateString(), viewModel.ClockOutTime)); viewModel.Employees = GetEmployeeNames(); //validate clock in should not be greater than or equal to clock out if (clockIn >= clockOut) { if (viewModel.EmployeeId > 0) { var employee = _employeeRepository.GetById(viewModel.EmployeeId); ViewData["Name"] = employee.FullName; } ModelState.AddModelError("", ErrorMessages.ATTENDANCE_CLOCKIN_GREATER_THAN_CLOCKOUT); return(View("CreateAttendance", viewModel)); } //validate clockin and clockout date, should not be a future date if (clockIn > DateTime.Now || clockOut > DateTime.Now) { if (viewModel.EmployeeId > 0) { var employee = _employeeRepository.GetById(viewModel.EmployeeId); ViewData["Name"] = employee.FullName; } ModelState.AddModelError("", ErrorMessages.ATTENDANCE_INVALID_FUTUREDATE); return(View("CreateAttendance", viewModel)); } var attendance = viewModel.MapItem <Attendance>(); attendance.IsManuallyEdited = true; attendance.ClockIn = clockIn; attendance.ClockOut = clockOut; _attendanceRepository.Add(attendance); _unitOfWork.Commit(); ViewData["CreateSuccess"] = "Attendance successfully created"; return(View(new CreateAttendanceViewModel { Employees = viewModel.Employees })); }
public async Task SubmitAttendanceAfterEvent(CreateAttendanceViewModel attendanceViewModel) { var _event = _mapper.Map <Event>(attendanceViewModel.Event); var attendance = _mapper.Map <Attendance>(attendanceViewModel); await _mediator.Send(new AttendanceForEventCommand(_event, attendance)); }