#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use POSIX;
use Data::Dumper qw(Dumper);

my $driver = "Pg";
my $database = "db_crm";
my $dsn = "DBI:$driver:dbname = $database;host = crm.ayoubkh.com;port = 5432";
my $userid = "finix";
my $password = "Ay0ubAdmIn";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
    or die $DBI::errstr;


my $sth = $dbh->prepare("SELECT pid_fichier FROM logfile WHERE fichier like '%traitement_mp3.pl%'");
$sth->execute(); #prepare to run out of memory here
my $rv = $sth->fetchrow();
if(!$rv) {
    my @list_of_dirs = grep {-d} glob "/mnt/pve/backup/dump/*";

    foreach my $dir_a (@list_of_dirs) {
        my $nom_dir = (split "\/", $dir_a)[-1];
        my $switch = lc($nom_dir);

        opendir my $dir, "/mnt/pve/backup/dump/$nom_dir/" or die "Cannot open directory: $!";
        my @files = readdir $dir;
        closedir $dir;
        my $nbr_lines = 0;
        foreach my $file (@files) {
            $nbr_lines++;
            next if ($file =~ /^\.$/);
            next if ($file =~ /^\.\.$/);

            my $fichier = "/mnt/pve/backup/dump/$nom_dir/" . $file;
            my $newfile = "/mnt/pve/backup/all/" . $file;
            my $size = -s $fichier;
            $size = ($size / 1024);
            $size = ceil($size);
            if ($size < 150) {
                system "rm -f $fichier";
                next;
            }

            print "$fichier\n";
            print "$newfile\n";

            system("cp $fichier $newfile");

            my @temp = split '_', $file;
            my @a = split '.mp3', $temp[2];
            my $cli = $temp[1];
            $cli =~ /^\+$/;
            my $cld = $a[0];
            $cld =~ /^\+$/;
            my ($annee, $mois, $jour, $sep, $heure, $minute, $seconde) = unpack "A4A2A2A1A2A2A2", $temp[0];
            my $date_enregistrement = $annee . '-' . $mois . '-' . $jour . ' ' . $heure . ':' . $minute . ':' . $seconde;

            my @tmp = ($date_enregistrement, $cli, $cld, '/all/' . $file, $size, $switch);
            my $insert = $dbh->prepare("INSERT INTO enregistrements (date_enregistrement,cli,cld,fichier,size_fichier,switch) VALUES (?,?,?,?,?,?) ON CONFLICT DO NOTHING");
            $insert->execute(@tmp);
            print "$nbr_lines :: @tmp\n";
            system "rm -f $fichier";
        }
    }
}