App-Dochazka-REST
view release on metacpan or search on metacpan
lib/App/Dochazka/REST/Model/Schedhistory.pm view on Meta::CPAN
}
=head2 delete
Instance method. Deletes the record. Returns status object.
=cut
sub delete {
my $self = shift;
my ( $context ) = validate_pos( @_, { type => HASHREF } );
my $status = cud(
conn => $context->{'dbix_conn'},
eid => $context->{'current'}->{'eid'},
object => $self,
sql => $site->SQL_SCHEDHISTORY_DELETE,
attrs => [ 'shid' ],
);
$self->reset( 'shid' => $self->{shid} ) if $status->ok;
return $status;
}
=head2 get_schedhistory
Takes a PARAMHASH which can have one or more of the properties 'eid', 'nick',
and 'tsrange'.
At least one of { 'eid', 'nick' } must be specified. If both are specified,
the employee is determined according to 'eid'.
The function returns the history of schedule changes for that employee
over the given tsrange, or the entire history if no tsrange is supplied.
The return value will always be an L<App::CELL::Status|status> object.
Upon success, the payload will be a reference to an array of C<schedhistory>
objects. If nothing is found, the array will be empty. If there is a DBI error,
the payload will be undefined.
=cut
sub get_schedhistory {
my $context = shift;
return get_history( 'sched', $context->{'dbix_conn'}, @_ );
}
=head1 EXAMPLES
In this section, some examples are presented to give an idea of how this
module is used.
=head2 Sam Wallace joins the firm
Let's say Sam's initial schedule is 09:00-17:00, Monday to Friday. To
reflect that, the C<schedintvls> table might contain the following intervals
for C<< sid = 9 >>
'[2014-06-02 09:00, 2014-06-02 17:00)'
'[2014-06-03 09:00, 2014-06-03 17:00)'
'[2014-06-04 09:00, 2014-06-04 17:00)'
'[2014-06-05 09:00, 2014-06-05 17:00)'
'[2014-06-06 09:00, 2014-06-06 17:00)'
and the C<schedhistory> table would contain a record like this:
shid 848 (automatically assigned by PostgreSQL)
eid 39 (Sam's Dochazka EID)
sid 9
effective '2014-06-04 00:00'
(This is a straightfoward example.)
=head2 Sam goes on night shift
A few months later, Sam gets assigned to the night shift. A new
C<schedhistory> record is added:
shid 1215 (automatically assigned by PostgreSQL)
eid 39 (Sam's Dochazka EID)
sid 17 (link to Sam's new weekly work schedule)
effective '2014-11-17 12:00'
And the schedule intervals for C<< sid = 17 >> could be:
'[2014-06-02 23:00, 2014-06-03 07:00)'
'[2014-06-03 23:00, 2014-06-04 07:00)'
'[2014-06-04 23:00, 2014-06-05 07:00)'
'[2014-06-05 23:00, 2014-06-06 07:00)'
'[2014-06-06 23:00, 2014-06-07 07:00)'
(Remember: the date part in this case designates the day of the week)
=head1 AUTHOR
Nathan Cutler, C<< <presnypreklad@gmail.com> >>
=cut
1;
( run in 0.448 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )