<?php
/*
 * This file is part of FacturaSctipts
 * Copyright (C) 2014-2015  Carlos Garcia Gomez  neorazorx@gmail.com
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 * 
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

require_once 'plugins/facturacion_base/extras/fbase_controller.php';

class eliminafact extends fs_controller
{

public $fecini;
public $fecfin;
public $estado;

	public function __construct()
   {
      parent::__construct('eliminafact', 'Elimina fact-generadas ', 'Formularios EC');
   }
   
   protected function private_core()
   {
          $almacen = new almacen();
          //$this->agenciastrans = new agencia_trans();
          $this->almacenes = $almacen->all();
          $this->articulo = new articulo();
          $this->stock = new stock();
          $this->url_recarga = FALSE;
          $this->agentecod ='';
          $this->estado = '';
          $this->exportaexcel = 0;
          $this->agentenom = '';

          if( isset($_POST['fechaini2']) )
          {
             $this->genera_rep();
          }
    }

  

    
    private function genera_rep()
   {

        $this->fecini =  $_POST['fechaini2'];
        $this->fecfin =  $_POST['fechafin2'];
        $fecini =  date("dmY", strtotime($_POST['fechaini2']));
        $fecfin =  date("dmY", strtotime($_POST['fechafin2']));
        $periodo = $_POST['fechaini2']."*".$_POST['fechafin2'];

        // Ejemplo de uso
        $directorio = "plugins/factelect/controller/src_sri/generados";

        $directoriof = "plugins/factelect/controller/src_sri/firmados";

        $archivosEliminados = $this->eliminarArchivosPorFecha($directorio, $directoriof, $fecini, $fecfin);
        $this->new_error_msg("Se eliminaron " . $archivosEliminados . " archivos generados.");
        //$this->new_error_msg("Se eliminaron " . $archivosEliminadosf . " archivos firmados.");

   }

   
    public function eliminarArchivosPorFecha($directorio,$directoriof, $fechaInicio, $fechaFin) 
    {
        $archivosEliminados = 0;
        $archivosEliminadosf = 0;
        
        // Verificar si el directorio existe
        if (is_dir($directorio) and is_dir($directoriof)) {
            
            // Abrir el directorio
            if ($gestor = opendir($directorio)) {
                $this->new_error_msg('Directorio ');
                // Recorrer los archivos en el directorio
                while (($archivo = readdir($gestor)) !== false) {
                    // Filtrar solo archivos
                    if (is_file($directorio . DIRECTORY_SEPARATOR . $archivo)) {
                        // Extraer la fecha del nombre del archivo (8 primeros caracteres)
                        $fechaArchivo = substr($archivo, 0, 8);
                        $fechaArchivoTimestamp = DateTime::createFromFormat('dmY', $fechaArchivo)->getTimestamp();
                        $fechaInicioTimestamp = DateTime::createFromFormat('dmY', $fechaInicio)->getTimestamp();
                        $fechaFinTimestamp = DateTime::createFromFormat('dmY', $fechaFin)->getTimestamp();
                        // Verificar si la fecha del archivo está dentro del rango
                        if ($fechaArchivoTimestamp >= $fechaInicioTimestamp && $fechaArchivoTimestamp <= $fechaFinTimestamp) {
                            // Eliminar el archivo
                            if (unlink($directorio . DIRECTORY_SEPARATOR . $archivo)) {
                                $archivosEliminados++;
                            } else {
                                $this->new_error_msg( "Error al eliminar el archivo generado: " . $archivo . "\n");
                            }
                        }
                    }
                }
                // Cerrar el gestor del directorio
                closedir($gestor);
            }
            if ($gestorf = opendir($directoriof)) {
                $this->new_error_msg('Directorio F ');
                // Recorrer los archivos en el directorio
                while (($archivo = readdir($gestorf)) !== false) {
                    // Filtrar solo archivos
                    if (is_file($directoriof . DIRECTORY_SEPARATOR . $archivo)) {
                        // Extraer la fecha del nombre del archivo (8 primeros caracteres)
                        $fechaArchivo = substr($archivo, 0, 8);
                        $fechaArchivoTimestamp = DateTime::createFromFormat('dmY', $fechaArchivo)->getTimestamp();
                        $fechaInicioTimestamp = DateTime::createFromFormat('dmY', $fechaInicio)->getTimestamp();
                        $fechaFinTimestamp = DateTime::createFromFormat('dmY', $fechaFin)->getTimestamp();

                        // Verificar si la fecha del archivo está dentro del rango
                        if ($fechaArchivoTimestamp >= $fechaInicioTimestamp && $fechaArchivoTimestamp <= $fechaFinTimestamp) {
                            // Eliminar el archivo
                            if (unlink($directoriof . DIRECTORY_SEPARATOR . $archivo)) {
                                $archivosEliminadosf++;
                            } else {
                                $this->new_error_msg( "Error al eliminar el archivo firmado: " . $archivo . "\n");
                            }
                        }
                    }
                }
                // Cerrar el gestor del directorio
                closedir($gestorf);
            }
        } else {
            echo "El directorio no existe.";
        }
        
        return $archivosEliminadosf + $archivosEliminados;
    }




}






