public async Task <AssignedDefect> GetAssignedDefectAsync(int userId, int defectId) { var user = await _context.Users.GetUserByIdWithRole(userId); var defect = await GetByIdAsync(defectId); if (_context.AssignedDefects.FirstOrDefault(x => x.DefectId == defect.Id) != null) { throw new ArgumentException("Defect is already assigned"); } if (user?.Role?.Name != "Technician") { throw new ArgumentException("The user cannot fix defects"); } if (user != null || defect != null) { var assignedDefect = new AssignedDefect { AssignedWorker = user, Defect = defect, StatusChangedAt = DateTime.Now }; return(assignedDefect); } else { throw new ArgumentException("User or defect was not found"); } }
public async Task SeedAssignedDefects() { if (!_context.AssignedDefects.Any()) { var defects = await _defectRepository.GetAllAsync(); var technicians = _context.Users.GetTechnicians().ToList(); Random rnd = new Random(); int randomTechnician = rnd.Next(technicians.Count); foreach (var d in defects) { var assignedDefect = new AssignedDefect { Defect = d, AssignedWorker = technicians[randomTechnician] }; _context.AssignedDefects.Add(assignedDefect); } await _context.SaveChangesAsync(); } }
public async Task SaveAssignedDefect(AssignedDefect assignedDefect) { await _context.AssignedDefects.AddAsync(assignedDefect); await SaveChangesAsync(); }