App-Office-Contacts
view release on metacpan or search on metacpan
lib/App/Office/Contacts/Database/Organization.pm view on Meta::CPAN
{ # Table:
organization_id => $$id{id}, # phone_organizations
number_id => $$id{phone_number_id}, # phone_numbers
type_id => $$number{type_id}, # phone_number_types
type_name => $$number{type_name}, # phone_number_types
};
}
# Phase 2: Get new data for this person, from the CGI form fields.
%new_type = ();
my(%new_number);
for $count (map{s/phone_number_//; $_} grep{/phone_number_\d/} sort keys %$organization)
{
$number = $$organization{"phone_number_$count"};
if ($number)
{
$new_number{$number} = $count;
$new_type{$number} = $$organization{"phone_number_type_id_$count"};
}
}
# Phase 3: Combine old and new phone numbers but avoid duplications.
my(%number) = (%old_number, %new_number);
for $number (keys %number)
{
if ($old_number{$number} && $new_number{$number})
{
# The phone number type might have changed.
if ($old_number{$number}{type_id} != $new_type{$number})
{
$old_number{$number}{type_id} = $new_type{$number};
$self -> db -> phone_number -> update_phone_number_type($$organization{creator_id}, $old_number{$number});
}
}
elsif ($old_number{$number}) # And ! new number.
{
# Number has vanished, so delete old number.
$self -> db -> phone_number -> delete_phone_number_organization($$organization{creator_id}, $old_number{$number}{organization_id});
}
else # ! old number, just new one.
{
# Number has appeared, so add new number.
$self -> db -> phone_number -> save_phone_number_for_organization($context, $organization, $new_number{$number});
}
}
} # End of save_organization_transaction.
# --------------------------------------------------
sub update
{
my($self, $organization) = @_;
$self -> db -> logger -> log(debug => 'Database::Org.update(...)');
my($result);
# Special code for id == 1.
if ($$organization{id} <= 1)
{
$result = "Error: You cannot update the special company called '-'";
}
else
{
$self -> save_organization_transaction('update', $organization);
$result = "Updated '$$organization{name}'";
}
return $result;
} # End of update.
# --------------------------------------------------
1;
=head1 NAME
App::Office::Contacts::Database::Organization - A web-based contacts manager
=head1 Synopsis
See L<App::Office::Contacts/Synopsis>.
=head1 Description
L<App::Office::Contacts> implements a utf8-aware, web-based, private and group contacts manager.
=head1 Distributions
See L<App::Office::Contacts/Distributions>.
=head1 Installation
See L<App::Office::Contacts/Installation>.
=head1 Object attributes
This module extends L<App::Office::Contacts::Database::Base>, with these attributes:
=over 4
=item o (None)
=back
=head1 Methods
( run in 0.643 second using v1.01-cache-2.11-cpan-99c4e6809bf )