<?php

namespace App\DAO\Filter;

class QueryFilterTranslator {

	public static function paciente(): array {

		return [ 
			'nome' => [ 
				'table' => 'pessoa_fisica',
				'field' => 'nome',
				'is_exact' => false
			],
			'cpf' => [ 
				'table' => 'pessoa_fisica',
				'field' => 'cpf',
				'is_exact' => false
			],
			'email' => [ 
				'table' => 'usuario',
				'field' => 'email',
				'is_exact' => false
			],
			'id' => [ 
				'table' => 'cliente',
				'field' => 'id',
				'is_exact' => false
			]
			// 'id_usuario' => [
			// 'table' => 'usuario',
			// 'field' => 'id',
			// 'is_exact' => true
			// ]
		];

	}

	public static function centro_custo(): array {

		return [ 
			'search' => [ 
				'table' => 'centro_custo',
				'field' => 'descricao',
				'is_exact' => false
			]
		];

	}

	public static function classificacao_risco(): array {

		return [ 
			'descricao' => [ 
				'table' => 'classificacao_risco',
				'field' => 'descricao',
				'is_exact' => false
			]
		];

	}

	public static function forma_pagamento(): array {

		return [ 
			'search' => [ 
				'table' => 'forma_pagamento',
				'field' => 'descricao',
				'is_exact' => false
			]
		];

	}

	public static function setor(): array {

		return [ 
			'search' => [ 
				'table' => 'setor',
				'field' => 'descricao',
				'is_exact' => false
			]
		];

	}

	public static function assistente(): array {

		return [ 
			'nome' => [ 
				'table' => 'pessoa_fisica',
				'field' => 'nome',
				'is_exact' => false
			],
			'cpf' => [ 
				'table' => 'pessoa_fisica',
				'field' => 'cpf',
				'is_exact' => false
			],
			'email' => [ 
				'table' => 'usuario',
				'field' => 'email',
				'is_exact' => false
			]
		];

	}

	public static function recepcionista(): array {

		return [ 
			'nome' => [ 
				'table' => 'pessoa_fisica',
				'field' => 'nome',
				'is_exact' => false
			],
			'cpf' => [ 
				'table' => 'pessoa_fisica',
				'field' => 'cpf',
				'is_exact' => false
			],
			'email' => [ 
				'table' => 'usuario',
				'field' => 'email',
				'is_exact' => false
			]
		];

	}

	public static function administrativo(): array {

		return [ 
			'nome' => [ 
				'table' => 'pessoa_fisica',
				'field' => 'nome',
				'is_exact' => false
			],
			'cpf' => [ 
				'table' => 'pessoa_fisica',
				'field' => 'cpf',
				'is_exact' => false
			],
			'email' => [ 
				'table' => 'usuario',
				'field' => 'email',
				'is_exact' => false
			],
			'unidade' => [ 
				'table' => 'unidade',
				'field' => 'id',
				'is_exact' => true
			]
		];

	}

	public static function pet(): array {

		return [ 
			'sexo' => [ 
				'table' => 'pet',
				'field' => 'sexo',
				'is_exact' => false
			],
			'data_nascimento' => [ 
				'table' => 'pet',
				'field' => 'data_nascimento',
				'is_exact' => false
			],
			'numero_chip' => [ 
				'table' => 'pet',
				'field' => 'numero_chip',
				'is_exact' => false
			],
			'cliente' => [ 
				'table' => 'pet_cliente',
				'field' => 'id_cliente',
				'is_exact' => false
			],
			'rga_pedigree' => [ 
				'table' => 'pet',
				'field' => 'rga_pedigree',
				'is_exact' => false
			],
			'nomecliente' => [ 
				'table' => 'pessoa_fisica',
				'field' => 'nome',
				'is_exact' => false
			],
			'cpf' => [ 
				'table' => 'pessoa_fisica',
				'field' => 'cpf',
				'is_exact' => false
			],
			'id_usuario' => [ 
				'table' => 'usuario',
				'field' => 'id',
				'is_exact' => true
			],
			// 'nome' => [
			// 'table' => 'pessoa_fisica',
			// 'field' => 'nome',
			// 'is_exact' => false
			// ]
			'nome' => [ 
				'table' => 'pet',
				'field' => 'nome',
				'is_exact' => false
			],
			'id' => [ 
				'table' => 'pet',
				'field' => 'id',
				'is_exact' => false
			]
		];

	}

	public static function medico(): array {

		return [ 
			'nome' => [ 
				'table' => 'pessoa_fisica',
				'field' => 'nome',
				'is_exact' => false
			],
			'cpf' => [ 
				'table' => 'pessoa_fisica',
				'field' => 'cpf',
				'is_exact' => false
			],
			'email' => [ 
				'table' => 'pessoa_fisica',
				'field' => 'email',
				'is_exact' => false
			],
			'unidade' => [ 
				'table' => 'unidade',
				'field' => 'id',
				'is_exact' => true
			]
		];

	}

