package Dojo::Model::Vuelo;
use Mojo::File 'path';
use Mojo::JSON qw(decode_json encode_json);
use Dojo::Support qw{ log dmph merge_hash load_module get_names};
use Mojo::Base 'Mojolicious::Controller';


use File::Basename;
use Text::Markdown qw{ markdown };
use Encode qw{ decode_utf8 };
use DBI;
use Dojo::Conf;

sub new { bless {}, shift };


# Read vdg user ===============================================================
  sub mod{
    my $q="select nombre,contenido from casa;";
    my %h=map{ $_->{nombre} => $_->{contenido}}@{_read($q)};
    return %h;
  }

  sub md_to_hash{
    my ($self,@filelist)=@_;
    return  {map { basename($_,".md") => load_md("public/$_")}@filelist};
  }

  sub calendar_monthblock {
    return _read (path("public/home/cal/q1Block.q")->slurp);
  }
  sub calendar_events {
     return _read (path("public/home/cal/q3Event.q")->slurp);
  }

  sub event{
    my ($self,$id)=@_;
    return shift @{ _read (path("public/home/event/qEvent.q")->slurp,$id)};
  }
  sub store{
    return _read (path("public/home/store/qStore.q")->slurp);
  }
  sub tv_videos{
    return _read (path("public/home/tv/qSeries.q")->slurp); #group,name
  }
  sub tv_series{
    return _read (path("public/home/tv/qTable.q")->slurp); #name,order,group
  }
  sub podcast_txt{
    return path("public/home/podcast/text.txt")->slurp;
  }
  sub podcast_infoHash{
    return  decode_json path("public/home/podcast/jsonPod.json")->slurp;
  }

#==============================================================================

# Read vdg admin ==============================================================
  sub msg_heads{
    my ($self,@bind)=@_;
    my @empty;
    my $q= path("public/home/admin/mensajes/qEntries.q")->slurp;
    my $dbh = DBI->connect("DBI:mysql:".Dojo::Conf::MSGDB.":".Dojo::Conf::MSGDB_H,Dojo::Conf::MSGDB_UR,Dojo::Conf::MSGDB_URP);
    return \@empty unless($dbh);
    my $h=$dbh->selectall_arrayref($q,{ Slice => {} },@bind);
    #((col1=>d1,col2=>d1),(col1=>d2,col2=>d2))
    $dbh->disconnect();
    return $h;
  }

  sub msg{
    my ($c,@bind)=@_;
    my @empty;
    my $q= path("public/home/admin/mensajes/json/qGetInfo.q")->slurp;
    my $dbh = DBI->connect("DBI:mysql:".Dojo::Conf::MSGDB.":".Dojo::Conf::MSGDB_H,Dojo::Conf::MSGDB_UR,Dojo::Conf::MSGDB_URP);
    return \@empty unless($dbh);
    my $h=$dbh->selectall_arrayref($q,{ Slice => {} },@bind);
    #((col1=>d1,col2=>d1),(col1=>d2,col2=>d2))
    $dbh->disconnect();
    return shift @$h;
  }
  sub courses{ return _read("select nombre as name, id from curso;")}
  sub course { return shift @{_read(path("public/home/admin/event/json/qCourse.q")->slurp,pop)}}
  sub places { return _read("select nombre as name, id from lugar;")}
  sub place  { return shift @{_read(path("public/home/admin/event/json/qPlace.q")->slurp,pop)}}
  sub months { return _read("select nombre as name, id from mes;")};
  sub events { return _read(path("public/home/admin/event/qEprev.q")->slurp)}
  sub eventa  { return shift @{_read(path("public/home/admin/event/json/qEvent.q")->slurp,pop)}}
  sub eimgList{ return [get_names("public/home/cal/img/")] }
#==============================================================================
# Write vdg admin ==============================================================
  sub umod{
    my $c=shift;
    my $q="update casa set contenido = ? where nombre = ? ;";
    return  _write($q,@_);
  }

  sub event_del { return _write("delete from evento where id = ?;",pop);}
  sub course_del{ return _write("delete from curso where id = ?;",pop); }
  sub place_del { return _write("delete from lugar where id = ?;",pop); }
  
  sub event_up{ 
    my ($self,@bind)=@_;
    return _write(path("public/home/admin/event/add/qEup.q")->slurp,@bind);
  } 
  sub course_up{ 
    my ($self,@bind)=@_;
    return _write(path("public/home/admin/event/add/qCup.q")->slurp,@bind);
  }
  sub place_up{ 
    my ($self,@bind)=@_;
    return _write(path("public/home/admin/event/add/qPup.q")->slurp,@bind);
  }
  sub event_ch{ 
    my ($self,@bind)=@_;
    return _write(path("public/home/admin/event/change/qEup.q")->slurp,@bind);
  } 
  sub course_ch{ 
    my ($self,@bind)=@_;
    return _write(path("public/home/admin/event/change/qCup.q")->slurp,@bind);
  }
  sub place_ch{ 
    my ($self,@bind)=@_;
    return _write(path("public/home/admin/event/change/qPup.q")->slurp,@bind);
  }

#==============================================================================

#ayudas =====================================
sub tst{

  my $c=shift;
  my $d=$c->param('n');
  log("------log-------");
  log("$d");
  log("------log-------");
  return 0;
}

sub _read{
  my ($q,@bind)=@_;
  my @empty;
  my $dbh = DBI->connect("DBI:mysql:".Dojo::Conf::VUELODB.":".Dojo::Conf::VUELODB_H,Dojo::Conf::VUELODB_UR,Dojo::Conf::VUELODB_URP);
  return \@empty unless($dbh);
  my $h=$dbh->selectall_arrayref($q,{ Slice => {} },@bind);
  $dbh->disconnect();
  #((col1=>d1,col2=>d1),(col1=>d2,col2=>d2))
  return $h;
}

sub _write{
  my ($q,@bind)=@_;
  my (@empty);
  my $dbh = DBI->connect("DBI:mysql:".Dojo::Conf::VUELODB.":".Dojo::Conf::VUELODB_H,Dojo::Conf::VUELODB_UW,Dojo::Conf::VUELODB_UWP);
  return 0 unless($dbh);
   my $h=$dbh->do($q,{ Slice => {} },@bind);
  $dbh->disconnect();
  log("db write: $h");
  return $h;
}

sub load_md{
  return "" unless
  my $text = path(shift)->slurp;
  return markdown( decode_utf8($text) );
}

sub load_txt{
  return "" unless
  my $text = path(shift)->slurp;
  return decode_utf8($text); 
}

1;

