/* tslint:disable */
/* eslint-disable */
/**
 * Tuix Services
 * Tuix Services API
 *
 * The version of the OpenAPI document: 1.0.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 { exists, mapValues } from '../runtime';
/**
 * 
 * @export
 * @interface ProjectDTO
 */
export interface ProjectDTO {
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    city: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    clientId?: string;
    /**
     * 
     * @type {boolean}
     * @memberof ProjectDTO
     */
    closed?: boolean;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    companyContactPerson: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    contactEmail: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    contactName: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    contactPhoneNumber: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    createdAt?: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    description: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    endDate: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    gitPrefix: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    githubOrganization: string;
    /**
     * 
     * @type {number}
     * @memberof ProjectDTO
     */
    hourlyRate: number;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    houseNumber: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    id?: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    jiraOrganization: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    jiraPrefix: string;
    /**
     * 
     * @type {number}
     * @memberof ProjectDTO
     */
    paymentMonthDay: number;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    postalCode: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    projectName: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    startDate: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    street: string;
    /**
     * 
     * @type {string}
     * @memberof ProjectDTO
     */
    updatedAt?: string;
}

/**
 * Check if a given object implements the ProjectDTO interface.
 */
export function instanceOfProjectDTO(value: object): boolean {
    let isInstance = true;
    isInstance = isInstance && "city" in value;
    isInstance = isInstance && "companyContactPerson" in value;
    isInstance = isInstance && "contactEmail" in value;
    isInstance = isInstance && "contactName" in value;
    isInstance = isInstance && "contactPhoneNumber" in value;
    isInstance = isInstance && "description" in value;
    isInstance = isInstance && "endDate" in value;
    isInstance = isInstance && "gitPrefix" in value;
    isInstance = isInstance && "githubOrganization" in value;
    isInstance = isInstance && "hourlyRate" in value;
    isInstance = isInstance && "houseNumber" in value;
    isInstance = isInstance && "jiraOrganization" in value;
    isInstance = isInstance && "jiraPrefix" in value;
    isInstance = isInstance && "paymentMonthDay" in value;
    isInstance = isInstance && "postalCode" in value;
    isInstance = isInstance && "projectName" in value;
    isInstance = isInstance && "startDate" in value;
    isInstance = isInstance && "street" in value;

    return isInstance;
}

export function ProjectDTOFromJSON(json: any): ProjectDTO {
    return ProjectDTOFromJSONTyped(json, false);
}

export function ProjectDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectDTO {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'city': json['city'],
        'clientId': !exists(json, 'clientId') ? undefined : json['clientId'],
        'closed': !exists(json, 'closed') ? undefined : json['closed'],
        'companyContactPerson': json['companyContactPerson'],
        'contactEmail': json['contactEmail'],
        'contactName': json['contactName'],
        'contactPhoneNumber': json['contactPhoneNumber'],
        'createdAt': !exists(json, 'createdAt') ? undefined : json['createdAt'],
        'description': json['description'],
        'endDate': json['endDate'],
        'gitPrefix': json['gitPrefix'],
        'githubOrganization': json['githubOrganization'],
        'hourlyRate': json['hourlyRate'],
        'houseNumber': json['houseNumber'],
        'id': !exists(json, 'id') ? undefined : json['id'],
        'jiraOrganization': json['jiraOrganization'],
        'jiraPrefix': json['jiraPrefix'],
        'paymentMonthDay': json['paymentMonthDay'],
        'postalCode': json['postalCode'],
        'projectName': json['projectName'],
        'startDate': json['startDate'],
        'street': json['street'],
        'updatedAt': !exists(json, 'updatedAt') ? undefined : json['updatedAt'],
    };
}

export function ProjectDTOToJSON(value?: ProjectDTO | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'city': value.city,
        'clientId': value.clientId,
        'closed': value.closed,
        'companyContactPerson': value.companyContactPerson,
        'contactEmail': value.contactEmail,
        'contactName': value.contactName,
        'contactPhoneNumber': value.contactPhoneNumber,
        'createdAt': value.createdAt,
        'description': value.description,
        'endDate': value.endDate,
        'gitPrefix': value.gitPrefix,
        'githubOrganization': value.githubOrganization,
        'hourlyRate': value.hourlyRate,
        'houseNumber': value.houseNumber,
        'id': value.id,
        'jiraOrganization': value.jiraOrganization,
        'jiraPrefix': value.jiraPrefix,
        'paymentMonthDay': value.paymentMonthDay,
        'postalCode': value.postalCode,
        'projectName': value.projectName,
        'startDate': value.startDate,
        'street': value.street,
        'updatedAt': value.updatedAt,
    };
}

