/// <summary> /// Method to add or update attendance - SS /// </summary> /// <param name="studentAttendances">student attendance detail</param> /// <param name="loggedInUser">logged in user</param> public async Task AddStudentAttendanceAsync(AddStudentAttendanceManagementWrapperAc studentAttendances, ApplicationUser loggedInUser) { var instituteId = await _instituteUserMappingHelperService.GetUserCurrentSelectedInstituteIdAsync(loggedInUser.Id, true); var academicYear = await _iMSDbContext.InstituteAcademicYears.FirstOrDefaultAsync(x => x.InstituteId == instituteId && x.IsActive); List <StudentAttendance> toBeDeleted = new List <StudentAttendance>(); List <StudentAttendance> toBeAdded = new List <StudentAttendance>(); foreach (var attendance in studentAttendances.Students) { toBeDeleted.AddRange(await _iMSDbContext.StudentAttendances.Where(x => x.StudentId == attendance.StudentId && x.AttendanceDate >= attendance.AttendanceDates.First() && x.AttendanceDate <= attendance.AttendanceDates.Last() && x.PeriodOrderId == studentAttendances.PeriodOrderId).ToListAsync()); for (int i = 0; i < attendance.AttendanceDates.Count; i++) { toBeAdded.Add(new StudentAttendance() { AttendanceDate = attendance.AttendanceDates[i], AttendanceType = EnumHelperService.GetValueFromDescription <AttendanceType>(attendance.AttendanceType[i]), CreatedOn = DateTime.UtcNow, StudentId = attendance.StudentId, PeriodOrderId = studentAttendances.PeriodOrderId, UpdatedById = loggedInUser.Id, UpdatedOn = DateTime.UtcNow, AcademicYearId = academicYear?.Id }); } } _iMSDbContext.StudentAttendances.RemoveRange(toBeDeleted); _iMSDbContext.StudentAttendances.AddRange(toBeAdded); await _iMSDbContext.SaveChangesAsync(); }
public async Task <IActionResult> AddStudentAttendanceAsync([FromBody] AddStudentAttendanceManagementWrapperAc studentAttendances) { var user = await _userManager.FindByNameAsync(User.Identity.Name); await _studentAttendanceManagementRepository.AddStudentAttendanceAsync(studentAttendances, user); return(Ok()); }