- package LedgerSMB::DBObject::User;
- use base qw/LedgerSMB::DBObject/;
- use Data::Dumper;
- sub save {
-
- my $self = shift @_;
-
- my $user = $self->get();
-
- if ( $user->{id} && $self->{is_a_user} ) {
-
- # doesn't check for the password - that's done in the sproc.
- $self->{id} = shift @{ $self->exec_method(funcname=>'admin__save_user',
- args=>[$user->{id}, $self->{username}, $self->{password}] ) };
- if (!$self->{id}) {
-
- return 0;
- }
- }
- elsif ($user && !$self->{is_a_user}) {
-
- # there WAS a user, and we've decided we want that user to go away now.
-
- $self->{id} = $user->{id};
- return $self->remove();
-
- }
- elsif ($self->{is_a_user}) {
-
- # No user ID, meaning, creating a new one.
- $self->{id} = shift @{ $self->exec_method(funcname=>'admin__save_user',
- args=>[undef, $self->{username}, $self->{password}] ) };
- }
- return 1;
- }
- sub get {
-
- my $self = shift @_;
- my $id = shift;
- my @users = $self->exec_method(
- funcname=>'admin__get_user',
- args=>[$id]
- );
- $self->{user} = $users[0];
- my @prefs = $self->exec_method(
- funcname=>'admin__user_preferences',
- args=>[$id]
- );
- $self->{pref} = $prefs[0];
- # $self->{person} = @{ $self->exec_method(
- # funcname=>'admin__user_preferences',
- # args=>[$self->{user}->{entity_id}]
- # )
- # }[0];
- my @emp = $self->exec_method(
- funcname=>'employee__get',
- args=>[$self->{user}->{entity_id}]
- );
- $self->{employee} = $emp[0];
- my @ent = $self->exec_method(
- funcname=>'entity__get_entity',
- args=>[ $self->{user}->{entity_id} ]
- );
- $self->{entity} = $ent[0];
- my @roles = $self->exec_method(
- funcname=>'admin__get_roles_for_user',
- args=>[$id]
- );
- # Now, location and stuff.
- my @loc = $self->exec_method(
- funcname=>'person__list_locations',
- args=>[ $self->{user}->{entity_id} ]
- );
- $self->{locations} = \@loc;
- my @contacts = $self->exec_method(
- funcname=>"person__list_contacts",
- args=>[$self->{user}->{entity_id} ]
- );
- $self->{contacts} = \@contacts;
- my @rolstore;
- for my $role (@roles) {
- my $rolname = $role->{'admin__get_roles_for_user'};
- my $company = $self->{company};
- $rolname =~ s/lsmb_${company}__//gi;
- push @rolstore, $rolname; # Only one key=>value pair
- }
- $self->{roles} = \@rolstore;
-
- $self->{entity_id} = $self->{entity}->{id};
- print STDERR "Got all user information";
-
- #$user->{user} = $u->get($id);
- #$user->{pref} = $u->preferences($id);
- #$user->{employee} = $u->employee($user->{user}->{entity_id});
- #$user->{person} = $u->person($user->{user}->{entity_id});
- #$user->{entity} = $u->entity($id);
- #$user->{roles} = $u->roles($id);
- }
- sub remove {
-
- my $self = shift;
-
- my $code = $self->exec_method(funcname=>"admin__delete_user", args=>[$self->{id}, $self->{username}]);
- $self->{id} = undef; # never existed..
-
- return $code->[0];
- }
- sub save_prefs {
-
- my $self = shift @_;
-
- my $pref_id = $self->exec_method(funcname=>"admin__save_preferences",
- args=>[
- 'language',
- 'stylesheet',
- 'printer',
- 'dateformat',
- 'numberformat'
- ]
- );
- }
- sub get_all_users {
-
- my $self = shift @_;
-
- my @ret = $self->exec_method( funcname=>"user__get_all_users" );
- $self->{users} = \@ret;
- }
- sub roles {
-
- my $self = shift @_;
- my $id = shift @_;
-
-
- }
- sub save_contact {
-
- my $self = shift @_;
- my $id = shift @_;
- my $class = shift @_;
- my $contact = shift @_;
- my @ret;
-
- print STDERR Dumper($self->{entity}->{id});
- if ($id) {
- print STDERR "Found ID..";
- @ret = $self->exec_method(funcname=>"person__save_contact",
- args=>[
- $self->{entity}->{id},
- $self->{contacts}->[$id]->{contact_class},
- $self->{contacts}->[$id]->{contact},
- $contact
- ]
- );
- }
- else{
- print STDERR "Did not find an ID, attempting to save a new contact..\n";
- print STDERR ($class."\n");
- print STDERR ($contact."\n");
- print STDERR ($self->{entity_id}."\n");
- @ret = $self->exec_method(funcname=>"person__save_contact",
- args=>[
- $self->{entity_id},
- $class,
- undef,
- $contact
- ]
- );
- }
- print STDERR Dumper(\@ret);
- if ($ret[0]->{person__save_contact} == 1){
- $self->{dbh}->commit();
- }
- else{
- $self->error("Couldn't save contact...");
- }
- return 1;
- }
- sub delete_contact {
-
- my $self = shift @_;
- my $id = shift @_;
-
- # Okay
- # ID doesn't actually conform to any database entry
- # We're basically cheating outrageously here.
-
-
- }
- 1;
|