Guest User

Untitled

a guest
Mar 8th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. package ARC::Schema::User;
  2. use strict;
  3. use warnings;
  4. use base 'DBIx::Class';
  5.  
  6. # Function: Stores user information
  7. # Update frequency/method: Updated prior to going live
  8. # Data source: HRO and ARC
  9. # Effects pages: Login, Registration, PW reset, Username retrieval
  10.  
  11. # CREATE TABLE `tbl_user` (
  12. # `user_id` int(11) default NULL,
  13. # `user_name` varchar(20) default NULL,
  14. # `password` varchar(20) default NULL,
  15. # `last_name` varchar(50) default NULL,
  16. # `first_name` varchar(50) default NULL,
  17. # `title` varchar(50) default NULL,
  18. # `phone_number` varchar(20) default NULL,
  19. # `email_address` varchar(50) default NULL,
  20. # `superuser` int(11) default NULL
  21. # ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  22.  
  23. __PACKAGE__->load_components('Core');
  24. __PACKAGE__->table('tbl_user');
  25.  
  26. # System-assigned id for the user
  27. __PACKAGE__->add_columns(
  28. user_id => {
  29. data_type => 'integer',
  30. size => 11,
  31. auto_increment => 1,
  32. }
  33. );
  34.  
  35. __PACKAGE__->set_primary_key('user_id');
  36.  
  37. __PACKAGE__->add_columns(
  38. user_name => {
  39. data_type => 'varchar',
  40. size => 20,
  41. is_nullable => 1,
  42. }
  43. );
  44.  
  45. __PACKAGE__->add_columns(
  46. password => {
  47. data_type => 'varchar',
  48. size => 20,
  49. is_nullable => 1,
  50. }
  51. );
  52.  
  53. sub check_password { $_[0]->password eq $_[1] }
  54.  
  55. # Last name provided by the user
  56. __PACKAGE__->add_columns(
  57. last_name => {
  58. data_type => 'varchar',
  59. size => 50,
  60. is_nullable => 1,
  61. }
  62. );
  63.  
  64. # First name provided by the user
  65. __PACKAGE__->add_columns(
  66. first_name => {
  67. data_type => 'varchar',
  68. size => 50,
  69. is_nullable => 1,
  70. }
  71. );
  72.  
  73. # Job title provided by the user
  74. __PACKAGE__->add_columns(
  75. title => {
  76. data_type => 'varchar',
  77. size => 50,
  78. is_nullable => 1,
  79. }
  80. );
  81.  
  82.  
  83.  
  84. # Phone number provided by the user
  85. __PACKAGE__->add_columns(
  86. phone_number => {
  87. data_type => 'varchar',
  88. size => 20,
  89. is_nullable => 1,
  90. }
  91. );
  92.  
  93.  
  94. sub phone_number_formatted {
  95. return unless $_[0]->phone_number;
  96. my ( $phone1, $phone2, $phone3 ) =
  97. $_[0]->phone_number =~ /(\d{3})-?(\d{3})-?(\d{4})/;
  98. return "($phone1) $phone2-$phone3";
  99. }
  100.  
  101. # Email address provided by the user
  102. __PACKAGE__->add_columns(
  103. email_address => {
  104. data_type => 'varchar',
  105. size => 50,
  106. is_nullable => 1,
  107. }
  108. );
  109.  
  110.  
  111. # Flag to indicate if an admin is a superuser with additional privileges
  112. __PACKAGE__->add_columns(
  113. superuser => {
  114. data_type => 'integer',
  115. size => 11,
  116. is_nullable => 1,
  117. }
  118. );
  119.  
  120. __PACKAGE__->add_unique_constraint(
  121. unique_name => [ qw/first_name last_name/ ],
  122. );
  123.  
  124. warn "has many";
  125. __PACKAGE__->has_many(
  126. 'unitusers' => 'ARC::Schema::UnitUsers',
  127. 'user_id', { order_by => \'unit_id ASC' }
  128. );
  129. __PACKAGE__->many_to_many( 'units' => 'unitusers', 'unit_id' );
  130.  
  131. sub is_hewitt_or_nhq { $_[0]->superuser }
  132.  
  133. sub full_name {
  134. my $self = shift;
  135. join(" ", $self->first_name, $self->last_name );
  136. }
  137.  
  138. sub mail_address {
  139. my $self = shift;
  140. Mail::Address->new( $self->full_name, $self->email_address );
  141. }
  142.  
  143. 1;
  144. __END__
Add Comment
Please, Sign In to add comment