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

//GlobalNamespace: 
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: BioHistoryRequest.*
//ExcludeTypes: 
//DefaultImports: package:servicestack/servicestack.dart,dart:typed_data
*/

import 'package:servicestack/servicestack.dart';
import 'dart:typed_data';

class BioResponse implements IConvertible
{
    ResponseStatus? responseStatus;
    String? first_name;
    String? middle_name;
    String? last_name;
    String? preferred_name;
    String? birth_name;
    String? prefix;
    DateTime? dob;
    String? citizenship;
    String? citizenship_code;
    String? citizenship_other;
    String? permanent_resident;
    String? citizenship_other_code;
    String? permanent_resident_code;
    String? gender;
    String? gender_code;
    String? marital_status;
    String? marital_status_code;
    DateTime? deceased_date;
    String? added_by;
    DateTime? added_date;
    String? changed_by;
    DateTime? changed_date;

    BioResponse({this.responseStatus,this.first_name,this.middle_name,this.last_name,this.preferred_name,this.birth_name,this.prefix,this.dob,this.citizenship,this.citizenship_code,this.citizenship_other,this.permanent_resident,this.citizenship_other_code,this.permanent_resident_code,this.gender,this.gender_code,this.marital_status,this.marital_status_code,this.deceased_date,this.added_by,this.added_date,this.changed_by,this.changed_date});
    BioResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        responseStatus = JsonConverters.fromJson(json['responseStatus'],'ResponseStatus',context!);
        first_name = json['first_name'];
        middle_name = json['middle_name'];
        last_name = json['last_name'];
        preferred_name = json['preferred_name'];
        birth_name = json['birth_name'];
        prefix = json['prefix'];
        dob = JsonConverters.fromJson(json['dob'],'DateTime',context!);
        citizenship = json['citizenship'];
        citizenship_code = json['citizenship_code'];
        citizenship_other = json['citizenship_other'];
        permanent_resident = json['permanent_resident'];
        citizenship_other_code = json['citizenship_other_code'];
        permanent_resident_code = json['permanent_resident_code'];
        gender = json['gender'];
        gender_code = json['gender_code'];
        marital_status = json['marital_status'];
        marital_status_code = json['marital_status_code'];
        deceased_date = JsonConverters.fromJson(json['deceased_date'],'DateTime',context!);
        added_by = json['added_by'];
        added_date = JsonConverters.fromJson(json['added_date'],'DateTime',context!);
        changed_by = json['changed_by'];
        changed_date = JsonConverters.fromJson(json['changed_date'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'responseStatus': JsonConverters.toJson(responseStatus,'ResponseStatus',context!),
        'first_name': first_name,
        'middle_name': middle_name,
        'last_name': last_name,
        'preferred_name': preferred_name,
        'birth_name': birth_name,
        'prefix': prefix,
        'dob': JsonConverters.toJson(dob,'DateTime',context!),
        'citizenship': citizenship,
        'citizenship_code': citizenship_code,
        'citizenship_other': citizenship_other,
        'permanent_resident': permanent_resident,
        'citizenship_other_code': citizenship_other_code,
        'permanent_resident_code': permanent_resident_code,
        'gender': gender,
        'gender_code': gender_code,
        'marital_status': marital_status,
        'marital_status_code': marital_status_code,
        'deceased_date': JsonConverters.toJson(deceased_date,'DateTime',context!),
        'added_by': added_by,
        'added_date': JsonConverters.toJson(added_date,'DateTime',context!),
        'changed_by': changed_by,
        'changed_date': JsonConverters.toJson(changed_date,'DateTime',context!)
    };

    getTypeName() => "BioResponse";
    TypeContext? context = _ctx;
}

class BioHistoryResponse implements IConvertible
{
    ResponseStatus? responseStatus;
    String? uuid;
    int? regent_id;
    List<BioResponse>? bios;

    BioHistoryResponse({this.responseStatus,this.uuid,this.regent_id,this.bios});
    BioHistoryResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        responseStatus = JsonConverters.fromJson(json['responseStatus'],'ResponseStatus',context!);
        uuid = json['uuid'];
        regent_id = json['regent_id'];
        bios = JsonConverters.fromJson(json['bios'],'List<BioResponse>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'responseStatus': JsonConverters.toJson(responseStatus,'ResponseStatus',context!),
        'uuid': uuid,
        'regent_id': regent_id,
        'bios': JsonConverters.toJson(bios,'List<BioResponse>',context!)
    };

    getTypeName() => "BioHistoryResponse";
    TypeContext? context = _ctx;
}

// @Route("/admissions/{uuid}/bio/history", "POST")
class BioHistoryRequest implements IReturn<BioHistoryResponse>, IConvertible, IPost
{
    String? uuid;

    BioHistoryRequest({this.uuid});
    BioHistoryRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        uuid = json['uuid'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'uuid': uuid
    };

    createResponse() => BioHistoryResponse();
    getResponseTypeName() => "BioHistoryResponse";
    getTypeName() => "BioHistoryRequest";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'data.regent_college.edu', types: <String, TypeInfo> {
    'BioResponse': TypeInfo(TypeOf.Class, create:() => BioResponse()),
    'BioHistoryResponse': TypeInfo(TypeOf.Class, create:() => BioHistoryResponse()),
    'List<BioResponse>': TypeInfo(TypeOf.Class, create:() => <BioResponse>[]),
    'BioHistoryRequest': TypeInfo(TypeOf.Class, create:() => BioHistoryRequest()),
});