import 'package:gitea_client/model/repository.dart'; import 'package:gitea_client/model/user.dart'; import 'issues.dart'; class PullRequest { int id; String url; int number; User user; String title; String body; List? labels; Milestone? milestone; User? assignee; List? assignees; String state; bool isLocked; int comments; String htmlUrl; String diffUrl; String patchUrl; bool? mergeable; bool merged; String? mergedAt; String? mergeCommitSha; User? mergedBy; bool? allowMaintainerEdit; Base? base; Base? head; String? mergeBase; String? dueDate; String createdAt; String updatedAt; String? closedAt; PullRequest( {required this.id, required this.url, required this.number, required this.user, required this.title, required this.body, this.labels, this.milestone, this.assignee, this.assignees, required this.state, required this.isLocked, required this.comments, required this.htmlUrl, required this.diffUrl, required this.patchUrl, this.mergeable, required this.merged, this.mergedAt, this.mergeCommitSha, this.mergedBy, this.allowMaintainerEdit, this.base, this.head, this.mergeBase, this.dueDate, required this.createdAt, required this.updatedAt, this.closedAt}); PullRequest.fromJson(Map json) : id = json['id'], url = json['url'], number = json['number'], user = User.fromJson(json['user']), title = json['title'], body = json['body'], comments = json['comments'], htmlUrl = json['html_url'], diffUrl = json['diff_url'], createdAt = json['created_at'], updatedAt = json['updated_at'], state = json['state'], isLocked = json['is_locked'], patchUrl = json['patch_url'], merged = json['merged'] { if (json['labels'] != null) { labels = []; json['labels'].forEach((v) { labels!.add( Labels.fromJson(v)); }); } milestone = json['milestone'] != null ? Milestone.fromJson(json['milestone']) : null; assignee = (json['assignee'] != null) ? User.fromJson(json['assignee']) : null; if (json['assignees'] != null) { assignees = []; json['assignees'].forEach((v) { assignees!.add( User.fromJson(v)); }); } mergeable = json['mergeable']; mergedAt = json['merged_at']; mergeCommitSha = json['merge_commit_sha']; mergedBy = json['merged_by'] != null ? User.fromJson(json['merged_by']) : null; allowMaintainerEdit = json['allow_maintainer_edit']; base = json['base'] != null ? Base.fromJson(json['base']) : null; head = json['head'] != null ? Base.fromJson(json['head']) : null; mergeBase = json['merge_base']; dueDate = json['due_date']; closedAt = json['closed_at']; } Map toJson() { final Map data = {}; data['id'] = id; data['url'] = url; data['number'] = number; data['user'] = user.toJson(); data['title'] = title; data['body'] = body; if (labels != null) { data['labels'] = labels!.map((v) => v.toJson()).toList(); } if (milestone != null) { data['milestone'] = milestone!.toJson(); } data['assignee'] = assignee; data['assignees'] = assignees; data['state'] = state; data['is_locked'] = isLocked; data['comments'] = comments; data['html_url'] = htmlUrl; data['diff_url'] = diffUrl; data['patch_url'] = patchUrl; data['mergeable'] = mergeable; data['merged'] = merged; data['merged_at'] = mergedAt; data['merge_commit_sha'] = mergeCommitSha; if (mergedBy != null) { data['merged_by'] = mergedBy!.toJson(); } data['allow_maintainer_edit'] = allowMaintainerEdit; if (base != null) { data['base'] = base!.toJson(); } if (head != null) { data['head'] = head!.toJson(); } data['merge_base'] = mergeBase; data['due_date'] = dueDate; data['created_at'] = createdAt; data['updated_at'] = updatedAt; data['closed_at'] = closedAt; return data; } } class Base { String? label; String? ref; String? sha; int? repoId; Repository? repo; Base({this.label, this.ref, this.sha, this.repoId, this.repo}); Base.fromJson(Map json) { label = json['label']; ref = json['ref']; sha = json['sha']; repoId = json['repo_id']; repo = json['repo'] != null ? Repository.fromJson(json['repo']) : null; } Map toJson() { final Map data = {}; data['label'] = label; data['ref'] = ref; data['sha'] = sha; data['repo_id'] = repoId; if (repo != null) { data['repo'] = repo!.toJson(); } return data; } } class Permissions { bool? admin; bool? push; bool? pull; Permissions({this.admin, this.push, this.pull}); Permissions.fromJson(Map json) { admin = json['admin']; push = json['push']; pull = json['pull']; } Map toJson() { final Map data = {}; data['admin'] = admin; data['push'] = push; data['pull'] = pull; return data; } } class InternalTracker { bool? enableTimeTracker; bool? allowOnlyContributorsToTrackTime; bool? enableIssueDependencies; InternalTracker( {this.enableTimeTracker, this.allowOnlyContributorsToTrackTime, this.enableIssueDependencies}); InternalTracker.fromJson(Map json) { enableTimeTracker = json['enable_time_tracker']; allowOnlyContributorsToTrackTime = json['allow_only_contributors_to_track_time']; enableIssueDependencies = json['enable_issue_dependencies']; } Map toJson() { final Map data = {}; data['enable_time_tracker'] = enableTimeTracker; data['allow_only_contributors_to_track_time'] = allowOnlyContributorsToTrackTime; data['enable_issue_dependencies'] = enableIssueDependencies; return data; } }