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 .jsv suffix or ?format=jsv

HTTP + JSV

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: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	code: 0,
	message: String,
	data: 
	{
		users: 
		[
			{
				id: 0,
				fullName: String,
				email: String,
				departmentId: 0,
				partyGroupId: 0,
				avatar: String,
				telephone: String,
				birthday: "0001-01-01T00:00:00.0000000+07:06",
				createdAt: "0001-01-01T00:00:00.0000000+07:06",
				updatedAt: "0001-01-01T00:00:00.0000000+07:06",
				failedLoginCount: 0,
				roles: 
				[
					0
				],
				lastLoginDate: "0001-01-01T00:00:00.0000000+07:06",
				name: String
			}
		],
		code: 0,
		message: String,
		totalCount: 0
	}
}