public async Task <IActionResult> AddAsync( [FromRoute] Guid contestId, [FromBody] ContestLearnerAdd contestLearnerAdd) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } contestLearnerAdd.ContestId = contestId; var contestLearnerAdded = await _contestLearnerAdder.ExecuteAsync(contestLearnerAdd); return(CreatedAtRoute("FetchContestLearner", new { learnerId = contestLearnerAdded.Id }, contestLearnerAdded)); }
public async Task <ContestLearnerListAdded> ExecuteAsync( ContestLearnerListAdd contestLearnerListAdd) { var contestLearners = await _contestLearnerRepository.FetchListAsync( contestLearnerListAdd.ContestId); var contestLearnerListAdded = new ContestLearnerListAdded { ContestId = contestLearnerListAdd.ContestId }; var separators = new[] { Environment.NewLine, ",", ";", "|" }; var userNames = contestLearnerListAdd.UserNames .Split(separators, StringSplitOptions.RemoveEmptyEntries); foreach (var userName in userNames) { if (contestLearners.All(x => x.UserName != userName)) { var contestLearnerAdd = new ContestLearnerAdd { ContestId = contestLearnerListAdd.ContestId, UserName = userName }; await _eventPublisher.PublishAsync("contestlearner.add", contestLearnerAdd); } } return(contestLearnerListAdded); }