julioserpone/sla-manager

A PHP package for calculating & tracking the Service Level Agreement completion timings

Maintainers

πŸ‘ julioserpone

Package info

github.com/julioserpone/sla-manager

pkg:composer/julioserpone/sla-manager

Fund package maintenance!

julioserpone

Statistics

Installs: 109

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 6

v1.0.2 2022-10-20 20:46 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT f36849d9a77d11096da5d36b54b2fe95fc066550

  • Julio CΓ©sar HΓ©rnandez <juliohernandezs.woop@gmail.com>

julioserponesla-manager


README

πŸ‘ Logo for SLA Timer

πŸ‘ Latest Version on Packagist
πŸ‘ Total Downloads
πŸ‘ GitHub Actions

A PHP package to calculate and track Service Level Agreement completion times.

Inspired from the sla-timer pack.

Features

  • πŸ•š Easy schedule building
  • ‼️ Defined breaches
  • 🏝 Holiday & Paused Durations
πŸ‘ Hi, I'm Julio & I'm currently looking for a Laravel job. Please reach out to me via twitter, or click this link.

Installation

You can install the sla-manager via composer:

composer require julioserpone/sla-manager

Getting Started

The best place to get started with SLA timer is to head over to the ✨ SLA Timer Getting Started Documentation.

Example Usage

To create a new SLA Timer, we can start by defining our SLA Schedule:

require 'vendor/autoload.php';

use JulioSerpone\SlaManager\SLA;
use JulioSerpone\SlaManager\SLABreach;
use JulioSerpone\SlaManager\SLASchedule;

/**
 * Create a new SLA between 9am and 5:30pm weekdays
 */
$sla = SLA::fromSchedule(
 SLASchedule::create()->from('09:00:00')->to('17:30:00')
 ->onWeekdays()
);

We can define out breaches by calling the addBreaches method on our SLA

/**
 * Define two breaches, one at 24 hours, and the next at 100 hours
 */
$sla->addBreaches([
 new SLABreach('First Response', '24h'),
 new SLABreach('Resolution', '100h'),
]);

Now that our SLA Schedule and SLA Breaches are defined, all we have to do is give our subject "creation time" – or our SLA start time – to either the status method, or the duration method.

// Given the time now is 14:00:00 29-07-2022
$status = $sla->status('05:35:40 25-07-2022'); // SLAStatus
$status->breaches; // [SLABreach] [0: { First Response } ]

$duration = $sla->duration('05:35:40 25-07-2022'); // CarbonInterval
$duration->forHumans(); // 1 day 15 hours

Testing

composer test

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.