aliirfaan/citronel-error-catalogue

Maintain an error catalogue code to display in error messages for better error reporting and support.

2.0.1 2025-01-22 09:31 UTC

This package is auto-updated.

Last update: 2025-03-22 10:02:41 UTC


README

A catalogue of errors to use in your Laravel project that uses a standard format. This can be useful for customer support staff and to perform further analysis of errors after logging.

Features

  • A catalogue of errors modelled in the following format: [main-process code]-[sub-process code]-[event code]
  • General error codes for validation, authentication
  • Commands to dump error codes and messages in CSV

Requirements

Installation

  • Install the package using composer:
 $ composer require aliirfaan/citronel-error-catalogue
  • Publish files with:
 $ php artisan vendor:publish --provider="aliirfaan\CitronelErrorCatalogue\CitronelErrorCatalogueProvider"

or by using only php artisan vendor:publish and select the aliirfaan\CitronelErrorCatalogue\CitronelErrorCatalogueProvider from the outputted list.

Configuration

This package publishes two configuration files. Please view configuration files for documentation.

  • citronel-general-error-catalogue.php - the error catalogue
  • citronel-error-config.php - package configuration

Commands

  • Dump error catalogue in CSV
 $ php artisan citronel:error-catalogue:dump {filename=error-catalogue.csv} {folder=error-catalogue}
  • Dump messages in CSV
 $ php artisan citronel:messages:dump {filename=messages.csv} {folder=messages}

Traits

  • ErrorCatalogue.php

Usage

Add external configurations

  • Add configuration file names in 'citronel_error_catalogue_external_catalogues' => []
  • Example: 'citronel_error_catalogue_external_catalogues' => ['first-config, 'second-config']
  • The exteral configuration must be the same format as general error catalogue.

Code usage

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use aliirfaan\CitronelErrorCatalogue\Traits\ErrorCatalogue;
use aliirfaan\CitronelErrorCatalogue\Services\CitronelErrorCatalogueService;

class TestController extends Controller
{
    // use trait
    use ErrorCatalogue;

    public function test(Request $request, CitronelErrorCatalogueService $citronelErrorCatalogueService)
    {
        try {

            // validation error example, pass general validation error code as extra code
            $mainProcess = config('citronel-error-catalogue.process.customer');
            $mainProcessKey = $mainProcess['key'];

            $subProcess = $mainProcess['sub_process']['register'];
            $subProcessKey = $subProcess['key'];

            $code = $citronelErrorCatalogueService->generateCodeFromCatalogue($mainProcessKey, $subProcessKey, null, $this->validationErrorCatalogue()['code']);

            // event example
            $event = $subProcess['events']['customer_already_exists'];
            $eventKey = $event['key'];

            $code = $citronelErrorCatalogueService->generateCodeFromCatalogue($mainProcessKey, $subProcessKey, $eventKey);

        } catch (\Exception $e) {
            report($e);
        }
    }
}