package work_schedule; use warnings "all"; use strict; use Data::Dumper; use series_dates(); # table: calcms_work_schedule # columns: id, studio_id, series_id, # start (datetime), # duration (minutes), # frequency (days), # end (date), # weekday (1..7) # week_of_month (1..5) # month use base 'Exporter'; our @EXPORT_OK = qw(get_columns get insert update delete); sub debug; sub get_columns { my $config = shift; my $dbh = db::connect($config); my $cols = db::get_columns( $dbh, 'calcms_work_schedule' ); my $columns = {}; for my $col (@$cols) { $columns->{$col} = 1; } return $columns; } #map schedule id to id sub get { my $config = shift; my $condition = shift; my $dbh = db::connect($config); my @conditions = (); my @bind_values = (); if ( ( defined $condition->{project_id} ) && ( $condition->{project_id} ne '' ) ) { push @conditions, 'project_id=?'; push @bind_values, $condition->{project_id}; } if ( ( defined $condition->{studio_id} ) && ( $condition->{studio_id} ne '' ) ) { push @conditions, 'studio_id=?'; push @bind_values, $condition->{studio_id}; } if ( ( defined $condition->{schedule_id} ) && ( $condition->{schedule_id} ne '' ) ) { push @conditions, 'schedule_id=?'; push @bind_values, $condition->{schedule_id}; } if ( ( defined $condition->{start} ) && ( $condition->{start} ne '' ) ) { push @conditions, 'start=?'; push @bind_values, $condition->{start}; } if ( ( defined $condition->{exclude} ) && ( $condition->{exclude} ne '' ) ) { push @conditions, 'exclude=?'; push @bind_values, $condition->{exclude}; } if ( ( defined $condition->{period_type} ) && ( $condition->{period_type} ne '' ) ) { push @conditions, 'period_type=?'; push @bind_values, $condition->{period_type}; } my $conditions = ''; $conditions = " where " . join( " and ", @conditions ) if ( @conditions > 0 ); my $query = qq{ select * from calcms_work_schedule $conditions order by exclude, start }; #print STDERR $query."\n".Dumper(\@bind_values); my $entries = db::get( $dbh, $query, \@bind_values ); return $entries; } sub insert { my $config = shift; my $entry = shift; return undef unless defined $entry->{project_id}; return undef unless defined $entry->{studio_id}; return undef unless defined $entry->{start}; my $dbh = db::connect($config); return db::insert( $dbh, 'calcms_work_schedule', $entry ); } #schedule id to id sub update { my $config = shift; my $entry = shift; return undef unless defined $entry->{project_id}; return undef unless defined $entry->{studio_id}; return undef unless defined $entry->{schedule_id}; return undef unless defined $entry->{start}; my $dbh = db::connect($config); my $values = join( ",", map { $_ . '=?' } ( keys %$entry ) ); my @bind_values = map { $entry->{$_} } ( keys %$entry ); push @bind_values, $entry->{project_id}; push @bind_values, $entry->{studio_id}; push @bind_values, $entry->{schedule_id}; my $query = qq{ update calcms_work_schedule set $values where project_id=? and studio_id=? and schedule_id=? }; return db::put( $dbh, $query, \@bind_values ); print "done\n"; } #map schedule id to id sub delete { my $config = shift; my $entry = shift; return undef unless defined $entry->{project_id}; return undef unless defined $entry->{studio_id}; return undef unless defined $entry->{schedule_id}; my $dbh = db::connect($config); my $query = qq{ delete from calcms_work_schedule where project_id=? and studio_id=? and schedule_id=? }; my $bind_values = [ $entry->{project_id}, $entry->{studio_id}, $entry->{schedule_id} ]; #print '
$query'.$query.Dumper($bind_values).'
'; return db::put( $dbh, $query, $bind_values ); } sub error { my $msg = shift; print "ERROR: $msg
\n"; } #do not delete last line! 1;