/*
 * Pescheck API
 *
 * Official client library for the Pescheck API (v2), generated from the OpenAPI specification. Authenticate with OAuth2 client credentials and use the checks, profiles, screenings, webhooks and divisions endpoints. See https://github.com/pescheckit/pescheck-clients for installation and usage.
 *
 * The version of the OpenAPI document: 2.0.0
 * 
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct V2ProfileCheckEntry {
    #[serde(rename = "id")]
    pub id: uuid::Uuid,
    /// * `addresscheck` - addresscheck * `adversemediacheck` - adversemediacheck * `bigcheck` - bigcheck * `criminalrecordscheck` - criminalrecordscheck * `criminalrecordsuploadcheck` - criminalrecordsuploadcheck * `customintegritycheck` - customintegritycheck * `cvcheck` - cvcheck * `edrcheck` - edrcheck * `focumcheck` - focumcheck * `id2check` - id2check * `idcheck` - idcheck * `integritycheck` - integritycheck * `openhealthcarecheck` - openhealthcarecheck * `permissioncheck` - permissioncheck * `pescheckadversemediacheck` - pescheckadversemediacheck * `qualificationcheck` - qualificationcheck * `righttoworkcheck` - righttoworkcheck * `vogcheck` - vogcheck * `watchlist2check` - watchlist2check * `watchlistcheck` - watchlistcheck * `workreferencecheck` - workreferencecheck * `worldwidecreditcheck` - worldwidecreditcheck
    #[serde(rename = "check_type")]
    pub check_type: CheckType,
    #[serde(rename = "display_name")]
    pub display_name: String,
    #[serde(rename = "configured_price")]
    pub configured_price: Box<models::V2Money>,
    #[serde(rename = "config")]
    pub config: std::collections::HashMap<String, serde_json::Value>,
    #[serde(rename = "input_fields")]
    pub input_fields: Vec<serde_json::Value>,
    #[serde(rename = "is_system_managed")]
    pub is_system_managed: bool,
}

impl V2ProfileCheckEntry {
    pub fn new(id: uuid::Uuid, check_type: CheckType, display_name: String, configured_price: models::V2Money, config: std::collections::HashMap<String, serde_json::Value>, input_fields: Vec<serde_json::Value>, is_system_managed: bool) -> V2ProfileCheckEntry {
        V2ProfileCheckEntry {
            id,
            check_type,
            display_name,
            configured_price: Box::new(configured_price),
            config,
            input_fields,
            is_system_managed,
        }
    }
}
/// * `addresscheck` - addresscheck * `adversemediacheck` - adversemediacheck * `bigcheck` - bigcheck * `criminalrecordscheck` - criminalrecordscheck * `criminalrecordsuploadcheck` - criminalrecordsuploadcheck * `customintegritycheck` - customintegritycheck * `cvcheck` - cvcheck * `edrcheck` - edrcheck * `focumcheck` - focumcheck * `id2check` - id2check * `idcheck` - idcheck * `integritycheck` - integritycheck * `openhealthcarecheck` - openhealthcarecheck * `permissioncheck` - permissioncheck * `pescheckadversemediacheck` - pescheckadversemediacheck * `qualificationcheck` - qualificationcheck * `righttoworkcheck` - righttoworkcheck * `vogcheck` - vogcheck * `watchlist2check` - watchlist2check * `watchlistcheck` - watchlistcheck * `workreferencecheck` - workreferencecheck * `worldwidecreditcheck` - worldwidecreditcheck
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum CheckType {
    #[serde(rename = "addresscheck")]
    Addresscheck,
    #[serde(rename = "adversemediacheck")]
    Adversemediacheck,
    #[serde(rename = "bigcheck")]
    Bigcheck,
    #[serde(rename = "criminalrecordscheck")]
    Criminalrecordscheck,
    #[serde(rename = "criminalrecordsuploadcheck")]
    Criminalrecordsuploadcheck,
    #[serde(rename = "customintegritycheck")]
    Customintegritycheck,
    #[serde(rename = "cvcheck")]
    Cvcheck,
    #[serde(rename = "edrcheck")]
    Edrcheck,
    #[serde(rename = "focumcheck")]
    Focumcheck,
    #[serde(rename = "id2check")]
    Id2check,
    #[serde(rename = "idcheck")]
    Idcheck,
    #[serde(rename = "integritycheck")]
    Integritycheck,
    #[serde(rename = "openhealthcarecheck")]
    Openhealthcarecheck,
    #[serde(rename = "permissioncheck")]
    Permissioncheck,
    #[serde(rename = "pescheckadversemediacheck")]
    Pescheckadversemediacheck,
    #[serde(rename = "qualificationcheck")]
    Qualificationcheck,
    #[serde(rename = "righttoworkcheck")]
    Righttoworkcheck,
    #[serde(rename = "vogcheck")]
    Vogcheck,
    #[serde(rename = "watchlist2check")]
    Watchlist2check,
    #[serde(rename = "watchlistcheck")]
    Watchlistcheck,
    #[serde(rename = "workreferencecheck")]
    Workreferencecheck,
    #[serde(rename = "worldwidecreditcheck")]
    Worldwidecreditcheck,
}

impl Default for CheckType {
    fn default() -> CheckType {
        Self::Addresscheck
    }
}

