TeamBins.Services.IssueManager.SaveIssue C# (CSharp) Method

SaveIssue() public method

public SaveIssue ( CreateIssue issue, List files ) : Task
issue TeamBins.Common.ViewModels.CreateIssue
files List
return Task
        public async Task<IssueDetailVM> SaveIssue(CreateIssue issue, List<IFormFile> files)
        {
            bool isNewIssue = issue.Id == 0;
            if (issue.ProjectId == 0)
            {
                var defaultProject = await iProjectRepository.GetDefaultProjectForTeamMember(this.userSessionHelper.TeamId,
                     this.userSessionHelper.UserId);
                if (defaultProject == null)
                {
                    throw new MissingSettingsException("Missing data", "Default project");
                }
                issue.ProjectId = defaultProject.Id;

            }
            if (issue.CategoryId == 0)
            {
                var categories =await  this.issueRepository.GetCategories();
                issue.CategoryId = categories.First().Id;
            }
            if (issue.PriorityId == 0)
            {
                var categories = await this.issueRepository.GetPriorities();
                issue.PriorityId = categories.First().Id;
            }
            if (issue.StatusId == 0)
            {
                var statuses = await this.issueRepository.GetStatuses();
                issue.StatusId = statuses.First().Id;
            }
            issue.CreatedById = this.userSessionHelper.UserId;
            issue.TeamID = this.userSessionHelper.TeamId;
            var issueId = this.issueRepository.SaveIssue(issue);
            var issueDetail = this.issueRepository.GetIssue(issueId, this.userSessionHelper.UserId);


            if (isNewIssue)
            {
                await emailManager.SendIssueCreatedEmail(issueDetail, this.userSessionHelper.TeamId);
                //.QueueBackgroundWorkItem(ct => SendMailAsync(user.Email));
            }
               

            return issueDetail;
            
        }