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;
}