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

//Package: 
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: UpdateRating.*
//ExcludeTypes: 
//InitializeCollections: True
//TreatTypesAsStrings: 
//DefaultImports: java.math.*,java.util.*,net.servicestack.client.*
*/

import java.math.*
import java.util.*
import net.servicestack.client.*


@Route(Path="/rating/", Verbs="PUT")
@ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
open class UpdateRating : IReturn<CompanyRatingResponse>
{
    /**
    * 
    */
    @ApiMember(Description="", IsRequired=true)
    var CompanyId:UUID? = null

    /**
    * Id of the booking
    */
    @ApiMember(Description="Id of the booking", IsRequired=true)
    var BookingId:Int? = null

    /**
    * 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")
    var Identifier:String? = null

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

    /**
    * The review for the rating
    */
    @ApiMember(Description="The review for the rating")
    var Review:UpdateReview? = null
    companion object { private val responseType = CompanyRatingResponse::class.java }
    override fun getResponseType(): Any? = UpdateRating.responseType
}

open class CompanyRatingResponse
{
    /**
    * 
    */
    @ApiMember(Description="")
    var CompanyId:UUID? = null

    /**
    * Id of the booking
    */
    @ApiMember(Description="Id of the booking")
    var BookingId:Int? = null

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

    /**
    * The rating score
    */
    @ApiMember(Description="The rating score")
    var RatingScore:Int? = null

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

    var CreatedDate:Date? = null
    var UpdatedDate:Date? = null
}

open class RatingReviewResponse
{
    /**
    * The title for the review
    */
    @ApiMember(Description="The title for the review")
    var Title:String? = null

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

    /**
    * The rating score
    */
    @ApiMember(Description="The rating score")
    var RatingScore:Int? = null

    /**
    * The review author
    */
    @ApiMember(Description="The review author")
    var Author:String? = null

    /**
    * The created date
    */
    @ApiMember(Description="The created date")
    var Created:Date? = null

    /**
    * The review answer from the company
    */
    @ApiMember(Description="The review answer from the company")
    var ReviewAnswer:String? = null
}

open class UpdateReview
{
    /**
    * The title for the review
    */
    @ApiMember(Description="The title for the review")
    var Title:String? = null

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

    /**
    * The review author
    */
    @ApiMember(Description="The review author")
    var Author:String? = null

    /**
    * 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")
    var ReviewAnswer:String? = null
}