Exemplo n.º 1
0
        public async Task <IActionResult> LearnTopic(LearnTopicModel model)
        {
            var request = new LearnTopicOperationRequest
            {
                TopicId = model.TopicId
            };

            try
            {
                await _learnTopicOperation.Execute(request);
            }
            catch (TopicNotInLearningDayException ex)
            {
                return(BadRequest(new ErrorModel(ex.Message)));
            }
            catch (TopicAlreadyLearnedException ex)
            {
                return(BadRequest(new ErrorModel(ex.Message)));
            }

            return(Ok());
        }
        public async Task Execute(LearnTopicOperationRequest request)
        {
            var fulfillGoalRequest = new FulfillPersonalGoalOperationRequest
            {
                TopicId = request.TopicId
            };

            try
            {
                await _fulfillPersonalGoalOperation.Execute(fulfillGoalRequest);
            }
            catch (GoalNotAssignedException)
            {
                var assignGoalRequest = new AssignGoalToSelfOperationRequest
                {
                    TopicIds = new List <Guid> {
                        request.TopicId
                    }
                };
                await _assignGoalsToSelfOperation.Execute(assignGoalRequest);

                await _fulfillPersonalGoalOperation.Execute(fulfillGoalRequest);
            }
        }