<?php

class PagamentoImporter {
    private $pdo;
    private $lojaOrigem;
    private $data;
    private $tipoArquivo;

    public function __construct(PDO $pdo, array $data,$tipoArquivo) {
        $this->pdo = $pdo;
        $this->data = $data;
        $this->tipoArquivo = $tipoArquivo;
    }
    public function getData()
    {
        return $this->data;
    }

    public function importar() {
        try {
            // Query SQL com placeholders
            $sql = "INSERT INTO pagamentos (
                        loja_origem, data_venda, recebimento, nsu, parcela,total_parcelas,valor_parcela,bandeira,forma_pagamento,valorbruto,taxa
                    ) VALUES (
                        :loja_origem, :data_venda, :recebimento, :nsu, :parcela, :total_parcelas, :valor_parcela, :bandeira, :forma_pagamento, :valorbruto, :taxa
                    )";

            $stmt = $this->pdo->prepare($sql);

            // Inserir cada linha do CSV no banco de dados
            foreach ($this->data as $row) {
                    
                    $dataVenda = DateTime::createFromFormat('d/m/Y', $row[1])->format('Y-m-d');
                    $recebimento = DateTime::createFromFormat('d/m/Y', $row[0])->format('Y-m-d');

                    $conta = htmlspecialchars($row[26]);

                    //trocar a loja dependendo da conta bancaria
                    switch ($conta) {

                        case '171880':
                            $lojaOrigem = 'MATRIZ';
                            break;
                        case '172615':
                            $lojaOrigem = 'LOJA 02';
                            break;
                        case '172623':
                            $lojaOrigem = 'LOJA 03';
                            break;
                        case '172631':
                            $lojaOrigem = 'LOJA 04';
                            break;
                        case '998837':
                            $lojaOrigem = 'LOJA 05';
                            break;
                        case '980842':
                            $lojaOrigem = 'LOJA 06';
                            break;
                    }

                    //se e arquivo de recebidos
                    if ($this->tipoArquivo == 0){

                        $pagamento = htmlspecialchars(str_replace(',', '.', $row[7]));
                        $nsu = htmlspecialchars($row[10]);
                        $valorbruto =htmlspecialchars(str_replace(',', '.', $row[3]));
                        $taxa = htmlspecialchars(str_replace(',', '.', $row[6]));                   
                    
                    //se e arquivo de recebimento futuro
                    }elseif ($this->tipoArquivo == 1) {

                        $pagamento = htmlspecialchars(str_replace(',', '.', $row[6]));
                        $nsu = htmlspecialchars($row[9]);
                        $valorbruto =htmlspecialchars(str_replace(',', '.', $row[2]));
                        $taxa = htmlspecialchars(str_replace(',', '.', $row[5]));
                    }

                    $stmt->execute([
                    ':loja_origem' => $lojaOrigem,
                        ':data_venda' => htmlspecialchars($dataVenda),
                        ':recebimento' => htmlspecialchars($recebimento),
                        ':nsu' => $nsu,
                        ':parcela' => htmlspecialchars($row[23]),
                        ':total_parcelas' => htmlspecialchars(str_replace(',', '.', $row[22])),
                        ':valor_parcela' => $pagamento,
                        ':bandeira' => htmlspecialchars($row[21]),
                        ':forma_pagamento' => htmlspecialchars($row[20]),
                        ':valorbruto' => $valorbruto,
                        ':taxa' => $taxa
                ]);
            }

            echo "Dados inseridos com sucesso!";
            return $this->getData();

        } catch (PDOException $e) {
            die("Erro ao inserir dados: " . $e->getMessage());
        }
    }
}