<?php

namespace App\Validations;

class ConsultaValidation {

	public static function validateRegisterPost(array $data_post): array {

		$validation_errors = [ ];
		if (!isset( $data_post ['id_agendamento'] )) {
			$validation_errors ['id_agendamento'] = "O campo id_agendamento é obrigatório.";
		} else if (!is_int( $data_post ['id_agendamento'] )) {
			$validation_errors ['id_agendamento'] = "O campo id_agendamento deve ser um número natural.";
		}

		if (!isset( $data_post ['id_formulario'] )) {
			$validation_errors ['id_formulario'] = "O campo id_formulario é obrigatório.";
		} else if (!is_int( $data_post ['id_formulario'] )) {
			$validation_errors ['id_formulario'] = "O campo id_formulario deve ser um número natural.";
		}

		if (!isset( $data_post ['titulo'] )) {
			$validation_errors ['titulo'] = "O campo titulo é obrigatório.";
		} else if (!is_string( $data_post ['titulo'] )) {
			$validation_errors ['titulo'] = "O campo titulo deve ser um texto.";
		}

		if (!isset( $data_post ['descricao'] )) {
			$validation_errors ['descricao'] = "O campo descricao é obrigatório.";
		} else if (!is_string( $data_post ['descricao'] )) {
			$validation_errors ['descricao'] = "O campo descricao deve ser um texto.";
		}

		if (!isset( $data_post ['respostas'] )) {
			$validation_errors ['respostas'] = "O campo respostas é obrigatório.";
		} else if (!is_array( $data_post ['respostas'] )) {
			$validation_errors ['respostas'] = "O campo respostas deve ser um array.";
		} else {
			foreach ( $data_post ['respostas'] as $resposta ) {
				if (!isset( $resposta ['id_pergunta'] )) {
					$validation_errors ['respostas'] = [ 
							'id_pergunta' => "O campo id_pergunta é obrigatório."
					];
				} else if (!is_int( $resposta ['id_pergunta'] )) {
					$validation_errors ['respostas'] = [ 
							'id_pergunta' => "O campo id_pergunta deve ser um número natural."
					];
				}
				if (!isset( $resposta ['resposta'] )) {
					$validation_errors ['respostas'] = [ 
							'resposta' => "O campo resposta é obrigatório."
					];
				} else if (is_array( $resposta ['resposta'] )) {
					for($i = 0, $len = count( $resposta ['resposta'] ); $i < $len && $validation_errors ['respostas'] ['opcao']; $i++) {
						if (!is_int( $resposta ['resposta'] [$i] )) {
							$validation_errors ['respostas'] = [ 
									'opcao' => "O campo resposta, se for um array, deve ser um array de números."
							];
						}
					}
				}
				if (isset( $validation_errors ['respostas'] )) {
					return $validation_errors;
				}
			}
		}
		return $validation_errors;

	}

	public static function validateRegisterUpdate(array $data_post): array {

		$validation_errors = [ ];
		if (!isset( $data_post ['id_agendamento'] )) {
			$validation_errors ['id_agendamento'] = "O campo id_agendamento é obrigatório.";
		} else if (!is_int( $data_post ['id_agendamento'] )) {
			$validation_errors ['id_agendamento'] = "O campo id_agendamento deve ser um número natural.";
		}

		if (!isset( $data_post ['id_formulario'] )) {
			$validation_errors ['id_formulario'] = "O campo id_formulario é obrigatório.";
		} else if (!is_int( $data_post ['id_formulario'] )) {
			$validation_errors ['id_formulario'] = "O campo id_formulario deve ser um número natural.";
		}

		if (!isset( $data_post ['titulo'] )) {
			$validation_errors ['titulo'] = "O campo titulo é obrigatório.";
		} else if (!is_string( $data_post ['titulo'] )) {
			$validation_errors ['titulo'] = "O campo titulo deve ser um texto.";
		}

		if (!isset( $data_post ['descricao'] )) {
			$validation_errors ['descricao'] = "O campo descricao é obrigatório.";
		} else if (!is_string( $data_post ['descricao'] )) {
			$validation_errors ['descricao'] = "O campo descricao deve ser um texto.";
		}

		if (!isset( $data_post ['respostas'] )) {
			$validation_errors ['respostas'] = "O campo respostas é obrigatório.";
		} else if (!is_array( $data_post ['respostas'] )) {
			$validation_errors ['respostas'] = "O campo respostas deve ser um array.";
		} else {
			foreach ( $data_post ['respostas'] as $resposta ) {
				if (!isset( $resposta ['id_pergunta'] )) {
					$validation_errors ['respostas'] = [ 
							'id_pergunta' => "O campo id_pergunta é obrigatório."
					];
				} else if (!is_int( $resposta ['id_pergunta'] )) {
					$validation_errors ['respostas'] = [ 
							'id_pergunta' => "O campo id_pergunta deve ser um número natural."
					];
				}
				if (!isset( $resposta ['resposta'] )) {
					$validation_errors ['respostas'] = [ 
							'resposta' => "O campo resposta é obrigatório."
					];
				} else if (is_array( $resposta ['resposta'] )) {
					for($i = 0, $len = count( $resposta ['resposta'] ); $i < $len && $validation_errors ['respostas'] ['opcao']; $i++) {
						if (!is_int( $resposta ['resposta'] [$i] )) {
							$validation_errors ['respostas'] = [ 
									'opcao' => "O campo resposta, se for um array, deve ser um array de números."
							];
						}
					}
				}
				if (isset( $validation_errors ['respostas'] )) {
					return $validation_errors;
				}
			}
		}
		return $validation_errors;

	}

