Merge branch 'develop' into trunk

This commit is contained in:
Jérémy Munsch 2021-10-18 09:05:20 +02:00
commit f95e3d47c0
No known key found for this signature in database
GPG key ID: 55196BEE445F6049
11 changed files with 115 additions and 38 deletions

View file

@ -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();

View file

@ -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',
];
}
}

View file

@ -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',
];
}
}

View file

@ -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' => [

View file

@ -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

View file

@ -1,7 +1,7 @@
{
"name": "ldc/ldccrmv2client",
"type": "project",
"version": "2.1.8",
"version": "2.2.0",
"description": "LDC CRM V2",
"authors": [
{

View file

@ -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>

View file

@ -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']);

View file

@ -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();

View file

@ -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,