/* Options:
Date: 2025-04-14 18:19:02
Version: 8.22
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://data.regent-college.edu

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

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


@Route(Path="/Registration/Change/{uuid}/Term/{reporting_term}/Review", Verbs="POST")
open class RegistrationChangeReviewRequest : IReturn<StudentSectionInvoiceResponse>
{
    var transaction_uuid:String? = null
    var uuid:String? = null
    var reporting_term:String? = null
    var rates_opted_in:ArrayList<Int> = ArrayList<Int>()
    var authorizing_uuid:String? = null
    var is_audit:Boolean? = null
    var is_oncampus:Boolean? = null
    var is_online:Boolean? = null
    var amount:BigDecimal? = null
    var section_uuid:String? = null
    var appliedForSpousalAuditBenefit:Boolean? = null
    var appliedForSpousalCreditBenefit:Boolean? = null
    companion object { private val responseType = StudentSectionInvoiceResponse::class.java }
    override fun getResponseType(): Any? = RegistrationChangeReviewRequest.responseType
}

open class StudentSectionInvoiceResponse : InvoiceResponse()
{
    var transaction_uuid:String? = null
    var studentSectionInvoiceItems:ArrayList<StudentSectionInvoiceItemResponse> = ArrayList<StudentSectionInvoiceItemResponse>()
    var otherInvoiceItems:ArrayList<InvoiceItemResponse> = ArrayList<InvoiceItemResponse>()
    var optedInInvoiceItems:ArrayList<InvoiceItemResponse> = ArrayList<InvoiceItemResponse>()
    var optionalInvoiceItems:ArrayList<InvoiceItemResponse> = ArrayList<InvoiceItemResponse>()
    var appliedForSpousalAuditBenefit:Boolean? = null
    var appliedForSpousalCreditBenefit:Boolean? = null
    var appliedForDEReentryBenefit:Boolean? = null
    var dropRefundRate:BigDecimal? = null
}

open class StudentSectionInvoiceItemResponse : InvoiceItemResponse()
{
    var studentSection:StudentSectionResponse? = null
}

open class InvoiceResponse
{
    var responseStatus:ResponseStatus? = null
    var invoiceUUID:String? = null
    var regent_id:Int? = null
    var uuid:String? = null
    var reporting_term:String? = null
    var total_charges:BigDecimal? = null
    var total_credits:BigDecimal? = null
    var current_status:String? = null
    var timestamp:Date? = null
}

open class InvoiceItemResponse
{
    var responseStatus:ResponseStatus? = null
    var invoiceItemUUID:String? = null
    var rate_id:Int? = null
    var rate_code:String? = null
    var rate_description:String? = null
    var charge:BigDecimal? = null
    var credit:BigDecimal? = null
}

open class StudentSectionResponse : SectionResponse()
{
    var studentSectionUUID:String? = null
    var registered_amount:BigDecimal? = null
    var is_provisional:Boolean? = null
    var is_audit:Boolean? = null
}

open class SectionResponse
{
    var responseStatus:ResponseStatus? = null
    var secUUID:String? = null
    var course_name:String? = null
    var section_code:String? = null
    var course_title:String? = null
    var course_short_title:String? = null
    var course_description:String? = null
    var crosslist_description:String? = null
    var crosslist_course_name:String? = null
    var location_long_name:String? = null
    var room:String? = null
    var instructors:ArrayList<InstructorResponse> = ArrayList<InstructorResponse>()
    var required_documents:ArrayList<DocumentResponse> = ArrayList<DocumentResponse>()
    var start_date:Date? = null
    var end_date:Date? = null
    var first_meeting_date:Date? = null
    var last_meeting_date:Date? = null
    var meeting_days:String? = null
    var start_times:ArrayList<String> = ArrayList<String>()
    var end_times:ArrayList<String> = ArrayList<String>()
    var is_online_only:Boolean? = null
    var is_weekend:Boolean? = null
    var is_weekday:Boolean? = null
    var is_evening:Boolean? = null
    var is_waitlist:Boolean? = null
    var has_special_requirements:Boolean? = null
    var special_requirements:String? = null
    var is_unlisted:Boolean? = null
    var credit_amounts:ArrayList<BigDecimal> = ArrayList<BigDecimal>()
    var audit_amounts:ArrayList<BigDecimal> = ArrayList<BigDecimal>()
    var audits_short_name:String? = null
    var audits_long_name:String? = null
    var credits_short_name:String? = null
    var credits_long_name:String? = null
    var distance_ed_materials:String? = null
    var prerequisites:String? = null
    var corequisites:String? = null
    var capacity:Int? = null
    var flat_fee_amount:BigDecimal? = null
    var additional_fee_amount:BigDecimal? = null
    var registered_students:Int? = null
    var three_credit_plus:Int? = null
    var two_credit:Int? = null
    var one_credit:Int? = null
    var three_audit_plus:Int? = null
    var two_audit:Int? = null
    var one_audit:Int? = null
    var crosslist_registered_students:Int? = null
    var grades_received:Int? = null
    var crosslist_grades_received:Int? = null
    var registration_start_date:Date? = null
    var registration_end_date:Date? = null
    var add_start_date:Date? = null
    var add_end_date:Date? = null
    var drop_start_date:Date? = null
    var drop_end_date:Date? = null
    var grading_end_date:Date? = null
    var term:String? = null
    var reporting_term:String? = null
    var reporting_year:Int? = null
    var current_status:String? = null
    var added_by:String? = null
    var added_date:Date? = null
    var changed_by:String? = null
    var changed_date:Date? = null
    var timestamp:Date? = null
}