Example #1
0
        public async Task CreateIssue(Guid issueId, string title, string description, DateTime?startDate,
                                      DateTime?dueDate, Guid projectId, Guid trackerId, Guid statusId, Guid priorityId, Guid authorId,
                                      Guid?assigneeId, CancellationToken cancellationToken)
        {
            var project = await _projectRepository.Get(projectId, cancellationToken);

            if (project == null)
            {
                throw new ProjectNotFoundException();
            }

            var tracker = await _trackerRepository.Get(trackerId, cancellationToken);

            if (tracker == null)
            {
                throw new TrackerNotFoundException();
            }

            var issueStatus = await _issueStatusRepository.Get(statusId, cancellationToken);

            if (issueStatus == null)
            {
                throw new IssueStatusNotFoundException();
            }

            var issuePriority = await _issuePriorityRepository.Get(priorityId, cancellationToken);

            if (issuePriority == null)
            {
                throw new IssuePriorityNotFoundException();
            }

            if (assigneeId != null)
            {
                var assignee = await _userRepository.Get(assigneeId.Value, cancellationToken);

                if (assignee == null)
                {
                    throw new AssigneeNotFoundException();
                }
            }

            var issue = await _issueRepository.Get(issueId, cancellationToken);

            if (issue != null)
            {
                throw new IssueAlreadyExistsException();
            }

            issue = new Issue(issueId, title, description, startDate, dueDate, trackerId, statusId, priorityId, authorId, assigneeId);

            project.AddIssue(issue);

            await _projectRepository.Save(project);
        }
Example #2
0
        public async Task<IActionResult> Create(
            CancellationToken cancellationToken,
            [FromBody] CreateIssuePriorityBinding binding, 
            [FromServices] IIssuePriorityRepository issuePriorityRepository)
        {
            var issuePriority = await issuePriorityRepository.Get(binding.Id, cancellationToken);

            if (issuePriority != null)
                if (!issuePriority.Name.Equals(binding.Name))
                    throw new ApiException(HttpStatusCode.Conflict, ErrorCode.IssuePriorityAlreadyExists, "Issue priority already exists with other parameters");

            issuePriority = new IssuePriority(binding.Id, binding.Name, binding.IsActive);

            await issuePriorityRepository.Save(issuePriority);

            return CreatedAtRoute("GetIssuePriorityAdminRoute", new { id = issuePriority.Id }, null);
        }