78 lines
2.7 KiB
PHP
78 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\v1;
|
|
|
|
use App\Campagne;
|
|
use App\Coupon;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\Coupons\PrintRequest;
|
|
use App\Http\Resources\StatusResource;
|
|
use App\Models\Customers;
|
|
use App\Models\PrintedWalls;
|
|
use App\Statistique;
|
|
use App\Traits\CouponTrait;
|
|
use App\Traits\GenerateBR;
|
|
use PDF;
|
|
|
|
use App\Lib\LDCCRM\ApiV1;
|
|
|
|
class CouponsController extends Controller
|
|
{
|
|
use CouponTrait;
|
|
use GenerateBR;
|
|
|
|
public function print(PrintRequest $request)
|
|
{
|
|
$datas = $request->validated();
|
|
$campagne = Campagne::find($datas['refcamp']);
|
|
$customer = Customers::find($datas['crm_id']);
|
|
$couponsToPrint = explode(",", $datas['coupons']);
|
|
|
|
if ($campagne->site->crm_token === null) {
|
|
return new StatusResource(['status' => 'KO', 'code' => 500, 'message' => 'CRM Token is missing for site_id : '. $campagne->site->site_id]);
|
|
}
|
|
|
|
if (empty($couponsToPrint)) {
|
|
return new StatusResource(['status' => 'KO', 'code' => 422, 'message' => 'Coupons not found.']);
|
|
}
|
|
|
|
$crm = new ApiV1(config('crm.CRM_ENDPOINT'), $campagne->site->crm_token);
|
|
$crmInfos = $crm->getCustomer($customer->crm_id);
|
|
if ($crmInfos->status === "OK") {
|
|
$crmInfos = $crmInfos->user;
|
|
} else {
|
|
return new StatusResource(['status' => 'KO', 'code' => 422, 'message' => 'Customer not found.']);
|
|
}
|
|
|
|
// TODO : Vérifier si les coupons sont dans la campagne
|
|
// TODO : Logs
|
|
|
|
$coupons = [];
|
|
if ($campagne->camp_type == 0) { //---- POUR LES MURS
|
|
foreach ($couponsToPrint as $key => $coupon_code) {
|
|
$cp = Coupon::where(['coupon_code' => $coupon_code])->first();
|
|
|
|
if (!$this->isUsed($cp, $campagne, $customer)) {
|
|
$coupons[] = $this->printCoupon($cp, $customer, $crmInfos);
|
|
|
|
//----- mémorise l'impression
|
|
$mur = new PrintedWalls();
|
|
$mur->camp_id = $campagne->camp_id;
|
|
$mur->customer_id = $customer->id;
|
|
$mur->coupon_id = $cp->coupon_id;
|
|
$mur->save();
|
|
|
|
//Sauvegarde de stat
|
|
$stat = new Statistique();
|
|
$stat->stat_campId = $campagne->camp_id;
|
|
$stat->stat_couponId = $cp->coupon_id;
|
|
$stat->stat_couponPrinted = 1;
|
|
$stat->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
$pdf = PDF::loadView('pdf.coupons', ['coupons' => $coupons]);
|
|
return new StatusResource(['status' => 'OK', 'pdf' => base64_encode($pdf->stream(sprintf("coupons_%s_%s_%s.pdf", $crmInfos->firstname, $crmInfos->lastname, date('d-m-Y'))))]);
|
|
}
|
|
}
|