initial commit
This commit is contained in:
185
BlueMine/Redmine/RedmineDto.cs
Normal file
185
BlueMine/Redmine/RedmineDto.cs
Normal file
@@ -0,0 +1,185 @@
|
||||
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable.
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace BlueMine.Redmine
|
||||
{
|
||||
public static class RedmineConstants
|
||||
{
|
||||
public const int ClosedStatusId = 30;
|
||||
public const int EstimatedHoursCustomFieldId = 65;
|
||||
}
|
||||
|
||||
public class RedmineDto
|
||||
{
|
||||
public class SimpleIssue
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string ProjectName { get; set; }
|
||||
public string Subject { get; set; }
|
||||
public string Description { get; set; }
|
||||
public DateTime Created { get; set; }
|
||||
public DateTime Updated { get; set; }
|
||||
}
|
||||
|
||||
public class SimpleProject
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Identifier { get; set; }
|
||||
}
|
||||
|
||||
public class SimpleTracker
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public class IssueItem
|
||||
{
|
||||
public string ProjectName { get; set; }
|
||||
public string IssueName { get; set; }
|
||||
public string IssueDescription { get; set; }
|
||||
public int IssueNumber { get; set; }
|
||||
public double SpentTime { get; set; }
|
||||
public DateTime Created { get; set; }
|
||||
public DateTime Updated { get; set; }
|
||||
public string LastUpdate { get
|
||||
{
|
||||
var span = DateTime.Now - Updated;
|
||||
|
||||
if (span.TotalMinutes < 1) return "épp most";
|
||||
if (span.TotalMinutes < 60) return $"{(int)span.TotalMinutes} perce";
|
||||
if (span.TotalHours < 24) return $"{(int)span.TotalHours} órája";
|
||||
if (span.TotalDays < 7) return $"{(int)span.TotalDays} napja";
|
||||
if (span.TotalDays < 30) return $"{(int)(span.TotalDays / 7)} hete";
|
||||
if (span.TotalDays < 365) return $"{(int)(span.TotalDays / 30)} hónapja";
|
||||
|
||||
return $"{(int)(span.TotalDays / 365)} éve";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class TimeEntryRequest
|
||||
{
|
||||
[JsonPropertyName("time_entry")]
|
||||
public TimeEntry TimeEntry { get; set; }
|
||||
}
|
||||
|
||||
public class TimeEntry
|
||||
{
|
||||
[JsonPropertyName("issue_id")]
|
||||
public int IssueId { get; set; }
|
||||
[JsonPropertyName("hours")]
|
||||
public double Hours { get; set; }
|
||||
[JsonPropertyName("comments")]
|
||||
public string Comments { get; set; }
|
||||
[JsonPropertyName("spent_on")]
|
||||
public string SpentOn { get; set; }
|
||||
[JsonPropertyName("activity_id")]
|
||||
public int? ActivityId { get; set; }
|
||||
}
|
||||
|
||||
public class IssueListResponse
|
||||
{
|
||||
[JsonPropertyName("issues")]
|
||||
public List<IssueDto> Issues { get; set; }
|
||||
[JsonPropertyName("total_count")]
|
||||
public int TotalCount { get; set; }
|
||||
[JsonPropertyName("limit")]
|
||||
public int Limit { get; set; }
|
||||
[JsonPropertyName("offset")]
|
||||
public int Offset { get; set; }
|
||||
}
|
||||
|
||||
public class CreateIssueResponse
|
||||
{
|
||||
[JsonPropertyName("issue")]
|
||||
public IssueDto Issue { get; set; }
|
||||
}
|
||||
|
||||
public class IssueDto
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public int Id { get; set; }
|
||||
[JsonPropertyName("project")]
|
||||
public IdNameDto Project { get; set; }
|
||||
[JsonPropertyName("subject")]
|
||||
public string Subject { get; set; }
|
||||
[JsonPropertyName("assigned_to")]
|
||||
public AssignedToDto AssignedTo { get; set; }
|
||||
[JsonPropertyName("description")]
|
||||
public string Description { get; set; }
|
||||
[JsonPropertyName("created_on")]
|
||||
public DateTime Created { get; set; }
|
||||
[JsonPropertyName("updated_on")]
|
||||
public DateTime Updated { get; set; }
|
||||
}
|
||||
|
||||
public class IdNameDto
|
||||
{
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public class AssignedToDto
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public int Id { get; set; }
|
||||
}
|
||||
|
||||
public class TimeEntryListResponse
|
||||
{
|
||||
[JsonPropertyName("time_entries")]
|
||||
public List<TimeEntryDto> TimeEntries { get; set; }
|
||||
}
|
||||
|
||||
public class TimeEntryDto
|
||||
{
|
||||
[JsonPropertyName("hours")]
|
||||
public double Hours { get; set; }
|
||||
}
|
||||
|
||||
public class ProjectListResponse
|
||||
{
|
||||
[JsonPropertyName("projects")]
|
||||
public List<ProjectDto> Projects { get; set; }
|
||||
[JsonPropertyName("total_count")]
|
||||
public int TotalCount { get; set; }
|
||||
[JsonPropertyName("limit")]
|
||||
public int Limit { get; set; }
|
||||
[JsonPropertyName("offset")]
|
||||
public int Offset { get; set; }
|
||||
}
|
||||
|
||||
public class ProjectDto
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public int Id { get; set; }
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; }
|
||||
[JsonPropertyName("identifier")]
|
||||
public string Identifier { get; set; }
|
||||
}
|
||||
|
||||
public class ProjectWithTrackersResponse
|
||||
{
|
||||
[JsonPropertyName("project")]
|
||||
public ProjectWithTrackersDto Project { get; set; }
|
||||
}
|
||||
|
||||
public class ProjectWithTrackersDto
|
||||
{
|
||||
[JsonPropertyName("trackers")]
|
||||
public List<TrackerDto> Trackers { get; set; }
|
||||
}
|
||||
|
||||
public class TrackerDto
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public int Id { get; set; }
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable.
|
||||
Reference in New Issue
Block a user