80 lines
1.7 KiB
Perl
80 lines
1.7 KiB
Perl
package DoctorKarma::Model::User;
|
|
|
|
use v5.30.0;
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use Types::Standard qw/Str Int InstanceOf/;
|
|
use Params::ValidationCompiler qw(validation_for);
|
|
|
|
{
|
|
my $validator = validation_for(
|
|
params => {
|
|
id_user => { type => Int },
|
|
username => { type => Str, optional => 1 },
|
|
first_name => { type => Str, optional => 1 },
|
|
karma => { type => Int },
|
|
last_karma_given_date => { type => InstanceOf ['DateTime'], optional => 1 },
|
|
}
|
|
);
|
|
|
|
sub new {
|
|
my $class = shift;
|
|
my %params = $validator->(@_);
|
|
my $self = bless \%params, $class;
|
|
return $self;
|
|
}
|
|
}
|
|
|
|
|
|
sub first_name {
|
|
my $self = shift;
|
|
if (exists $self->{first_name}) {
|
|
return $self->{first_name};
|
|
}
|
|
return undef;
|
|
}
|
|
|
|
sub id_user {
|
|
my $self = shift;
|
|
return $self->{id_user};
|
|
}
|
|
|
|
{
|
|
my $validator =
|
|
validation_for( params => [ { type => Str, optional => 1 } ] );
|
|
|
|
sub username {
|
|
my $self = shift;
|
|
my ($new_username) = $validator->(@_);
|
|
if ( defined $new_username ) {
|
|
$self->{username} = $new_username;
|
|
}
|
|
if ( exists $self->{username} ) {
|
|
return $self->{username};
|
|
}
|
|
return undef;
|
|
}
|
|
}
|
|
|
|
sub last_karma_given_date {
|
|
my $self = shift;
|
|
return $self->{last_karma_given_date};
|
|
}
|
|
|
|
{
|
|
my $validator =
|
|
validation_for( params => [ { type => Int, optional => 1 } ] );
|
|
|
|
sub karma {
|
|
my $self = shift;
|
|
my ($new_karma) = $validator->(@_);
|
|
if ( defined $new_karma ) {
|
|
$self->{karma} = $new_karma;
|
|
}
|
|
return $self->{karma};
|
|
}
|
|
}
|
|
1;
|