/* Options:
Date: 2025-04-17 23:28:12
SwiftVersion: 5.0
Version: 8.23
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://testapi.bokamera.se

//BaseClass: 
//AddModelExtensions: True
//AddServiceStackTypes: True
IncludeTypes: UpdateRating.*
//ExcludeTypes: 
//ExcludeGenericBaseTypes: False
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
//InitializeCollections: True
//TreatTypesAsStrings: 
//DefaultImports: Foundation,ServiceStack
*/

import Foundation
import ServiceStack

// @Route("/rating/", "PUT")
// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
public class UpdateRating : IReturn, Codable
{
    public typealias Return = CompanyRatingResponse

    /**
    * 
    */
    // @ApiMember(Description="", IsRequired=true)
    public var companyId:String?

    /**
    * Id of the booking
    */
    // @ApiMember(Description="Id of the booking", IsRequired=true)
    public var bookingId:Int

    /**
    * The identifier for the booking, use to verify the booking. Only needed when a customer, not admin
    */
    // @ApiMember(Description="The identifier for the booking, use to verify the booking. Only needed when a customer, not admin")
    public var identifier:String

    /**
    * The rating score between 1 and 5.
    */
    // @ApiMember(Description="The rating score between 1 and 5.")
    public var ratingScore:Int?

    /**
    * The review for the rating
    */
    // @ApiMember(Description="The review for the rating")
    public var review:UpdateReview

    required public init(){}
}

public class CompanyRatingResponse : Codable
{
    /**
    * 
    */
    // @ApiMember(Description="")
    public var companyId:String

    /**
    * Id of the booking
    */
    // @ApiMember(Description="Id of the booking")
    public var bookingId:Int

    /**
    * The status of the rating, 1 = Active
    */
    // @ApiMember(Description="The status of the rating, 1 = Active")
    public var status:Int

    /**
    * The rating score
    */
    // @ApiMember(Description="The rating score")
    public var ratingScore:Int

    /**
    * The review if any exists to the rating
    */
    // @ApiMember(Description="The review if any exists to the rating")
    public var review:RatingReviewResponse

    public var createdDate:Date
    public var updatedDate:Date

    required public init(){}
}

public class RatingReviewResponse : Codable
{
    /**
    * The title for the review
    */
    // @ApiMember(Description="The title for the review")
    public var title:String

    /**
    * The description for the review
    */
    // @ApiMember(Description="The description for the review")
    public var Description:String

    /**
    * The rating score
    */
    // @ApiMember(Description="The rating score")
    public var ratingScore:Int

    /**
    * The review author
    */
    // @ApiMember(Description="The review author")
    public var author:String

    /**
    * The created date
    */
    // @ApiMember(Description="The created date")
    public var created:Date

    /**
    * The review answer from the company
    */
    // @ApiMember(Description="The review answer from the company")
    public var reviewAnswer:String

    required public init(){}
}

public class UpdateReview : Codable
{
    /**
    * The title for the review
    */
    // @ApiMember(Description="The title for the review")
    public var title:String

    /**
    * The description for the review
    */
    // @ApiMember(Description="The description for the review")
    public var Description:String

    /**
    * The review author
    */
    // @ApiMember(Description="The review author")
    public var author:String

    /**
    * The review answer from the company. Only the company can respond to this
    */
    // @ApiMember(Description="The review answer from the company. Only the company can respond to this")
    public var reviewAnswer:String

    required public init(){}
}