<?php

namespace App\Validations;

class LojaCompraValidation {

	public static function addCompraPagseguroCartao(array $dados): array {

		$result = [ ];

		if (count( $dados ) != 6) {
			$result ['campos'] = "Quantidade de campos incompatível";
		}

		if (!isset( $dados ['id_usuario'] )) {
			$result ['id_usuario'] = "Campo obrigatório";
		} else {
			if (!intval( $dados ['id_usuario'] )) {
				$result ['id_usuario'] = "Valor deve ser inteiro";
			}
		}
		if (!isset( $dados ['id_pet'] )) {
			$result ['id_pet'] = "Campo obrigatório";
		} else {
			if (!intval( $dados ['id_pet'] )) {
				$result ['id_pet'] = "Valor deve ser inteiro";
			}
		}
		if (!isset( $dados ['id_loja'] )) {
			$result ['id_loja'] = "Campo obrigatório";
		} else {
			if (!intval( $dados ['id_loja'] )) {
				$result ['id_loja'] = "Valor deve ser inteiro";
			}
		}
		if (!isset( $dados ['produtos'] )) {
			$result ['produtos'] = "Campo obrigatório";
		} else {
			if (count( $dados ['produtos'] ) == 0) {
				$result ['produtos'] = "Deve ter ao menos um produto";
			} else {
				for($i = 0; $i < count( $dados ['produtos'] ); $i++) {
					$p = $dados ['produtos'] [$i];
					if (!isset( $p ['id_loja_produto'] )) {
						$result ['id_loja_produto'] = "Campo obrigatório";
					} else {
						if (!intval( $p ['id_loja_produto'] )) {
							$result ['id_loja_produto'] = "Valor deve ser inteiro";
						}
					}
					if (!isset( $p ['quantidade'] )) {
						$result ['quantidade'] = "Campo obrigatório";
					} else {
						if (!intval( $p ['quantidade'] )) {
							$result ['quantidade'] = "Valor deve ser inteiro";
						}
					}
					if (!isset( $p ['valor_unidade'] )) {
						$result ['valor_unidade'] = "Campo obrigatório";
					} else {
						if (!floatval( $p ['valor_unidade'] )) {
							$result ['valor_unidade'] = "Valor deve ser inteiro";
						}
					}
					if (!isset( $p ['valor'] )) {
						$result ['valor'] = "Campo obrigatório";
					} else {
						if (!floatval( $p ['valor'] )) {
							$result ['valor'] = "Valor deve ser inteiro";
						}
					}
				}
			}
		}
		if (!isset( $dados ['valor_total'] )) {
			$result ['valor_total'] = "Campo obrigatório";
		} else {
			if (!floatval( $dados ['valor_total'] )) {
				$result ['valor_total'] = "Valor deve ser decimal";
			}
		}
		if (!isset( $dados ['payment_method'] )) {
			$result ['payment_method'] = "Campo obrigatório";
		} else {
			if (count( $dados ['payment_method'] ) != 4) {
				$result ['payment_method'] = "Campo com variaveis incompletas";
			} else {
				$pm = $dados ['payment_method'];
				if (!isset( $pm ['type'] )) {
				} else {
					if (strtoupper( $pm ['type'] ) != "CREDIT_CARD") {
						$result ['payment_method-type'] = "Type incorreto";
					}
				}
				if (!isset( $pm ['installments'] )) {
					$result ['installments'] = "Campo obrigatório";
				} else {
					if (!intval( $pm ['installments'] )) {
						$result ['installments'] = "Valor deve ser inteiro";
					}
				}
				if (!isset( $pm ['capture'] )) {
					$result ['capture'] = "Campo obrigatório";
				} else {
					if (!is_bool( $pm ['capture'] )) {
						$result ['capture'] = "Valor deve ser booleano";
					}
				}
				if (!isset( $pm ['card'] )) {
					$result ['card'] = "Campo obrigatório";
				} else {
					if (count( $pm ['card'] ) != 6) {
						$result ['card'] = "quantidade de atributos incompativel";
					} else {
						$card = $pm ['card'];
						if (!isset( $card ['encrypted'] )) {
							$result ['encrypted'] = "Campo obrigatório";
						} else {
							if (strlen( trim( $card ['encrypted'] ) ) < 10) {
								$result ['encrypted'] = "Valor incompativel";
							}
						}
						if (!isset( $card ['security_code'] )) {
							$result ['security_code'] = "Campo obrigatório";
						} else {
							if (strlen( trim( $card ['security_code'] ) ) == 0) {
								$result ['security_code'] = "campo não pde ser vazio";
							}
						}
						if (!isset( $card ['exp_year'] )) {
							$result ['exp_year'] = "Campo obrigatório";
						} else {
							if (strlen( trim( $card ['exp_year'] ) ) == 0) {
								$result ['exp_year'] = "campo não pde ser vazio";
							} else {
								if (!intval( trim( $card ['exp_year'] ) )) {
									$result ['exp_year'] = "deve ser um número inteiro";
								}
							}
						}
						if (!isset( $card ['exp_month'] )) {
							$result ['exp_month'] = "Campo obrigatório";
						} else {
							if (strlen( trim( $card ['exp_month'] ) ) == 0) {
								$result ['exp_month'] = "campo não pde ser vazio";
							} else {
								if (!intval( trim( $card ['exp_month'] ) )) {
									$result ['exp_month'] = "deve ser um número inteiro";
								}
							}
						}
						if (!isset( $card ['store'] )) {
							$result ['store'] = "Campo obrigatório";
						} else {
							if (!is_bool( $card ['store'] )) {
								$result ['store'] = "Valor deve ser booleano";
							}
						}
						if (!isset( $card ['holder'] )) {
							$result ['holder'] = "Campo obrigatório";
						} else {
							if (count( $card ['holder'] ) == 0) {
								$result ['holder'] = "campo não pde ser vazio";
							} else {
								$holder = $card ['holder'];
								if (!isset( $holder ['name'] )) {
									$result ['name'] = "Campo obrigatório";
								} else {
									if (strlen( trim( $holder ['name'] ) ) == 0) {
										$result ['name'] = "campo não pde ser vazio";
									}
								}
							}
						}
					}
				}
			}
		}

		return $result;

	}


