Kundesone/app/Http/Controllers/Mailgun/MailgunController.php

125 lines
3.2 KiB
PHP

<?php
namespace App\Http\Controllers\Mailgun;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Services\MailgunService;
use Illuminate\Support\Str;
use App\Services\CPanelApiService;
class MailgunController extends Controller
{
protected $mailgunService;
protected $cpanelApiService;
public function __construct()
{
$this->mailgunService = app(MailgunService::class); // Resolving through the service container
$this->cpanelApiService = app(CPanelApiService::class);
}
public function test(){
$domain = 'test.com';
$email = "kundesone.$domain@mailgun.kundesone.no";
dd($this->createEmail($domain,$email));
}
public function addDomain($domain)
{
try{
// $domain = $request->input('domain');
$mailgunDomain = $this->mailgunService->getDomain($domain);
if(!$mailgunDomain){
// dd($this->mailgunService->removeDomain($domain));
// dd($this->verifyDomain($request));
$response = $this->mailgunService->addDomain($domain);
return redirect()->route('showDomain',$domain);
}else{
return redirect()->route('showDomain',$domain);
}
}catch(Exception $e){
return $e->getMessage();
}
}
public function showDomain($domain){
$mailgunDomain = $this->mailgunService->getDomain($domain);
if($mailgunDomain){
return view('domains.verify-domain',[ 'domain' => $mailgunDomain]);
}else{
return ("Domain not found");
}
}
public function verifyDomain(Request $request)
{
$domain = $request->input('domain');
$response = $this->mailgunService->verifyDomain($domain);
$state = $response->getDomain()->getState();
if($state == 'unverified'){
return redirect()->route('showDomain',$domain);
}elseif($state == 'active'){
//$this->createRoute($request);
$email = "kundesone.$domain@mailgun.kundesone.no";
$this->createEmail($domain);
return redirect('/dashboard');
}
}
public function createRoute(Request $request)
{
$domain = $request->input('domain');
$forwardUrl = "https://kundesone.no/api/save-email";
$response = $this->mailgunService->createRoute($domain, $forwardUrl);
return $response;
}
public function createEmail($domain){
$email = "kundesone.$domain@mailgun.kundesone.no";
$password = Str::random(12);
$quota = 0;
$response = $this->cpanelApiService->createEmailAccount($domain, $email, $password, $quota);
if (isset($response['error'])) {
return false;
}
$company = get_company('domain',$domain);
if($company){
$company->internal_email = $email;
$company->save();
}
return $email;
}
}