copying events: save user selection

On copying events from another studio selection will be saved.
The next time one wants to copy saved presets are preselected.
This simplifies to frequently rebroadcast shows from another project.
This commit is contained in:
Milan
2021-02-01 22:58:23 +01:00
parent 2f35676c24
commit ef84ca07a3
7 changed files with 348 additions and 18 deletions

View File

@@ -0,0 +1,127 @@
package user_selected_events;
use strict;
use warnings;
no warnings 'redefine';
use Data::Dumper;
# table: calcms_user_selected_events
# columns: user, project_id, studio_id, series_id, <- selection
# project_studio_filter, series_filter <- optional filter params
# selected_project, selected_studio, selected_series, selected_event <-result
sub debug;
sub get_columns($) {
my $config = shift;
my $dbh = db::connect($config);
return db::get_columns_hash( $dbh, 'calcms_user_selected_events' );
}
sub get ($$) {
my $config = shift;
my $condition = shift;
my @conditions = ();
my @bind_values = ();
return unless defined $condition->{user};
return unless defined $condition->{project_id};
return unless defined $condition->{studio_id};
return unless defined $condition->{series_id};
for my $field ('user', 'project_id', 'studio_id', 'series_id',
'filter_project_studio', 'filter_series'
){
if ( ( defined $condition->{$field} ) && ( $condition->{$field} ne '' ) ) {
push @conditions, $field.'=?';
push @bind_values, $condition->{$field};
}
}
my $conditions = '';
$conditions = " where " . join( " and ", @conditions ) if scalar(@conditions) > 0;
my $query = qq{
select *
from calcms_user_selected_events
$conditions
};
my $dbh = db::connect($config);
my $entries = db::get( $dbh, $query, \@bind_values );
return $entries->[0] || undef;
}
sub insert ($$) {
my $config = shift;
my $entry = shift;
return unless defined $entry->{user};
return unless defined $entry->{project_id};
return unless defined $entry->{studio_id};
return unless defined $entry->{series_id};
return unless defined $entry->{selected_event};
my $dbh = db::connect($config);
print STDERR "insert".Dumper($entry );
return db::insert( $dbh, 'calcms_user_selected_events', $entry );
}
sub update($$) {
my $config = shift;
my $entry = shift;
my $fields = [
'user', 'project_id', 'studio_id', 'series_id',
'filter_project_studio', 'filter_series'
];
for (@$fields){
return unless defined $entry->{$_}
};
my @keys = sort keys %$entry;
my $values = join( ",", map { $_ . '=?' } @keys );
my @bind_values = map { $entry->{$_} } ( @keys, @$fields );
my $conditions = join (' and ', map { $_.'=?' } @$fields );
my $query = qq{
update calcms_user_selected_events
set $values
where $conditions
};
print STDERR "update".Dumper($query ).Dumper(\@bind_values);
my $dbh = db::connect($config);
return db::put( $dbh, $query, \@bind_values );
}
sub delete ($$) {
my $config = shift;
my $entry = shift;
return unless defined $entry->{user};
return unless defined $entry->{project_id};
return unless defined $entry->{studio_id};
return unless defined $entry->{series_id};
my $query = qq{
delete
from calcms_user_selected_events
where user=? and project_id=? and studio_id=? and series_id=?
};
my $bind_values = [ $entry->{user}, $entry->{project_id}, $entry->{studio_id}, $entry->{series_id} ];
my $dbh = db::connect($config);
return db::put( $dbh, $query, $bind_values );
}
sub error ($) {
my $msg = shift;
print "ERROR: $msg<br/>\n";
}
#do not delete last line!
1;