    public static function addCompraMedicinaCarinho(array $dados): array {

        $result = [ ];

        if (!isset( $dados ['id_usuario'] )) {
            $result ['id_usuario'] = "Campo obrigatório";
        } else {
            if (!intval( $dados ['id_usuario'] )) {
                $result ['id_usuario'] = "Valor deve ser inteiro";
            }
        }
        if (!isset( $dados ['id_pet'] )) {
            $result ['id_pet'] = "Campo obrigatório";
        } else {
            if (!intval( $dados ['id_pet'] )) {
                $result ['id_pet'] = "Valor deve ser inteiro";
            }
        }
        if (!isset( $dados ['id_loja'] )) {
            $result ['id_loja'] = "Campo obrigatório";
        } else {
            if (!intval( $dados ['id_loja'] )) {
                $result ['id_loja'] = "Valor deve ser inteiro";
            }
        }
        if (!isset( $dados ['id_agendamento'] )) {
            $result ['id_agendamento'] = "Campo obrigatório";
        } else {
            if (!intval( $dados ['id_agendamento'] )) {
                $result ['id_agendamento'] = "Agendamento deve ser inteiro";
            }
        }

        if (!isset( $dados ['numero_cartao'] )) {
            $result ['numero_cartao'] = "Campo obrigatório";
        } else {
            if ($dados ['numero_cartao'] != 'MCCVET100') {
                $result ['numero_cartao'] = "Cartão inválido";
            }
        }

        return $result;
    }

}

