tvpl.api

<back to all web services

UserByDepartmentsRequest

Tìm kiếm người dùng theo theo nhiều phòng ban

Requires Authentication
The following routes are available for this service:
GET/users/by-departmentIds
import Foundation
import ServiceStack

/**
* Tìm kiếm người dùng theo theo nhiều phòng ban
*/
public class UserByDepartmentsRequest : PagingRequest
{
    public var userName:String
    public var departmentIds:[Int] = []

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case userName
        case departmentIds
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        userName = try container.decodeIfPresent(String.self, forKey: .userName)
        departmentIds = try container.decodeIfPresent([Int].self, forKey: .departmentIds) ?? []
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if userName != nil { try container.encode(userName, forKey: .userName) }
        if departmentIds.count > 0 { try container.encode(departmentIds, forKey: .departmentIds) }
    }
}

public class PagingRequest : Codable
{
    public var page:Int
    public var limit:Int

    required public init(){}
}

public class BaseResponse<List : Codable> : IResponseRequest, Codable
{
    public var code:Int
    public var message:String
    public var data:[Category] = []

    required public init(){}
}

public class Category : CreateCategoryModel
{
    public var id:Int
    public var level:Int
    public var sortOrder:Int
    public var lastUpdate:Date?
    // @Ignore()
    public var children:[Category] = []

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case id
        case level
        case sortOrder
        case lastUpdate
        case children
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        id = try container.decodeIfPresent(Int.self, forKey: .id)
        level = try container.decodeIfPresent(Int.self, forKey: .level)
        sortOrder = try container.decodeIfPresent(Int.self, forKey: .sortOrder)
        lastUpdate = try container.decodeIfPresent(Date.self, forKey: .lastUpdate)
        children = try container.decodeIfPresent([Category].self, forKey: .children) ?? []
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if id != nil { try container.encode(id, forKey: .id) }
        if level != nil { try container.encode(level, forKey: .level) }
        if sortOrder != nil { try container.encode(sortOrder, forKey: .sortOrder) }
        if lastUpdate != nil { try container.encode(lastUpdate, forKey: .lastUpdate) }
        if children.count > 0 { try container.encode(children, forKey: .children) }
    }
}

public class CreateCategoryModel : Codable
{
    public var name:String
    public var Description:String
    public var type:CategoryTypes
    public var isParty:Bool
    // @Ignore()
    public var childList:[Int] = []

    required public init(){}
}

public enum CategoryTypes : String, Codable
{
    case Department
    case PartyGroup
    case DocGroup
    case DocType
    case IssuingAgency
    case Status
    case Subjects
    case Workflow
}


Swift UserByDepartmentsRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml

HTTP + XML

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /users/by-departmentIds HTTP/1.1 
Host: etc-api.vsmlab.vn 
Accept: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<BaseResponseOfAllUserResponseGUJDosmP xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/tvpl.api.ServiceModel">
  <Code>0</Code>
  <Data>
    <Code>0</Code>
    <Message>String</Message>
    <TotalCount>0</TotalCount>
    <Users xmlns:d3p1="http://schemas.datacontract.org/2004/07/tvpl.data.Models">
      <d3p1:UserProfile>
        <d3p1:Name>String</d3p1:Name>
        <d3p1:Password>String</d3p1:Password>
        <d3p1:Avatar>String</d3p1:Avatar>
        <d3p1:Birthday>0001-01-01T00:00:00</d3p1:Birthday>
        <d3p1:CreatedAt>0001-01-01T00:00:00</d3p1:CreatedAt>
        <d3p1:CreatedBy>String</d3p1:CreatedBy>
        <d3p1:DeletedAt>0001-01-01T00:00:00</d3p1:DeletedAt>
        <d3p1:DeletedBy>String</d3p1:DeletedBy>
        <d3p1:DepartmentId>0</d3p1:DepartmentId>
        <d3p1:Email>String</d3p1:Email>
        <d3p1:FailedLoginCount>0</d3p1:FailedLoginCount>
        <d3p1:FullName>String</d3p1:FullName>
        <d3p1:Id>0</d3p1:Id>
        <d3p1:IsDeleted>false</d3p1:IsDeleted>
        <d3p1:LastLoginDate>0001-01-01T00:00:00</d3p1:LastLoginDate>
        <d3p1:PartyGroupId>0</d3p1:PartyGroupId>
        <d3p1:Roles xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
          <d5p1:int>0</d5p1:int>
        </d3p1:Roles>
        <d3p1:Telephone>String</d3p1:Telephone>
        <d3p1:UpdatedAt>0001-01-01T00:00:00</d3p1:UpdatedAt>
        <d3p1:UpdatedBy>String</d3p1:UpdatedBy>
      </d3p1:UserProfile>
    </Users>
  </Data>
  <Message>String</Message>
</BaseResponseOfAllUserResponseGUJDosmP>