add projet

This commit is contained in:
root
2026-03-05 12:29:37 -05:00
parent 8d1eef8ba8
commit 23b7db1107
9109 changed files with 1106501 additions and 73 deletions
+91
View File
@@ -0,0 +1,91 @@
<?php
namespace App\Http\Controllers\Api;
use App\Services\EmailService;
use Symfony\Component\HttpFoundation\Response;
class SendSMSController extends BaseApiController
{
protected array $carrierGateways = [
'att' => ['sms' => '@txt.att.net', 'mms' => '@mms.att.net'],
'verizon' => ['sms' => '@vtext.com', 'mms' => '@vzwpix.com'],
'tmobile' => ['sms' => '@tmomail.net', 'mms' => '@tmomail.net'],
'sprint' => ['sms' => '@messaging.sprintpcs.com', 'mms' => '@pm.sprint.com'],
'boost' => ['sms' => '@sms.myboostmobile.com', 'mms' => '@myboostmobile.com'],
'cricket' => ['sms' => '@sms.cricketwireless.net', 'mms' => '@mms.cricketwireless.net'],
'uscellular' => ['sms' => '@email.uscc.net', 'mms' => '@mms.uscc.net'],
'googlefi' => ['sms' => '@msg.fi.google.com', 'mms' => '@msg.fi.google.com'],
'virgin' => ['sms' => '@vmobl.com', 'mms' => '@vmpix.com'],
'metro' => ['sms' => '@mymetropcs.com', 'mms' => '@mymetropcs.com'],
];
public function send()
{
$data = $this->payloadData();
if (empty($data)) {
return $this->respondError('Invalid request data', Response::HTTP_BAD_REQUEST);
}
$rules = [
'phone' => 'required|regex_match[/^\\d{10}$/]',
'message' => 'required|max_length[160]',
'carrier' => 'required|in_list[att,verizon,tmobile,sprint,boost,cricket,uscellular,googlefi,virgin,metro]',
];
$errors = $this->validateRequest($data, $rules);
if (!empty($errors)) {
return $this->respondValidationError($errors);
}
$phone = preg_replace('/[^0-9]/', '', $data['phone']);
$message = $data['message'];
$carrier = strtolower($data['carrier']);
$type = $data['type'] ?? 'sms';
if (!isset($this->carrierGateways[$carrier])) {
return $this->respondError('Invalid carrier', Response::HTTP_BAD_REQUEST);
}
$gateway = $this->carrierGateways[$carrier][$type] ?? $this->carrierGateways[$carrier]['sms'];
$recipient = $phone . $gateway;
try {
/** @var EmailService $mailer */
$mailer = app(EmailService::class);
$mailer->setTo($recipient);
$mailer->setFrom(env('MAIL_FROM_ADDRESS', 'no-reply@alrahmaisgl.org'), env('MAIL_FROM_NAME', 'Alrahma Team'));
$mailer->setSubject('');
$mailer->setMessage($message);
if (!$mailer->send()) {
return $this->respondError('Failed to send SMS', Response::HTTP_INTERNAL_SERVER_ERROR);
}
return $this->success([
'phone' => $phone,
'carrier' => $carrier,
'type' => $type,
'sent' => true,
], 'SMS sent successfully');
} catch (\Throwable $e) {
log_message('error', 'SMS send error: ' . $e->getMessage());
return $this->respondError('Failed to send SMS', Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
public function carriers()
{
$carriers = [];
foreach ($this->carrierGateways as $key => $gateways) {
$carriers[] = [
'id' => $key,
'name' => ucfirst(str_replace(['us', 'google'], ['US ', 'Google '], $key)),
'sms_gateway' => $gateways['sms'],
'mms_gateway' => $gateways['mms'],
];
}
return $this->success($carriers, 'Carriers retrieved successfully');
}
}