summaryrefslogtreecommitdiff
path: root/scripts/admin.pl
blob: 3a92425cbdf39b467baf2b20b330e923496c3c7d (plain)
  1. #!/usr/bin/perl
  2. package LedgerSMB::Scripts::admin;
  3. require 'lsmb-request.pl';
  4. use LedgerSMB::Template;
  5. use LedgerSMB::DBObject::Admin;
  6. use LedgerSMB::DBObject::User;
  7. use LedgerSMB::DBObject::Location;
  8. use Data::Dumper;
  9. sub new_user {
  10. # uses the same page as create_user, only pre-populated.
  11. #my ($request) = @_;
  12. my $request = shift @_;
  13. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  14. my $sal = $admin->get_salutations();
  15. my $groups = $admin->get_roles();
  16. if ($request->type() eq 'POST') {
  17. # do the save stuff
  18. my $entity = $admin->save_new_user();
  19. my $template = LedgerSMB::Template->new( user => $user,
  20. template => 'Admin/edit_user', language => $user->{ language },
  21. format => 'HTML', path=>'UI');
  22. $template->render(
  23. {
  24. user=>$entity,
  25. salutations=>$sal,
  26. roles=>$groups
  27. }
  28. );
  29. } else {
  30. my $template = LedgerSMB::Template->new(
  31. user => $user,
  32. template => 'Admin/edit_user',
  33. language => $user->{language},
  34. format => 'HTML',
  35. path=>'UI'
  36. );
  37. $template->render(
  38. {
  39. salutations=>$sal,
  40. roles=>$groups,
  41. countries=>$admin->get_countries(),
  42. }
  43. );
  44. }
  45. }
  46. sub edit_user {
  47. # uses the same page as create_user, only pre-populated.
  48. my ($request) = @_;
  49. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'user_id');
  50. my $user_obj = LedgerSMB::DBObject::User->new(base=>$request, copy=>'user_id');
  51. $user_obj->{company} = $request->{company};
  52. $user_obj->get($request->{user_id});
  53. my @all_roles = $admin->get_roles();
  54. my $template = LedgerSMB::Template->new(
  55. user => $user,
  56. template => 'Admin/edit_user',
  57. language => $user->{language},
  58. format => 'HTML',
  59. path=>'UI'
  60. );
  61. my $location = LedgerSMB::DBObject::Location->new(base=>$request);
  62. my $template_data =
  63. {
  64. user=>$user_obj,
  65. roles=>@all_roles,
  66. countries=>$admin->get_countries(),
  67. user_roles=>$user_obj->{roles},
  68. salutations=>$admin->get_salutations(),
  69. contact_classes=>$admin->get_contact_classes(),
  70. locations=>$location->get_all($user_obj->{entity_id},"person"),
  71. };
  72. print STDERR Dumper($template_data->{contact_classes});
  73. print STDERR Dumper($template_data->{user_roles});
  74. if ($request->type() eq 'POST') {
  75. $admin->save_user();
  76. $admin->save_roles();
  77. $template->render($test_data);
  78. }
  79. else {
  80. # print STDERR Dumper($user);
  81. # print STDERR Dumper(@all_roles);
  82. if ($request->{location_id}) {
  83. $template_data->{location} = $location->get($request->{location_id});
  84. }
  85. $template->render($template_data);
  86. }
  87. }
  88. sub edit_group {
  89. my ($request) = @_;
  90. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  91. my $all_roles = $admin->role_list();
  92. my $template = LedgerSMB::Template->new(
  93. user => $user,
  94. template => 'Admin/edit_group',
  95. language => $user->{language},
  96. format => 'HTML',
  97. path=>'UI'
  98. );
  99. if ($request->type() eq "POST") {
  100. my $role = $admin->save_role();
  101. return $template->render(
  102. {
  103. user=> $request->{role},
  104. roles=>$all_roles,
  105. user_roles=>$admin->get_user_roles($request->{role})
  106. }
  107. );
  108. }
  109. else {
  110. return $template->render(
  111. {
  112. roles=>$all_roles
  113. }
  114. );
  115. }
  116. }
  117. sub create_group {
  118. my ($request) = @_;
  119. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  120. my $all_roles = $admin->get_roles();
  121. my $template = LedgerSMB::Template->new(
  122. user => $user,
  123. template => 'Admin/edit_group',
  124. language => $user->{language},
  125. format => 'HTML',
  126. path=>'UI'
  127. );
  128. if ($request->type() eq "POST") {
  129. my $role = $admin->save_role();
  130. return $template->render(
  131. {
  132. user=> $role, roles=>$all_roles
  133. }
  134. );
  135. }
  136. else {
  137. return $template->render({roles=>$all_roles});
  138. }
  139. }
  140. sub delete_group {
  141. my ($request) = @_;
  142. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  143. # requires the field modifying_user to be set.
  144. my $status = $admin->delete_group($request->{modifying_user});
  145. # status can either be 1, or an error.
  146. # if there's an error, $status->throw() is called by admin.pm. Or possibly
  147. # in the template itself.
  148. my $template = LedgerSMB::Template->new ( user=>$user,
  149. template=>'Admin/delete_group', language=>$user->{language},
  150. format=>'HTML', path=>'UI');
  151. $template->render($status);
  152. }
  153. sub delete_user {
  154. my ($request) = @_;
  155. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  156. # requires the field modifying_user to be set.
  157. my $status = $admin->delete_user($request->{modifying_user});
  158. # status can either be 1, or an error.
  159. # if there's an error, $status->throw() is called by admin.pm. Or possibly
  160. # in the template itself.
  161. my $template = LedgerSMB::Template->new ( user=>$user,
  162. template=>'Admin/delete_user', language=>$user->{language},
  163. format=>'HTML', path=>'UI');
  164. $template->render($status);
  165. }
  166. sub new_group {
  167. my ($request) = @_;
  168. my $template = LedgerSMB::Template->new( user=>$user,
  169. template=>'Admin/new_group', language=>$user->{language},
  170. format=>'HTML', path=>'UI');
  171. $template->render();
  172. }
  173. sub cancel {
  174. &main(@_);
  175. }
  176. sub __default {
  177. &main(@_);
  178. }
  179. sub main {
  180. my ($request) = @_;
  181. my $template;
  182. my $user = LedgerSMB::DBObject::User->new(base=>$request, copy=>'all');
  183. my $ret = $user->get_all_users();
  184. $template = LedgerSMB::Template->new(
  185. user=>$user,
  186. template=>'Admin/main',
  187. language=>$user->{language},
  188. format=>'HTML',
  189. path=>'UI'
  190. );
  191. $template->render( { users=>$user->{users} } );
  192. }
  193. sub save_contact {
  194. my $request = shift @_;
  195. # Only ever a post, but check anyway
  196. if ($request->type eq "POST") {
  197. # We have a contact ID, ie, something we made up.
  198. my $c_id = $request->{contact_id};
  199. my $u_id = $request->{user_id};
  200. my $user_obj = LedgerSMB::DBObject::User->new(base=>$request, copy=>'list', merge=>['user_id','company']);
  201. $user_obj->get($u_id);
  202. # so we have a user object.
  203. # ->{contacts} is an arrayref to the list of contacts this user has
  204. # $request->{contact_id} is a reference to this structure.
  205. $user_obj->save_contact($c_id);
  206. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'user_id');
  207. $user_obj->get($request->{user_id});
  208. my @all_roles = $admin->get_roles();
  209. my $template = LedgerSMB::Template->new(
  210. user => $user,
  211. template => 'Admin/edit_user',
  212. language => $user->{language},
  213. format => 'HTML',
  214. path=>'UI'
  215. );
  216. my $template_data =
  217. {
  218. user=>$user_obj,
  219. roles=>@all_roles,
  220. countries=>$admin->get_countries(),
  221. user_roles=>$user_obj->{roles},
  222. salutations=>$admin->get_salutations(),
  223. contact_classes=>$admin->get_contact_classes(),
  224. locations=>$location->get_all($user_obj->{entity_id},"person"),
  225. };
  226. $template->render($template_data);
  227. }
  228. }
  229. sub delete_contact {
  230. my $request = shift @_;
  231. # Only ever a post, but check anyway
  232. if ($request->type eq "POST") {
  233. # We have a contact ID, ie, something we made up.
  234. my $c_id = $request->{contact_id};
  235. my $u_id = $request->{user_id};
  236. my $user = LedgerSMB::DBObject::User->new(base=>$request, copy=>'user_id');
  237. $user->get($u_id);
  238. # so we have a user object.
  239. # ->{contacts} is an arrayref to the list of contacts this user has
  240. # $request->{contact_id} is a reference to this structure.
  241. $user->delete_contact($c_id);
  242. # Boom. Done.
  243. # Now, just call the main edit user page.
  244. edit_user($request);
  245. }
  246. }
  247. sub save_location {
  248. my $request = shift @_;
  249. # Only ever a post, but check anyway
  250. if ($request->type eq "POST") {
  251. my $u_id = $request->{user_id}; # this is an entity_id
  252. my $location = LedgerSMB::DBObject::Location->new(base=>$request, copy=>'all');
  253. # So there's a pile of stuff we need.
  254. # lineone
  255. # linetwo
  256. # linethree
  257. # city
  258. # state
  259. # zipcode
  260. # country
  261. print STDERR "Attempting to save location...\n";
  262. my $id = $location->save("person");
  263. # Done and done.
  264. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'user_id');
  265. my $user = LedgerSMB::DBObject::User->new(base=>$request, copy=>'user_id');
  266. $user->get($request->{user_id});
  267. my @all_roles = $admin->get_roles();
  268. my $template = LedgerSMB::Template->new(
  269. user => $user,
  270. template => 'Admin/edit_user',
  271. language => $user->{language},
  272. format => 'HTML',
  273. path=>'UI'
  274. );
  275. $template->render(
  276. {
  277. user=>$user,
  278. roles=>@all_roles,
  279. user_roles=>$user->{roles},
  280. salutations=>$admin->get_salutations(),
  281. locations=>$location->get_all($u_id,"person"),
  282. location=>$location->get($id),
  283. countries=>$admin->get_countries(),
  284. }
  285. );
  286. }
  287. }
  288. sub delete_location {
  289. my $request = shift @_;
  290. # Only ever a post, but check anyway
  291. if ($request->type eq "POST") {
  292. my $l_id = $request->{location_id};
  293. my $u_id = $request->{user_id};
  294. my $location = LedgerSMB::DBObject::Location->new(base=>$request, copy=>"location_id");
  295. $location->person_delete($l_id,$u_id);
  296. # Boom. Done.
  297. # Now, just call the main edit user page.
  298. edit_user($request);
  299. }
  300. }
  301. #eval { do "scripts/custom/admin.pl"};
  302. 1;