The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

WebService::Toggl::Report::Weekly - Toggl weekly aggregated report object

SYNOPSIS

 use WebService::Toggl;
 my $toggl = WebService::Toggl->new({api_key => 'foo'});

 my $report = $toggl->weekly({
   workspace_id => 1234,
   grouping => 'projects', calculate => 'earnings',
 });

 say $report->total_billable;  # billable milliseconds
 say $report->week_totals;     # array of totals per day
 for $project (@{ $report->data }) {
   say "Project $project->{title}{project} earned "
     . "$project->{amount}[7] $project->{currency} this week.";
   for my $user ($projects->{details}) {
     say "  User $user->{title}{user} contributed "
       . "$user->{amount}[7] $user->{currency} to that total";
   }
 }

DESCRIPTION

This module is a wrapper object around the Toggl weekly report described here. It returns a report of either time spent or earnings grouped by either project or user.

REQUEST ATTRIBUTES

Request attributes common to all reports are detailed in the ::Role::Request pod.

The until attribute is ignored for the weekly report. It is always assumed to be since plus six days (for a total of seven).

grouping

Which metric to group reports by. Must be either projects or users. Whichever is not selected is used as the subgrouping parameter.

calculate

The property to aggregate. Must be one of time or earnings.

RESPONSE ATTRIBUTES

Response attributes common to all reports are detailed in the ::Role::Request pod.

weekly_totals

Eight-element array ref showing aggregated totals of the "calculate" property for each day, with a sum total as the last element.

REPORT DATA

The data attribute of a ::Report::Weekly object is an arrayref of hashrefs representing the grouping property. It contains a details key with an array of hashrefs representing the subgrouping parameter. If the "calculate" property is time, the data attribute will contain a totals key with the daily time aggregates. If "caluclate" is earnings , it will contain a currency key and an amounts key with the daily aggregated earnings. For more details, see the Toggl API docs.

LICENSE

Copyright (C) Fitz Elliott.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

Fitz Elliott <felliott@fiskur.org>