Files
TriliumMind/Services/Mappers/JiraIssueMapper.cs

41 lines
1.4 KiB
C#
Raw Normal View History

2025-12-12 10:19:00 +09:00
using System;
using TriliumMind.Data.Entities;
2025-12-11 14:35:27 +09:00
using TriliumMind.Models;
namespace TriliumMind.Services.Mappers;
public static class JiraIssueMapper
{
2025-12-12 10:19:00 +09:00
private static readonly char[] _specialCharacters = ['(', '/'];
2025-12-11 14:35:27 +09:00
public static JiraIssue ToEntity(this Issue issue)
{
return new JiraIssue
{
Key = issue.key,
Summary = issue.fields.summary ?? string.Empty,
Parent = issue.fields.parent?.key ?? issue.fields.customfield_10808,
Type = issue.fields.issuetype?.name ?? string.Empty,
2025-12-12 10:19:00 +09:00
Status = issue.fields.status?.name ?? string.Empty,
Assignee = CleanDisplayName(issue.fields.assignee?.displayName),
Manager = CleanDisplayName(issue.fields.reporter?.displayName),
Due = issue.fields.duedate?.ToUniversalTime() ?? DateTimeOffset.MinValue.ToUniversalTime(),
Updated = issue.fields.UpdatedAt.ToUniversalTime(),
Published = DateTimeOffset.MinValue.ToUniversalTime(),
2025-12-11 14:35:27 +09:00
ObjectId = null,
NeedNotify = 0
};
}
2025-12-12 10:19:00 +09:00
private static string CleanDisplayName(string? displayName)
{
if (string.IsNullOrWhiteSpace(displayName))
return string.Empty;
var specialCharIndex = displayName.IndexOfAny(_specialCharacters);
if (specialCharIndex >= 0)
displayName = displayName[..specialCharIndex];
return displayName.Trim();
}
2025-12-11 14:35:27 +09:00
}