Merge branch 'develop' into trunk
This commit is contained in:
commit
f95e3d47c0
11 changed files with 115 additions and 38 deletions
|
|
@ -10,8 +10,6 @@ use App\Http\Requests\Api\V2\BaseApiRequest;
|
|||
use App\Http\Requests\Api\V2\SendArchadiaDefaultMailRequest;
|
||||
use App\Http\Requests\Api\V2\SendArchadiaGameMailRequest;
|
||||
use App\Mail\CourrierArcadiaError;
|
||||
use App\Models\Customer;
|
||||
use App\Models\CustomerInfo;
|
||||
use App\Models\Service;
|
||||
use DOMDocument;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
|
@ -30,33 +28,37 @@ use Illuminate\Support\Facades\Storage;
|
|||
*/
|
||||
class ArcadiaController extends Controller
|
||||
{
|
||||
public function outgoingMailDefault(SendArchadiaDefaultMailRequest $request, Customer $customer, Service $service)
|
||||
public function outgoingMailDefault(SendArchadiaDefaultMailRequest $request, Service $service)
|
||||
{
|
||||
$this->authorize('customerBelongsToService', $customer);
|
||||
return $this->handleArcadiaMail($request, ArcadiaMailType::default(), $customer, $service);
|
||||
return $this->handleArcadiaMail($request, ArcadiaMailType::default(), $service);
|
||||
}
|
||||
|
||||
public function outgoingMailGame(SendArchadiaGameMailRequest $request, Customer $customer, Service $service)
|
||||
public function outgoingMailGame(SendArchadiaGameMailRequest $request, Service $service)
|
||||
{
|
||||
$this->authorize('customerBelongsToService', $customer);
|
||||
return $this->handleArcadiaMail($request, ArcadiaMailType::game(), $customer, $service);
|
||||
return $this->handleArcadiaMail($request, ArcadiaMailType::game(), $service);
|
||||
}
|
||||
|
||||
private function handleArcadiaMail(
|
||||
BaseApiRequest $request,
|
||||
ArcadiaMailType $type,
|
||||
Customer $customer,
|
||||
Service $service
|
||||
ArcadiaMailType $type
|
||||
) {
|
||||
$request = $request->merge([
|
||||
'order_number' => str_pad(\intval($request->order_number), 9, '0', STR_PAD_LEFT)
|
||||
]);
|
||||
$xml = 'none';
|
||||
try {
|
||||
/** @var \App\Models\CustomerInfo $customerInfo */
|
||||
$customerInfo = $customer->info($service->brand, Customer::FIRST_OR_FAIL);
|
||||
$customerInfo = \array_intersect_key($request->all()['deliver'], [
|
||||
'email' => '',
|
||||
'firstname' => '',
|
||||
'lastname' => '',
|
||||
'address' => '',
|
||||
'address2' => '',
|
||||
'city' => '',
|
||||
'postcode' => '',
|
||||
'phone' => ''
|
||||
]);
|
||||
$orderType = ArcadiaOrderType::make(intval($request->state_order));
|
||||
$xml = $this->makeXml($request, $type, $orderType, $customer, $customerInfo);
|
||||
$xml = $this->makeXml($request, $type, $orderType, $customerInfo);
|
||||
|
||||
// Format xml
|
||||
$doc = new DOMDocument('1.0', 'utf-8');
|
||||
|
|
@ -90,16 +92,14 @@ class ArcadiaController extends Controller
|
|||
* @param SendArchadiaMailRequest $request
|
||||
* @param ArcadiaMailType $type
|
||||
* @param ArcadiaOrderType $orderType
|
||||
* @param Customer $customer
|
||||
* @param CustomerInfo $customerInfo
|
||||
* @param array $customerInfo
|
||||
* @return string
|
||||
*/
|
||||
private function makeXml(
|
||||
BaseApiRequest $request,
|
||||
ArcadiaMailType $type,
|
||||
ArcadiaOrderType $orderType,
|
||||
Customer $customer,
|
||||
CustomerInfo $customerInfo
|
||||
array $customerInfo
|
||||
): string {
|
||||
return view(
|
||||
'mail.arcadiaOrders.default',
|
||||
|
|
@ -107,7 +107,6 @@ class ArcadiaController extends Controller
|
|||
'request' => $request,
|
||||
'type' => $type,
|
||||
'orderType' => $orderType,
|
||||
'customer' => $customer,
|
||||
'customerInfo' => $customerInfo
|
||||
]
|
||||
)->render();
|
||||
|
|
|
|||
|
|
@ -19,6 +19,14 @@ class SendArchadiaDefaultMailRequest extends BaseApiRequest
|
|||
'order_num' => RemoveNonNumeric::class,
|
||||
'package_unit_weight' => RemoveNonNumeric::class,
|
||||
'support_code' => Trim::class,
|
||||
'deliver.firstname' => Trim::class,
|
||||
'deliver.lastname' => Trim::class,
|
||||
'deliver.email' => Trim::class,
|
||||
'deliver.address' => Trim::class,
|
||||
'deliver.address2' => Trim::class,
|
||||
'deliver.city' => Trim::class,
|
||||
'deliver.postcode' => Trim::class,
|
||||
'deliver.phone' => Trim::class
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
@ -39,6 +47,15 @@ class SendArchadiaDefaultMailRequest extends BaseApiRequest
|
|||
new EnumIsValidRule(ArcadiaOrderType::class)
|
||||
],
|
||||
'support_code' => 'required|int',
|
||||
'deliver' => 'required|array',
|
||||
'deliver.firstname' => 'required|string|min:2',
|
||||
'deliver.lastname' => 'required|string|min:2',
|
||||
'deliver.email' => 'required|email:rfc,dns,spoof,filter',
|
||||
'deliver.address' => 'required|string|min:2',
|
||||
'deliver.address2' => 'sometimes|string|min:2',
|
||||
'deliver.city' => 'required|string|min:2',
|
||||
'deliver.postcode' => 'required|string|min:5',
|
||||
'deliver.phone' => 'required|string',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,15 @@ class SendArchadiaGameMailRequest extends BaseApiRequest
|
|||
'operation' => Trim::class,
|
||||
'order_date' => Trim::class,
|
||||
'support_code' => Trim::class,
|
||||
'type' => Trim::class
|
||||
'type' => Trim::class,
|
||||
'deliver.firstname' => Trim::class,
|
||||
'deliver.lastname' => Trim::class,
|
||||
'deliver.email' => Trim::class,
|
||||
'deliver.address' => Trim::class,
|
||||
'deliver.address2' => Trim::class,
|
||||
'deliver.city' => Trim::class,
|
||||
'deliver.postcode' => Trim::class,
|
||||
'deliver.phone' => Trim::class
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
@ -32,7 +40,16 @@ class SendArchadiaGameMailRequest extends BaseApiRequest
|
|||
'label_type_support' => 'required|string',
|
||||
'operation' => 'required|int',
|
||||
'order_date' => 'required|date',
|
||||
'support_code' => 'required|int'
|
||||
'support_code' => 'required|int',
|
||||
'deliver' => 'required|array',
|
||||
'deliver.firstname' => 'required|string|min:2',
|
||||
'deliver.lastname' => 'required|string|min:2',
|
||||
'deliver.email' => 'required|email:rfc,dns,spoof,filter',
|
||||
'deliver.address' => 'required|string|min:2',
|
||||
'deliver.address2' => 'sometimes|string|min:2',
|
||||
'deliver.city' => 'required|string|min:2',
|
||||
'deliver.postcode' => 'required|digits:5',
|
||||
'deliver.phone' => 'required|string',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ class StoreCustomerRequest extends BaseApiRequest
|
|||
->uncompromised()
|
||||
],
|
||||
'birth_date' => 'required|date_format:Y-m-d',
|
||||
'address' => 'sometimes|string',
|
||||
'address' => 'sometimes|required_with:address2|string',
|
||||
'address2' => 'sometimes|string',
|
||||
'phone' => 'sometimes|string',
|
||||
'country' => [
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ use Illuminate\Bus\Queueable;
|
|||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\Middleware\WithoutOverlapping;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class SetServiceStats implements ShouldQueue
|
||||
|
|
@ -17,6 +18,9 @@ class SetServiceStats implements ShouldQueue
|
|||
use Queueable;
|
||||
use SerializesModels;
|
||||
|
||||
/** Used to prevent overlaping */
|
||||
private const JOBKEY = 95563222;
|
||||
|
||||
/** @var \App\Models\Service */
|
||||
protected $service;
|
||||
|
||||
|
|
@ -45,4 +49,9 @@ class SetServiceStats implements ShouldQueue
|
|||
$serviceStat->nb_calls += 1;
|
||||
$serviceStat->saveOrFail();
|
||||
}
|
||||
|
||||
public function middleware()
|
||||
{
|
||||
return [(new WithoutOverlapping(self::JOBKEY))->releaseAfter(30)];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 639e6eacebdf4dfa9140429c49db9053052093bc
|
||||
Subproject commit c9572314aac3819994e8fd81b918a2075fac1ac7
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "ldc/ldccrmv2client",
|
||||
"type": "project",
|
||||
"version": "2.1.8",
|
||||
"version": "2.2.0",
|
||||
"description": "LDC CRM V2",
|
||||
"authors": [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<EXPORT_ARCADIA>
|
||||
<COMMANDE>
|
||||
<Email_conso><![CDATA[{{ $customer->email }}]]></Email_conso>
|
||||
<Email_conso><![CDATA[{{ $customerInfo['email'] }}]]></Email_conso>
|
||||
<CIVILITE></CIVILITE>
|
||||
<NOM><![CDATA[{{ $customerInfo->lastname }}]]></NOM>
|
||||
<Prenom><![CDATA[{{ $customerInfo->firstname }}]]></Prenom>
|
||||
<Adresse><![CDATA[{{ $customerInfo->address }}]]></Adresse>
|
||||
<Adresse_Complementaire><![CDATA[{{ $customerInfo->address2 }}]]></Adresse_Complementaire>
|
||||
<CP><![CDATA[{{ $customerInfo->postcode }}]]></CP>
|
||||
<Ville><![CDATA[{{ $customerInfo->city }}]]></Ville>
|
||||
<Telephone><![CDATA[{{ $customerInfo->phone }}]]></Telephone>
|
||||
<NOM><![CDATA[{{ $customerInfo['lastname'] }}]]></NOM>
|
||||
<Prenom><![CDATA[{{ $customerInfo['firstname'] }}]]></Prenom>
|
||||
<Adresse><![CDATA[{{ $customerInfo['address'] }}]]></Adresse>
|
||||
<Adresse_Complementaire><![CDATA[{{ $customerInfo['address2'] }}]]></Adresse_Complementaire>
|
||||
<CP><![CDATA[{{ $customerInfo['postcode'] }}]]></CP>
|
||||
<Ville><![CDATA[{{ $customerInfo['city'] }}]]></Ville>
|
||||
<Telephone><![CDATA[{{ $customerInfo['phone'] }}]]></Telephone>
|
||||
@if($type->equals(ArcadiaMailType::default()))
|
||||
@if($orderType->equals(ArcadiaOrderType::cb()))
|
||||
<Etat_Commande_CB>1</Etat_Commande_CB>
|
||||
|
|
|
|||
|
|
@ -55,9 +55,9 @@ Route::prefix('v2')->name('apiV2.')->group(function () {
|
|||
});
|
||||
});
|
||||
Route::prefix('arcadia')->name('arcadia.')->group(function () {
|
||||
Route::post('/outgoing-mail/{customer}/default', [V2ArcadiaController::class, 'outgoingMailDefault'])
|
||||
Route::post('/outgoing-mail/default', [V2ArcadiaController::class, 'outgoingMailDefault'])
|
||||
->name('outgoingMailDefault');
|
||||
Route::post('/outgoing-mail/{customer}/game', [V2ArcadiaController::class, 'outgoingMailGame'])
|
||||
Route::post('/outgoing-mail/game', [V2ArcadiaController::class, 'outgoingMailGame'])
|
||||
->name('outgoingMailGame');
|
||||
});
|
||||
Route::apiResource('questions', V2QuestionController::class)->only(['index']);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,16 @@ class ArcadiaTest extends ApiBase
|
|||
{
|
||||
extract($this->getCustomer());
|
||||
$data = [
|
||||
'deliver' => [
|
||||
'email' => $customer->email,
|
||||
'firstname' => $info->firstname,
|
||||
'lastname' => $info->lastname,
|
||||
'phone' => $info->phone,
|
||||
'address' => $info->address,
|
||||
'address2' => $info->address2,
|
||||
'city' => $info->city,
|
||||
'postcode' => $info->postcode,
|
||||
],
|
||||
'operation' => 16,
|
||||
'label_type_support' => 'Send Departaimants',
|
||||
'order_date' => \date('Y/m/d H:i:s'),
|
||||
|
|
@ -30,8 +40,7 @@ class ArcadiaTest extends ApiBase
|
|||
'package_unit_weight' => 200,
|
||||
];
|
||||
$response = $this->callApiWithToken($service, 'post', route(
|
||||
'apiV2.arcadia.outgoingMailDefault',
|
||||
compact('customer')
|
||||
'apiV2.arcadia.outgoingMailDefault'
|
||||
), $data);
|
||||
$json = $response->decodeResponseJson();
|
||||
|
||||
|
|
@ -42,6 +51,16 @@ class ArcadiaTest extends ApiBase
|
|||
{
|
||||
extract($this->getCustomer());
|
||||
$data = [
|
||||
'deliver' => [
|
||||
'email' => $customer->email,
|
||||
'firstname' => $info->firstname,
|
||||
'lastname' => $info->lastname,
|
||||
'phone' => $info->phone,
|
||||
'address' => $info->address,
|
||||
'address2' => $info->address2,
|
||||
'city' => $info->city,
|
||||
'postcode' => $info->postcode,
|
||||
],
|
||||
'operation' => 16,
|
||||
'order_date' => date('Y/m/d H:i:s'),
|
||||
'support_code' => 32,
|
||||
|
|
@ -51,7 +70,6 @@ class ArcadiaTest extends ApiBase
|
|||
];
|
||||
$response = $this->callApiWithToken($service, 'post', route(
|
||||
'apiV2.arcadia.outgoingMailGame',
|
||||
compact('customer')
|
||||
), $data);
|
||||
$json = $response->decodeResponseJson();
|
||||
|
||||
|
|
|
|||
|
|
@ -14,8 +14,16 @@ class CrmClientV2ArcadiaTest extends CrmClientTester
|
|||
{
|
||||
$api = new CrmApiV2();
|
||||
$customer = $api->getCustomerOrNew(static::$info->hashcode);
|
||||
|
||||
dump(static::$info->postcode);
|
||||
$arcadiaOrderMail = new ArcadiaMailDefault([
|
||||
'email' => static::$customer->email,
|
||||
'firstname' => static::$info->firstname,
|
||||
'lastname' => static::$info->lastname,
|
||||
'phone' => static::$info->phone,
|
||||
'address' => static::$info->address,
|
||||
'address2' => static::$info->address2,
|
||||
'city' => static::$info->city,
|
||||
'postcode' => static::$info->postcode,
|
||||
'operation' => 16,
|
||||
'label_type_support' => 'Send Departaimants',
|
||||
'order_date' => \date('Y/m/d H:i:s'),
|
||||
|
|
@ -32,7 +40,16 @@ class CrmClientV2ArcadiaTest extends CrmClientTester
|
|||
{
|
||||
$api = new CrmApiV2();
|
||||
$customer = $api->getCustomerOrNew(static::$info->hashcode);
|
||||
dump(static::$info->postcode);
|
||||
$arcadiaOrderMail = new ArcadiaMailGame([
|
||||
'email' => static::$customer->email,
|
||||
'firstname' => static::$info->firstname,
|
||||
'lastname' => static::$info->lastname,
|
||||
'phone' => static::$info->phone,
|
||||
'address' => static::$info->address,
|
||||
'address2' => static::$info->address2,
|
||||
'city' => static::$info->city,
|
||||
'postcode' => static::$info->postcode,
|
||||
'operation' => 16,
|
||||
'order_date' => date('Y/m/d H:i:s'),
|
||||
'support_code' => 32,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue