sarga/packages/Webkul/Shop/src/Http/Controllers/SubscriptionController.php

136 lines
3.5 KiB
PHP
Raw Normal View History

2018-11-05 05:51:55 +00:00
<?php
namespace Webkul\Shop\Http\Controllers;
use Webkul\Shop\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Mail;
use Webkul\Shop\Mail\SubscriptionEmail;
use Webkul\Customer\Repositories\CustomerRepository as Customer;
use Webkul\Core\Repositories\SubscribersListRepository as Subscription;
2018-11-05 05:51:55 +00:00
/**
* Subscription controller
*
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class SubscriptionController extends Controller
{
/**
* User object
*
* @var array
*/
protected $user;
/**
* Customer Repository object
*
* @var array
*/
protected $customer;
/**
* Subscription List Repository object
*
* @var array
*/
protected $subscription;
2018-11-05 05:51:55 +00:00
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct(Customer $customer, Subscription $subscription)
2018-11-05 05:51:55 +00:00
{
$this->subscription = $subscription;
2018-11-05 05:51:55 +00:00
$this->_config = request('_config');
}
/**
* Subscribes email to the email subscription list
2018-11-05 05:51:55 +00:00
*/
public function subscribe()
2018-11-05 05:51:55 +00:00
{
$this->validate(request(), [
'email' => 'email|required'
2018-11-05 05:51:55 +00:00
]);
$email = request()->input('email');
$unique = 0;
$alreadySubscribed = $this->subscription->findWhere(['email' => $email]);
$unique = function() use($alreadySubscribed){
if($alreadySubscribed->count() > 0 ) {
return 0;
} else {
return 1;
}
};
if($unique()) {
$token = uniqid();
2018-12-13 13:21:54 +00:00
$subscriptionData['email'] = $email;
$subscriptionData['token'] = $token;
2018-12-13 13:21:54 +00:00
$mailSent = true;
2018-12-13 13:21:54 +00:00
try {
session()->flash('success', trans('shop::app.subscription.subscribed'));
Mail::send(new SubscriptionEmail($subscriptionData));
} catch(\Exception $e) {
session()->flash('error', trans('shop::app.subscription.not-subscribed'));
2018-12-13 13:21:54 +00:00
$mailSent = false;
}
2018-12-13 13:21:54 +00:00
$result = false;
2018-11-16 13:19:28 +00:00
2018-12-13 13:21:54 +00:00
if($mailSent) {
$result = $this->subscription->create([
'email' => $email,
'channel_id' => core()->getCurrentChannel()->id,
'is_subscribed' => 1,
'token' => $token
]);
2018-12-13 13:21:54 +00:00
if(!$result) {
session()->flash('error', trans('shop::app.subscription.not-subscribed'));
return redirect()->back();
}
}
} else {
session()->flash('error', trans('shop::app.subscription.already'));
}
return redirect()->back();
}
/**
* To unsubscribe from a the subcription list
*
* @var string $token
*/
public function unsubscribe($token) {
$subscriber = $this->subscription->findOneByField('token', $token);
if(isset($subscriber))
if($subscriber->count() > 0 && $subscriber->is_subscribed == 1 &&$subscriber->update(['is_subscribed' => 0])) {
session()->flash('info', trans('shop::app.subscription.unsubscribed'));
} else {
session()->flash('info', trans('shop::app.subscription.already-unsub'));
}
return redirect()->route('shop.home.index');
2018-11-05 05:51:55 +00:00
}
}