예제 #1
0
        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));
        }
예제 #2
0
        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);
        }