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

//GlobalNamespace: 
//MakePropertiesOptional: False
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: RegistrationInProgressSummaryRequest.*
//ExcludeTypes: 
//DefaultImports: 
*/


export interface IReturn<T>
{
    createResponse(): T;
}

export class RegistrationDocumentResponse
{
    public uuid: string;
    public regent_id: number;
    public first_name: string;
    public last_name: string;
    public gender: string;
    public email: string;
    public program: string;
    public concentration: string;
    public section_uuid: string;
    public course_name: string;
    public course_title: string;
    public reporting_term: string;
    public document_code: string;
    public document_json: string;
    public document_name: string;
    public document_description: string;
    public added_date?: string;
    public changed_date?: string;

    public constructor(init?: Partial<RegistrationDocumentResponse>) { (Object as any).assign(this, init); }
}

// @DataContract
export class ResponseStatus
{
    // @DataMember(Order=1)
    public errorCode: string;

    // @DataMember(Order=2)
    public message: string;

    // @DataMember(Order=3)
    public stackTrace: string;

    // @DataMember(Order=4)
    public errors: ResponseError[];

    // @DataMember(Order=5)
    public meta: { [index: string]: string; };

    public constructor(init?: Partial<ResponseStatus>) { (Object as any).assign(this, init); }
}

export class RegistrationInProgressSummaryResponse
{
    public responseStatus: ResponseStatus;
    public transaction_uuid: string;
    public regent_id: number;
    public uuid: string;
    public reporting_term: string;
    public numberOfStudentSections: number;
    public amountOwing: number;
    public mustPayBeforeRegistering: boolean;
    public requiredDocuments: RegistrationDocumentResponse[];
    public completedDocuments: RegistrationDocumentResponse[];
    public isLate: boolean;

    public constructor(init?: Partial<RegistrationInProgressSummaryResponse>) { (Object as any).assign(this, init); }
}

// @Route("/Registration/InProgressSummary/{uuid}/Term/{reporting_term}/{transaction_uuid}", "POST")
// @Route("/Registration/InProgressSummary/{uuid}/Term/{reporting_term}", "POST")
export class RegistrationInProgressSummaryRequest implements IReturn<RegistrationInProgressSummaryResponse>
{
    public uuid: string;
    public transaction_uuid: string;
    public reporting_term: string;
    public online_only: boolean;

    public constructor(init?: Partial<RegistrationInProgressSummaryRequest>) { (Object as any).assign(this, init); }
    public getTypeName() { return 'RegistrationInProgressSummaryRequest'; }
    public getMethod() { return 'POST'; }
    public createResponse() { return new RegistrationInProgressSummaryResponse(); }
}