用于发送和从Bravo REST API检索数据的包

1.4.3 2023-02-17 13:22 UTC

This package is auto-updated.

Last update: 2024-09-17 18:12:45 UTC


README

一个用于通过Bravo REST API发送和检索数据的Laravel包。

内容

关于

  • 使用Laravel HTTP客户端向Bravo API发送请求
  • 该包包含一组用于构建请求对象的类型化对象。
  • 响应通过数据传输对象传递,将响应从JSON响应转换为类型化对象

配置

如有必要,您可以发布配置

php artisan vendor:publish --provider="NetworkRailBusinessSystems\BravoApi\BravoApiServiceProvider"

您需要在.env文件中设置以下内容作为最低要求

BRAVO_API_USERNAME=
BRAVO_API_PASSWORD=
BRAVO_API_BASE_URL=

基本URL格式如下:https://<WEBSERVICES-URL>/esop/jint/api/public/。例如:https://customername.com/esop/jint/api/public/。API包设计为与Bravo API的v1版本一起工作。

如果您想更改默认的令牌缓存时间(默认为10分钟),则可以将以下设置为20分钟

BRAVO_API_TOKEN_CACHE=20

代理

HTTP客户端需要代理才能在应用程序部署在服务器上时与Bravo的API进行连接。

这已经为您配置好了,但是您必须确保.env文件中的APP_ENV属性设置为stagingproduction,以便应用它。当设置为localtesting时,不会应用它。

创建项目

use NetworkRailBusinessSystems\BravoApi\BravoApi;
use NetworkRailBusinessSystems\BravoApi\RequestObjects\Project;

$bravoApi = new BravoApi();

$project = new Project();
$project->tender->title = 'My Project Title';

$response = $bravoApi->createProject($project);

echo $response->returnCode; // 0
echo $response->tenderCode; // 'tender_1000111
echo $response->tenderReferenceCode; // 1000111

默认情况下,projectOperation是'CREATE_FROM_TEMPLATE'。这要求设置$project->tender->sourceTemplateCode$project->tender->sourceTemplateReferenceCode。sourceTemplateCode是tender_1234样式的代码,sourceTemplateReferenceCode是project_1234样式的代码。

$bravoApi = new BravoApi();

$project = new Project();
$project->tender->title = 'My Project Title';
$project->tender->sourceTemplateReferenceCode = 'project_1234';

$response = $bravoApi->createProject(
    project: $project, 
    fromTemplate: true
);

要创建一个不基于模板的项目,请将createProject()中的fromTemplate参数设置为false;

$bravoApi = new BravoApi();

$project = new Project();
$project->tender->title = 'My Project Title';

$response = $bravoApi->createProject(
    project: $project, 
    fromTemplate: false
);

用户对象

用户请求对象允许将Bravo用户名传递给login属性,或者如果您知道它们,可以使用Bravo的idname

use NetworkRailBusinessSystems\BravoApi\RequestObjects\User;
use \NetworkRailBusinessSystems\BravoApi\RequestObjects\Project;

$user = new User();

// Set the login as the user's email address
$user->login = 'example@email.com';

// Or set the Bravo id and name if known
$user->id = '1234';
$user->name = 'Joe Bloggs';

$project = new Project();
$project->tender->projectOwner = $user;

类别列表

类别列表允许您在创建项目时设置类别代码和类别名称。类别代码需要与Bravo中的类别代码完全匹配。

use \NetworkRailBusinessSystems\BravoApi\RequestObjects\Category;
use \NetworkRailBusinessSystems\BravoApi\RequestObjects\Project;

$category = new Category();
$category->categoryName = 'A Test Category';
$category->categoryCode = '01.01.01.99';

$project = new Project();
$project->categoryList->category[] = $category;

工作流程类型

工作流程类型是Spatie Enum的一个实例,具有以下设置值:LOCKEDUNLOCKEDNONE

投标有一个默认的工作流程类型NONE

批次类型

批次类型是Spatie Enum的一个实例,具有以下设置值:SINGLELOTSMULTILOTS

投标有一个默认的工作流程类型SINGLELOTS

更新项目

要更新项目,需要tenderCodetenderReferenceCode,否则会抛出BravoApiException。

use NetworkRailBusinessSystems\BravoApi\BravoApi;
use NetworkRailBusinessSystems\BravoApi\RequestObjects\Project;

$bravoApi = new BravoApi();

$project = new Project();

$project->tender->title = 'My Project Title';

$response = $bravoApi->updateProject($project);

echo $response->returnCode; // 0
echo $response->tenderCode; // 'tender_1000111
echo $response->tenderReferenceCode; // 1000111

搜索项目

根据FIQL查询字符串传递搜索词。使用FIQL查询包以构建更易于阅读的过滤器。

响应将包含一个项目列表,其中包含一组项目。

use NetworkRailBusinessSystems\BravoApi\BravoApi;

$bravoApi = new BravoApi();
$response = $bravoApi->searchProjects('title==test');

echo $response->projectList->project->first()->tender->title; // Test

您还可以传递其他过滤器(deFilt和comp)以及startAt。

获取项目

请传入您希望获取的项目ID。

use NetworkRailBusinessSystems\BravoApi\BravoApi;

$bravoApi = new BravoApi();
$response = $bravoApi->getProject('tender_10001');

echo $response->projectList->project->first()->tender->title; // Test

测试

运行 composer install 以安装依赖,然后运行 vendor/bin/phpunit 来执行测试。

开发

运行 npm install 以安装 husky 用于提交时的 git 钩子。

该包使用 prettier 在 git 提交时格式化 PHP 代码布局。

该包已安装 Larastan 进行静态分析,并将其添加为 lint-staged 任务。要手动运行,请运行 ./vendor/bin/phpstan analyse