Cochrane+ App API

<back to all web services

DebriefReviewListRequest

Requires Authentication
The following routes are available for this service:
POST/debriefreview/list
import Foundation
import ServiceStack

public class DebriefReviewListRequest : ApiSkipTakePagedTableRequest
{
    public var all:Bool
    public var dateCaptured:DateFilter
    public var readStatus:DebriefReadStatusType

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

    private enum CodingKeys : String, CodingKey {
        case all
        case dateCaptured
        case readStatus
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        all = try container.decodeIfPresent(Bool.self, forKey: .all)
        dateCaptured = try container.decodeIfPresent(DateFilter.self, forKey: .dateCaptured)
        readStatus = try container.decodeIfPresent(DebriefReadStatusType.self, forKey: .readStatus)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if all != nil { try container.encode(all, forKey: .all) }
        if dateCaptured != nil { try container.encode(dateCaptured, forKey: .dateCaptured) }
        if readStatus != nil { try container.encode(readStatus, forKey: .readStatus) }
    }
}

public class ApiSkipTakePagedTableRequest : ApiSkipTakePagedServiceRequest, IOrderKey
{
    public var requestNumber:Int
    public var searchQuery:String
    public var orderKey:String
    public var orderAscending:Bool

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

    private enum CodingKeys : String, CodingKey {
        case requestNumber
        case searchQuery
        case orderKey
        case orderAscending
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        requestNumber = try container.decodeIfPresent(Int.self, forKey: .requestNumber)
        searchQuery = try container.decodeIfPresent(String.self, forKey: .searchQuery)
        orderKey = try container.decodeIfPresent(String.self, forKey: .orderKey)
        orderAscending = try container.decodeIfPresent(Bool.self, forKey: .orderAscending)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if requestNumber != nil { try container.encode(requestNumber, forKey: .requestNumber) }
        if searchQuery != nil { try container.encode(searchQuery, forKey: .searchQuery) }
        if orderKey != nil { try container.encode(orderKey, forKey: .orderKey) }
        if orderAscending != nil { try container.encode(orderAscending, forKey: .orderAscending) }
    }
}

public class ApiSkipTakePagedServiceRequest : ISkipTakePagedServiceRequest, Codable
{
    public var skip:Int
    public var take:Int

    required public init(){}
}

public class DateFilter : Codable
{
    public var filterType:DateFilterType
    public var dates:[Date] = []

    required public init(){}
}

public enum DateFilterType : Int, Codable
{
    case All = 0
    case Before = 1
    case After = 2
    case Range = 3
}

public enum DebriefReadStatusType : Int, Codable
{
    case All = 0
    case Unread = 1
    case Read = 2
}

public class DebriefReviewListResponse : SkipTakePagedTableListResponse<DebriefReviewListItem>
{
    public var readStatuses:[EnumOption] = []

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

    private enum CodingKeys : String, CodingKey {
        case readStatuses
    }

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

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

public class SkipTakePagedTableListResponse<T : Codable> : ApiSkipTakePagedTableResponse
{
    public var listItems:[T] = []

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

    private enum CodingKeys : String, CodingKey {
        case listItems
    }

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

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

public class ApiSkipTakePagedTableResponse : SkipTakePagedServiceResponse
{
    public var requestNumber:Int

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

    private enum CodingKeys : String, CodingKey {
        case requestNumber
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        requestNumber = try container.decodeIfPresent(Int.self, forKey: .requestNumber)
    }

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

public class SkipTakePagedServiceResponse : ApiServiceResponse, ISkipTakePagedServiceResponse, ISkipTakePagedServiceRequest
{
    public var total:Int
    public var skip:Int
    public var take:Int

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

    private enum CodingKeys : String, CodingKey {
        case total
        case skip
        case take
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        total = try container.decodeIfPresent(Int.self, forKey: .total)
        skip = try container.decodeIfPresent(Int.self, forKey: .skip)
        take = try container.decodeIfPresent(Int.self, forKey: .take)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if total != nil { try container.encode(total, forKey: .total) }
        if skip != nil { try container.encode(skip, forKey: .skip) }
        if take != nil { try container.encode(take, forKey: .take) }
    }
}

public class ApiServiceResponse : IServiceResponse, Codable
{
    public var Description:String
    public var heading:String
    public var wasSuccessful:Bool
    //modelState:Object ignored. Type could not be extended in Swift

    required public init(){}
}

public class DebriefReviewListItem : Codable
{
    public var id:Int
    public var submittedBy:String
    public var companyName:String
    public var meetingSubject:String
    public var dateSubmitted:String
    public var overallScore:String
    public var generalManagerId:Int
    public var generalManagerReviewed:Bool
    public var generalManagerRating:Int
    public var seniorManagerId:Int
    public var seniorManagerReviewed:Bool
    public var seniorManagerRating:Int
    public var divisionalManagerId:Int
    public var divisionalManagerReviewed:Bool
    public var divisionalManagerRating:Int
    public var departmentManagerId:Int
    public var departmentManagerReviewed:Bool
    public var departmentManagerRating:Int
    public var managerId:Int
    public var managerReviewed:Bool
    public var managerRating:Int
    public var campaignManagerId:Int
    public var campaignManagerReviewed:Bool
    public var campaignManagerRating:Int
    public var portfolioManagerId:Int
    public var portfolioManagerReviewed:Bool
    public var portfolioManagerRating:Int
    public var age:Double
    public var ageColour:String
    public var markedAsRead:Bool

    required public init(){}
}

public class EnumOption : Codable
{
    public var value:Int
    public var label:String

    required public init(){}
}


Swift DebriefReviewListRequest DTOs

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

HTTP + OTHER

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

POST /debriefreview/list HTTP/1.1 
Host: cochraneplus-api-dev.happen.zone 
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length

{"all":false,"dateCaptured":{"filterType":0,"dates":["0001-01-01T00:00:00.0000000"]},"readStatus":0,"requestNumber":0,"searchQuery":"String","orderKey":"String","orderAscending":false,"skip":0,"take":0}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length

{Unable to show example output for type 'DebriefReviewListResponse' using the custom 'other' filter}Cannot dynamically create an instance of type 'WebService.ServiceModel.DebriefReviewListResponse'. Reason: No parameterless constructor defined.