Skip to content

Commit

Permalink
connect mail sender with api
Browse files Browse the repository at this point in the history
  • Loading branch information
yashkanakiya committed Mar 14, 2023
1 parent 959aa25 commit aede1f7
Show file tree
Hide file tree
Showing 26 changed files with 750 additions and 1,460 deletions.
8 changes: 7 additions & 1 deletion app/Http/Requests/MailSenderRequest.php
Expand Up @@ -70,7 +70,13 @@ public function rules()

public function getMailSenderPayload()
{
return collect($this->validated())
$data = $this->validated();

if ($data['settings']['encryption'] == 'none') {
$data['settings']['encryption'] = '';
}

return collect($data)
->merge([
'company_id' => $this->header('company'),
])
Expand Down
2 changes: 1 addition & 1 deletion app/Http/Requests/SendEstimatesRequest.php
Expand Up @@ -30,7 +30,7 @@ public function rules()
'body' => [
'required',
],
'from' => [
'mail_sender_id' => [
'required',
],
'to' => [
Expand Down
2 changes: 1 addition & 1 deletion app/Http/Requests/SendInvoiceRequest.php
Expand Up @@ -30,7 +30,7 @@ public function rules()
'subject' => [
'required',
],
'from' => [
'mail_sender_id' => [
'required',
],
'to' => [
Expand Down
2 changes: 1 addition & 1 deletion app/Http/Requests/SendPaymentRequest.php
Expand Up @@ -30,7 +30,7 @@ public function rules()
'body' => [
'required',
],
'from' => [
'mail_sender_id' => [
'required',
],
'to' => [
Expand Down
9 changes: 5 additions & 4 deletions app/Mail/SendEstimateMail.php
Expand Up @@ -34,7 +34,7 @@ public function __construct($data)
public function build()
{
$log = EmailLog::create([
'from' => $this->data['from'],
'from' => $this->data['from_address'],
'to' => $this->data['to'],
'subject' => $this->data['subject'],
'body' => $this->data['body'],
Expand All @@ -47,9 +47,10 @@ public function build()

$this->data['url'] = route('estimate', ['email_log' => $log->token]);

$mailContent = $this->from($this->data['from'], config('mail.from.name'))
->subject($this->data['subject'])
->markdown('emails.send.estimate', ['data', $this->data]);
$mailContent = $this->from($this->data['from_address'], $this->data['from_name'])
->subject($this->data['subject'])
->markdown("emails.send.estimate", ['data', $this->data]);


if ($this->data['attach']['data']) {
$mailContent->attachData(
Expand Down
6 changes: 3 additions & 3 deletions app/Mail/SendInvoiceMail.php
Expand Up @@ -34,7 +34,7 @@ public function __construct($data)
public function build()
{
$log = EmailLog::create([
'from' => $this->data['from'],
'from' => $this->data['from_address'],
'to' => $this->data['to'],
'subject' => $this->data['subject'],
'body' => $this->data['body'],
Expand All @@ -47,9 +47,9 @@ public function build()

$this->data['url'] = route('invoice', ['email_log' => $log->token]);

$mailContent = $this->from($this->data['from'], config('mail.from.name'))
$mailContent = $this->from($this->data['from_address'], $this->data['from_name'])
->subject($this->data['subject'])
->markdown('emails.send.invoice', ['data', $this->data]);
->markdown("emails.send.invoice", ['data', $this->data]);

if ($this->data['attach']['data']) {
$mailContent->attachData(
Expand Down
8 changes: 4 additions & 4 deletions app/Mail/SendPaymentMail.php
Expand Up @@ -34,7 +34,7 @@ public function __construct($data)
public function build()
{
$log = EmailLog::create([
'from' => $this->data['from'],
'from' => $this->data['from_address'],
'to' => $this->data['to'],
'subject' => $this->data['subject'],
'body' => $this->data['body'],
Expand All @@ -47,9 +47,9 @@ public function build()

$this->data['url'] = route('payment', ['email_log' => $log->token]);

$mailContent = $this->from($this->data['from'], config('mail.from.name'))
->subject($this->data['subject'])
->markdown('emails.send.payment', ['data', $this->data]);
$mailContent = $this->from($this->data['from_address'], $this->data['from_name'])
->subject($this->data['subject'])
->markdown("emails.send.payment", ['data', $this->data]);

if ($this->data['attach']['data']) {
$mailContent->attachData(
Expand Down
5 changes: 3 additions & 2 deletions app/Models/Estimate.php
Expand Up @@ -5,10 +5,10 @@
use App;
use Barryvdh\DomPDF\Facade as PDF;
use Carbon\Carbon;
use Crater\Mail\SendEstimateMail;
use Crater\Services\SerialNumberFormatter;
use Crater\Traits\GeneratesPdfTrait;
use Crater\Traits\HasCustomFieldsTrait;
use Crater\Traits\MailTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Storage;
Expand All @@ -20,6 +20,7 @@
class Estimate extends Model implements HasMedia
{
use HasFactory;
use MailTrait;
use InteractsWithMedia;
use GeneratesPdfTrait;
use HasCustomFieldsTrait;
Expand Down Expand Up @@ -363,7 +364,7 @@ public function send($data)
$this->save();
}

\Mail::to($data['to'])->send(new SendEstimateMail($data));
$this->setMail('estimate', $data);

return [
'success' => true,
Expand Down
4 changes: 3 additions & 1 deletion app/Models/Invoice.php
Expand Up @@ -9,6 +9,7 @@
use Crater\Services\SerialNumberFormatter;
use Crater\Traits\GeneratesPdfTrait;
use Crater\Traits\HasCustomFieldsTrait;
use Crater\Traits\MailTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Storage;
Expand All @@ -21,6 +22,7 @@
class Invoice extends Model implements HasMedia
{
use HasFactory;
use MailTrait;
use InteractsWithMedia;
use GeneratesPdfTrait;
use HasCustomFieldsTrait;
Expand Down Expand Up @@ -464,7 +466,7 @@ public function send($data)
{
$data = $this->sendInvoiceData($data);

\Mail::to($data['to'])->send(new SendInvoiceMail($data));
$this->setMail('invoice', $data);

if ($this->status == Invoice::STATUS_DRAFT) {
$this->status = Invoice::STATUS_SENT;
Expand Down
5 changes: 3 additions & 2 deletions app/Models/Payment.php
Expand Up @@ -5,10 +5,10 @@
use Barryvdh\DomPDF\Facade as PDF;
use Carbon\Carbon;
use Crater\Jobs\GeneratePaymentPdfJob;
use Crater\Mail\SendPaymentMail;
use Crater\Services\SerialNumberFormatter;
use Crater\Traits\GeneratesPdfTrait;
use Crater\Traits\HasCustomFieldsTrait;
use Crater\Traits\MailTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\HasMedia;
Expand All @@ -18,6 +18,7 @@
class Payment extends Model implements HasMedia
{
use HasFactory;
use MailTrait;
use InteractsWithMedia;
use GeneratesPdfTrait;
use HasCustomFieldsTrait;
Expand Down Expand Up @@ -135,7 +136,7 @@ public function send($data)
{
$data = $this->sendPaymentData($data);

\Mail::to($data['to'])->send(new SendPaymentMail($data));
$this->setMail('payment', $data);

return [
'success' => true,
Expand Down
198 changes: 0 additions & 198 deletions app/Space/EnvironmentManager.php
Expand Up @@ -223,204 +223,6 @@ private function checkVersionRequirements(DatabaseEnvironmentRequest $request, $
return false;
}

/**
* Save the mail content to the .env file.
*
* @param Request $request
* @return array
*/
public function saveMailVariables(MailEnvironmentRequest $request)
{
$mailData = $this->getMailData($request);

try {
file_put_contents($this->envPath, str_replace(
$mailData['old_mail_data'],
$mailData['new_mail_data'],
file_get_contents($this->envPath)
));

if ($mailData['extra_old_mail_data']) {
file_put_contents($this->envPath, str_replace(
$mailData['extra_old_mail_data'],
$mailData['extra_mail_data'],
file_get_contents($this->envPath)
));
} else {
file_put_contents(
$this->envPath,
"\n".$mailData['extra_mail_data'],
FILE_APPEND
);
}
} catch (Exception $e) {
return [
'error' => 'mail_variables_save_error',
];
}

return [
'success' => 'mail_variables_save_successfully',
];
}

private function getMailData($request)
{
$mailFromCredential = "";
$extraMailData = "";
$extraOldMailData = "";
$oldMailData = "";
$newMailData = "";

if (env('MAIL_FROM_ADDRESS') !== null && env('MAIL_FROM_NAME') !== null) {
$mailFromCredential =
'MAIL_FROM_ADDRESS='.config('mail.from.address')."\n".
'MAIL_FROM_NAME="'.config('mail.from.name')."\"\n\n";
}

switch ($request->mail_driver) {
case 'smtp':

$oldMailData =
'MAIL_DRIVER='.config('mail.driver')."\n".
'MAIL_HOST='.config('mail.host')."\n".
'MAIL_PORT='.config('mail.port')."\n".
'MAIL_USERNAME='.config('mail.username')."\n".
'MAIL_PASSWORD='.config('mail.password')."\n".
'MAIL_ENCRYPTION='.config('mail.encryption')."\n\n".
$mailFromCredential;

$newMailData =
'MAIL_DRIVER='.$request->mail_driver."\n".
'MAIL_HOST='.$request->mail_host."\n".
'MAIL_PORT='.$request->mail_port."\n".
'MAIL_USERNAME='.$request->mail_username."\n".
'MAIL_PASSWORD='.$request->mail_password."\n".
'MAIL_ENCRYPTION='.$request->mail_encryption."\n\n".
'MAIL_FROM_ADDRESS='.$request->from_mail."\n".
'MAIL_FROM_NAME="'.$request->from_name."\"\n\n";

break;

case 'mailgun':
$oldMailData =
'MAIL_DRIVER='.config('mail.driver')."\n".
'MAIL_HOST='.config('mail.host')."\n".
'MAIL_PORT='.config('mail.port')."\n".
'MAIL_USERNAME='.config('mail.username')."\n".
'MAIL_PASSWORD='.config('mail.password')."\n".
'MAIL_ENCRYPTION='.config('mail.encryption')."\n\n".
$mailFromCredential;

$newMailData =
'MAIL_DRIVER='.$request->mail_driver."\n".
'MAIL_HOST='.$request->mail_host."\n".
'MAIL_PORT='.$request->mail_port."\n".
'MAIL_USERNAME='.config('mail.username')."\n".
'MAIL_PASSWORD='.config('mail.password')."\n".
'MAIL_ENCRYPTION='.$request->mail_encryption."\n\n".
'MAIL_FROM_ADDRESS='.$request->from_mail."\n".
'MAIL_FROM_NAME="'.$request->from_name."\"\n\n";

$extraMailData =
'MAILGUN_DOMAIN='.$request->mail_mailgun_domain."\n".
'MAILGUN_SECRET='.$request->mail_mailgun_secret."\n".
'MAILGUN_ENDPOINT='.$request->mail_mailgun_endpoint."\n";

if (env('MAILGUN_DOMAIN') !== null && env('MAILGUN_SECRET') !== null && env('MAILGUN_ENDPOINT') !== null) {
$extraOldMailData =
'MAILGUN_DOMAIN='.config('services.mailgun.domain')."\n".
'MAILGUN_SECRET='.config('services.mailgun.secret')."\n".
'MAILGUN_ENDPOINT='.config('services.mailgun.endpoint')."\n";
}

break;

case 'ses':
$oldMailData =
'MAIL_DRIVER='.config('mail.driver')."\n".
'MAIL_HOST='.config('mail.host')."\n".
'MAIL_PORT='.config('mail.port')."\n".
'MAIL_USERNAME='.config('mail.username')."\n".
'MAIL_PASSWORD='.config('mail.password')."\n".
'MAIL_ENCRYPTION='.config('mail.encryption')."\n\n".
$mailFromCredential;

$newMailData =
'MAIL_DRIVER='.$request->mail_driver."\n".
'MAIL_HOST='.$request->mail_host."\n".
'MAIL_PORT='.$request->mail_port."\n".
'MAIL_USERNAME='.config('mail.username')."\n".
'MAIL_PASSWORD='.config('mail.password')."\n".
'MAIL_ENCRYPTION='.$request->mail_encryption."\n\n".
'MAIL_FROM_ADDRESS='.$request->from_mail."\n".
'MAIL_FROM_NAME="'.$request->from_name."\"\n\n";

$extraMailData =
'SES_KEY='.$request->mail_ses_key."\n".
'SES_SECRET='.$request->mail_ses_secret."\n";

if (env('SES_KEY') !== null && env('SES_SECRET') !== null) {
$extraOldMailData =
'SES_KEY='.config('services.ses.key')."\n".
'SES_SECRET='.config('services.ses.secret')."\n";
}

break;

case 'mail':
$oldMailData =
'MAIL_DRIVER='.config('mail.driver')."\n".
'MAIL_HOST='.config('mail.host')."\n".
'MAIL_PORT='.config('mail.port')."\n".
'MAIL_USERNAME='.config('mail.username')."\n".
'MAIL_PASSWORD='.config('mail.password')."\n".
'MAIL_ENCRYPTION='.config('mail.encryption')."\n\n".
$mailFromCredential;

$newMailData =
'MAIL_DRIVER='.$request->mail_driver."\n".
'MAIL_HOST='.config('mail.host')."\n".
'MAIL_PORT='.config('mail.port')."\n".
'MAIL_USERNAME='.config('mail.username')."\n".
'MAIL_PASSWORD='.config('mail.password')."\n".
'MAIL_ENCRYPTION='.config('mail.encryption')."\n\n".
'MAIL_FROM_ADDRESS='.$request->from_mail."\n".
'MAIL_FROM_NAME="'.$request->from_name."\"\n\n";

break;

case 'sendmail':
$oldMailData =
'MAIL_DRIVER='.config('mail.driver')."\n".
'MAIL_HOST='.config('mail.host')."\n".
'MAIL_PORT='.config('mail.port')."\n".
'MAIL_USERNAME='.config('mail.username')."\n".
'MAIL_PASSWORD='.config('mail.password')."\n".
'MAIL_ENCRYPTION='.config('mail.encryption')."\n\n".
$mailFromCredential;

$newMailData =
'MAIL_DRIVER='.$request->mail_driver."\n".
'MAIL_HOST='.config('mail.host')."\n".
'MAIL_PORT='.config('mail.port')."\n".
'MAIL_USERNAME='.config('mail.username')."\n".
'MAIL_PASSWORD='.config('mail.password')."\n".
'MAIL_ENCRYPTION='.config('mail.encryption')."\n\n".
'MAIL_FROM_ADDRESS='.$request->from_mail."\n".
'MAIL_FROM_NAME="'.$request->from_name."\"\n\n";

break;
}

return [
'old_mail_data' => $oldMailData,
'new_mail_data' => $newMailData,
'extra_mail_data' => $extraMailData,
'extra_old_mail_data' => $extraOldMailData,
];
}

/**
* Save the disk content to the .env file.
*
Expand Down

0 comments on commit aede1f7

Please sign in to comment.