App-Dochazka-REST
view release on metacpan or search on metacpan
lib/App/Dochazka/REST/Model/Employee.pm view on Meta::CPAN
all admin active inactive passerby
=cut
sub list_employees_by_priv {
my ( $conn, $priv ) = validate_pos( @_,
{ isa => 'DBIx::Connector' },
{ type => SCALAR, regex => qr/^(all)|(admin)|(active)|(inactive)|(passerby)$/ },
);
$log->debug( "Entering " . __PACKAGE__ . "::list_employees_by_priv with priv $priv" );
my $nicks = []; # reference to array of nicks
my $sql = ''; # SQL statement
my $keys_arrayref = []; # reference to array of keys (may be empty)
if ( $priv eq 'all' ) {
$sql = $site->SQL_EMPLOYEE_SELECT_NICKS_ALL
} else {
$sql = $site->SQL_EMPLOYEE_SELECT_NICKS_BY_PRIV_LEVEL;
$keys_arrayref = [ $priv ];
}
my $status = select_set_of_single_scalar_rows(
'conn' => $conn,
'sql' => $sql,
'keys' => $keys_arrayref,
);
return $status unless $status->ok;
return $CELL->status_ok( 'DISPATCH_LIST_EMPLOYEE_NICKS',
args => [ $priv ],
payload => $status->payload,
);
}
=head2 noof_employees_by_priv
Get number of employees. Argument can be one of the following:
total admin active inactive passerby
=cut
sub noof_employees_by_priv {
my ( $conn, $priv ) = validate_pos( @_,
{ isa => 'DBIx::Connector' },
{ type => SCALAR, regex => qr/^(total)|(admin)|(active)|(inactive)|(passerby)$/ },
);
$log->debug( "Entering " . __PACKAGE__ . "::noof_employees_by_priv with priv $priv" );
$priv = lc $priv;
if ( $priv eq 'total' ) {
my $count = noof( $conn, 'employees' );
return $CELL->status_ok(
'DISPATCH_COUNT_EMPLOYEES',
args => [ $count, $priv ],
payload => { count => $count } );
}
return $CELL->status_err( 'DOCHAZKA_NOT_FOUND_404' ) unless
$priv =~ m/^(passerby)|(inactive)|(active)|(admin)$/i;
my $sql = $site->SQL_EMPLOYEE_COUNT_BY_PRIV_LEVEL;
my ( $count ) = @{ select_single( conn => $conn, sql => $sql, keys => [ $priv ] )->payload };
$log->debug( "select_single returned: $count" );
$count += 0;
$CELL->status_ok( 'DISPATCH_COUNT_EMPLOYEES', args => [ $count, $priv ],
payload => { 'priv' => $priv, 'count' => $count } );
}
=head2 get_all_sync_employees
Function returns a status object. If the status is OK, the payload will contain
a reference to an array of employee objects whose sync property is true.
=cut
sub get_all_sync_employees {
my ( $conn ) = validate_pos( @_,
{ isa => 'DBIx::Connector' },
);
return load_multiple(
conn => $conn,
class => 'App::Dochazka::REST::Model::Employee',
sql => $site->SQL_EMPLOYEE_SELECT_MULTIPLE_BY_SYNC,
keys => [ 1 ],
);
}
=head1 AUTHOR
Nathan Cutler, C<< <presnypreklad@gmail.com> >>
=cut
1;
( run in 0.585 second using v1.01-cache-2.11-cpan-39bf76dae61 )