	public static function validateRegisterRequisicaoPost(array $data_post): array {

		$validation_errors = [ ];

		if (!isset( $data_post ['id_requisicao_procedimento'] )) {
			$validation_errors ['id_requisicao_procedimento'] = "O campo id_requisicao_procedimento é obrigatório.";
		} else if (!is_int( $data_post ['id_requisicao_procedimento'] )) {
			$validation_errors ['id_requisicao_procedimento'] = "O campo id_requisicao_procedimento deve ser um número natural.";
		}

		if (!isset( $data_post ['id_formulario'] )) {
			$validation_errors ['id_formulario'] = "O campo id_formulario é obrigatório.";
		} else if (!is_int( $data_post ['id_formulario'] )) {
			$validation_errors ['id_formulario'] = "O campo id_formulario deve ser um número natural.";
		}

		if (!isset( $data_post ['titulo'] )) {
			$validation_errors ['titulo'] = "O campo titulo é obrigatório.";
		} else if (!is_string( $data_post ['titulo'] )) {
			$validation_errors ['titulo'] = "O campo titulo deve ser um texto.";
		}

		if (!isset( $data_post ['descricao'] )) {
			$validation_errors ['descricao'] = "O campo descricao é obrigatório.";
		} else if (!is_string( $data_post ['descricao'] )) {
			$validation_errors ['descricao'] = "O campo descricao deve ser um texto.";
		}

		if (!isset( $data_post ['respostas'] )) {
			$validation_errors ['respostas'] = "O campo respostas é obrigatório.";
		} else if (!is_array( $data_post ['respostas'] )) {
			$validation_errors ['respostas'] = "O campo respostas deve ser um array.";
		} else {
			foreach ( $data_post ['respostas'] as $resposta ) {
				if (!isset( $resposta ['id_pergunta'] )) {
					$validation_errors ['respostas'] = [ 
							'id_pergunta' => "O campo id_pergunta é obrigatório."
					];
				} else if (!is_int( $resposta ['id_pergunta'] )) {
					$validation_errors ['respostas'] = [ 
							'id_pergunta' => "O campo id_pergunta deve ser um número natural."
					];
				}
				if (!isset( $resposta ['resposta'] )) {
					$validation_errors ['respostas'] = [ 
							'resposta' => "O campo resposta é obrigatório."
					];
				} else if (is_array( $resposta ['resposta'] )) {
					for($i = 0, $len = count( $resposta ['resposta'] ); $i < $len && $validation_errors ['respostas'] ['opcao']; $i++) {
						if (!is_int( $resposta ['resposta'] [$i] )) {
							$validation_errors ['respostas'] = [ 
									'opcao' => "O campo resposta, se for um array, deve ser um array de números."
							];
						}
					}
				}
				if (isset( $validation_errors ['respostas'] )) {
					return $validation_errors;
				}
			}
		}
		return $validation_errors;

	}



