Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 70fedc9f

Von Tamino Steinert vor mehr als 1 Jahr hinzugefügt

  • ID 70fedc9fab20491bbc4235338beb4427404b6419
  • Vorgänger 05ec372b
  • Nachfolger 5d7b33ed

HardRecordLinks: Helfer Modul für feste Verknüpfungen

Unterschiede anzeigen:

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