Revision 70fedc9f
Von Tamino Steinert vor mehr als 1 Jahr hinzugefügt
SL/DB/Helper/HardRecordLinks.pm | ||
---|---|---|
package SL::DB::Helper::HardRecordLinks;
|
||
|
||
use strict;
|
||
use warnings;
|
||
|
||
use List::Util qw(first any);
|
||
|
||
use SL::DB::HardRecordLinksEmailJournalAndAP;
|
||
use SL::DB::HardRecordLinksEmailJournalAndOrder;
|
||
|
||
my %RECORD_MODULE_TO_KEY = (
|
||
'SL::DB::Order' => 'order_id',
|
||
'SL::DB::PurchaseInvoice' => 'ap_id',
|
||
'SL::DB::EmailJournal' => 'email_journal_id',
|
||
);
|
||
my %RECORD_MODULE_TO_HARD_LINK_MODULE_NAMES = (
|
||
'SL::DB::Order' => [
|
||
'HardRecordLinksEmailJournalAndOrder',
|
||
],
|
||
'SL::DB::PurchaseInvoice' => [
|
||
'HardRecordLinksEmailJournalAndAP',
|
||
],
|
||
'SL::DB::EmailJournal' => [
|
||
'HardRecordLinksEmailJournalAndOrder',
|
||
'HardRecordLinksEmailJournalAndAP',
|
||
],
|
||
);
|
||
|
||
sub get_links {
|
||
my ($self, $record) = @_;
|
||
|
||
my @ret_hard_links = ();
|
||
foreach my $hard_link_modul (@{ $RECORD_MODULE_TO_HARD_LINK_MODULE_NAMES{ref $record} }) {
|
||
my $hard_links = "SL::DB::Manager::$hard_link_modul"->get_all(
|
||
query => [
|
||
$RECORD_MODULE_TO_KEY{ref $record} => $record->id
|
||
]);
|
||
push @ret_hard_links, @$hard_links;
|
||
}
|
||
|
||
return @ret_hard_links;
|
||
}
|
||
|
||
sub get_count {
|
||
my ($self, $record) = @_;
|
||
my @hard_links = $self->get_links($record);
|
||
return scalar @hard_links;
|
||
}
|
||
|
||
sub create_link {
|
||
my ($self, $record_1, $record_2) = @_;
|
||
my $module_1 = ref $record_1;
|
||
my $module_2 = ref $record_2;
|
||
my $hard_link_moduls_1 = $RECORD_MODULE_TO_HARD_LINK_MODULE_NAMES{ref $record_1};
|
||
my $hard_link_moduls_2 = $RECORD_MODULE_TO_HARD_LINK_MODULE_NAMES{ref $record_2};
|
||
|
||
my $hard_link_modul = first {
|
||
my $a = $_; any {$a eq $_} @$hard_link_moduls_1
|
||
} @$hard_link_moduls_2;
|
||
die "No hard link modul found for $module_1 and $module_2" unless $hard_link_modul;
|
||
|
||
my $hard_link = "SL::DB::$hard_link_modul"->new(
|
||
$RECORD_MODULE_TO_KEY{$module_1} => $record_1->id,
|
||
$RECORD_MODULE_TO_KEY{$module_2} => $record_2->id,
|
||
)->save;
|
||
}
|
||
|
||
1;
|
Auch abrufbar als: Unified diff
HardRecordLinks: Helfer Modul für feste Verknüpfungen