networkrailbusinesssystems / bravo-api
用于发送和从Bravo REST API检索数据的包
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.0.1
- spatie/data-transfer-object: ^3.0
- spatie/enum: ^3.9
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- nunomaduro/larastan: ^0.7.12
- orchestra/testbench: ^6.20
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
属性设置为staging
或production
,以便应用它。当设置为local
或testing
时,不会应用它。
创建项目
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的id
和name
。
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的一个实例,具有以下设置值:LOCKED
、UNLOCKED
或NONE
。
投标有一个默认的工作流程类型NONE
。
批次类型
批次类型是Spatie Enum的一个实例,具有以下设置值:SINGLELOTS
或MULTILOTS
。
投标有一个默认的工作流程类型SINGLELOTS
。
更新项目
要更新项目,需要tenderCode
或tenderReferenceCode
,否则会抛出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