/* tslint:disable */
/* eslint-disable */
/**
 * Screening AI API Docs
 * API Documentation for Screening AI
 *
 * The version of the OpenAPI document: 1.0
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { mapValues } from '../runtime';
import type { ScreeningFormSubmissionQuestionDto } from './ScreeningFormSubmissionQuestionDto';
import {
    ScreeningFormSubmissionQuestionDtoFromJSON,
    ScreeningFormSubmissionQuestionDtoFromJSONTyped,
    ScreeningFormSubmissionQuestionDtoToJSON,
    ScreeningFormSubmissionQuestionDtoToJSONTyped,
} from './ScreeningFormSubmissionQuestionDto';

/**
 * 
 * @export
 * @interface PlatformScreeningSubmissionResponseDto
 */
export interface PlatformScreeningSubmissionResponseDto {
    /**
     * Screening Submission ID
     * @type {string}
     * @memberof PlatformScreeningSubmissionResponseDto
     */
    screeningSubmissionId: string;
    /**
     * Organisation ID
     * @type {string}
     * @memberof PlatformScreeningSubmissionResponseDto
     */
    orgId: string;
    /**
     * Organisation Alias
     * @type {string}
     * @memberof PlatformScreeningSubmissionResponseDto
     */
    orgAlias: string;
    /**
     * Email
     * @type {string}
     * @memberof PlatformScreeningSubmissionResponseDto
     */
    email: string;
    /**
     * First Name
     * @type {string}
     * @memberof PlatformScreeningSubmissionResponseDto
     */
    firstName: string;
    /**
     * Last Name
     * @type {string}
     * @memberof PlatformScreeningSubmissionResponseDto
     */
    lastName: string;
    /**
     * Phone Number
     * @type {string}
     * @memberof PlatformScreeningSubmissionResponseDto
     */
    phoneNumber: string;
    /**
     * Screening Job ID
     * @type {string}
     * @memberof PlatformScreeningSubmissionResponseDto
     */
    screeningJobId: string;
    /**
     * Chat
     * @type {Array<ScreeningFormSubmissionQuestionDto>}
     * @memberof PlatformScreeningSubmissionResponseDto
     */
    chat: Array<ScreeningFormSubmissionQuestionDto>;
    /**
     * Created At
     * @type {string}
     * @memberof PlatformScreeningSubmissionResponseDto
     */
    createdAt: string;
    /**
     * Status
     * @type {string}
     * @memberof PlatformScreeningSubmissionResponseDto
     */
    status: string;
    /**
     * Upvotes
     * @type {Array<string>}
     * @memberof PlatformScreeningSubmissionResponseDto
     */
    upvotes: Array<string>;
    /**
     * Is Viewed
     * @type {boolean}
     * @memberof PlatformScreeningSubmissionResponseDto
     */
    isViewed: boolean;
    /**
     * Is Private
     * @type {boolean}
     * @memberof PlatformScreeningSubmissionResponseDto
     */
    isPrivate: boolean;
}

/**
 * Check if a given object implements the PlatformScreeningSubmissionResponseDto interface.
 */
export function instanceOfPlatformScreeningSubmissionResponseDto(value: object): value is PlatformScreeningSubmissionResponseDto {
    if (!('screeningSubmissionId' in value) || value['screeningSubmissionId'] === undefined) return false;
    if (!('orgId' in value) || value['orgId'] === undefined) return false;
    if (!('orgAlias' in value) || value['orgAlias'] === undefined) return false;
    if (!('email' in value) || value['email'] === undefined) return false;
    if (!('firstName' in value) || value['firstName'] === undefined) return false;
    if (!('lastName' in value) || value['lastName'] === undefined) return false;
    if (!('phoneNumber' in value) || value['phoneNumber'] === undefined) return false;
    if (!('screeningJobId' in value) || value['screeningJobId'] === undefined) return false;
    if (!('chat' in value) || value['chat'] === undefined) return false;
    if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
    if (!('status' in value) || value['status'] === undefined) return false;
    if (!('upvotes' in value) || value['upvotes'] === undefined) return false;
    if (!('isViewed' in value) || value['isViewed'] === undefined) return false;
    if (!('isPrivate' in value) || value['isPrivate'] === undefined) return false;
    return true;
}

export function PlatformScreeningSubmissionResponseDtoFromJSON(json: any): PlatformScreeningSubmissionResponseDto {
    return PlatformScreeningSubmissionResponseDtoFromJSONTyped(json, false);
}

export function PlatformScreeningSubmissionResponseDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): PlatformScreeningSubmissionResponseDto {
    if (json == null) {
        return json;
    }
    return {
        
        'screeningSubmissionId': json['screeningSubmissionId'],
        'orgId': json['orgId'],
        'orgAlias': json['orgAlias'],
        'email': json['email'],
        'firstName': json['firstName'],
        'lastName': json['lastName'],
        'phoneNumber': json['phoneNumber'],
        'screeningJobId': json['screeningJobId'],
        'chat': ((json['chat'] as Array<any>).map(ScreeningFormSubmissionQuestionDtoFromJSON)),
        'createdAt': json['createdAt'],
        'status': json['status'],
        'upvotes': json['upvotes'],
        'isViewed': json['isViewed'],
        'isPrivate': json['isPrivate'],
    };
}

export function PlatformScreeningSubmissionResponseDtoToJSON(json: any): PlatformScreeningSubmissionResponseDto {
    return PlatformScreeningSubmissionResponseDtoToJSONTyped(json, false);
}

export function PlatformScreeningSubmissionResponseDtoToJSONTyped(value?: PlatformScreeningSubmissionResponseDto | null, ignoreDiscriminator: boolean = false): any {
    if (value == null) {
        return value;
    }

    return {
        
        'screeningSubmissionId': value['screeningSubmissionId'],
        'orgId': value['orgId'],
        'orgAlias': value['orgAlias'],
        'email': value['email'],
        'firstName': value['firstName'],
        'lastName': value['lastName'],
        'phoneNumber': value['phoneNumber'],
        'screeningJobId': value['screeningJobId'],
        'chat': ((value['chat'] as Array<any>).map(ScreeningFormSubmissionQuestionDtoToJSON)),
        'createdAt': value['createdAt'],
        'status': value['status'],
        'upvotes': value['upvotes'],
        'isViewed': value['isViewed'],
        'isPrivate': value['isPrivate'],
    };
}

