diff --git a/app/Classes/General/Eloquent/Filters/WithCompanyModuleType.php b/app/Classes/General/Eloquent/Filters/WithCompanyModuleType.php new file mode 100644 index 00000000..5bbe630b --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/WithCompanyModuleType.php @@ -0,0 +1,22 @@ +whereHas('companyModule', function ($query) use ($value) { + $query->where('company_modules.type', '=', $value); + }); + } +} diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index 9f543c74..5ac90094 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -110,7 +110,7 @@ class CreateCustomerLogic extends AbstractControllerLogic $this->createContactProcessor->execute($request, $company); - $companyModule = $this->createCompanyModuleProcessor->execute($company); + $companyModule = $this->createCompanyModuleProcessor->execute($company, $request->input('business_type')); $Object = new EmploymentObject($companyModule, $user); $this->assignEmployeeProcessor->execute($Object); diff --git a/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyLogic.php b/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyLogic.php index 019fe833..c0b60806 100644 --- a/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyLogic.php +++ b/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyLogic.php @@ -5,6 +5,7 @@ namespace App\Classes\Modules\Companies\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Companies\Processors\CreateCompanyProcessor; +use App\Classes\Modules\Companies\Processors\CreateCompanyModuleProcessor; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\BusinessType; use App\Classes\ValueObjects\Constants\CompanyType; @@ -17,10 +18,12 @@ class CreateCompanyLogic extends AbstractControllerLogic /** * CreateCompanyLogic constructor. * @param CreateCompanyProcessor $createCompanyProcessor + * @param CreateCompanyModuleProcessor $createCompanyModuleProcessor */ - public function __construct(CreateCompanyProcessor $createCompanyProcessor) + public function __construct(CreateCompanyProcessor $createCompanyProcessor ,CreateCompanyModuleProcessor $createCompanyModuleProcessor) { $this->createCompanyProcessor = $createCompanyProcessor; + $this->createCompanyModuleProcessor = $createCompanyModuleProcessor; } /** @@ -46,7 +49,10 @@ class CreateCompanyLogic extends AbstractControllerLogic */ public function logic(Request $request) : JsonResponse { - $company = $this->createCompanyProcessor->execute($request, BusinessType::CURRENCY_VENDOR, CompanyType::COMPANY_BUSINESS, ApprovalStatus::APPROVED); + $company = $this->createCompanyProcessor->execute($request, $request->input('type'), ApprovalStatus::PENDING_SUBMISSION); + + $this->createCompanyModuleProcessor->execute($company , $request->input('business_type')); + return $this->resourceResponse(new CompanyResource($company)); } diff --git a/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php b/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php index 4d6fdf7c..2d117fc1 100644 --- a/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php +++ b/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php @@ -5,6 +5,8 @@ namespace App\Classes\Modules\Companies\Processors; use App\Classes\Modules\Companies\DataTransferObjects\CompanyModuleObject; use App\Classes\Modules\Companies\Services\CreatesCompanyModule; +use App\Classes\ValueObjects\Constants\BusinessType; + use Illuminate\Database\Eloquent\Model; use App\Models\Company; @@ -28,12 +30,12 @@ class CreateCompanyModuleProcessor * @param Company $company * @return Model */ - public function execute(Company $company): Model + public function execute(Company $company , ?int $businessType): Model { $company_module_object = new CompanyModuleObject( $company->id, - $company->type, - $company->status + $businessType??BusinessType::IMPORTER, + $company->status, ); return $this->createsCompanyModule->execute($company_module_object); diff --git a/app/Models/Company.php b/app/Models/Company.php index 4ef00640..bd137a4a 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -1,6 +1,7 @@ morphMany(Address::class, 'owner'); } + /** + * @return belongsToMany + */ + public function companyModule(): hasMany + { + return $this->hasMany(CompanyModule::class); + } + /** * @return belongsToMany */ diff --git a/app/Models/CompanyModule.php b/app/Models/CompanyModule.php index 34ea5ec3..bcb39dee 100644 --- a/app/Models/CompanyModule.php +++ b/app/Models/CompanyModule.php @@ -3,6 +3,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Relations\BelongsToMany; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; @@ -23,6 +24,14 @@ class CompanyModule extends AbstractModel protected $dates = ['deleted_at']; + /** + * @return BelongsTo + */ + public function company(): BelongsTo + { + return $this->BelongsTo(Company::class, 'company_id', 'id'); + } + /** * @return MorphMany */ diff --git a/app/Models/User.php b/app/Models/User.php index 5ed99155..33da7042 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -63,7 +63,7 @@ class User extends AbstractModel implements */ public function companyModule(): belongsToMany { - return $this->belongsToMany(companyModule::class, (new CompanyEmployee())->getTable(), 'user_id', 'company_module_id'); + return $this->belongsToMany(CompanyModule::class, (new CompanyEmployee())->getTable(), 'user_id', 'company_module_id'); } /** diff --git a/database/seeders/CompaniesTableSeeder.php b/database/seeders/CompaniesTableSeeder.php index 0362d18f..8593efa4 100644 --- a/database/seeders/CompaniesTableSeeder.php +++ b/database/seeders/CompaniesTableSeeder.php @@ -3,10 +3,13 @@ namespace Database\Seeders; use App\Classes\ValueObjects\Constants\ApprovalStatus; +use App\Classes\ValueObjects\Constants\CompanyType; use App\Classes\ValueObjects\Constants\BusinessType; use Illuminate\Database\Seeder; -use Illuminate\Support\Facades\DB; + +use App\Models\Company; +use App\Models\CompanyModule; class CompaniesTableSeeder extends Seeder { @@ -17,19 +20,36 @@ class CompaniesTableSeeder extends Seeder */ public function run() { - DB::table('companies')->insert([ + + $companies = [ [ 'name' => 'Guang Zhou', - 'reference' => 'guangzhou', - 'type' => BusinessType::WAREHOUSE, + 'reference' => 'guangzhouwarehouse', + 'type' => CompanyType::COMPANY_BUSINESS, 'status' => ApprovalStatus::APPROVED, ], [ 'name' => 'Yiwu', - 'reference' => 'yiwu', - 'type' => BusinessType::WAREHOUSE, + 'reference' => 'yiwuwarehouse', + 'type' => CompanyType::COMPANY_BUSINESS, 'status' => ApprovalStatus::APPROVED, ] - ]); + ]; + + + if (!empty($companies)) { + foreach ($companies as $company) { + + $company = Company::create($company); + + CompanyModule::create( + [ + 'company_id' => $company->id, + 'type' => BusinessType::WAREHOUSE, + 'status' => ApprovalStatus::APPROVED, + ] + ); + } + } } } diff --git a/resources/views/swagger/json.blade.php b/resources/views/swagger/json.blade.php index d50e1d78..c2e3b0aa 100644 --- a/resources/views/swagger/json.blade.php +++ b/resources/views/swagger/json.blade.php @@ -1,768 +1 @@ -{ -"swagger": "2.0", -"info": { -"description": "Shipping Portal to manage parcel", -"version": "1.0.0", -"title": "Shipping Portal" -}, -"host": "{{request()->getHttpHost()}}", -"basePath": "/api/v1", -"tags": [ -{ -"name": "Account", -"description": "Endpoints related to user module, e.g. login, register." -}, -{ -"name": "Address", -"description": "Endpoints related to address module, e.g. create, district." -}, -{ -"name": "Company", -"description": "Endpoints related to company module." -}, -{ -"name": "Order", -"description": "Endpoints related to order module." -} -], -"schemes": [ -"http", -"https" -], -"paths": { -"/order/create": { -"post": { -"tags": [ -"Order" -], -"produces": [ -"application/json" -], -"operationId": "createOrder", -"summary": "Create order", -"description": "", -"parameters": [ -{ -"name": "company_module_id", -"in": "query", -"description": "Company Module ID", -"required": true, -"type": "integer" -}, -{ -"name": "reference", -"in": "query", -"description": "Internal reference id", -"required": true, -"type": "string" -}, -{ -"name": "reference_contract", -"in": "query", -"description": "Unity contract reference id", -"required": true, -"type": "string" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/address/create": { -"post": { -"tags": [ -"Address" -], -"produces": [ -"application/json" -], -"operationId": "createAddress", -"summary": "Create address", -"description": "", -"parameters": [ -{ -"name": "district_id", -"in": "query", -"description": "District id", -"required": true, -"type": "integer" -}, -{ -"name": "street_one", -"in": "query", -"description": "Address line 1", -"required": true, -"type": "string" -}, -{ -"name": "street_two", -"in": "query", -"description": "Address line 2", -"required": true, -"type": "string" -}, -{ -"name": "post_code", -"in": "query", -"description": "Postcode of the address", -"required": true, -"type": "string" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/address/delete/{id}": { -"delete": { -"tags": [ -"Address" -], -"produces": [ -"application/json" -], -"operationId": "deleteAddress", -"summary": "Delete address", -"description": "", -"parameters": [ -{ -"name": "id", -"in": "path", -"description": "District id", -"required": true, -"type": "string" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/address/district/list": { -"get": { -"tags": [ -"Address" -], -"produces": [ -"application/json" -], -"operationId": "listDistrictAddress", -"summary": "List districts", -"description": "", -"parameters": [ -{ -"name": "filter", -"in": "query", -"description": "Filters", -"required": false, -"type": "array", -"items": { -"type": "string" -} -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/address/list": { -"get": { -"tags": [ -"Address" -], -"produces": [ -"application/json" -], -"operationId": "listAddress", -"summary": "List addresses of logged in user", -"description": "", -"parameters": [ -{ -"name": "filter", -"in": "query", -"description": "Filters", -"required": false, -"type": "array", -"items": { -"type": "string" -} -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/address/{id}/show": { -"get": { -"tags": [ -"Address" -], -"produces": [ -"application/json" -], -"operationId": "showAddress", -"summary": "List addresses of logged in user", -"description": "", -"parameters": [ -{ -"name": "id", -"in": "path", -"description": "Address id", -"required": true, -"type": "integer" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/address/{id}/default": { -"put": { -"tags": [ -"Address" -], -"produces": [ -"application/json" -], -"operationId": "setDefaultAddress", -"summary": "Set default address", -"description": "", -"parameters": [ -{ -"name": "id", -"in": "path", -"description": "Address id", -"required": true, -"type": "integer" -}, -{ -"name": "district_id", -"in": "query", -"description": "District id", -"required": true, -"type": "integer" -}, -{ -"name": "street_one", -"in": "query", -"description": "Address line 1", -"required": true, -"type": "string" -}, -{ -"name": "street_two", -"in": "query", -"description": "Address line 2", -"required": true, -"type": "string" -}, -{ -"name": "post_code", -"in": "query", -"description": "Postcode of the address", -"required": true, -"type": "string" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/address/update/{id}": { -"put": { -"tags": [ -"Address" -], -"produces": [ -"application/json" -], -"operationId": "updateAddress", -"summary": "Set default address", -"description": "", -"parameters": [ -{ -"name": "id", -"in": "path", -"description": "Address id", -"required": true, -"type": "integer" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/account/authentication/login/check_email": { -"post": { -"tags": [ -"Account" -], -"summary": "Check if email registered", -"description": "", -"operationId": "checkEmail", -"produces": [ -"application/json", -"application/xml" -], -"parameters": [ -{ -"name": "email", -"in": "query", -"description": "email", -"required": true, -"type": "string" -} -], -"responses": { -"default": { -"description": "successful operation" -} -} -} -}, -"/account/registration/registration": { -"post": { -"tags": [ -"Account" -], -"produces": [ -"application/json" -], -"summary": "Register user into the system", -"description": "", -"parameters": [ -{ -"name": "name", -"in": "query", -"description": "The name of user", -"required": true, -"type": "string" -}, -{ -"name": "email", -"in": "query", -"description": "The email for login", -"required": true, -"type": "string", -"format": "email" -}, -{ -"name": "password", -"in": "query", -"description": "The password for login", -"required": true, -"type": "string", -"format": "password" -}, -{ -"name": "password_confirmation", -"in": "query", -"description": "The confirmation password for login", -"required": true, -"type": "string", -"format": "password" -}, -{ -"name": "type", -"in": "query", -"description": "Account type - 1:Company 2:Individual", -"required": true, -"default": 2, -"type": "integer" -}, -{ -"name": "phone", -"in": "query", -"description": "Contact phone number", -"required": true, -"type": "string" -}, -{ -"name": "contact_email", -"in": "query", -"description": "Contact email", -"required": true, -"type": "string" -}, -{ -"name": "company_name", -"in": "query", -"description": "The company name - if not defined , name of user will save as the company name", -"required": false, -"type": "string" -}, -{ -"name": "wechat_id", -"in": "query", -"description": "Contact Wechat id", -"required": false, -"type": "string" -}, -{ -"name": "files[0]", -"in": "query", -"description": "File need to convert to base64 example : 'data:application/pdf;base64,{Base64}';", -"required": true, -"type": "string" -}, -{ -"name": "identification_no", -"in": "query", -"description": "Personal identification no or company registration no", -"required": true, -"type": "string" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"400": { -"description": "Invalid username/password supplied" -} -} -} -}, -"/account/authentication/login/attempt": { -"post": { -"tags": [ -"Account" -], -"produces": [ -"application/json" -], -"summary": "Logs user into the system", -"operationId": "aaa", -"description": "", -"parameters": [ -{ -"name": "email", -"in": "query", -"description": "The user name for login", -"required": true, -"type": "string" -}, -{ -"name": "password", -"in": "query", -"description": "The password for login in clear text", -"required": true, -"type": "string" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"400": { -"description": "Invalid username/password supplied" -} -} -} -}, -"/account/authentication/logout": { -"get": { -"tags": [ -"Account" -], -"summary": "Logs out current logged in user session", -"description": "", -"operationId": "logoutUser", -"produces": [ -"application/json", -"application/xml" -], -"parameters": [], -"responses": { -"default": { -"description": "successful operation" -} -} -} -}, -"/account/user/list": { -"get": { -"tags": [ -"Account" -], -"summary": "Logs out current logged in user session", -"description": "", -"operationId": "userList", -"produces": [ -"application/json", -"application/xml" -], -"parameters": [], -"responses": { -"default": { -"description": "successful operation" -} -} -} -}, -"/company/list": { -"get": { -"tags": [ -"Company" -], -"summary": "List of Companies", -"description": "", -"operationId": "companyList", -"produces": [ -"application/json", -"application/xml" -], -"parameters": [ -{ -"name": "filter", -"in": "query", -"description": "Filters", -"required": false, -"type": "array", -"items": { -"type": "string" -} -} -], -"responses": { -"default": { -"description": "successful operation" -} -} -} -} -}, -"securityDefinitions": { -"Authorization": { -"type": "apiKey", -"name": "api_key", -"in": "header" -}, -"petstore_auth": { -"type": "oauth2", -"authorizationUrl": "https://petstore.swagger.io/oauth/authorize", -"flow": "implicit", -"scopes": { -"read:pets": "read your pets", -"write:pets": "modify pets in your account" -} -} -}, -"definitions": { -"ApiResponse": { -"type": "object", -"properties": { -"code": { -"type": "integer", -"format": "int32" -}, -"title": { -"type": "string" -}, -"message": { -"type": "string" -}, -"payload": { -"type": "object" -} -} -} -} -} +{"swagger":"2.0","info":{"description":"Shipping Portal to manage parcel","version":"1.0.0","title":"Shipping Portal"},"host":"{{request()->getHttpHost()}}","basePath":"/api/v1","tags":[{"name":"Account","description":"Endpoints related to user module, e.g. login, register."},{"name":"Address","description":"Endpoints related to address module, e.g. create, district."},{"name":"Company","description":"Endpoints related to company module."},{"name":"Flow - Registration","description":"Endpoints related to registration flow."}],"schemes":["http","https"],"paths":{"/address/create":{"post":{"tags":["Address"],"produces":["application/json"],"operationId":"createAddress","summary":"Create address","description":"","parameters":[{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/delete/{id}":{"delete":{"tags":["Address"],"produces":["application/json"],"operationId":"deleteAddress","summary":"Delete address","description":"","parameters":[{"name":"id","in":"path","description":"District id","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/district/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listDistrictAddress","summary":"List districts","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/show":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"showAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/default":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"},{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/update/{id}":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/account/authentication/login/check_email":{"post":{"tags":["Account","Flow - Registration"],"summary":"Check if email registered","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[{"name":"email","in":"query","description":"email","required":true,"type":"string"}],"responses":{"default":{"description":"successful operation"}}}},"/account/registration/registration":{"post":{"tags":["Account","Flow - Registration"],"produces":["application/json"],"summary":"Register user into the system","description":"","parameters":[{"name":"name","in":"query","description":"The name of user","required":true,"type":"string"},{"name":"email","in":"query","description":"The email for login","required":true,"type":"string","format":"email"},{"name":"password","in":"query","description":"The password for login","required":true,"type":"string","format":"password"},{"name":"password_confirmation","in":"query","description":"The confirmation password for login","required":true,"type":"string","format":"password"},{"name":"type","in":"query","description":"Company Type - PERSONAL_BUSINESS:0 , COMPANY_BUSINESS:1","required":true,"type":"integer"},{"name":"phone","in":"query","description":"Contact phone number","required":true,"type":"string"},{"name":"contact_email","in":"query","description":"Contact email","required":true,"type":"string"},{"name":"company_name","in":"query","description":"The company name - if not defined , name of user will save as the company name","required":false,"type":"string"},{"name":"business_type","in":"query","description":"Business Type - FREIGHT_FORWARDER:1, IMPORTER:2, CURRENCY_VENDOR:3, WAREHOUSE:4","required":false,"default":2,"type":"integer"},{"name":"wechat_id","in":"query","description":"Contact Wechat id","required":false,"type":"string"},{"name":"files[0]","in":"query","description":"File need to convert to base64 example : 'data:application/pdf;base64,{Base64}';","required":true,"type":"string"},{"name":"identification_no","in":"query","description":"Personal identification no or company registration no","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/login/attempt":{"post":{"tags":["Account"],"produces":["application/json"],"summary":"Logs user into the system","operationId":"aaa","description":"","parameters":[{"name":"email","in":"query","description":"The user name for login","required":true,"type":"string"},{"name":"password","in":"query","description":"The password for login in clear text","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/logout":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"logoutUser","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/account/user/list":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/company/list":{"get":{"tags":["Company"],"summary":"List of Companies","description":"example filters={\"WithCompanyModuleType\":4,\"order_by\":{\"column\":\"id\",\"DESC\":true}} | to get list of company with company_module.Type(business type) = 4(Warehouse)","operationId":"companyList","produces":["application/json","application/xml"],"parameters":[{"name":"filters","in":"query","description":"Eloquent Filter","required":false,"type":"array","items":{"type":"string"}}],"responses":{"default":{"description":"successful operation"}}}},"/company/create":{"post":{"tags":["Company"],"summary":"Create company","description":"","operationId":"companyCreate","produces":["application/json","application/xml"],"parameters":[{"name":"type","in":"query","description":"Company Type - PERSONAL_BUSINESS:0 , COMPANY_BUSINESS:1","required":true,"type":"integer","enum":[0,1]},{"name":"business_type","in":"query","description":"Business Type - FREIGHT_FORWARDER:1, IMPORTER:2, CURRENCY_VENDOR:3, WAREHOUSE:4","required":true,"type":"integer","enum":[1,2,3,4]},{"name":"name","in":"query","description":"Fill in name if type = 0","required":false,"type":"string"},{"name":"name","in":"query","description":"Fill in name if type = 0","required":false,"type":"string"},{"name":"company_name","in":"query","description":"Fill in company_name if type = 1","required":false,"type":"string"}],"responses":{"default":{"description":"successful operation"}}}}},"securityDefinitions":{"Authorization":{"type":"apiKey","name":"api_key","in":"header"},"petstore_auth":{"type":"oauth2","authorizationUrl":"https://petstore.swagger.io/oauth/authorize","flow":"implicit","scopes":{"read:pets":"read your pets","write:pets":"modify pets in your account"}}},"definitions":{"ApiResponse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"title":{"type":"string"},"message":{"type":"string"},"payload":{"type":"object"}}}}} \ No newline at end of file