Пример #1
0
        public async Task Execute(AssignGoalToSelfOperationRequest request)
        {
            var employee = await _authorizationContext.CurrentEmployee();

            var assignGoalRequest = new AssignGoalsToEmployeeOperationRequest
            {
                EmployeeId = employee.Id,
                TopicIds   = request.TopicIds
            };
            await _assignGoalToEmployeeOperation.Execute(assignGoalRequest);
        }
        public async Task <IActionResult> CreateEmployeeGoal(CreateEmployeeGoalsModel model)
        {
            var request = new AssignGoalsToEmployeeOperationRequest
            {
                EmployeeId = model.EmployeeId,
                TopicIds   = model.TopicIds
            };

            try
            {
                await _assignGoalToEmployeeOperation.Execute(request);
            }
            catch (GoalAlreadyAssignedException e)
            {
                return(BadRequest(new ErrorModel(e.Message)));
            }

            return(Ok());
        }
        public async Task Execute(AssignGoalToTeamOperationRequest request)
        {
            var team = (await _authorizationContext.CurrentEmployee())
                       .ManagedTeam;

            foreach (var employee in team.Employees)
            {
                var assignToEmployeeRequest = new AssignGoalsToEmployeeOperationRequest
                {
                    EmployeeId = employee.Id,
                    TopicIds   = request.TopicIds
                };
                try
                {
                    await _assignGoalToEmployeeOperation.Execute(assignToEmployeeRequest);
                }
                catch (ApplicationException)
                {
                    //swallow
                }
            }
        }
        public async Task Execute(AssignGoalsToEmployeeOperationRequest request)
        {
            var existingGoals = await _personalGoalRepository
                                .QueryAsync(goal =>
                                            goal.EmployeeId == request.EmployeeId && request.TopicIds.Contains(goal.TopicId));

            var nonCompletedGoal = existingGoals
                                   .FirstOrDefault(goal => !goal.CompletionDate.HasValue);

            if (nonCompletedGoal != null)
            {
                throw new GoalAlreadyAssignedException(request.EmployeeId, nonCompletedGoal.TopicId);
            }

            var goals = request.TopicIds
                        .Select(topicId => new PersonalGoal
            {
                EmployeeId = request.EmployeeId,
                TopicId    = topicId
            }).ToList();

            await _personalGoalRepository.CreateAsync(goals);
        }