summaryrefslogtreecommitdiff
path: root/LedgerSMB/DBObject/User.pm
blob: 18bfca9ad4caa6b1c80ec8dd2544d004d910716e (plain)
  1. package LedgerSMB::DBObject::User;
  2. use base qw/LedgerSMB::DBObject/;
  3. use Data::Dumper;
  4. sub save {
  5. my $self = shift @_;
  6. my $user = $self->get();
  7. if ( $user->{id} && $self->{is_a_user} ) {
  8. # doesn't check for the password - that's done in the sproc.
  9. $self->{id} = shift @{ $self->exec_method(funcname=>'admin__save_user',
  10. args=>[$user->{id}, $self->{username}, $self->{password}] ) };
  11. if (!$self->{id}) {
  12. return 0;
  13. }
  14. }
  15. elsif ($user && !$self->{is_a_user}) {
  16. # there WAS a user, and we've decided we want that user to go away now.
  17. $self->{id} = $user->{id};
  18. return $self->remove();
  19. }
  20. elsif ($self->{is_a_user}) {
  21. # No user ID, meaning, creating a new one.
  22. $self->{id} = shift @{ $self->exec_method(funcname=>'admin__save_user',
  23. args=>[undef, $self->{username}, $self->{password}] ) };
  24. }
  25. return 1;
  26. }
  27. sub get {
  28. my $self = shift @_;
  29. my $id = shift;
  30. my @users = $self->exec_method(
  31. funcname=>'admin__get_user',
  32. args=>[$id]
  33. );
  34. $self->{user} = $users[0];
  35. my @prefs = $self->exec_method(
  36. funcname=>'admin__user_preferences',
  37. args=>[$id]
  38. );
  39. $self->{pref} = $prefs[0];
  40. # $self->{person} = @{ $self->exec_method(
  41. # funcname=>'admin__user_preferences',
  42. # args=>[$self->{user}->{entity_id}]
  43. # )
  44. # }[0];
  45. my @emp = $self->exec_method(
  46. funcname=>'employee__get',
  47. args=>[$self->{user}->{entity_id}]
  48. );
  49. $self->{employee} = $emp[0];
  50. my @ent = $self->exec_method(
  51. funcname=>'entity__get_entity',
  52. args=>[ $self->{user}->{entity_id} ]
  53. );
  54. $self->{entity} = $ent[0];
  55. my @roles = $self->exec_method(
  56. funcname=>'admin__get_roles_for_user',
  57. args=>[$id]
  58. );
  59. # Now, location and stuff.
  60. my @loc = $self->exec_method(
  61. funcname=>'person__list_locations',
  62. args=>[ $self->{user}->{entity_id} ]
  63. );
  64. $self->{location} = \@loc;
  65. my @contacts = $self->exec_method(
  66. funcname=>"person__list_contacts",
  67. args=>[$self->{user}->{entity_id} ]
  68. );
  69. my @rolstore;
  70. for my $role (@roles) {
  71. push @rolstore, $role->{'admin__get_roles_for_user'}; # Only one key=>value pair
  72. }
  73. $self->{roles} = \@rolstore;
  74. print STDERR "Got all user information";
  75. #$user->{user} = $u->get($id);
  76. #$user->{pref} = $u->preferences($id);
  77. #$user->{employee} = $u->employee($user->{user}->{entity_id});
  78. #$user->{person} = $u->person($user->{user}->{entity_id});
  79. #$user->{entity} = $u->entity($id);
  80. #$user->{roles} = $u->roles($id);
  81. }
  82. sub remove {
  83. my $self = shift;
  84. my $code = $self->exec_method(funcname=>"admin__delete_user", args=>[$self->{id}, $self->{username}]);
  85. $self->{id} = undef; # never existed..
  86. return $code->[0];
  87. }
  88. sub save_prefs {
  89. my $self = shift @_;
  90. my $pref_id = $self->exec_method(funcname=>"admin__save_preferences",
  91. args=>[
  92. 'language',
  93. 'stylesheet',
  94. 'printer',
  95. 'dateformat',
  96. 'numberformat'
  97. ]
  98. );
  99. }
  100. sub get_all_users {
  101. my $self = shift @_;
  102. my @ret = $self->exec_method( funcname=>"user__get_all_users" );
  103. $self->{users} = \@ret;
  104. }
  105. sub roles {
  106. my $self = shift @_;
  107. my $id = shift @_;
  108. }
  109. 1;