[HttpPost("AddClassSectionUserMappingInBulk")] // for students public async Task <IActionResult> AddClassSectionUserMappingInBulk(ClassSectionUserDtoForAddBulk classSectionUser) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } //if (await _repo.ClassSectionExists(classSection.ClassId, classSection.SectionId)) // return BadRequest(new { message = "Class Section Already Exist" }); _response = await _repo.AddClassSectionUserMappingBulk(classSectionUser); return(Ok(_response)); }
public async Task AddClassSectionUserMappingInBulk_StateUnderTest_ExpectedBehavior() { // Arrange var classesController = this.CreateClassesController(); ClassSectionUserDtoForAddBulk classSectionUser = null; // Act var result = await classesController.AddClassSectionUserMappingInBulk( classSectionUser); // Assert Assert.True(false); this.mockRepository.VerifyAll(); }
public async Task <ServiceResponse <object> > AddClassSectionUserMappingBulk(ClassSectionUserDtoForAddBulk model) { try { var CanHaveStudents = _context.ClassSections.Where(m => m.Id == model.ClassSectionId && m.Active == true).FirstOrDefault()?.NumberOfStudents; var ToAddStudents = model.UserIds.Count(); var existingUserIds = _context.ClassSectionUsers.Where(m => m.ClassSectionId == model.ClassSectionId && m.UserTypeId == (int)Enumm.UserType.Student).Select(m => m.UserId).ToList(); //var existingUserIds = existingIds; if (CanHaveStudents < (existingUserIds.Count() + ToAddStudents)) { _serviceResponse.Success = false; _serviceResponse.Message = string.Format(CustomMessage.CantExceedLimit, CanHaveStudents.ToString()); return(_serviceResponse); } //if (existingIds.Count() <= model.UserIds.Count()) //{ var IdsToAdd = model.UserIds.Except(existingUserIds); List <ClassSectionUser> listToAdd = new List <ClassSectionUser>(); foreach (var userId in IdsToAdd) { listToAdd.Add(new ClassSectionUser { ClassSectionId = model.ClassSectionId, UserId = userId, UserTypeId = _context.Users.FirstOrDefault(m => m.Id == userId && m.Active == true) != null ? _context.Users.FirstOrDefault(m => m.Id == userId && m.Active == true).UserTypeId : (int)Enumm.UserType.Student, CreatedDate = DateTime.UtcNow, SchoolBranchId = _LoggedIn_BranchID }); } if (listToAdd.Count > 0) { await _context.ClassSectionUsers.AddRangeAsync(listToAdd); await _context.SaveChangesAsync(); } //} //else if (existingIds.Count() > model.UserIds.Count()) //{ // var IdsToRemove = existingUserIds.Except(model.UserIds); // existingIds = existingIds.Where(m => IdsToRemove.Contains(m.UserId)).ToList(); // _context.ClassSectionUsers.RemoveRange(existingIds); // await _context.SaveChangesAsync(); // List<ClassSectionTransaction> ToAdd = new List<ClassSectionTransaction>(); // foreach (var item in existingIds) // { // ToAdd.Add(new ClassSectionTransaction // { // ClassSectionId = item.ClassSectionId, // UserId = item.UserId, // UserTypeId = _context.Users.FirstOrDefault(m => m.Id == item.UserId && m.Active == true) != null ? _context.Users.FirstOrDefault(m => m.Id == item.UserId && m.Active == true).UserTypeId : 3, // DeletionDate = DateTime.UtcNow, // DeletedById = _LoggedIn_UserID // }); // } // await _context.ClassSectionTransactions.AddRangeAsync(ToAdd); // await _context.SaveChangesAsync(); //} _serviceResponse.Success = true; _serviceResponse.Message = CustomMessage.Added; return(_serviceResponse); } catch (DbUpdateException ex) { if (ex.InnerException.Message.Contains("Cannot insert duplicate key row")) { _serviceResponse.Success = false; _serviceResponse.Message = CustomMessage.SqlDuplicateRecord; } else { throw ex; } return(_serviceResponse); } }