	public static function procedimento(): array {

		return [ 
			'descricao' => [ 
				'table' => 'procedimento',
				'field' => 'descricao',
				'is_exact' => false
			],
			'tipo_procedimento' => [ 
				'table' => 'tipo_procedimento',
				'field' => 'id',
				'is_exact' => true
			],
			'unidade_id' => [ 
				'table' => 'unidade',
				'field' => 'id',
				'is_exact' => true
			],
			'status' => [ 
				'table' => 'procedimento_valor',
				'field' => 'status',
				'is_exact' => true
			]
		];

	}

	public static function convenio_procedimento_valor(): array {

		return [ 
			'id_unidade' => [ 
				'table' => 'unidade',
				'field' => 'id',
				'is_exact' => true
			],
			'id_convenio' => [ 
				'table' => 'convenio',
				'field' => 'id',
				'is_exact' => true
			]
		];

	}

	public static function agenda(): array {

		return [ 
			'id_tipo_procedimento' => [ 
				'table' => 'tipo_procedimento',
				'field' => 'id',
				'is_exact' => true
			],
			'id_agenda' => [ 
				'table' => 'agenda',
				'field' => 'id',
				'is_exact' => true
			],
			'id_procedimento' => [ 
				'table' => 'procedimento',
				'field' => 'id',
				'is_exact' => true
			],
			'id_medico' => [ 
				'table' => 'agenda',
				'field' => 'id_medico',
				'is_exact' => true
			],
			'id_unidade' => [ 
				'table' => 'agenda',
				'field' => 'id_unidade',
				'is_exact' => true
			],
			'data_inicio' => [ 
				'table' => 'agenda',
				'field' => 'data',
				'is_exact' => false,
				'comparator' => '>='
			],
			'data_fim' => [ 
				'table' => 'agenda',
				'field' => 'data',
				'is_exact' => false,
				'comparator' => '<='
			]
		];

	}

	public static function agenda_especialidade(): array {

		return [ 
			'id_especialidade' => [ 
				'table' => 'agenda_especialidade',
				'field' => 'id_especialidade',
				'is_exact' => true
			],
			'id_agenda' => [ 
				'table' => 'agenda_especialidade',
				'field' => 'id',
				'is_exact' => true
			],
			'id_medico' => [ 
				'table' => 'agenda_especialidade',
				'field' => 'id_medico',
				'is_exact' => true
			],
			'id_unidade' => [ 
				'table' => 'agenda_especialidade',
				'field' => 'id_unidade',
				'is_exact' => true
			],
			'data_inicio' => [ 
				'table' => 'agenda_especialidade',
				'field' => 'data',
				'is_exact' => false,
				'comparator' => '>='
			],
			'data_fim' => [ 
				'table' => 'agenda_especialidade',
				'field' => 'data',
				'is_exact' => false,
				'comparator' => '<='
			]
		];

	}

	public static function dashboard(): array {

		return [ 
			'data' => [ 
				'table' => 'agenda',
				'field' => 'data',
				'is_exact' => false
			]
		];

	}

	public static function dashboard_televet(): array {

		return [ 
			'data' => [ 
				'table' => 'agenda',
				'field' => 'data',
				'is_exact' => false
			]
		];

	}

	public static function formulario(): array {

		return [ 
			'titulo' => [ 
				'table' => 'formulario',
				'field' => 'titulo',
				'is_exact' => false
			],
			'ativo' => [ 
				'table' => 'formulario',
				'field' => 'ativo',
				'is_exact' => true
			],
			'procedimento' => [ 
				'table' => 'procedimento_formulario',
				'field' => 'id_procedimento',
				'is_exact' => true
			]
		];

	}

	public static function galeria(): array {

		return [ 
			'paciente' => [ 
				'table' => 'galeria',
				'field' => 'id_paciente',
				'is_exact' => true
			],
			'medico' => [ 
				'table' => 'galeria',
				'field' => 'id_medico',
				'is_exact' => true
			]
		];

	}

	public static function exame(): array {

		return [ 
			'nome' => [ 
				'table' => 'exame',
				'field' => 'nome',
				'is_exact' => false
			]
		];

	}

	public static function internacao(): array {

		return [ 
			'cliente' => [ 
				'table' => 'pf',
				'field' => 'nome',
				'is_exact' => false
			],
			'pet' => [ 
				'table' => 'p2',
				'field' => 'nome',
				'is_exact' => false
			],
			'executado' => [ 
				'table' => 'rp',
				'field' => 'status_id',
				'is_exact' => true
			],
			'status' => [ 
				'table' => 'ip',
				'field' => 'status',
				'is_exact' => true
			]
		];

	}

	public static function fila_especialidade(): array {

		return [ 
			'especialidade' => [ 
				'table' => 'agenda_especialidade',
				'field' => 'id_especialidade',
				'is_exact' => true
			]
		];

	}

	public static function fila_cliente(): array {

		return [ 
			'cliente' => [ 
				'table' => 'cliente',
				'field' => 'id',
				'is_exact' => true
			]
		];

	}

	public static function especialidade_procedimento(): array {

		return [ 
			'id_especialidade' => [ 
				'table' => 'especialidade_procedimento',
				'field' => 'id_especialidade',
				'is_exact' => true
			]
		];

	}

