| POST | /document/search |
|---|
import Foundation
import ServiceStack
public class DocumentSearchRequest : PagingRequest, IDocumentSearchFilter, IPost
{
public var title:String
public var typeId:Int?
public var groupId:Int?
public var subjectId:Int?
public var issuingAgencyId:Int?
public var isUrgent:Bool?
public var documentSearchStage:DocumentSearchStage
public var isInternal:Bool?
public var statusId:Int?
public var orderBy:SearchOrderBy
public var fromDate:Date?
public var toDate:Date?
public var isParty:Bool?
public var branchType:Int16?
public var scopeType:Int
public var isFullTextSearch:Bool?
public var createdByMe:Bool?
public var mainId:Int?
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case title
case typeId
case groupId
case subjectId
case issuingAgencyId
case isUrgent
case documentSearchStage
case isInternal
case statusId
case orderBy
case fromDate
case toDate
case isParty
case branchType
case scopeType
case isFullTextSearch
case createdByMe
case mainId
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
title = try container.decodeIfPresent(String.self, forKey: .title)
typeId = try container.decodeIfPresent(Int.self, forKey: .typeId)
groupId = try container.decodeIfPresent(Int.self, forKey: .groupId)
subjectId = try container.decodeIfPresent(Int.self, forKey: .subjectId)
issuingAgencyId = try container.decodeIfPresent(Int.self, forKey: .issuingAgencyId)
isUrgent = try container.decodeIfPresent(Bool.self, forKey: .isUrgent)
documentSearchStage = try container.decodeIfPresent(DocumentSearchStage.self, forKey: .documentSearchStage)
isInternal = try container.decodeIfPresent(Bool.self, forKey: .isInternal)
statusId = try container.decodeIfPresent(Int.self, forKey: .statusId)
orderBy = try container.decodeIfPresent(SearchOrderBy.self, forKey: .orderBy)
fromDate = try container.decodeIfPresent(Date.self, forKey: .fromDate)
toDate = try container.decodeIfPresent(Date.self, forKey: .toDate)
isParty = try container.decodeIfPresent(Bool.self, forKey: .isParty)
branchType = try container.decodeIfPresent(Int16.self, forKey: .branchType)
scopeType = try container.decodeIfPresent(Int.self, forKey: .scopeType)
isFullTextSearch = try container.decodeIfPresent(Bool.self, forKey: .isFullTextSearch)
createdByMe = try container.decodeIfPresent(Bool.self, forKey: .createdByMe)
mainId = try container.decodeIfPresent(Int.self, forKey: .mainId)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if title != nil { try container.encode(title, forKey: .title) }
if typeId != nil { try container.encode(typeId, forKey: .typeId) }
if groupId != nil { try container.encode(groupId, forKey: .groupId) }
if subjectId != nil { try container.encode(subjectId, forKey: .subjectId) }
if issuingAgencyId != nil { try container.encode(issuingAgencyId, forKey: .issuingAgencyId) }
if isUrgent != nil { try container.encode(isUrgent, forKey: .isUrgent) }
if documentSearchStage != nil { try container.encode(documentSearchStage, forKey: .documentSearchStage) }
if isInternal != nil { try container.encode(isInternal, forKey: .isInternal) }
if statusId != nil { try container.encode(statusId, forKey: .statusId) }
if orderBy != nil { try container.encode(orderBy, forKey: .orderBy) }
if fromDate != nil { try container.encode(fromDate, forKey: .fromDate) }
if toDate != nil { try container.encode(toDate, forKey: .toDate) }
if isParty != nil { try container.encode(isParty, forKey: .isParty) }
if branchType != nil { try container.encode(branchType, forKey: .branchType) }
if scopeType != nil { try container.encode(scopeType, forKey: .scopeType) }
if isFullTextSearch != nil { try container.encode(isFullTextSearch, forKey: .isFullTextSearch) }
if createdByMe != nil { try container.encode(createdByMe, forKey: .createdByMe) }
if mainId != nil { try container.encode(mainId, forKey: .mainId) }
}
}
public class PagingRequest : Codable
{
public var page:Int
public var limit:Int
required public init(){}
}
public enum DocumentSearchStage : String, Codable
{
case All
case AllProcessing
case Draft
case PendingApproval
case IsRevisionRequested
case PendingCompilation
case PendingReport
case Published
case Active
case InActive
}
public enum SearchOrderBy : String, Codable
{
case UpdatedDateDesc
case PublishDateDesc
case TitleAsc
case DocumentCodeAsc
}
public class SearchResponse : IResponseRequest, Codable
{
public var totalCount:Int
public var code:Int
public var data:[DocumentSearchResultItem] = []
public var message:String
required public init(){}
}
public class DocumentSearchResultItem : Codable
{
public var title:String
public var Description:String
public var owner:String
public var documentPolicyId:Int?
public var updateDocumentId:Int?
public var effectBeginDate:Date?
public var effectEndDate:Date?
public var issuingAgencyId:Int?
public var signBy:String
public var signDate:Date?
public var updatedAt:Date?
public var statusId:Int?
public var statusKey:String
public var isInternal:Bool
public var documentNumber:String
public var documentCode:String
public var isUrgent:Bool?
public var id:Int
public var reasonReturn:String
public var accountId:Int?
public var approverId:Int?
// @StringLength(500)
public var updatedBy:String
// @StringLength(500)
public var createdBy:String
public var isParty:Bool?
public var branchType:Int16
public var isRevisionRequested:Bool?
public var isPrivate:Bool?
public var departmentId:Int?
public var publicationDate:Date?
public var processStatusId:Int
public var documentTypeId:Int?
public var documentGroupId:Int?
public var accountName:String
public var acceptAccountName:String
public var documentGroupText:String
public var processStatusText:String
public var documentTypeText:String
public var departmentText:String
public var statusText:String
public var issuingAgencyText:String
public var comment:String
public var submitComment:String
public var fullFile:String
public var parthFile:String
public var isActive:Bool?
public var stepOrder:Int?
public var stepCount:Int?
public var completedStepCount:Int?
required public init(){}
}
Swift DocumentSearchRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /document/search HTTP/1.1
Host: qlcn-api.vsmlab.vn
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length
{"title":"String","typeId":0,"groupId":0,"subjectId":0,"issuingAgencyId":0,"isUrgent":false,"documentSearchStage":"All","isInternal":false,"statusId":0,"orderBy":"UpdatedDateDesc","fromDate":"0001-01-01T00:00:00.0000000+07:06","toDate":"0001-01-01T00:00:00.0000000+07:06","isParty":false,"branchType":0,"scopeType":0,"isFullTextSearch":false,"createdByMe":false,"mainId":0,"page":1,"limit":10}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length
{"totalCount":0,"code":0,"data":[{"title":"String","description":"String","owner":"String","documentPolicyId":0,"updateDocumentId":0,"effectBeginDate":"0001-01-01T00:00:00.0000000+07:06","effectEndDate":"0001-01-01T00:00:00.0000000+07:06","issuingAgencyId":0,"signBy":"String","signDate":"0001-01-01T00:00:00.0000000+07:06","updatedAt":"0001-01-01T00:00:00.0000000+07:06","statusId":0,"statusKey":"String","isInternal":false,"documentNumber":"String","documentCode":"String","isUrgent":false,"id":0,"reasonReturn":"String","accountId":0,"approverId":0,"updatedBy":"String","createdBy":"String","isParty":false,"branchType":0,"isRevisionRequested":false,"isPrivate":false,"departmentId":0,"publicationDate":"0001-01-01T00:00:00.0000000+07:06","processStatusId":0,"documentTypeId":0,"documentGroupId":0,"accountName":"String","acceptAccountName":"String","documentGroupText":"String","processStatusText":"String","documentTypeText":"String","departmentText":"String","statusText":"String","issuingAgencyText":"String","comment":"String","submitComment":"String","fullFile":"String","parthFile":"String","isActive":false,"stepOrder":0,"stepCount":0,"completedStepCount":0}],"message":"String"}