public async Task <List <RecordDto> > GetRandomPrizeRecords(int prizeID, int numberOfSpinAreas) { var flag = true; var currentQty = 0; var result = new List <RecordDto>(); var models = new List <Record>(); while (flag) { var emp = await _empRepository.FindAll(x => x.EmpCode != null).OrderBy(x => Guid.NewGuid()).FirstOrDefaultAsync(); if (emp == null) { continue; } var isWinner = await _recordRepository.FindAll().AnyAsync(x => x.EmpCode == emp.EmpCode); if (isWinner) { continue; } var model = new Record { EmpCode = emp.EmpCode, PrizeID = prizeID, Visible = true }; models.Add(model); currentQty += 1; var record = new RecordDto { EmpCode = emp.EmpCode, PrizeID = prizeID, Visible = true, EmpDept = emp.EmpDept, EmpName = emp.EmpName }; result.Add(record); if (currentQty == numberOfSpinAreas) { flag = false; } } _recordRepository.AddMultiple(models); try { await _recordRepository.Save(); return(result); } catch (System.Exception) { return(new List <RecordDto>()); } }