1 package SL::DB::Project;
5 use List::MoreUtils qw(any);
7 use SL::DB::MetaSetup::Project;
8 use SL::DB::Manager::Project;
10 use SL::DB::Helper::CustomVariables(
15 __PACKAGE__->meta->initialize;
21 push @errors, $::locale->text('The project number is missing.') if !$self->projectnumber;
22 push @errors, $::locale->text('The project number is already in use.') if !$self->is_projectnumber_unique;
23 push @errors, $::locale->text('The description is missing.') if !$self->description;
31 # Unsaved projects are never referenced.
32 return 0 unless $self->id;
35 my $column = $SL::DB::Manager::Project::project_id_column_prefixes{$_} . 'project_id';
36 $self->db->dbh->selectrow_arrayref(qq|SELECT EXISTS(SELECT * FROM ${_} WHERE ${column} = ?)|, undef, $self->id)->[0]
37 } @SL::DB::Manager::Project::tables_with_project_id_cols;
40 sub is_projectnumber_unique {
43 return 1 unless $self->projectnumber;
45 my @filter = (projectnumber => $self->projectnumber);
46 @filter = (and => [ @filter, '!id' => $self->id ]) if $self->id;
48 return !SL::DB::Manager::Project->get_first(where => \@filter);
59 SL::DB::Project: Model for the 'project' table
63 This is a standard Rose::DB::Object based model and can be used as one.
71 Checks whether or not all fields are set to valid values so that the
72 object can be saved. If valid returns an empty list. Returns an array
73 of translated error message otherwise.
77 Checks whether or not the project is referenced from any other
78 database table. Returns a boolean value.
80 =item C<is_projectnumber_unique>
82 Returns trueish if the project number is not used for any other
83 project in the database. Also returns trueish if no project number has
90 Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>