App-Dochazka-CLI
view release on metacpan or search on metacpan
lib/App/Dochazka/CLI/Commands/Interval.pm view on Meta::CPAN
# *************************************************************************
#
# Interval commands
#
package App::Dochazka::CLI::Commands::Interval;
use 5.012;
use strict;
use warnings;
use App::CELL qw( $CELL $log );
use App::Dochazka::CLI qw(
$current_emp
$debug_mode
$prompt_date
$prompt_month
$prompt_year
);
use App::Dochazka::CLI::Shared qw( shared_generate_report );
use App::Dochazka::CLI::Util qw(
datelist_from_token
determine_employee
month_alpha_to_numeric
normalize_date
normalize_time
parse_test
refresh_current_emp
rest_error
truncate_to
);
use App::Dochazka::Common::Model::Interval;
use Data::Dumper;
use Date::Calc qw( Days_in_Month );
use Exporter 'import';
use JSON;
use Params::Validate qw( :all );
use Text::Table;
use Web::MREST::CLI qw( send_req );
=head1 NAME
App::Dochazka::CLI::Commands::Interval - Interval commands
=head1 PACKAGE VARIABLES
=cut
our @EXPORT_OK = qw(
interval_date
interval_date_date1
interval_datelist
interval_month
interval_new_date_time_date1_time1
interval_new_time_time1
interval_new_timerange
interval_num_num1
interval_promptdate
interval_tsrange
);
=head1 FUNCTIONS
The functions in this module are called from the parser when it recognizes a command.
=head2 Command handlers
Functions called from the parser
=head3 interval_new_date_time_date1_time1
INTERVAL NEW _DATE _TIME _DATE1 _TIME1 _TERM
INTERVAL NEW _DATE _TIME _HYPHEN _DATE1 _TIME1 _TERM
=cut
sub interval_new_date_time_date1_time1 {
print "Entering " . __PACKAGE__ . "::interval_new_date_time_date1_time1\n" if $debug_mode;
my ( $ts, $th ) = @_;
# parse test
return parse_test( $ts, $th ) if $ts eq 'PARSE_TEST';
print Dumper( $th ) if $debug_mode;
my $status = _tsrange_from_dates_and_times( $th->{_DATE}, $th->{_DATE1}, $th->{_TIME}, $th->{_TIME1} );
return $status unless $status->ok;
return _interval_new( $th->{_TERM}, $status->payload, $th->{_REST} );
}
=head3 interval_new_time_time1
=cut
sub interval_new_time_time1 {
print "Entering " . __PACKAGE__ . "::interval_new_time_time1\n" if $debug_mode;
my ( $ts, $th ) = @_;
# parse test
return parse_test( $ts, $th ) if $ts eq 'PARSE_TEST';
print Dumper( $th ) if $debug_mode;
my $status = _tsrange_from_dates_and_times( $th->{_DATE}, undef, $th->{_TIME}, $th->{_TIME1} );
return $status unless $status->ok;
return _interval_new( $th->{_TERM}, $status->payload, $th->{_REST} );
}
=head3 interval_new_timerange
INTERVAL _TIMERANGE _TERM
=cut
sub interval_new_timerange {
print "Entering " . __PACKAGE__ . "::interval_new_timerange\n" if $debug_mode;
my ( $ts, $th ) = @_;
# parse test
return parse_test( $ts, $th ) if $ts eq 'PARSE_TEST';
print Dumper( $th ) if $debug_mode;
my ( $rt0, $rt1 ) = $th->{_TIMERANGE} =~ m/\A(\d{1,2}:\d{1,2})-(\d{1,2}:\d{1,2})/;
my $status = _tsrange_from_dates_and_times( $th->{_DATE}, undef, $rt0, $rt1 );
return $status unless $status->ok;
print "tsrange: " . $status->payload . "\n" if $debug_mode;
return _interval_new( $th->{_TERM}, $status->payload, $th->{_REST} );
}
=head3 interval_date
INTERVAL _DATE
EMPLOYEE_SPEC INTERVAL _DATE
INTERVAL FETCH _DATE
EMPLOYEE_SPEC INTERVAL FETCH _DATE
INTERVAL FILLUP _DATE
EMPLOYEE_SPEC INTERVAL FILLUP _DATE
INTERVAL FILLUP DRY_RUN _DATE
EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _DATE
INTERVAL SUMMARY _DATE
EMPLOYEE_SPEC INTERVAL SUMMARY _DATE
INTERVAL REPORT _DATE
EMPLOYEE_SPEC INTERVAL REPORT _DATE
INTERVAL DELETE _DATE
EMPLOYEE_SPEC INTERVAL DELETE _DATE
=cut
sub interval_date {
print "Entering " . __PACKAGE__ . "::interval_date\n" if $debug_mode;
my ( $ts, $th ) = @_;
# parse test
return parse_test( $ts, $th ) if $ts eq 'PARSE_TEST';
print Dumper( $th ) if $debug_mode;
# determine employee
my $status = determine_employee( $th->{'EMPLOYEE_SPEC'} );
return $status unless $status->ok;
my $emp = $status->payload;
# determine date
my $date = normalize_date( $th->{'_DATE'} );
return $CELL->status_err( 'DOCHAZKA_CLI_INVALID_DATE' ) unless $date;
return _interval_fillup_delete_print( $th, $emp, "[ $date 00:00, $date 24:00 )" );
}
=head3 interval_date_date1
INTERVAL _DATE _DATE1
( run in 1.794 second using v1.01-cache-2.11-cpan-39bf76dae61 )