/* Options: Date: 2025-12-06 13:31:34 SwiftVersion: 5.0 Version: 6.110 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://etc-api.vsmlab.vn //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: PendingAccessRequests.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/document-permission/Pending-Access-Requests", "GET") public class PendingAccessRequests : PagingRequest, IReturn { public typealias Return = PendingAccessResponse public var status:DocumentApprovalStatus? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case status } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) status = try container.decodeIfPresent(DocumentApprovalStatus.self, forKey: .status) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if status != nil { try container.encode(status, forKey: .status) } } } public class PendingAccessResponse : Codable { public var total:Int public var code:Int public var message:String public var requests:[DocumentAccessRequestView] = [] required public init(){} } public class PagingRequest : Codable { public var page:Int public var limit:Int required public init(){} } public enum DocumentApprovalStatus : String, Codable { case Pending case Approved case Rejected } public class DocumentAccessRequestView : DocumentAccessRequest { public var approvedByName:String public var requestedName:String public var documentTitle:String required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case approvedByName case requestedName case documentTitle } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) approvedByName = try container.decodeIfPresent(String.self, forKey: .approvedByName) requestedName = try container.decodeIfPresent(String.self, forKey: .requestedName) documentTitle = try container.decodeIfPresent(String.self, forKey: .documentTitle) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if approvedByName != nil { try container.encode(approvedByName, forKey: .approvedByName) } if requestedName != nil { try container.encode(requestedName, forKey: .requestedName) } if documentTitle != nil { try container.encode(documentTitle, forKey: .documentTitle) } } } public enum DocumentAccessPermissions : String, Codable { case Read case Write case GrantRead } public class DocumentAccessRequest : Codable { public var id:Int public var documentId:Int public var requestedBy:Int public var requestPermission:DocumentAccessPermissions public var status:DocumentApprovalStatus public var createdDate:Date public var approvedBy:Int? public var approvedDate:Date? public var note:String public var comment:String public var dueDate:Date? required public init(){} }