    public static function validateRequisicaoInternacaoAltaObito(array $data_post): array {

        $validation_errors = [ ];
        if (!isset( $data_post ['id_formulario'] )) {
            $validation_errors ['id_formulario'] = "O campo id_formulario é obrigatório.";
        } else if (!is_int( $data_post ['id_formulario'] )) {
            $validation_errors ['id_formulario'] = "O campo id_formulario deve ser um número natural.";
        }

        if (!isset( $data_post ['titulo'] )) {
            $validation_errors ['titulo'] = "O campo titulo é obrigatório.";
        } else if (!is_string( $data_post ['titulo'] )) {
            $validation_errors ['titulo'] = "O campo titulo deve ser um texto.";
        }

        if (!isset( $data_post ['descricao'] )) {
            $validation_errors ['descricao'] = "O campo descricao é obrigatório.";
        } else if (!is_string( $data_post ['descricao'] )) {
            $validation_errors ['descricao'] = "O campo descricao deve ser um texto.";
        }

        if (!isset( $data_post ['respostas'] )) {
            $validation_errors ['respostas'] = "O campo respostas é obrigatório.";
        } else if (!is_array( $data_post ['respostas'] )) {
            $validation_errors ['respostas'] = "O campo respostas deve ser um array.";
        } else {
            foreach ( $data_post ['respostas'] as $resposta ) {
                if (!isset( $resposta ['id_pergunta'] )) {
                    $validation_errors ['respostas'] = [
                        'id_pergunta' => "O campo id_pergunta é obrigatório."
                    ];
                } else if (!is_int( $resposta ['id_pergunta'] )) {
                    $validation_errors ['respostas'] = [
                        'id_pergunta' => "O campo id_pergunta deve ser um número natural."
                    ];
                }
                if (!isset( $resposta ['resposta'] )) {
                    $validation_errors ['respostas'] = [
                        'resposta' => "O campo resposta é obrigatório."
                    ];
                } else if (is_array( $resposta ['resposta'] )) {
                    for($i = 0, $len = count( $resposta ['resposta'] ); $i < $len && $validation_errors ['respostas'] ['opcao']; $i++) {
                        if (!is_int( $resposta ['resposta'] [$i] )) {
                            $validation_errors ['respostas'] = [
                                'opcao' => "O campo resposta, se for um array, deve ser um array de números."
                            ];
                        }
                    }
                }
                if (isset( $validation_errors ['respostas'] )) {
                    return $validation_errors;
                }
            }
        }
        return $validation_errors;

    }


    public static function validateRegisterMultipleRequisicaoPost(array $data_post): array {

        $validation_errors = [ ];

        if (!isset( $data_post ['id_requisicao_procedimento'] )) {
            $validation_errors ['id_requisicao_procedimento'] = "O campo id_requisicao_procedimento é obrigatório.";
        }

        if (!isset( $data_post ['id_formulario'] )) {
            $validation_errors ['id_formulario'] = "O campo id_formulario é obrigatório.";
        } else if (!is_int( $data_post ['id_formulario'] )) {
            $validation_errors ['id_formulario'] = "O campo id_formulario deve ser um número natural.";
        }

        if (!isset( $data_post ['titulo'] )) {
            $validation_errors ['titulo'] = "O campo titulo é obrigatório.";
        } else if (!is_string( $data_post ['titulo'] )) {
            $validation_errors ['titulo'] = "O campo titulo deve ser um texto.";
        }

        if (!isset( $data_post ['descricao'] )) {
            $validation_errors ['descricao'] = "O campo descricao é obrigatório.";
        } else if (!is_string( $data_post ['descricao'] )) {
            $validation_errors ['descricao'] = "O campo descricao deve ser um texto.";
        }

        if (!isset( $data_post ['respostas'] )) {
            $validation_errors ['respostas'] = "O campo respostas é obrigatório.";
        } else if (!is_array( $data_post ['respostas'] )) {
            $validation_errors ['respostas'] = "O campo respostas deve ser um array.";
        } else {
            foreach ( $data_post ['respostas'] as $resposta ) {
                if (!isset( $resposta ['id_pergunta'] )) {
                    $validation_errors ['respostas'] = [
                        'id_pergunta' => "O campo id_pergunta é obrigatório."
                    ];
                } else if (!is_int( $resposta ['id_pergunta'] )) {
                    $validation_errors ['respostas'] = [
                        'id_pergunta' => "O campo id_pergunta deve ser um número natural."
                    ];
                }
                if (!isset( $resposta ['resposta'] )) {
                    $validation_errors ['respostas'] = [
                        'resposta' => "O campo resposta é obrigatório."
                    ];
                } else if (is_array( $resposta ['resposta'] )) {
                    for($i = 0, $len = count( $resposta ['resposta'] ); $i < $len && $validation_errors ['respostas'] ['opcao']; $i++) {
                        if (!is_int( $resposta ['resposta'] [$i] )) {
                            $validation_errors ['respostas'] = [
                                'opcao' => "O campo resposta, se for um array, deve ser um array de números."
                            ];
                        }
                    }
                }
                if (isset( $validation_errors ['respostas'] )) {
                    return $validation_errors;
                }
            }
        }
        return $validation_errors;

    }
}