pdv.backend/app/Http/Controllers/App/WhatsappController.php

86 lines
2.9 KiB
PHP

<?php namespace App\Http\Controllers\App;
use App\Http\Controllers\Controller;
use App\Services\WhatsappService;
use Illuminate\Http\Request;
use Notsoweb\ApiResponse\Enums\ApiResponse;
class WhatsappController extends Controller
{
public function __construct(
protected WhatsappService $whatsAppService
) {}
/**
* Enviar documento por WhatsApp
*/
public function sendDocument(Request $request)
{
$validated = $request->validate([
'phone_number' => ['required', 'string', 'regex:/^[0-9]{10,13}$/'],
'document_url' => ['required', 'url'],
'filename' => ['required', 'string', 'max:255'],
'ticket' => ['required', 'string', 'max:100'],
'customer_name' => ['required', 'string', 'max:255'],
], [
'phone_number.required' => 'El número de teléfono es obligatorio',
'phone_number.regex' => 'El número de teléfono debe tener entre 10 y 13 dígitos',
'document_url.required' => 'La URL del documento es obligatoria',
'document_url.url' => 'La URL del documento no es válida',
]);
$result = $this->whatsAppService->sendDocument(
phoneNumber: $validated['phone_number'],
documentUrl: $validated['document_url'],
filename: $validated['filename'],
userEmail: auth()->user()->email,
ticket: $validated['ticket'],
customerName: $validated['customer_name']
);
if ($result['success']) {
return ApiResponse::OK->response([
'message' => 'Documento enviado correctamente por WhatsApp',
'data' => $result
]);
}
return ApiResponse::BAD_REQUEST->response([
'message' => $result['message'],
'error' => $result['error'] ?? null
]);
}
/**
* Enviar factura por WhatsApp
*/
public function sendInvoice(Request $request)
{
$validated = $request->validate([
'phone_number' => ['required', 'string', 'regex:/^[0-9]{10,13}$/'],
'invoice_number' => ['required', 'string'],
'pdf_url' => ['required', 'url'],
'customer_name' => ['required', 'string', 'max:255'],
]);
$result = $this->whatsAppService->sendInvoice(
phoneNumber: $validated['phone_number'],
pdfUrl: $validated['pdf_url'],
invoiceNumber: $validated['invoice_number'],
customerName: $validated['customer_name']
);
if ($result['success']) {
return ApiResponse::OK->response([
'message' => 'Factura enviada correctamente por WhatsApp',
'data' => $result
]);
}
return ApiResponse::BAD_REQUEST->response([
'message' => 'Error al enviar la factura',
'error' => $result
]);
}
}