fruivita/corporativo

Importador de Estrutura Corporativa em formato de arquivo XML para aplicações Laravel

v3.0.0 2023-01-10 20:19 UTC

README

Latest Version on Packagist GitHub Release Date GitHub last commit (branch) GitHub Tests Action Status Test Coverage Maintainability GitHub Code Style Action Status GitHub issues GitHub repo size Packagist Total Downloads GitHub

Importa a Estrutura Corporativa em formato XML para aplicações Laravel.

Este package foi planejado de acordo com as necessidades da Justiça Federal do Espírito Santo. Contudo, ele pode ser utilizado em outros órgãos e projetos observados os termos previstos no licenciamento.

use FruiVita\Corporativo\Facades\Corporativo;

Corporativo::importar($arquivo);

 

Table of Contents

  1. Notes

  2. Prerequisites

  3. Installation

  4. How it works

  5. Events

  6. Testing and Continuous Integration

  7. Changelog

  8. Contributing

  9. Code of conduct

  10. Security Vulnerabilities

  11. Support and Updates

  12. Roadmap

  13. Credits

  14. Thanks

  15. License

Notes

Estrutura Corporativa é o nome dado à consolidação das informações mínimas sobre pessoal, cargos, funções de confiança e lotações.

⬆️ Voltar

 

Prerequisites

  1. Dependências PHP

    PHP ^8.0

    Extensões

    composer check-platform-reqs
  2. GitHub Package Dependencies

⬆️ Voltar

 

Installation

  1. Instalar via composer:

    composer require fruivita/corporativo
  2. Publicar as migrations necessárias

    php artisan vendor:publish --provider='FruiVita\Corporativo\CorporativoServiceProvider' --tag='migrations'
  3. Opcionalmente publicar as configurações

    php artisan vendor:publish --provider='FruiVita\Corporativo\CorporativoServiceProvider' --tag='config'
  4. Opcionalmente publicar as traduções

    php artisan vendor:publish --provider='FruiVita\Corporativo\CorporativoServiceProvider' --tag='lang'

    As strings disponíveis para tradução são as que seguem. Altere-as de acordo com a necessidade.

    {
        "O arquivo informado não pôde ser lido": "O arquivo informado não pôde ser lido",
        "O arquivo precisa ser no formato [:attribute]": "O arquivo precisa ser no formato [:attribute]",
        "Validação falhou": "Validação falhou"
    }

⬆️ Voltar

 

How it works

O arquivo com a Estrutura Corporativa deve ser oferecido a este package em formato XML estruturado da seguinte forma:

<?xml version='1.0' encoding='UTF-8'?>
<base>
    <cargos>
        <!-- Cargos:
            id: integer, obrigatório e maior que 1
            nome: string, obrigatório e tamanho entre 1 e 255
            -->
        <cargo id="1" nome="Cargo 1"/>
        <cargo id="2" nome="Cargo 2"/>
    </cargos>
    <funcoes>
        <!-- Funções de confiança:
            id: integer, obrigatório e maior que 1
            nome: string, obrigatório e tamanho entre 1 e 255
            -->
        <funcao id="1" nome="Função 1"/>
        <funcao id="2" nome="Função 2"/>
    </funcoes>
    <lotacoes>
        <!-- Lotações:
            id: integer, obrigatório e maior que 1
            nome: string, obrigatório e tamanho entre 1 e 255
            sigla: string, obrigatório e tamanho entre 1 e 50
            idPai: integer, opcional, id de uma lotação existente
            -->
        <lotacao id="1" nome="Lotação 1" sigla="Sigla 1"/>
        <lotacao id="2" nome="Lotação 2" sigla="Sigla 2" idPai=""/>
        <lotacao id="3" nome="Lotação 3" sigla="Sigla 3" idPai="1"/>
    </lotacoes>
    <pessoas>
        <!-- Pessoas:
            nome: string, obrigatório e tamanho entre 1 e 255
            matrícula: string, obrigatório e tamanho máximo de 20
            email: string e opcional
            cargo: integer, obrigatório, id de um dos cargos informados
            lotacao: integer, obrigatório, id de uma das lotações informadas
            funcaoConfianca: integer, opcional, id de uma das funções de confiança informadas
            -->
        <pessoa nome="Pessoa 1" matricula="11111" email="foo@bar.com" cargo="1" lotacao="2" funcaoConfianca=""/>
        <pessoa nome="Pessoa 2" matricula="22222" email="bar@baz.com" cargo="1" lotacao="2" funcaoConfianca="2"/>
    </pessoas>
