shell bypass 403
<?php
namespace App\Http\Controllers\Customer;
use App\Http\Requests\Campaigns\CampaignBuilderRequest;
use App\Http\Requests\Campaigns\ImportRequest;
use App\Http\Requests\Campaigns\ImportVoiceRequest;
use App\Http\Requests\Campaigns\MMSCampaignBuilderRequest;
use App\Http\Requests\Campaigns\MMSImportRequest;
use App\Http\Requests\Campaigns\MMSQuickSendRequest;
use App\Http\Requests\Campaigns\QuickSendRequest;
use App\Http\Requests\Campaigns\VoiceCampaignBuilderRequest;
use App\Http\Requests\Campaigns\VoiceQuickSendRequest;
use App\Http\Requests\Campaigns\WhatsAppCampaignBuilderRequest;
use App\Http\Requests\Campaigns\WhatsAppQuickSendRequest;
use App\Library\Tool;
use App\Models\Campaigns;
use App\Models\ContactGroups;
use App\Models\CsvData;
use App\Models\PhoneNumbers;
use App\Models\Plan;
use App\Models\PlansCoverageCountries;
use App\Models\PlansSendingServer;
use App\Models\Senderid;
use App\Models\SendingServer;
use App\Models\Templates;
use App\Models\TemplateTags;
use App\Repositories\Contracts\CampaignRepository;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use libphonenumber\NumberParseException;
use libphonenumber\PhoneNumberUtil;
use Maatwebsite\Excel\Facades\Excel;
use stdClass;
class CampaignController extends CustomerBaseController
{
protected CampaignRepository $campaigns;
/**
* CampaignController constructor.
*
* @param CampaignRepository $campaigns
*/
public function __construct(CampaignRepository $campaigns)
{
$this->campaigns = $campaigns;
}
/**
* quick send message
*
*
* @param Request $request
*
* @return Application|Factory|View|RedirectResponse
* @throws AuthorizationException
*/
public function quickSend(Request $request): View|Factory|RedirectResponse|Application
{
$this->authorize('sms_quick_send');
if (isset($request->recipient)) {
$phone = str_replace(['(', ')', '+', '-', ' '], '', $request->recipient);
try {
$phoneUtil = PhoneNumberUtil::getInstance();
$phoneNumberObject = $phoneUtil->parse('+'.$phone);
if ( ! $phoneUtil->isPossibleNumber($phoneNumberObject)) {
return redirect()->route('customer.subscriptions.index')->with([
'status' => 'error',
'message' => __('locale.customer.invalid_phone_number'),
]);
}
$recipient = $phoneNumberObject->getNationalNumber();
} catch (NumberParseException $e) {
return redirect()->route('customer.subscriptions.index')->with([
'status' => 'error',
'message' => $e->getMessage(),
]);
}
} else {
$recipient = null;
}
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.SMS')],
['name' => __('locale.menu.Quick Send')],
];
if (Auth::user()->customer->getOption('sender_id_verification') == 'yes') {
$sender_ids = Senderid::where('user_id', auth()->user()->id)->where('status', 'active')->cursor();
} else {
$sender_ids = null;
}
$phone_numbers = PhoneNumbers::where('user_id', auth()->user()->id)->where('status', 'assigned')->cursor();
if ( ! Auth::user()->customer->activeSubscription()) {
return redirect()->route('customer.subscriptions.index')->with([
'status' => 'error',
'message' => __('locale.customer.no_active_subscription'),
]);
}
$plan_id = Auth::user()->customer->activeSubscription()->plan_id;
// Check the customer has permissions using sending servers and has his own sending servers
if (Auth::user()->customer->getOption('create_sending_server') == 'yes') {
if (PlansSendingServer::where('plan_id', $plan_id)->count()) {
$sending_server = SendingServer::where('user_id', Auth::user()->id)->where('plain', 1)->where('status', true)->get();
if ($sending_server->count() == 0) {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('plain', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('plain', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
// If customer don't have permission creating sending servers
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('plain', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
$coverage = PlansCoverageCountries::where('plan_id', $plan_id)->where('status', true)->cursor();
return view('customer.Campaigns.quickSend', compact('breadcrumbs', 'sender_ids', 'phone_numbers', 'recipient', 'sending_server', 'coverage'));
}
/**
* quick send message
*
* @param Campaigns $campaign
* @param QuickSendRequest $request
*
* @return RedirectResponse
*/
public function postQuickSend(Campaigns $campaign, QuickSendRequest $request): RedirectResponse
{
if (config('app.stage') == 'demo') {
return redirect()->route('customer.sms.quick_send')->with([
'status' => 'error',
'message' => 'Sorry! This option is not available in demo mode',
]);
}
if (Auth::user()->customer->activeSubscription()) {
$plan = Plan::where('status', true)->find(Auth::user()->customer->activeSubscription()->plan_id);
if ( ! $plan) {
return redirect()->route('customer.sms.quick_send')->with([
'status' => 'error',
'message' => 'Purchased plan is not active. Please contact support team.',
]);
}
}
$data = $this->campaigns->quickSend($campaign, $request->except('_token'));
if ($data->getData()->status == 'error') {
return redirect()->route('customer.sms.quick_send')->with([
'status' => 'error',
'message' => $data->getData()->message,
]);
}
return redirect()->route('customer.reports.sent')->with([
'status' => $data->getData()->status,
'message' => $data->getData()->message,
]);
}
/**
* campaign builder
*
* @return Application|Factory|View|RedirectResponse
* @throws AuthorizationException
*/
public function campaignBuilder(): View|Factory|RedirectResponse|Application
{
$this->authorize('sms_campaign_builder');
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.SMS')],
['name' => __('locale.menu.Campaign Builder')],
];
if (Auth::user()->customer->getOption('sender_id_verification') == 'yes') {
$sender_ids = Senderid::where('user_id', auth()->user()->id)->where('status', 'active')->cursor();
} else {
$sender_ids = null;
}
$phone_numbers = PhoneNumbers::where('user_id', auth()->user()->id)->where('status', 'assigned')->cursor();
$template_tags = TemplateTags::cursor();
$contact_groups = ContactGroups::where('status', 1)->where('customer_id', auth()->user()->id)->cursor();
$templates = Templates::where('user_id', auth()->user()->id)->where('status', 1)->cursor();
if ( ! Auth::user()->customer->activeSubscription()) {
return redirect()->route('customer.subscriptions.index')->with([
'status' => 'error',
'message' => __('locale.customer.no_active_subscription'),
]);
}
$plan_id = Auth::user()->customer->activeSubscription()->plan_id;
// Check the customer has permissions using sending servers and has his own sending servers
if (Auth::user()->customer->getOption('create_sending_server') == 'yes') {
if (PlansSendingServer::where('plan_id', $plan_id)->count()) {
$sending_server = SendingServer::where('user_id', Auth::user()->id)->where('plain', 1)->where('status', true)->get();
if ($sending_server->count() == 0) {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('plain', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('plain', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
// If customer don't have permission creating sending servers
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('plain', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
$coverage = PlansCoverageCountries::where('plan_id', $plan_id)->where('status', true)->cursor();
return view('customer.Campaigns.campaignBuilder', compact('breadcrumbs', 'sender_ids', 'phone_numbers', 'template_tags', 'contact_groups', 'templates', 'coverage', 'sending_server', 'plan_id'));
}
/**
* template info not found
*
* @param Templates $template
* @param $id
*
* @return JsonResponse
*/
public function templateData(Templates $template, $id): JsonResponse
{
$data = $template->where('user_id', auth()->user()->id)->find($id);
if ($data) {
return response()->json([
'status' => 'success',
'message' => $data->message,
]);
}
return response()->json([
'status' => 'error',
'message' => __('locale.templates.template_info_not_found'),
]);
}
/**
* store campaign
*
*
* @param Campaigns $campaign
* @param CampaignBuilderRequest $request
*
* @return RedirectResponse
*/
public function storeCampaign(Campaigns $campaign, CampaignBuilderRequest $request): RedirectResponse
{
if (config('app.stage') == 'demo') {
return redirect()->route('customer.sms.campaign_builder')->with([
'status' => 'error',
'message' => 'Sorry! This option is not available in demo mode',
]);
}
if (Auth::user()->customer->activeSubscription()) {
$plan = Plan::where('status', true)->find(Auth::user()->customer->activeSubscription()->plan_id);
if ( ! $plan) {
return redirect()->route('customer.sms.campaign_builder')->with([
'status' => 'error',
'message' => 'Purchased plan is not active. Please contact support team.',
]);
}
}
$data = $this->campaigns->campaignBuilder($campaign, $request->except('_token'));
if (isset($data->getData()->status)) {
if ($data->getData()->status == 'success') {
return redirect()->route('customer.reports.campaigns')->with([
'status' => 'success',
'message' => $data->getData()->message,
]);
}
return redirect()->route('customer.sms.campaign_builder')->with([
'status' => 'error',
'message' => $data->getData()->message,
]);
}
return redirect()->route('customer.sms.campaign_builder')->with([
'status' => 'error',
'message' => __('locale.exceptions.something_went_wrong'),
]);
}
/**
* send message using file
*
* @return Application|Factory|View|RedirectResponse
* @throws AuthorizationException
*/
public function import(): View|Factory|RedirectResponse|Application
{
$this->authorize('sms_bulk_messages');
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.SMS')],
['name' => __('locale.menu.Send Using File')],
];
if (Auth::user()->customer->getOption('sender_id_verification') == 'yes') {
$sender_ids = Senderid::where('user_id', auth()->user()->id)->where('status', 'active')->cursor();
} else {
$sender_ids = null;
}
$phone_numbers = PhoneNumbers::where('user_id', auth()->user()->id)->where('status', 'assigned')->cursor();
if ( ! Auth::user()->customer->activeSubscription()) {
return redirect()->route('customer.subscriptions.index')->with([
'status' => 'error',
'message' => __('locale.customer.no_active_subscription'),
]);
}
$plan_id = Auth::user()->customer->activeSubscription()->plan_id;
// Check the customer has permissions using sending servers and has his own sending servers
if (Auth::user()->customer->getOption('create_sending_server') == 'yes') {
if (PlansSendingServer::where('plan_id', $plan_id)->count()) {
$sending_server = SendingServer::where('user_id', Auth::user()->id)->where('plain', 1)->where('status', true)->get();
if ($sending_server->count() == 0) {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('plain', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('plain', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
// If customer don't have permission creating sending servers
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('plain', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
return view('customer.Campaigns.import', compact('breadcrumbs', 'sender_ids', 'phone_numbers', 'sending_server', 'plan_id'));
}
/**
* send message using file
*
* @param ImportRequest $request
*
* @return Application|Factory|View|RedirectResponse
*/
public function importCampaign(ImportRequest $request): View|Factory|RedirectResponse|Application
{
if ($request->file('import_file')->isValid()) {
$form_data = $request->except('_token', 'import_file');
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.SMS')],
['name' => __('locale.menu.Send Using File')],
];
$data = Excel::toArray(new stdClass(), $request->file('import_file'))[0];
$csv_data_file = CsvData::create([
'user_id' => Auth::user()->id,
'ref_id' => uniqid(),
'ref_type' => CsvData::TYPE_CAMPAIGN,
'csv_filename' => $request->file('import_file')->getClientOriginalName(),
'csv_header' => $request->has('header'),
'csv_data' => json_encode($data),
]);
$csv_data = array_slice($data, 0, 2);
return view('customer.Campaigns.import_fields', compact('csv_data', 'csv_data_file', 'breadcrumbs', 'form_data'));
}
return redirect()->route('customer.sms.import')->with([
'status' => 'error',
'message' => __('locale.settings.invalid_file'),
]);
}
/**
* import processed file
*
* @param Campaigns $campaign
* @param Request $request
*
* @return RedirectResponse
*/
public function importProcess(Campaigns $campaign, Request $request): RedirectResponse
{
if (config('app.stage') == 'demo') {
return redirect()->route('customer.sms.import')->with([
'status' => 'error',
'message' => 'Sorry! This option is not available in demo mode',
]);
}
if (Auth::user()->customer->activeSubscription()) {
$plan = Plan::where('status', true)->find(Auth::user()->customer->activeSubscription()->plan_id);
if ( ! $plan) {
return redirect()->route('customer.sms.import')->with([
'status' => 'error',
'message' => 'Purchased plan is not active. Please contact support team.',
]);
}
}
$form_data = json_decode($request->form_data, true);
$data = $this->campaigns->sendUsingFile($campaign, $request->except('_token'));
if (isset($data->getData()->status)) {
if ($form_data['sms_type'] == 'whatsapp') {
return redirect()->route('customer.whatsapp.import')->with([
'status' => $data->getData()->status,
'message' => $data->getData()->message,
]);
}
if ($form_data['sms_type'] == 'voice') {
return redirect()->route('customer.voice.import')->with([
'status' => $data->getData()->status,
'message' => $data->getData()->message,
]);
}
if ($form_data['sms_type'] == 'mms') {
return redirect()->route('customer.mms.import')->with([
'status' => $data->getData()->status,
'message' => $data->getData()->message,
]);
}
return redirect()->route('customer.sms.import')->with([
'status' => $data->getData()->status,
'message' => $data->getData()->message,
]);
}
if ($form_data['sms_type'] == 'whatsapp') {
return redirect()->route('customer.whatsapp.import')->with([
'status' => 'error',
'message' => __('locale.exceptions.something_went_wrong'),
]);
}
if ($form_data['sms_type'] == 'mms') {
return redirect()->route('customer.mms.import')->with([
'status' => 'error',
'message' => __('locale.exceptions.something_went_wrong'),
]);
}
if ($form_data['sms_type'] == 'voice') {
return redirect()->route('customer.voice.import')->with([
'status' => 'error',
'message' => __('locale.exceptions.something_went_wrong'),
]);
}
return redirect()->route('customer.sms.import')->with([
'status' => 'error',
'message' => __('locale.exceptions.something_went_wrong'),
]);
}
/*
|--------------------------------------------------------------------------
| voice module
|--------------------------------------------------------------------------
|
|
|
*/
/**
* @param Request $request
*
* @return Application|Factory|View|RedirectResponse
* @throws AuthorizationException
*/
public function voiceQuickSend(Request $request): View|Factory|RedirectResponse|Application
{
$this->authorize('voice_quick_send');
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.Voice')],
['name' => __('locale.menu.Quick Send')],
];
if (Auth::user()->customer->getOption('sender_id_verification') == 'yes') {
$sender_ids = Senderid::where('user_id', auth()->user()->id)->where('status', 'active')->cursor();
} else {
$sender_ids = null;
}
$phone_numbers = PhoneNumbers::where('user_id', auth()->user()->id)->where('status', 'assigned')->cursor();
if ( ! Auth::user()->customer->activeSubscription()) {
return redirect()->route('customer.subscriptions.index')->with([
'status' => 'error',
'message' => __('locale.customer.no_active_subscription'),
]);
}
$plan_id = Auth::user()->customer->activeSubscription()->plan_id;
// Check the customer has permissions using sending servers and has his own sending servers
if (Auth::user()->customer->getOption('create_sending_server') == 'yes') {
if (PlansSendingServer::where('plan_id', $plan_id)->count()) {
$sending_server = SendingServer::where('user_id', Auth::user()->id)->where('voice', 1)->where('status', true)->get();
if ($sending_server->count() == 0) {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('voice', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('voice', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
// If customer don't have permission creating sending servers
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('voice', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
$coverage = PlansCoverageCountries::where('plan_id', $plan_id)->where('status', true)->cursor();
$recipient = $request->recipient;
return view('customer.Campaigns.voiceQuickSend', compact('breadcrumbs', 'sender_ids', 'phone_numbers', 'recipient', 'sending_server', 'coverage'));
}
/**
* quick send message
*
* @param Campaigns $campaign
* @param VoiceQuickSendRequest $request
*
* @return RedirectResponse
*/
public function postVoiceQuickSend(Campaigns $campaign, VoiceQuickSendRequest $request): RedirectResponse
{
if (config('app.stage') == 'demo') {
return redirect()->route('customer.voice.quick_send')->with([
'status' => 'error',
'message' => 'Sorry! This option is not available in demo mode',
]);
}
if (Auth::user()->customer->activeSubscription()) {
$plan = Plan::where('status', true)->find(Auth::user()->customer->activeSubscription()->plan_id);
if ( ! $plan) {
return redirect()->route('customer.voice.quick_send')->with([
'status' => 'error',
'message' => 'Purchased plan is not active. Please contact support team.',
]);
}
} else {
return redirect()->route('customer.voice.quick_send')->with([
'status' => 'error',
'message' => __('locale.customer.no_active_subscription'),
]);
}
$data = $this->campaigns->quickSend($campaign, $request->except('_token'));
if ($data->getData()->status == 'success') {
return redirect()->route('customer.reports.sent')->with([
'status' => 'success',
'message' => $data->getData()->message,
]);
}
return redirect()->route('customer.reports.sent')->with([
'status' => $data->getData()->status,
'message' => $data->getData()->message,
]);
}
/**
* @return Application|Factory|View|RedirectResponse
* @throws AuthorizationException
*/
public function voiceCampaignBuilder(): View|Factory|RedirectResponse|Application
{
$this->authorize('sms_campaign_builder');
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.Voice')],
['name' => __('locale.menu.Campaign Builder')],
];
if (Auth::user()->customer->getOption('sender_id_verification') == 'yes') {
$sender_ids = Senderid::where('user_id', auth()->user()->id)->where('status', 'active')->cursor();
} else {
$sender_ids = null;
}
$phone_numbers = PhoneNumbers::where('user_id', auth()->user()->id)->where('status', 'assigned')->cursor();
$template_tags = TemplateTags::cursor();
$contact_groups = ContactGroups::where('status', 1)->where('customer_id', auth()->user()->id)->cursor();
$templates = Templates::where('user_id', auth()->user()->id)->where('status', 1)->cursor();
if ( ! Auth::user()->customer->activeSubscription()) {
return redirect()->route('customer.subscriptions.index')->with([
'status' => 'error',
'message' => __('locale.customer.no_active_subscription'),
]);
}
$plan_id = Auth::user()->customer->activeSubscription()->plan_id;
// Check the customer has permissions using sending servers and has his own sending servers
if (Auth::user()->customer->getOption('create_sending_server') == 'yes') {
if (PlansSendingServer::where('plan_id', $plan_id)->count()) {
$sending_server = SendingServer::where('user_id', Auth::user()->id)->where('voice', 1)->where('status', true)->get();
if ($sending_server->count() == 0) {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('voice', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('voice', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
// If customer don't have permission creating sending servers
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('voice', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
$coverage = PlansCoverageCountries::where('plan_id', $plan_id)->where('status', true)->cursor();
return view('customer.Campaigns.voiceCampaignBuilder', compact('breadcrumbs', 'sender_ids', 'phone_numbers', 'template_tags', 'contact_groups', 'templates', 'sending_server', 'coverage', 'plan_id'));
}
/**
* store campaign
*
*
* @param Campaigns $campaign
* @param VoiceCampaignBuilderRequest $request
*
* @return RedirectResponse
*/
public function storeVoiceCampaign(Campaigns $campaign, VoiceCampaignBuilderRequest $request): RedirectResponse
{
if (config('app.stage') == 'demo') {
return redirect()->route('customer.voice.campaign_builder')->with([
'status' => 'error',
'message' => 'Sorry! This option is not available in demo mode',
]);
}
if (Auth::user()->customer->activeSubscription()) {
$plan = Plan::where('status', true)->find(Auth::user()->customer->activeSubscription()->plan_id);
if ( ! $plan) {
return redirect()->route('customer.voice.campaign_builder')->with([
'status' => 'error',
'message' => 'Purchased plan is not active. Please contact support team.',
]);
}
}
$data = $this->campaigns->campaignBuilder($campaign, $request->except('_token'));
if (isset($data->getData()->status)) {
if ($data->getData()->status == 'success') {
return redirect()->route('customer.reports.campaigns')->with([
'status' => 'success',
'message' => $data->getData()->message,
]);
}
return redirect()->route('customer.voice.campaign_builder')->with([
'status' => 'error',
'message' => $data->getData()->message,
]);
}
return redirect()->route('customer.voice.campaign_builder')->with([
'status' => 'error',
'message' => __('locale.exceptions.something_went_wrong'),
]);
}
/**
* @return Application|Factory|View|RedirectResponse
* @throws AuthorizationException
*/
public function voiceImport(): View|Factory|RedirectResponse|Application
{
$this->authorize('sms_bulk_messages');
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.Voice')],
['name' => __('locale.menu.Send Using File')],
];
if (Auth::user()->customer->getOption('sender_id_verification') == 'yes') {
$sender_ids = Senderid::where('user_id', auth()->user()->id)->where('status', 'active')->cursor();
} else {
$sender_ids = null;
}
$phone_numbers = PhoneNumbers::where('user_id', auth()->user()->id)->where('status', 'assigned')->cursor();
if ( ! Auth::user()->customer->activeSubscription()) {
return redirect()->route('customer.subscriptions.index')->with([
'status' => 'error',
'message' => __('locale.customer.no_active_subscription'),
]);
}
$plan_id = Auth::user()->customer->activeSubscription()->plan_id;
// Check the customer has permissions using sending servers and has his own sending servers
if (Auth::user()->customer->getOption('create_sending_server') == 'yes') {
if (PlansSendingServer::where('plan_id', $plan_id)->count()) {
$sending_server = SendingServer::where('user_id', Auth::user()->id)->where('voice', 1)->where('status', true)->get();
if ($sending_server->count() == 0) {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('voice', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('voice', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
// If customer don't have permission creating sending servers
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('voice', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
return view('customer.Campaigns.voiceImport', compact('breadcrumbs', 'sender_ids', 'phone_numbers', 'sending_server', 'plan_id'));
}
/**
* send message using file
*
* @param ImportVoiceRequest $request
*
* @return Application|Factory|View|RedirectResponse
*/
public function importVoiceCampaign(ImportVoiceRequest $request): View|Factory|RedirectResponse|Application
{
if ($request->file('import_file')->isValid()) {
$form_data = $request->except('_token', 'import_file');
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.Voice')],
['name' => __('locale.menu.Send Using File')],
];
$path = $request->file('import_file')->getRealPath();
$data = array_map('str_getcsv', file($path));
$csv_data_file = CsvData::create([
'user_id' => Auth::user()->id,
'ref_id' => uniqid(),
'ref_type' => CsvData::TYPE_CAMPAIGN,
'csv_filename' => $request->file('import_file')->getClientOriginalName(),
'csv_header' => $request->has('header'),
'csv_data' => json_encode($data),
]);
$csv_data = array_slice($data, 0, 2);
return view('customer.Campaigns.import_fields', compact('csv_data', 'csv_data_file', 'breadcrumbs', 'form_data'));
}
return redirect()->route('customer.voice.import')->with([
'status' => 'error',
'message' => __('locale.settings.invalid_file'),
]);
}
/*
|--------------------------------------------------------------------------
| MMS module
|--------------------------------------------------------------------------
|
|
|
*/
/**
* @param Request $request
*
* @return Application|Factory|View|RedirectResponse
* @throws AuthorizationException
*/
public function mmsQuickSend(Request $request): View|Factory|RedirectResponse|Application
{
$this->authorize('mms_quick_send');
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.MMS')],
['name' => __('locale.menu.Quick Send')],
];
if (Auth::user()->customer->getOption('sender_id_verification') == 'yes') {
$sender_ids = Senderid::where('user_id', auth()->user()->id)->where('status', 'active')->cursor();
} else {
$sender_ids = null;
}
$phone_numbers = PhoneNumbers::where('user_id', auth()->user()->id)->where('status', 'assigned')->cursor();
if ( ! Auth::user()->customer->activeSubscription()) {
return redirect()->route('customer.subscriptions.index')->with([
'status' => 'error',
'message' => __('locale.customer.no_active_subscription'),
]);
}
$plan_id = Auth::user()->customer->activeSubscription()->plan_id;
// Check the customer has permissions using sending servers and has his own sending servers
if (Auth::user()->customer->getOption('create_sending_server') == 'yes') {
if (PlansSendingServer::where('plan_id', $plan_id)->count()) {
$sending_server = SendingServer::where('user_id', Auth::user()->id)->where('mms', 1)->where('status', true)->get();
if ($sending_server->count() == 0) {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('mms', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('mms', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
// If customer don't have permission creating sending servers
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('mms', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
$coverage = PlansCoverageCountries::where('plan_id', $plan_id)->where('status', true)->cursor();
$recipient = $request->recipient;
return view('customer.Campaigns.mmsQuickSend', compact('breadcrumbs', 'sender_ids', 'phone_numbers', 'recipient', 'coverage', 'sending_server'));
}
/**
* quick send message
*
* @param Campaigns $campaign
* @param MMSQuickSendRequest $request
*
* @return RedirectResponse
*/
public function postMMSQuickSend(Campaigns $campaign, MMSQuickSendRequest $request): RedirectResponse
{
if (config('app.stage') == 'demo') {
return redirect()->route('customer.mms.quick_send')->with([
'status' => 'error',
'message' => 'Sorry! This option is not available in demo mode',
]);
}
if (Auth::user()->customer->activeSubscription()) {
$plan = Plan::where('status', true)->find(Auth::user()->customer->activeSubscription()->plan_id);
if ( ! $plan) {
return redirect()->route('customer.mms.quick_send')->with([
'status' => 'error',
'message' => 'Purchased plan is not active. Please contact support team.',
]);
}
}
$data = $this->campaigns->quickSend($campaign, $request->except('_token'));
if (isset($data->getData()->status)) {
return redirect()->route('customer.reports.sent')->with([
'status' => $data->getData()->status,
'message' => $data->getData()->message,
]);
}
return redirect()->route('customer.mms.quick_send')->with([
'status' => 'error',
'message' => __('locale.exceptions.something_went_wrong'),
]);
}
/**
* @return Application|Factory|View|RedirectResponse
* @throws AuthorizationException
*/
public function mmsCampaignBuilder(): View|Factory|RedirectResponse|Application
{
$this->authorize('mms_campaign_builder');
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.MMS')],
['name' => __('locale.menu.Campaign Builder')],
];
if (Auth::user()->customer->getOption('sender_id_verification') == 'yes') {
$sender_ids = Senderid::where('user_id', auth()->user()->id)->where('status', 'active')->cursor();
} else {
$sender_ids = null;
}
$phone_numbers = PhoneNumbers::where('user_id', auth()->user()->id)->where('status', 'assigned')->cursor();
$template_tags = TemplateTags::cursor();
$contact_groups = ContactGroups::where('status', 1)->where('customer_id', auth()->user()->id)->cursor();
$templates = Templates::where('user_id', auth()->user()->id)->where('status', 1)->cursor();
if ( ! Auth::user()->customer->activeSubscription()) {
return redirect()->route('customer.subscriptions.index')->with([
'status' => 'error',
'message' => __('locale.customer.no_active_subscription'),
]);
}
$plan_id = Auth::user()->customer->activeSubscription()->plan_id;
// Check the customer has permissions using sending servers and has his own sending servers
if (Auth::user()->customer->getOption('create_sending_server') == 'yes') {
if (PlansSendingServer::where('plan_id', $plan_id)->count()) {
$sending_server = SendingServer::where('user_id', Auth::user()->id)->where('mms', 1)->where('status', true)->get();
if ($sending_server->count() == 0) {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('mms', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('mms', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
// If customer don't have permission creating sending servers
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('mms', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
$coverage = PlansCoverageCountries::where('plan_id', $plan_id)->where('status', true)->cursor();
return view('customer.Campaigns.mmsCampaignBuilder', compact('breadcrumbs', 'sender_ids', 'phone_numbers', 'template_tags', 'contact_groups', 'templates', 'sending_server', 'coverage', 'plan_id'));
}
/**
* store campaign
*
*
* @param Campaigns $campaign
* @param MMSCampaignBuilderRequest $request
*
* @return RedirectResponse
*/
public function storeMMSCampaign(Campaigns $campaign, MMSCampaignBuilderRequest $request): RedirectResponse
{
if (config('app.stage') == 'demo') {
return redirect()->route('customer.mms.quick_send')->with([
'status' => 'error',
'message' => 'Sorry! This option is not available in demo mode',
]);
}
if (Auth::user()->customer->activeSubscription()) {
$plan = Plan::where('status', true)->find(Auth::user()->customer->activeSubscription()->plan_id);
if ( ! $plan) {
return redirect()->route('customer.mms.quick_send')->with([
'status' => 'error',
'message' => 'Purchased plan is not active. Please contact support team.',
]);
}
}
$data = $this->campaigns->campaignBuilder($campaign, $request->except('_token'));
if (isset($data->getData()->status)) {
if ($data->getData()->status == 'success') {
return redirect()->route('customer.reports.campaigns')->with([
'status' => 'success',
'message' => $data->getData()->message,
]);
}
return redirect()->route('customer.mms.campaign_builder')->with([
'status' => 'error',
'message' => $data->getData()->message,
]);
}
return redirect()->route('customer.mms.campaign_builder')->with([
'status' => 'error',
'message' => __('locale.exceptions.something_went_wrong'),
]);
}
/**
*
* @return Application|Factory|View|RedirectResponse
* @throws AuthorizationException
*/
public function mmsImport(): View|Factory|RedirectResponse|Application
{
$this->authorize('mms_bulk_messages');
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.MMS')],
['name' => __('locale.menu.Send Using File')],
];
if (Auth::user()->customer->getOption('sender_id_verification') == 'yes') {
$sender_ids = Senderid::where('user_id', auth()->user()->id)->where('status', 'active')->cursor();
} else {
$sender_ids = null;
}
$phone_numbers = PhoneNumbers::where('user_id', auth()->user()->id)->where('status', 'assigned')->cursor();
if ( ! Auth::user()->customer->activeSubscription()) {
return redirect()->route('customer.subscriptions.index')->with([
'status' => 'error',
'message' => __('locale.customer.no_active_subscription'),
]);
}
$plan_id = Auth::user()->customer->activeSubscription()->plan_id;
// Check the customer has permissions using sending servers and has his own sending servers
if (Auth::user()->customer->getOption('create_sending_server') == 'yes') {
if (PlansSendingServer::where('plan_id', $plan_id)->count()) {
$sending_server = SendingServer::where('user_id', Auth::user()->id)->where('mms', 1)->where('status', true)->get();
if ($sending_server->count() == 0) {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('mms', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('mms', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
// If customer don't have permission creating sending servers
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('mms', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
return view('customer.Campaigns.mmsImport', compact('breadcrumbs', 'sender_ids', 'phone_numbers', 'sending_server', 'plan_id'));
}
/**
* send message using file
*
* @param MMSImportRequest $request
*
* @return Application|Factory|View|RedirectResponse
*/
public function importMMSCampaign(MMSImportRequest $request): View|Factory|RedirectResponse|Application
{
if ($request->file('import_file')->isValid()) {
$media_url = Tool::uploadImage($request->mms_file);
$form_data = $request->except('_token', 'import_file', 'mms_file');
$form_data['media_url'] = $media_url;
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.MMS')],
['name' => __('locale.menu.Send Using File')],
];
$path = $request->file('import_file')->getRealPath();
$data = array_map('str_getcsv', file($path));
$csv_data_file = CsvData::create([
'user_id' => Auth::user()->id,
'ref_id' => uniqid(),
'ref_type' => CsvData::TYPE_CAMPAIGN,
'csv_filename' => $request->file('import_file')->getClientOriginalName(),
'csv_header' => $request->has('header'),
'csv_data' => json_encode($data),
]);
$csv_data = array_slice($data, 0, 2);
return view('customer.Campaigns.import_fields', compact('csv_data', 'csv_data_file', 'breadcrumbs', 'form_data'));
}
return redirect()->route('customer.mms.import')->with([
'status' => 'error',
'message' => __('locale.settings.invalid_file'),
]);
}
/*
|--------------------------------------------------------------------------
| whatsapp module
|--------------------------------------------------------------------------
|
|
|
*/
/**
* whatsapp quick send
*
* @param Request $request
*
* @return Application|Factory|View|RedirectResponse
* @throws AuthorizationException
*/
public function whatsAppQuickSend(Request $request): View|Factory|RedirectResponse|Application
{
$this->authorize('whatsapp_quick_send');
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.WhatsApp')],
['name' => __('locale.menu.Quick Send')],
];
if (Auth::user()->customer->getOption('sender_id_verification') == 'yes') {
$sender_ids = Senderid::where('user_id', auth()->user()->id)->where('status', 'active')->cursor();
} else {
$sender_ids = null;
}
$phone_numbers = PhoneNumbers::where('user_id', auth()->user()->id)->where('status', 'assigned')->cursor();
if ( ! Auth::user()->customer->activeSubscription()) {
return redirect()->route('customer.subscriptions.index')->with([
'status' => 'error',
'message' => __('locale.customer.no_active_subscription'),
]);
}
$plan_id = Auth::user()->customer->activeSubscription()->plan_id;
// Check the customer has permissions using sending servers and has his own sending servers
if (Auth::user()->customer->getOption('create_sending_server') == 'yes') {
if (PlansSendingServer::where('plan_id', $plan_id)->count()) {
$sending_server = SendingServer::where('user_id', Auth::user()->id)->where('whatsapp', 1)->where('status', true)->get();
if ($sending_server->count() == 0) {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('whatsapp', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('whatsapp', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
// If customer don't have permission creating sending servers
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('whatsapp', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
$coverage = PlansCoverageCountries::where('plan_id', $plan_id)->where('status', true)->cursor();
$recipient = $request->recipient;
return view('customer.Campaigns.whatsAppQuickSend', compact('breadcrumbs', 'sender_ids', 'phone_numbers', 'recipient', 'sending_server', 'coverage'));
}
/**
* quick send message
*
* @param Campaigns $campaign
* @param WhatsAppQuickSendRequest $request
*
* @return RedirectResponse
*/
public function postWhatsAppQuickSend(Campaigns $campaign, WhatsAppQuickSendRequest $request): RedirectResponse
{
if (config('app.stage') == 'demo') {
return redirect()->route('customer.whatsapp.quick_send')->with([
'status' => 'error',
'message' => 'Sorry! This option is not available in demo mode',
]);
}
if (Auth::user()->customer->activeSubscription()) {
$plan = Plan::where('status', true)->find(Auth::user()->customer->activeSubscription()->plan_id);
if ( ! $plan) {
return redirect()->route('customer.sms.quick_send')->with([
'status' => 'error',
'message' => 'Purchased plan is not active. Please contact support team.',
]);
}
}
$data = $this->campaigns->quickSend($campaign, $request->except('_token'));
if (isset($data->getData()->status)) {
return redirect()->route('customer.reports.sent')->with([
'status' => $data->getData()->status,
'message' => $data->getData()->message,
]);
}
return redirect()->route('customer.whatsapp.quick_send')->with([
'status' => 'error',
'message' => __('locale.exceptions.something_went_wrong'),
]);
}
/**
* whatsapp campaign builder
*
* @return Application|Factory|View|RedirectResponse
* @throws AuthorizationException
*/
public function whatsappCampaignBuilder(): View|Factory|RedirectResponse|Application
{
$this->authorize('whatsapp_campaign_builder');
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.WhatsApp')],
['name' => __('locale.menu.Campaign Builder')],
];
if (Auth::user()->customer->getOption('sender_id_verification') == 'yes') {
$sender_ids = Senderid::where('user_id', auth()->user()->id)->where('status', 'active')->cursor();
} else {
$sender_ids = null;
}
$phone_numbers = PhoneNumbers::where('user_id', auth()->user()->id)->where('status', 'assigned')->cursor();
$template_tags = TemplateTags::cursor();
$contact_groups = ContactGroups::where('status', 1)->where('customer_id', auth()->user()->id)->cursor();
$templates = Templates::where('user_id', auth()->user()->id)->where('status', 1)->cursor();
if ( ! Auth::user()->customer->activeSubscription()) {
return redirect()->route('customer.subscriptions.index')->with([
'status' => 'error',
'message' => __('locale.customer.no_active_subscription'),
]);
}
$plan_id = Auth::user()->customer->activeSubscription()->plan_id;
// Check the customer has permissions using sending servers and has his own sending servers
if (Auth::user()->customer->getOption('create_sending_server') == 'yes') {
if (PlansSendingServer::where('plan_id', $plan_id)->count()) {
$sending_server = SendingServer::where('user_id', Auth::user()->id)->where('whatsapp', 1)->where('status', true)->get();
if ($sending_server->count() == 0) {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('whatsapp', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('whatsapp', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
// If customer don't have permission creating sending servers
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('whatsapp', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
$coverage = PlansCoverageCountries::where('plan_id', $plan_id)->where('status', true)->cursor();
return view('customer.Campaigns.whatsAppCampaignBuilder', compact('breadcrumbs', 'sender_ids', 'phone_numbers', 'template_tags', 'contact_groups', 'templates', 'sending_server', 'coverage', 'plan_id'));
}
/**
* store campaign
*
*
* @param Campaigns $campaign
* @param WhatsAppCampaignBuilderRequest $request
*
* @return RedirectResponse
*/
public function storeWhatsAppCampaign(Campaigns $campaign, WhatsAppCampaignBuilderRequest $request): RedirectResponse
{
if (config('app.stage') == 'demo') {
return redirect()->route('customer.whatsapp.quick_send')->with([
'status' => 'error',
'message' => 'Sorry! This option is not available in demo mode',
]);
}
if (Auth::user()->customer->activeSubscription()) {
$plan = Plan::where('status', true)->find(Auth::user()->customer->activeSubscription()->plan_id);
if ( ! $plan) {
return redirect()->route('customer.sms.quick_send')->with([
'status' => 'error',
'message' => 'Purchased plan is not active. Please contact support team.',
]);
}
}
$data = $this->campaigns->campaignBuilder($campaign, $request->except('_token'));
if (isset($data->getData()->status)) {
if ($data->getData()->status == 'success') {
return redirect()->route('customer.reports.campaigns')->with([
'status' => 'success',
'message' => $data->getData()->message,
]);
}
return redirect()->route('customer.whatsapp.campaign_builder')->with([
'status' => 'error',
'message' => $data->getData()->message,
]);
}
return redirect()->route('customer.whatsapp.campaign_builder')->with([
'status' => 'error',
'message' => __('locale.exceptions.something_went_wrong'),
]);
}
/**
* whatsapp send message using file
*
* @return Application|Factory|View|RedirectResponse
* @throws AuthorizationException
*/
public function whatsappImport(): View|Factory|RedirectResponse|Application
{
$this->authorize('whatsapp_bulk_messages');
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.WhatsApp')],
['name' => __('locale.menu.Send Using File')],
];
if (Auth::user()->customer->getOption('sender_id_verification') == 'yes') {
$sender_ids = Senderid::where('user_id', auth()->user()->id)->where('status', 'active')->cursor();
} else {
$sender_ids = null;
}
$phone_numbers = PhoneNumbers::where('user_id', auth()->user()->id)->where('status', 'assigned')->cursor();
if ( ! Auth::user()->customer->activeSubscription()) {
return redirect()->route('customer.subscriptions.index')->with([
'status' => 'error',
'message' => __('locale.customer.no_active_subscription'),
]);
}
$plan_id = Auth::user()->customer->activeSubscription()->plan_id;
// Check the customer has permissions using sending servers and has his own sending servers
if (Auth::user()->customer->getOption('create_sending_server') == 'yes') {
if (PlansSendingServer::where('plan_id', $plan_id)->count()) {
$sending_server = SendingServer::where('user_id', Auth::user()->id)->where('whatsapp', 1)->where('status', true)->get();
if ($sending_server->count() == 0) {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('whatsapp', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('whatsapp', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
} else {
// If customer don't have permission creating sending servers
$sending_server_ids = PlansSendingServer::where('plan_id', $plan_id)->pluck('sending_server_id')->toArray();
$sending_server = SendingServer::where('whatsapp', 1)->where('status', true)->whereIn('id', $sending_server_ids)->get();
}
return view('customer.Campaigns.whatsAppImport', compact('breadcrumbs', 'sender_ids', 'phone_numbers', 'sending_server', 'plan_id'));
}
/**
* send message using file
*
* @param ImportRequest $request
*
* @return Application|Factory|View|RedirectResponse
*/
public function importWhatsAppCampaign(ImportRequest $request): View|Factory|RedirectResponse|Application
{
if ($request->file('import_file')->isValid()) {
$form_data = $request->except('_token', 'import_file');
$breadcrumbs = [
['link' => url('dashboard'), 'name' => __('locale.menu.Dashboard')],
['link' => url('dashboard'), 'name' => __('locale.menu.SMS')],
['name' => __('locale.menu.Send Using File')],
];
$path = $request->file('import_file')->getRealPath();
$data = array_map('str_getcsv', file($path));
$csv_data_file = CsvData::create([
'user_id' => Auth::user()->id,
'ref_id' => uniqid(),
'ref_type' => CsvData::TYPE_CAMPAIGN,
'csv_filename' => $request->file('import_file')->getClientOriginalName(),
'csv_header' => $request->has('header'),
'csv_data' => json_encode($data),
]);
$csv_data = array_slice($data, 0, 2);
return view('customer.Campaigns.import_fields', compact('csv_data', 'csv_data_file', 'breadcrumbs', 'form_data'));
}
return redirect()->route('customer.whatsapp.import')->with([
'status' => 'error',
'message' => __('locale.settings.invalid_file'),
]);
}
}