package LIMS::Model::Notification; use Moose; extends 'LIMS::Model::Base'; use Data::Dumper; #------------------------------------------------------------------------------- sub register_contact { my ($self, $gmc) = @_; my $user_profile = $self->user_profile; my $name = join ' ', map ucfirst $user_profile->{$_}, qw/first_name last_name/; my $addr = $user_profile->{email}; my %h = ( contact_address => $addr, identifier => $gmc, # is_active => 'yes', # default is 'no' # keep at default or testing type => 'referrer', name => $name, ); # warn Dumper \%h; eval { LIMS::DB::ReportNotification->new(%h)->save; }; return $@ if $@; } #------------------------------------------------------------------------------- sub get_gmc_entry { # can't use RDBO - have unique key = identifier + contact_address my ($self, $gmc) = @_; my $contact = $self->lims_dbix->select('report_notification', 'name', { identifier => $gmc })->list; return $contact; } #------------------------------------------------------------------------------- sub get_contact { # by id: my ($self, $id) = @_; my $o = LIMS::DB::ReportNotification ->new(id => $id)->load(with => 'department'); my $data = $o->as_tree; # need to get location display, ref_src if hospital or parent if organisation: my $location_id = $o->identifier; if ( $o->type eq 'hospital' ) { my $location = LIMS::DB::ReferralSource->new(id => $location_id)->load; $data->{location} = $location->display_name; } elsif ( $o->type eq 'organisation' ) { my $parent = LIMS::DB::ParentOrganisation->new(id => $location_id)->load; $data->{location} = $parent->description; } return $data; } #------------------------------------------------------------------------------- sub get_all_contacts { my $self = shift; my @args = ( with_objects => 'department', sort_by => ['type','name'] ); my $o = LIMS::DB::ReportNotification::Manager->get_objects(@args); return $o; } # ------------------------------------------------------------------------------ sub update_contact { my ($self, $data) = @_; # warn Dumper $data; my %args = ( class => 'ReportNotification', data => $data ); return $self->update_object(\%args); } 1;