</base>

Notar que a pessoa não possui ID (será analisada sua unicidade pela matrícula). Isso para permitir que outros usuários/pessoas possam ser cadastrados diretamente na aplicação.

 

Esse package expõe o seguinte método para realizar a importação:

 

✏️ importar

use FruiVita\Corporativo\Facades\Corporativo;

/**
 * @param string $arquivo full path do arquivo XML
 * 
 * @throws \FruiVita\Corporativo\Exceptions\FileNotReadableException
 * @throws \FruiVita\Corporativo\Exceptions\UnsupportedFileTypeException
 *
 * @return void
 */
Corporativo::importar($arquivo);

 

🚨 Exceptions:

  • importar lança \FruiVita\Corporativo\Exceptions\FileNotReadableException caso não tenha permissão de leitura no arquivo ou ele não seja encontrado
  • importar lança \FruiVita\Corporativo\Exceptions\UnsupportedFileTypeException caso o arquivo não seja um arquivo XML

⬆️ Voltar

 

Events

Eventos emitidos durante o processo de importação:

  • \FruiVita\Corporativo\Events\ImportacaoIniciada
  • \FruiVita\Corporativo\Events\ImportacaoConcluida
  • \FruiVita\Corporativo\Events\CargoUsuarioAlterado
  • \FruiVita\Corporativo\Events\FuncaoConfiancaUsuarioAlterada
  • \FruiVita\Corporativo\Events\LotacaoUsuarioAlterada

⬆️ Voltar

 

Testing and Continuous Integration

composer analyse
composer test
composer coverage

⬆️ Voltar

 

Changelog

Por favor, veja o CHANGELOG para maiores informações sobre o que mudou em cada versão.

⬆️ Voltar

 

Contributing

Por favor, veja CONTRIBUTING para maiores detalhes sobre como contribuir.

⬆️ Voltar

 

Code of conduct

Para garantir que todos sejam bem vindos a contribuir com este projeto open-source, por favor leia e siga o Código de Conduta.

⬆️ Voltar

 

Security Vulnerabilities

Por favor, veja na política de segurança como reportar vulnerabilidades ou falhas de segurança.

⬆️ Voltar

 

Support and Updates

A versão mais recente receberá suporte e atualizações sempre que houver necessidade. As demais, receberão atualizações por 06 meses após terem sido substituídas por uma nova versão sendo, então, descontinuadas.

🐛 Encontrou um bug?!?! Abra um issue.

⬆️ Voltar

 

Roadmap

✨ Alguma ideia nova?!?! Inicie uma discussão.

A lista a seguir contém as necessidades de melhorias identificadas e aprovadas que serão implementadas na primeira janela de oportunidade.

  • n/a

⬆️ Voltar

 

Credits

⬆️ Voltar

 

Thanks

👋 Agradeço às pessoas e organizações abaixo por terem doado seu tempo na construção de projetos open-source que foram usados neste package.

💸 Algumas dessas pessoas ou organizações possuem alguns produtos/serviços que podem ser comprados. Se você puder ajudá-los comprando algum deles ou se tornando um patrocinador, mesmo que por curto período, ajudará toda a comunidade open-source a continuar desenvolvendo soluções para todos.

⬆️ Voltar

 

License

The MIT License (MIT). Por favor, veja o License File para maiores informações.

⬆️ Voltar