1 package BSE::TB::Seminar;
3 # represents a seminar from the database
6 @ISA = qw/BSE::TB::Product/;
7 use BSE::Util::SQL qw(now_sqldatetime);
9 our $VERSION = "1.001";
12 return ($_[0]->SUPER::columns(),
13 qw/seminar_id duration/ );
17 return { seminar_id=>{ class=>'BSE::TB::Product'} };
23 require BSE::TB::SeminarSessions;
24 BSE::TB::SeminarSessions->getBy(seminar_id => $self->{id});
30 require BSE::TB::SeminarSessions;
31 BSE::TB::SeminarSessions->getSpecial(futureSessions => $self->{id}, now_sqldatetime());
37 BSE::DB->query(seminarSessionInfo => $self->{id});
40 sub session_info_unbooked {
41 my ($self, $user) = @_;
43 BSE::DB->query(seminarSessionInfoUnbooked => $user->{id}, $self->{id});
46 sub future_session_info {
49 BSE::DB->query(seminarFutureSessionInfo=>$self->{id}, now_sqldatetime());
53 my ($self, $when, $location) = @_;
55 require BSE::TB::SeminarSessions;
58 seminar_id => $self->{id},
60 location_id => ref $location ? $location->{id} : $location,
63 my @cols = BSE::TB::SeminarSession->columns;
65 return BSE::TB::SeminarSessions->add(@cols{@cols});
68 sub future_locations {
71 require BSE::TB::Locations;
72 return BSE::TB::Locations->getSpecial
73 (seminarFuture => $self->{id}, now_sqldatetime());
76 sub future_location_sessions {
77 my ($self, $location) = @_;
79 require BSE::TB::SeminarSessions;
80 return BSE::TB::SeminarSessions->getSpecial
81 (futureSeminarLocation => $self->{id}, $location->{id}, now_sqldatetime());
84 sub get_unbooked_by_user {
85 my ($self, $user) = @_;
87 require BSE::TB::SeminarSessions;
88 BSE::TB::SeminarSessions->getSpecial(sessionsUnbookedByUser =>
89 $user->{id}, $self->{id});