	public static function tipo_extorno(): array {

		return [ 
			'search' => [ 
				'table' => 'tipo_extorno',
				'field' => 'descricao',
				'is_exact' => false
			]
		];

	}

	public static function tipo_procedimento(): array {

		return [ 
			'search' => [ 
				'table' => 'tipo_procedimento',
				'field' => 'descricao',
				'is_exact' => false
			]
		];

	}

	public static function especialidade(): array {

		return [ 
			'search' => [ 
				'table' => 'especialidade',
				'field' => 'descricao',
				'is_exact' => false
			]
		];

	}

	public static function especie(): array {

		return [ 
			'nome' => [ 
				'table' => 'especie',
				'field' => 'nome',
				'is_exact' => false
			]
		];

	}

	public static function raca(): array {

		return [ 
			'nome' => [ 
				'table' => 'raca',
				'field' => 'nome',
				'is_exact' => false
			],
			'especie' => [ 
				'table' => 'raca',
				'field' => 'id_especie',
				'is_exact' => false
			]
		];

	}

	public static function arquivo(): array {

		return [ 
			'paciente' => [ 
				'table' => 'arquivo',
				'field' => 'id_paciente',
				'is_exact' => true
			],
			'descricao' => [ 
				'table' => 'arquivo',
				'field' => 'descricao',
				'is_exact' => false
			],
			'medico' => [ 
				'table' => 'arquivo',
				'field' => 'id_medico',
				'is_exact' => true
			],
			'pet' => [ 
				'table' => 'arquivo',
				'field' => 'id_pet',
				'is_exact' => true
			]
		];

	}

	public static function arquivoExame(): array {

		return [ 
			'paciente' => [ 
				'table' => 'arquivo_exame',
				'field' => 'id_paciente',
				'is_exact' => true
			],
			'descricao' => [ 
				'table' => 'arquivo_exame',
				'field' => 'descricao',
				'is_exact' => false
			],
			'medico' => [ 
				'table' => 'arquivo_exame',
				'field' => 'id_medico',
				'is_exact' => true
			],
			'pet' => [ 
				'table' => 'arquivo_exame',
				'field' => 'id_pet',
				'is_exact' => true
			]
		];

	}

	public static function anexos(): array {

		return [ 
			'cliente' => [ 
				'table' => 'documentos_anexados',
				'field' => 'id_cliente',
				'is_exact' => true
			],
			'pet' => [ 
				'table' => 'documentos_anexados',
				'field' => 'id_pet',
				'is_exact' => true
			],
			'descricao' => [ 
				'table' => 'documentos_anexados',
				'field' => 'descricao',
				'is_exact' => false
			]
		];

	}

	public static function gerados(): array {

		return [ 
			'cliente' => [ 
				'table' => 'documentos_gerados',
				'field' => 'id_cliente',
				'is_exact' => true
			],
			'pet' => [ 
				'table' => 'documentos_gerados',
				'field' => 'id_pet',
				'is_exact' => true
			],
			'descricao' => [ 
				'table' => 'documentos_gerados',
				'field' => 'descricao',
				'is_exact' => false
			]
		];

	}

	public static function galeria_classificacao(): array {

		return [ 
			'paciente' => [ 
				'table' => 'galeria',
				'field' => 'id_paciente',
				'is_exact' => true
			]
		];

	}

	public static function consulta(): array {

		return [ 
			'nome' => [ 
				'table' => 'pessoa_fisica',
				'field' => 'nome',
				'is_exact' => false
			]
		];

	}

	public static function medicamento(): array {

		return [ 
			'nome' => [ 
				'table' => 'medicamento',
				'field' => 'nome',
				'is_exact' => false
			],
			'quantidade' => [ 
				'table' => 'medicamento',
				'field' => 'quantidade',
				'is_exact' => false
			],
			'posologia' => [ 
				'table' => 'medicamento',
				'field' => 'posologia',
				'is_exact' => false
			],
			'clinica' => [ 
				'table' => 'medicamento',
				'field' => 'id_clinica',
				'is_exact' => true
			]
		];

	}

	public static function unidade(): array {

		return [ 
			'cnpj' => [ 
				'table' => 'pessoa_juridica',
				'field' => 'cnpj',
				'is_exact' => true
			],
			'nome_fantasia' => [ 
				'table' => 'pessoa_juridica',
				'field' => 'nome_fantasia',
				'is_exact' => true
			]
		];

	}

	public static function perfil(): array {

		return [ 
			'search' => [ 
				'table' => 'perfil',
				'field' => 'descricao',
				'is_exact' => false
			]
		];

	}

	public static function preagendamento(): array {

		return [ 
			'cliente_nome' => [ 
				'table' => 'preagendamento_especialidade',
				'field' => 'cliente_nome',
				'is_exact' => false
			],
			'data' => [ 
				'table' => 'agenda_especialidade',
				'field' => 'data',
				'is_exact' => true
			],
			'id_especialidade' => [ 
				'table' => 'agenda_especialidade',
				'field' => 'id_especialidade',
				'is_exact' => true
			]
		];

	}

	public static function agenda_date(): array {

		return [ ];

	}

}

