update 1.0.8.0

Commits for version update
This commit is contained in:
Manish Verma
2016-10-17 12:02:27 +05:30
parent dec927987b
commit 76e85db070
9674 changed files with 495757 additions and 58922 deletions

View File

@@ -91,7 +91,9 @@ class AgentController extends Controller
$location = GeoIP::getLocation();
$phonecode = $code->where('iso', '=', $location['isoCode'])->first();
// returns to the page with all the variables and their datas
return view('themes.default1.admin.helpdesk.agent.agents.create', compact('assign', 'teams', 'agents', 'timezones', 'groups', 'departments', 'team'))->with('phonecode', $phonecode->phonecode);
$send_otp = DB::table('common_settings')->select('status')->where('option_name', '=', 'send_otp')->first();
return view('themes.default1.admin.helpdesk.agent.agents.create', compact('assign', 'teams', 'agents', 'timezones', 'groups', 'departments', 'team', 'send_otp'))->with('phonecode', $phonecode->phonecode);
} catch (Exception $e) {
// returns if try fails with exception meaagse
return redirect()->back()->with('fails', $e->getMessage());
@@ -118,7 +120,12 @@ class AgentController extends Controller
}
}
// fixing the user role to agent
$user->fill($request->except(['group', 'primary_department', 'agent_time_zone']))->save();
$user->fill($request->except(['group', 'primary_department', 'agent_time_zone', 'mobile']))->save();
if ($request->get('mobile')) {
$user->mobile = $request->get('mobile');
} else {
$user->mobile = null;
}
$user->assign_group = $request->group;
$user->primary_dpt = $request->primary_department;
$user->agent_tzone = $request->agent_time_zone;
@@ -149,6 +156,10 @@ class AgentController extends Controller
}
}
// returns for the success case
if ($request->input('active') == '0' || $request->input('active') == 0) {
\Event::fire(new \App\Events\LoginEvent($request));
}
return redirect('agents')->with('success', Lang::get('lang.agent_creation_success'));
} else {
// returns if fails

View File

@@ -77,7 +77,9 @@ class DepartmentController extends Controller
{
try {
$slas = $sla->get();
$user = $user->where('role', 'agent2')->get();
$user = $user->where('role', '<>', 'user')
->where('active', '=', 1)
->get();
$emails = $email->get();
$templates = $template->get();
$department = $department->get();
@@ -154,7 +156,9 @@ class DepartmentController extends Controller
->where('id', '=', 1)
->first();
$slas = $sla->get();
$user = $user->where('primary_dpt', $id)->get();
$user = $user->where('primary_dpt', $id)
->where('active', '=', 1)
->get();
$emails = $email->get();
$templates = $template->get();
$departments = $department->whereId($id)->first();

View File

@@ -3,21 +3,20 @@
namespace App\Http\Controllers\Admin\helpdesk;
// controllers
use App\Http\Controllers\Admin\MailFetch as Fetch;
use App\Http\Controllers\Controller;
// request
use App\Http\Requests\helpdesk\EmailsEditRequest;
use App\Http\Requests\helpdesk\EmailsRequest;
use App\Model\helpdesk\Agent\Department;
// model
use App\Http\Requests\helpdesk\Mail\MailRequest;
use App\Model\helpdesk\Agent\Department;
use App\Model\helpdesk\Email\Emails;
use App\Model\helpdesk\Manage\Help_topic;
use App\Model\helpdesk\Settings\Email;
use App\Model\helpdesk\Ticket\Ticket_Priority;
// classes
use App\Model\helpdesk\Utility\MailboxProtocol;
use Crypt;
// classes
use Exception;
use Illuminate\Http\Request;
use Lang;
/**
@@ -81,8 +80,12 @@ class EmailsController extends Controller
$priority = $ticket_priority->get();
// fetch all the types of mailbox protocols from the mailbox_protocols table
$mailbox_protocols = $mailbox_protocol->get();
$service = new \App\Model\MailJob\MailService();
$services = $service->lists('name', 'id')->toArray();
// return with all the table data
return view('themes.default1.admin.helpdesk.emails.emails.create', compact('mailbox_protocols', 'priority', 'departments', 'helps'));
return view('themes.default1.admin.helpdesk.emails.emails.create', compact('mailbox_protocols', 'priority', 'departments', 'helps', 'services'));
} catch (Exception $e) {
// return error messages if any
return redirect()->back()->with('fails', $e->getMessage());
@@ -96,77 +99,61 @@ class EmailsController extends Controller
*
* @return int
*/
public function validatingEmailSettings(Request $request)
public function validatingEmailSettings(MailRequest $request, $id = '')
{
$validator = \Validator::make(
[
'email_address' => $request->input('email_address'),
'email_name' => $request->input('email_name'),
'password' => $request->input('password'),
], [
'email_address' => 'required|email|unique:emails',
'email_name' => 'required',
'password' => 'required',
]
);
if ($validator->fails()) {
$jsons = $validator->messages();
$val = '';
foreach ($jsons->all() as $key => $value) {
$val .= $value;
}
$return_data = rtrim(str_replace('.', ',', $val), ',');
return $return_data;
}
if ($request->input('imap_validate') == 'on') {
$validate = '/validate-cert';
} elseif (!$request->input('imap_validate')) {
//dd($request->all());
try {
$service_request = $request->except('sending_status', '_token', 'email_address', 'email_name', 'password', 'department', 'priority', 'help_topic', 'fetching_protocol', 'fetching_host', 'fetching_port', 'fetching_encryption', 'imap_authentication', 'sending_protocol', 'sending_host', 'sending_port', 'sending_encryption', 'smtp_authentication', 'internal_notes', '_wysihtml5_mode', 'code');
$service = $request->input('sending_protocol');
$validate = '/novalidate-cert';
$fetch = 1;
$send = 1;
//dd($request->input('fetching_status'));
if ($request->input('fetching_status')) {
$fetch = $this->getImapStream($request, $validate);
}
if ($request->input('sending_status') === 'on') {
$this->emailService($service, $service_request);
$send = $this->sendDiagnoEmail($request);
}
if ($send == 1 && $fetch == 1) {
$this->store($request, $service_request, $id);
return $this->jsonResponse('success', Lang::get('lang.success'));
}
return $this->validateEmailError($send, $fetch);
} catch (Exception $ex) {
$message = $ex->getMessage();
if ($request->input('fetching_status') && imap_last_error()) {
$message = imap_last_error();
}
loging('mail-config', $message);
return $this->jsonResponse('fails', $message);
}
if ($request->input('fetching_status') == 'on') {
$imap_check = $this->getImapStream($request, $validate);
if ($imap_check[0] == 0) {
return Lang::get('lang.incoming_email_connection_failed_please_check_email_credentials_or_imap_settings');
}
$need_to_check_imap = 1;
} else {
$imap_check = 0;
$need_to_check_imap = 0;
}
public function validateEmailError($out, $in)
{
if ($out !== 1) {
return $this->jsonResponse('fails', Lang::get('lang.outgoing_email_connection_failed'));
}
if ($request->input('sending_status') == 'on') {
$smtp_check = $this->getSmtp($request);
if ($smtp_check == 0) {
return Lang::get('lang.outgoing_email_connection_failed');
}
$need_to_check_smtp = 1;
} else {
$smtp_check = 0;
$need_to_check_smtp = 0;
if ($in !== 1) {
return $this->jsonResponse('fails', Lang::get('lang.incoming_email_connection_failed_please_check_email_credentials_or_imap_settings'));
}
if ($need_to_check_imap == 1 && $need_to_check_smtp == 1) {
if ($imap_check != 0 && $smtp_check != 0) {
$this->store($request, $imap_check[1]);
$return = 1;
}
} elseif ($need_to_check_imap == 1 && $need_to_check_smtp == 0) {
if ($imap_check != 0 && $smtp_check == 0) {
$this->store($request, $imap_check[1]);
$return = 1;
}
} elseif ($need_to_check_imap == 0 && $need_to_check_smtp == 1) {
if ($imap_check == 0 && $smtp_check != 0) {
$this->store($request, null);
$return = 1;
}
} elseif ($need_to_check_imap == 0 && $need_to_check_smtp == 0) {
if ($imap_check == 0 && $smtp_check == 0) {
$this->store($request, null);
$return = 1;
}
}
public function jsonResponse($type, $message)
{
if ($type == 'fails') {
$result = ['fails' => $message];
}
if ($type == 'success') {
$result = ['success' => $message];
}
return $return;
return response()->json(compact('result'));
}
/**
@@ -177,75 +164,136 @@ class EmailsController extends Controller
*
* @return type Redirect
*/
public function store($request, $imap_check)
public function store($request, $service_request = [], $id = '')
{
$email = new Emails();
try {
// saving all the fields to the database
// if ($email->fill($request->except('password', 'department', 'priority', 'help_topic', 'fetching_status', 'fetching_encryption', 'sending_status', 'auto_response'))->save() == true) {
$email->email_address = $request->email_address;
$email->email_name = $request->email_name;
$email->fetching_host = $request->fetching_host;
$email->fetching_port = $request->fetching_port;
$email->fetching_protocol = $request->fetching_protocol;
$email->sending_host = $request->sending_host;
$email->sending_port = $request->sending_port;
$email->sending_protocol = $request->sending_protocol;
$email->sending_encryption = $request->sending_encryption;
if ($id !== '') {
$email = $email->find($id);
}
if ($request->smtp_validate == 'on') {
$email->smtp_validate = $request->smtp_validate;
}
$email->email_address = $request->email_address;
if ($request->input('password')) {
$email->password = Crypt::encrypt($request->input('password'));
}
if ($request->input('fetching_status') == 'on') {
$email->fetching_status = 1;
} else {
$email->fetching_status = 0;
}
if ($request->input('sending_status') == 'on') {
$email->sending_status = 1;
} else {
$email->sending_status = 0;
}
if ($request->input('auto_response') == 'on') {
$email->auto_response = 1;
} else {
$email->auto_response = 0;
}
if ($imap_check !== null) {
$email->fetching_encryption = $imap_check;
} else {
$email->fetching_encryption = $request->input('fetching_encryption');
}
// fetching department value
$email->department = $this->departmentValue($request->input('department'));
// fetching priority value
$email->priority = $this->priorityValue($request->input('priority'));
// fetching helptopic value
$email->help_topic = $this->helpTopicValue($request->input('help_topic'));
// inserting the encrypted value of password
$email->email_name = $request->email_name;
$email->fetching_host = $request->fetching_host;
$email->fetching_port = $request->fetching_port;
$email->fetching_protocol = $request->fetching_protocol;
$email->sending_host = $request->sending_host;
$email->sending_port = $request->sending_port;
$email->sending_protocol = $this->getDriver($request->sending_protocol);
$email->sending_encryption = $request->sending_encryption;
if ($request->smtp_validate == 'on') {
$email->smtp_validate = $request->smtp_validate;
}
if ($request->input('password')) {
$email->password = Crypt::encrypt($request->input('password'));
$email->save(); // run save
}
if ($request->input('fetching_status') == 'on') {
$email->fetching_status = 1;
} else {
$email->fetching_status = 0;
}
if ($request->input('sending_status') == 'on') {
$email->sending_status = 1;
} else {
$email->sending_status = 0;
}
if ($request->input('auto_response') == 'on') {
$email->auto_response = 1;
} else {
$email->auto_response = 0;
}
$email->fetching_encryption = $request->input('fetching_encryption');
if (!$request->input('imap_validate')) {
$email->mailbox_protocol = 'novalidate-cert';
}
$email->department = $this->departmentValue($request->input('department'));
// fetching priority value
$email->priority = $this->priorityValue($request->input('priority'));
// fetching helptopic value
$email->help_topic = $this->helpTopicValue($request->input('help_topic'));
// inserting the encrypted value of password
$email->password = Crypt::encrypt($request->input('password'));
$email->save(); // run save
if ($request->input('fetching_status')) {
$this->fetch($email);
}
if ($id === '') {
// Creating a default system email as the first email is inserted to the system
$email_settings = Email::where('id', '=', '1')->first();
$email_settings->sys_email = $email->id;
$email_settings->save();
// returns success message for successful email creation
// return redirect('emails')->with('success', 'Email Created sucessfully');
return 1;
// } else {
// returns fail message for unsuccessful save execution
// return redirect('emails')->with('fails', 'Email can not Create');
// return 0;
// }
} catch (Exception $e) {
// returns if try fails
// return redirect()->back()->with('fails', $e->getMessage());
return 0;
} else {
$this->update($id, $request);
}
if (count($service_request) > 0) {
$this->saveMailService($email->id, $service_request, $this->getDriver($request->sending_protocol));
}
if ($request->input('fetching_status')) {
$this->fetch($email);
}
return 1;
}
public function sendDiagnoEmail($request)
{
$mailservice_id = $request->input('sending_protocol');
$driver = $this->getDriver($mailservice_id);
$username = $request->input('email_address');
$password = $request->input('password');
$name = $request->input('email_name');
$host = $request->input('sending_host');
$port = $request->input('sending_port');
$enc = $request->input('sending_encryption');
$service_request = $request->except('sending_status', '_token', 'email_address', 'email_name', 'password', 'department', 'priority', 'help_topic', 'fetching_protocol', 'fetching_host', 'fetching_port', 'fetching_encryption', 'imap_authentication', 'sending_protocol', 'sending_host', 'sending_port', 'sending_encryption', 'smtp_authentication', 'internal_notes', '_wysihtml5_mode');
$this->emailService($driver, $service_request);
$this->setMailConfig($driver, $username, $name, $password, $enc, $host, $port);
$controller = new \App\Http\Controllers\Common\PhpMailController();
$to = 'example@ladybirdweb.com';
$toname = 'test';
$subject = 'test';
$data = 'test';
//dd(\Config::get('mail'),\Config::get('services'));
$send = $controller->laravelMail($to, $toname, $subject, $data, [], []);
return $send;
}
public function setMailConfig($driver, $username, $name, $password, $enc, $host, $port)
{
$configs = [
'username' => $username,
'from' => ['address' => $username, 'name' => $name],
'password' => $password,
'encryption' => $enc,
'host' => $host,
'port' => $port,
'driver' => $driver,
];
foreach ($configs as $key => $config) {
if (is_array($config)) {
foreach ($config as $from) {
\Config::set('mail.'.$key, $config);
}
} else {
\Config::set('mail.'.$key, $config);
}
}
}
public function getDriver($driver_id)
{
$short = '';
$email_drivers = new \App\Model\MailJob\MailService();
$email_driver = $email_drivers->find($driver_id);
if ($email_driver) {
$short = $email_driver->short_name;
}
return $short;
}
/**
@@ -277,8 +325,12 @@ class EmailsController extends Controller
$priority = $ticket_priority->get();
// get all the mailbox protocols
$mailbox_protocols = $mailbox_protocol->get();
$service = new \App\Model\MailJob\MailService();
$services = $service->lists('name', 'id')->toArray();
// return if the execution is succeeded
return view('themes.default1.admin.helpdesk.emails.emails.edit', compact('mailbox_protocols', 'priority', 'departments', 'helps', 'emails', 'sys_email'))->with('count', $count);
return view('themes.default1.admin.helpdesk.emails.emails.edit', compact('mailbox_protocols', 'priority', 'departments', 'helps', 'emails', 'sys_email', 'services'))->with('count', $count);
} catch (Exception $e) {
// return if try fails
return redirect()->back()->with('fails', $e->getMessage());
@@ -292,78 +344,20 @@ class EmailsController extends Controller
*
* @return int
*/
public function validatingEmailSettingsUpdate($id, Request $request)
public function validatingEmailSettingsUpdate($id, MailRequest $request)
{
$validator = \Validator::make(
[
'email_address' => $request->input('email_address'),
'email_name' => $request->input('email_name'),
'password' => $request->input('password'),
], [
'email_address' => 'email',
'email_name' => 'required',
'password' => 'required',
]
);
if ($validator->fails()) {
$jsons = $validator->messages();
$val = '';
foreach ($jsons->all() as $key => $value) {
$val .= $value;
try {
return $this->validatingEmailSettings($request, $id);
} catch (Exception $ex) {
$message = $ex->getMessage();
if (imap_last_error()) {
$message = imap_last_error();
}
$return_data = rtrim(str_replace('.', ',', $val), ',');
return $return_data;
//dd($ex->getMessage());
loging('mail-config', $message);
//Log::error($ex->getMessage());
return $this->jsonResponse('fails', $message);
}
// return $request;
if ($request->input('imap_validate') == 'on') {
$validate = '/validate-cert';
} elseif (!$request->input('imap_validate')) {
$validate = '/novalidate-cert';
}
if ($request->input('fetching_status') == 'on') {
$imap_check = $this->getImapStream($request, $validate);
if ($imap_check[0] == 0) {
return Lang::get('lang.incoming_email_connection_failed_please_check_email_credentials_or_imap_settings');
}
$need_to_check_imap = 1;
} else {
$imap_check = 0;
$need_to_check_imap = 0;
}
if ($request->input('sending_status') == 'on') {
$smtp_check = $this->getSmtp($request);
if ($smtp_check == 0) {
return Lang::get('lang.outgoing_email_connection_failed');
}
$need_to_check_smtp = 1;
} else {
$smtp_check = 0;
$need_to_check_smtp = 0;
}
if ($need_to_check_imap == 1 && $need_to_check_smtp == 1) {
if ($imap_check != 0 && $smtp_check != 0) {
$this->update($id, $request, $imap_check[1]);
$return = 1;
}
} elseif ($need_to_check_imap == 1 && $need_to_check_smtp == 0) {
if ($imap_check != 0 && $smtp_check == 0) {
$this->update($id, $request, $imap_check[1]);
$return = 1;
}
} elseif ($need_to_check_imap == 0 && $need_to_check_smtp == 1) {
if ($imap_check == 0 && $smtp_check != 0) {
$this->update($id, $request, null);
$return = 1;
}
} elseif ($need_to_check_imap == 0 && $need_to_check_smtp == 0) {
if ($imap_check == 0 && $smtp_check == 0) {
$this->update($id, $request, null);
$return = 1;
}
}
return $return;
}
/**
@@ -375,70 +369,20 @@ class EmailsController extends Controller
*
* @return type Response
*/
public function update($id, $request, $imap_check)
public function update($id, $request)
{
try {
// fetch the selected emails
$emails = Emails::whereId($id)->first();
// insert all the requested parameters with except
$emails->email_address = $request->email_address;
$emails->email_name = $request->email_name;
$emails->fetching_host = $request->fetching_host;
$emails->fetching_port = $request->fetching_port;
$emails->fetching_protocol = $request->fetching_protocol;
$emails->sending_host = $request->sending_host;
$emails->sending_port = $request->sending_port;
$emails->sending_protocol = $request->sending_protocol;
$emails->sending_encryption = $request->sending_encryption;
if ($request->smtp_validate == 'on') {
$emails->smtp_validate = $request->smtp_validate;
}
if ($request->input('fetching_status') == 'on') {
$emails->fetching_status = 1;
} else {
$emails->fetching_status = 0;
}
if ($request->input('sending_status') == 'on') {
$emails->sending_status = 1;
} else {
$emails->sending_status = 0;
}
if ($request->input('auto_response') == 'on') {
$emails->auto_response = 1;
} else {
$emails->auto_response = 0;
}
if ($imap_check !== null) {
$emails->fetching_encryption = $imap_check;
} else {
$emails->fetching_encryption = $request->fetching_encryption;
}
$emails->password = Crypt::encrypt($request->input('password'));
// dd($email->fetching_encryption);
// fetching department value
$emails->department = $this->departmentValue($request->input('department'));
// fetching priority value
$emails->priority = $this->priorityValue($request->input('priority'));
// fetching helptopic value
$emails->help_topic = $this->helpTopicValue($request->input('help_topic'));
// inserting the encrypted value of password
// $emails->password = Crypt::encrypt($request->input('password'));
$emails->save();
//dd($request->sys_email);
if ($request->sys_email == 'on') {
$system = \DB::table('settings_email')
->where('id', '=', 1)
->update(['sys_email' => $id]);
->where('id', '=', 1)
->update(['sys_email' => $id]);
} elseif ($request->input('count') <= 1 && $request->sys_email == null) {
$system = \DB::table('settings_email')
->where('id', '=', 1)
->update(['sys_email' => null]);
->where('id', '=', 1)
->update(['sys_email' => null]);
}
// returns success message for successful email update
$return = 1;
} catch (Exception $e) {
// // returns if try fails
$return = $e->getMessage();
}
@@ -467,11 +411,9 @@ class EmailsController extends Controller
// fetching the database instance of the current email
$emails = $email->whereId($id)->first();
// checking if deleting the email is success or if it's carrying any dependencies
if ($emails->delete() == true) {
return redirect('emails')->with('success', Lang::get('lang.email_deleted_sucessfully'));
} else {
return redirect('emails')->with('fails', Lang::get('lang.email_can_not_delete'));
}
$emails->delete();
return redirect('emails')->with('success', Lang::get('lang.email_deleted_sucessfully'));
} catch (Exception $e) {
// returns if the try fails
return redirect()->back()->with('fails', $e->getMessage());
@@ -485,40 +427,30 @@ class EmailsController extends Controller
*
* @return type int
*/
public function getImapStream($request, $validate)
public function getImapStream($request)
{
$fetching_status = $request->input('fetching_status');
$host = $request->input('fetching_host');
$port = $request->input('fetching_port');
$service = $request->input('fetching_protocol');
$encryption = $request->input('fetching_encryption');
$validate = $request->input('imap_validate');
$username = $request->input('email_address');
$password = $request->input('password');
$protocol_id = $request->input('mailbox_protocol');
$fetching_protocol = '/'.$request->input('fetching_protocol');
$fetching_encryption = '/'.$request->input('fetching_encryption');
if ($fetching_encryption == '/none') {
$fetching_encryption2 = '/novalidate-cert';
$mailbox_protocol = $fetching_encryption2;
$host = $request->input('fetching_host');
$port = $request->input('fetching_port');
$mailbox = '{'.$host.':'.$port.$fetching_protocol.$mailbox_protocol.'}INBOX';
} else {
$mailbox_protocol = $fetching_protocol.$fetching_encryption;
$host = $request->input('fetching_host');
$port = $request->input('fetching_port');
$mailbox = '{'.$host.':'.$port.$mailbox_protocol.$validate.'}INBOX';
$mailbox_protocol = $fetching_encryption.$validate;
$server = new Fetch($host, $port, $service);
//$server->setFlag('novalidate-cert');
if ($encryption != '') {
$server->setFlag($encryption);
}
try {
$imap_stream = imap_open($mailbox, $username, $password);
} catch (\Exception $ex) {
return $ex->getMessage();
}
$imap_stream = imap_open($mailbox, $username, $password);
if ($imap_stream) {
$return = [0 => 1, 1 => $mailbox_protocol];
if (!$validate) {
$server->setFlag('novalidate-cert');
} else {
$return = [0 => 0];
$server->setFlag('validate-cert');
}
return $return;
$server->setAuthentication($username, $password);
$server->getImapStream();
return 1;
}
/**
@@ -643,4 +575,69 @@ class EmailsController extends Controller
return $email_help_topic;
}
public function emailService($service, $value = [])
{
switch ($service) {
case 'mailgun':
$this->setServiceConfig($service, $value);
case 'mandrill':
$this->setServiceConfig($service, $value);
case 'ses':
$this->setServiceConfig($service, $value);
}
}
public function setServiceConfig($service, $value)
{
//dd($service);
if (count($value) > 0) {
foreach ($value as $k => $v) {
\Config::set("services.$service.$k", $v);
}
}
}
public function saveMailService($emailid, $request, $driver)
{
$mail_service = new \App\Model\MailJob\FaveoMail();
$mails = $mail_service->where('email_id', $emailid)->get();
if (count($request) > 0) {
foreach ($mails as $mail) {
$mail->delete();
}
foreach ($request as $key => $value) {
$mail_service->create([
'drive' => $driver,
'key' => $key,
'value' => $value,
'email_id' => $emailid,
]);
}
}
}
public function readMails()
{
$PhpMailController = new \App\Http\Controllers\Common\PhpMailController();
$NotificationController = new \App\Http\Controllers\Common\NotificationController();
$TicketController = new \App\Http\Controllers\Agent\helpdesk\TicketController($PhpMailController, $NotificationController);
$TicketWorkflowController = new \App\Http\Controllers\Agent\helpdesk\TicketWorkflowController($TicketController);
$controller = new \App\Http\Controllers\Agent\helpdesk\MailController($TicketWorkflowController);
$emails = new Emails();
$settings_email = new Email();
$system = new \App\Model\helpdesk\Settings\System();
$ticket = new \App\Model\helpdesk\Settings\Ticket();
$controller->readmails($emails, $settings_email, $system, $ticket);
}
public function fetch($email)
{
$PhpMailController = new \App\Http\Controllers\Common\PhpMailController();
$NotificationController = new \App\Http\Controllers\Common\NotificationController();
$TicketController = new \App\Http\Controllers\Agent\helpdesk\TicketController($PhpMailController, $NotificationController);
$TicketWorkflowController = new \App\Http\Controllers\Agent\helpdesk\TicketWorkflowController($TicketController);
$controller = new \App\Http\Controllers\Agent\helpdesk\MailController($TicketWorkflowController);
$controller->fetch($email);
}
}

View File

@@ -0,0 +1,637 @@
<?php
namespace App\Http\Controllers\Admin\helpdesk;
// controllers
use App\Http\Controllers\Controller;
// request
use App\Http\Requests\helpdesk\EmailsEditRequest;
use App\Http\Requests\helpdesk\EmailsRequest;
use App\Http\Requests\helpdesk\Mail\MailRequest;
// model
use App\Model\helpdesk\Agent\Department;
use App\Model\helpdesk\Email\Emails;
use App\Model\helpdesk\Manage\Help_topic;
use App\Model\helpdesk\Settings\Email;
use App\Model\helpdesk\Ticket\Ticket_Priority;
use App\Model\helpdesk\Utility\MailboxProtocol;
// classes
use Crypt;
use Exception;
use Illuminate\Http\Request;
use Lang;
/**
* ======================================
* EmailsController.
* ======================================
* This Controller is used to define below mentioned set of functions applied to the Emails in the system.
*
* @author Ladybird <info@ladybirdweb.com>
*/
class EmailsControllerOld extends Controller
{
/**
* Defining constructor variables.
*
* @return type
*/
public function __construct()
{
$this->middleware('auth');
$this->middleware('roles');
}
/**
* Display a listing of the Emails.
*
* @param type Emails $emails
*
* @return type view
*/
public function index(Emails $email)
{
try {
// fetch all the emails from emails table
$emails = $email->get();
return view('themes.default1.admin.helpdesk.emails.emails.index', compact('emails'));
} catch (Exception $e) {
return redirect()->back()->with('fails', $e->getMessage());
}
}
/**
* Show the form for creating a new resource.
*
* @param type Department $department
* @param type Help_topic $help
* @param type Priority $priority
* @param type MailboxProtocol $mailbox_protocol
*
* @return type Response
*/
public function create(Department $department, Help_topic $help, Ticket_Priority $ticket_priority, MailboxProtocol $mailbox_protocol)
{
try {
// fetch all the departments from the department table
$departments = $department->get();
// fetch all the helptopics from the helptopic table
$helps = $help->get();
// fetch all the types of priority from the ticket_priority table
$priority = $ticket_priority->get();
// fetch all the types of mailbox protocols from the mailbox_protocols table
$mailbox_protocols = $mailbox_protocol->get();
$service = new \App\Model\MailJob\MailService();
$services = $service->lists('name', 'id')->toArray();
// return with all the table data
return view('themes.default1.admin.helpdesk.emails.emails.create', compact('mailbox_protocols', 'priority', 'departments', 'helps', 'services'));
} catch (Exception $e) {
// return error messages if any
return redirect()->back()->with('fails', $e->getMessage());
}
}
/**
* Check for email input validation.
*
* @param EmailsRequest $request
*
* @return int
*/
public function validatingEmailSettings(MailRequest $request, $id = '')
{
$service_request = $request->except('sending_status', '_token', 'email_address', 'email_name', 'password', 'department', 'priority', 'help_topic', 'fetching_protocol', 'fetching_host', 'fetching_port', 'fetching_encryption', 'imap_authentication', 'sending_protocol', 'sending_host', 'sending_port', 'sending_encryption', 'smtp_authentication', 'internal_notes', '_wysihtml5_mode', 'code');
$service = $request->input('sending_protocol');
$send = 0;
$imap_check[0] = 0;
if ($request->input('imap_validate') == 'on') {
$validate = '/validate-cert';
} elseif (!$request->input('imap_validate')) {
$validate = '/novalidate-cert';
}
if ($request->input('fetching_status') == 'on') {
try {
$imap_check = $this->getImapStream($request, $validate);
} catch (Exception $ex) {
\Log::error($ex->getMessage());
$result = ['fails' => $ex->getMessage()];
return response()->json(compact('result'));
}
if ($imap_check[0] == 0) {
$response = Lang::get('lang.incoming_email_connection_failed_please_check_email_credentials_or_imap_settings');
}
} else {
$imap_check[0] = 1;
}
if ($request->input('sending_status') == 'on') {
$this->emailService($service, $service_request);
try {
$send = $this->sendDiagnoEmail($request);
} catch (Exception $ex) {
\Log::error($ex->getMessage());
$result = ['fails' => $ex->getMessage()];
return response()->json(compact('result'));
}
if ($send === 0) {
$response = Lang::get('lang.outgoing_email_connection_failed');
}
} else {
$send = 1;
}
if ($send === 1 && $imap_check[0] === 1) {
$this->store($request, $imap_check, $service_request, $id);
}
return $this->jsonResponse($send, $imap_check);
}
public function sendDiagnoEmail($request)
{
try {
$mailservice_id = $request->input('sending_protocol');
$driver = $this->getDriver($mailservice_id);
$username = $request->input('email_address');
$password = $request->input('password');
$name = $request->input('email_name');
$host = $request->input('sending_host');
$port = $request->input('sending_port');
$enc = $request->input('sending_encryption');
$service_request = $request->except('sending_status', '_token', 'email_address', 'email_name', 'password', 'department', 'priority', 'help_topic', 'fetching_protocol', 'fetching_host', 'fetching_port', 'fetching_encryption', 'imap_authentication', 'sending_protocol', 'sending_host', 'sending_port', 'sending_encryption', 'smtp_authentication', 'internal_notes', '_wysihtml5_mode');
$this->emailService($driver, $service_request);
$this->setMailConfig($driver, $username, $name, $password, $enc, $host, $port);
$controller = new \App\Http\Controllers\Common\PhpMailController();
$to = 'example@ladybirdweb.com';
$toname = 'test';
$subject = 'test';
$data = 'test';
//dd(\Config::get('mail'),\Config::get('services'));
$send = $controller->laravelMail($to, $toname, $subject, $data, [], []);
} catch (Exception $e) {
\Log::error($e->getMessage());
//dd($e);
}
return $send;
}
public function setMailConfig($driver, $username, $name, $password, $enc, $host, $port)
{
$configs = [
'username' => $username,
'from' => ['address' => $username, 'name' => $name],
'password' => $password,
'encryption' => $enc,
'host' => $host,
'port' => $port,
'driver' => $driver,
];
foreach ($configs as $key => $config) {
if (is_array($config)) {
foreach ($config as $from) {
\Config::set('mail.'.$key, $config);
}
} else {
\Config::set('mail.'.$key, $config);
}
}
}
public function getDriver($driver_id)
{
$short = '';
$email_drivers = new \App\Model\MailJob\MailService();
$email_driver = $email_drivers->find($driver_id);
if ($email_driver) {
$short = $email_driver->short_name;
}
return $short;
}
/**
* Store a newly created resource in storage.
*
* @param type Emails $email
* @param type EmailsRequest $request
*
* @return type Redirect
*/
public function store($request, $imap_check, $service_request = [], $id = '')
{
$email = new Emails();
if ($id !== '') {
$email = $email->find($id);
}
try {
$email->email_address = $request->email_address;
$email->email_name = $request->email_name;
$email->fetching_host = $request->fetching_host;
$email->fetching_port = $request->fetching_port;
$email->fetching_protocol = $request->fetching_protocol;
$email->sending_host = $request->sending_host;
$email->sending_port = $request->sending_port;
$email->sending_protocol = $this->getDriver($request->sending_protocol);
$email->sending_encryption = $request->sending_encryption;
if ($request->smtp_validate == 'on') {
$email->smtp_validate = $request->smtp_validate;
}
if ($request->input('password')) {
$email->password = Crypt::encrypt($request->input('password'));
}
if ($request->input('fetching_status') == 'on') {
$email->fetching_status = 1;
} else {
$email->fetching_status = 0;
}
if ($request->input('sending_status') == 'on') {
$email->sending_status = 1;
} else {
$email->sending_status = 0;
}
if ($request->input('auto_response') == 'on') {
$email->auto_response = 1;
} else {
$email->auto_response = 0;
}
//dd($email);
if ($imap_check !== null) {
$email->fetching_encryption = $imap_check[0];
} else {
$email->fetching_encryption = $request->input('fetching_encryption');
}
// fetching department value
$email->department = $this->departmentValue($request->input('department'));
// fetching priority value
$email->priority = $this->priorityValue($request->input('priority'));
// fetching helptopic value
$email->help_topic = $this->helpTopicValue($request->input('help_topic'));
// inserting the encrypted value of password
$email->password = Crypt::encrypt($request->input('password'));
$email->save(); // run save
if ($id === '') {
// Creating a default system email as the first email is inserted to the system
$email_settings = Email::where('id', '=', '1')->first();
$email_settings->sys_email = $email->id;
$email_settings->save();
} else {
$this->update($id, $request);
}
if (count($service_request) > 0) {
$this->saveMailService($email->id, $service_request, $this->getDriver($request->sending_protocol));
}
return 1;
} catch (Exception $e) {
return 0;
}
}
/**
* Show the form for editing the specified resource.
*
* @param type int $id
* @param type Department $department
* @param type Help_topic $help
* @param type Emails $email
* @param type Priority $priority
* @param type MailboxProtocol $mailbox_protocol
*
* @return type Response
*/
public function edit($id, Department $department, Help_topic $help, Emails $email, Ticket_Priority $ticket_priority, MailboxProtocol $mailbox_protocol)
{
try {
$sys_email = \DB::table('settings_email')->select('sys_email')->where('id', '=', 1)->first();
// dd($sys_email);
// fetch the selected emails
$emails = $email->whereId($id)->first();
// get all the departments
$departments = $department->get();
//get count of emails
$count = $email->count();
// get all the helptopic
$helps = $help->get();
// get all the priority
$priority = $ticket_priority->get();
// get all the mailbox protocols
$mailbox_protocols = $mailbox_protocol->get();
$service = new \App\Model\MailJob\MailService();
$services = $service->lists('name', 'id')->toArray();
// return if the execution is succeeded
return view('themes.default1.admin.helpdesk.emails.emails.edit', compact('mailbox_protocols', 'priority', 'departments', 'helps', 'emails', 'sys_email', 'services'))->with('count', $count);
} catch (Exception $e) {
// return if try fails
return redirect()->back()->with('fails', $e->getMessage());
}
}
/**
* Check for email input validation.
*
* @param EmailsRequest $request
*
* @return int
*/
public function validatingEmailSettingsUpdate($id, MailRequest $request)
{
return $this->validatingEmailSettings($request, $id);
}
/**
* Update the specified resource in storage.
*
* @param type $id
* @param type Emails $email
* @param type EmailsEditRequest $request
*
* @return type Response
*/
public function update($id, $request)
{
try {
if ($request->sys_email == 'on') {
$system = \DB::table('settings_email')
->where('id', '=', 1)
->update(['sys_email' => $id]);
} elseif ($request->input('count') <= 1 && $request->sys_email == null) {
$system = \DB::table('settings_email')
->where('id', '=', 1)
->update(['sys_email' => null]);
}
$return = 1;
} catch (Exception $e) {
$return = $e->getMessage();
}
return $return;
}
/**
* Remove the specified resource from storage.
*
* @param type int $id
* @param type Emails $email
*
* @return type Redirect
*/
public function destroy($id, Emails $email)
{
// fetching the details on the basis of the $id passed to the function
$default_system_email = Email::where('id', '=', '1')->first();
if ($default_system_email->sys_email) {
// checking if the default system email is the passed email
if ($id == $default_system_email->sys_email) {
return redirect('emails')->with('fails', Lang::get('lang.you_cannot_delete_system_default_email'));
}
}
try {
// fetching the database instance of the current email
$emails = $email->whereId($id)->first();
// checking if deleting the email is success or if it's carrying any dependencies
if ($emails->delete() == true) {
return redirect('emails')->with('success', Lang::get('lang.email_deleted_sucessfully'));
} else {
return redirect('emails')->with('fails', Lang::get('lang.email_can_not_delete'));
}
} catch (Exception $e) {
// returns if the try fails
return redirect()->back()->with('fails', $e->getMessage());
}
}
/**
* Create imap connection.
*
* @param type $request
*
* @return type int
*/
public function getImapStream($request, $validate)
{
$fetching_status = $request->input('fetching_status');
$username = $request->input('email_address');
$password = $request->input('password');
$protocol_id = $request->input('mailbox_protocol');
$fetching_protocol = '/'.$request->input('fetching_protocol');
$fetching_encryption = '/'.$request->input('fetching_encryption');
if ($fetching_encryption == '/none') {
$fetching_encryption2 = '/novalidate-cert';
$mailbox_protocol = $fetching_encryption2;
$host = $request->input('fetching_host');
$port = $request->input('fetching_port');
$mailbox = '{'.$host.':'.$port.$fetching_protocol.$mailbox_protocol.'}INBOX';
} else {
$mailbox_protocol = $fetching_protocol.$fetching_encryption;
$host = $request->input('fetching_host');
$port = $request->input('fetching_port');
$mailbox = '{'.$host.':'.$port.$mailbox_protocol.$validate.'}INBOX';
$mailbox_protocol = $fetching_encryption.$validate;
}
try {
$imap_stream = imap_open($mailbox, $username, $password);
} catch (\Exception $ex) {
\Log::error($ex->getMessage());
return $ex->getMessage();
}
//$imap_stream = imap_open($mailbox, $username, $password);
if ($imap_stream) {
$return = [0 => 1, 1 => $mailbox_protocol];
} else {
$return = [0 => 0];
}
return $return;
}
/**
* Check connection.
*
* @param type $imap_stream
*
* @return type int
*/
public function checkImapStream($imap_stream)
{
$check_imap_stream = imap_check($imap_stream);
if ($check_imap_stream) {
$imap_stream = 1;
} else {
$imap_stream = 0;
}
return $imap_stream;
}
/**
* Get smtp connection.
*
* @param type $request
*
* @return int
*/
public function getSmtp($request)
{
$sending_status = $request->input('sending_status');
// cheking for the sending protocol
if ($request->input('sending_protocol') == 'smtp') {
$mail = new \PHPMailer();
$mail->isSMTP();
$mail->Host = $request->input('sending_host'); // Specify main and backup SMTP servers
//$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = $request->input('email_address'); // SMTP username
$mail->Password = $request->input('password'); // SMTP password
$mail->SMTPSecure = $request->input('sending_encryption'); // Enable TLS encryption, `ssl` also accepted
$mail->Port = $request->input('sending_port'); // TCP port to connect to
if (!$request->input('smtp_validate')) {
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->SMTPOptions = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true,
],
];
if ($mail->smtpConnect($mail->SMTPOptions) == true) {
$mail->smtpClose();
$return = 1;
} else {
$return = 0;
}
} else {
if ($mail->smtpConnect()) {
$mail->smtpClose();
$return = 1;
} else {
$return = 0;
}
}
} elseif ($request->input('sending_protocol') == 'mail') {
$return = 1;
}
return $return;
}
/**
* Checking if department value is null.
*
* @param type $dept
*
* @return type string or null
*/
public function departmentValue($dept)
{
if ($dept) {
$email_department = $dept;
} else {
$email_department = null;
}
return $email_department;
}
/**
* Checking if priority value is null.
*
* @param type $priority
*
* @return type string or null
*/
public function priorityValue($priority)
{
if ($priority) {
$email_priority = $priority;
} else {
$email_priority = null;
}
return $email_priority;
}
/**
* Checking if helptopic value is null.
*
* @param type $help_topic
*
* @return type string or null
*/
public function helpTopicValue($help_topic)
{
if ($help_topic) {
$email_help_topic = $help_topic;
} else {
$email_help_topic = null;
}
return $email_help_topic;
}
public function emailService($service, $value = [])
{
switch ($service) {
case 'mailgun':
$this->setServiceConfig($service, $value);
case 'mandrill':
$this->setServiceConfig($service, $value);
case 'ses':
$this->setServiceConfig($service, $value);
}
}
public function setServiceConfig($service, $value)
{
//dd($service);
if (count($value) > 0) {
foreach ($value as $k => $v) {
\Config::set("services.$service.$k", $v);
}
}
}
public function jsonResponse($out, $in)
{
if ($out !== 1) {
$result = ['fails' => Lang::get('lang.outgoing_email_connection_failed')];
}
if ($in[0] !== 1) {
$result = ['fails' => Lang::get('lang.incoming_email_connection_failed_please_check_email_credentials_or_imap_settings')];
}
if ($out === 1 && $in[0] === 1) {
$result = ['success' => Lang::get('lang.success')];
}
return response()->json(compact('result'));
}
public function saveMailService($emailid, $request, $driver)
{
$mail_service = new \App\Model\MailJob\FaveoMail();
$mails = $mail_service->where('email_id', $emailid)->get();
if (count($request) > 0) {
foreach ($mails as $mail) {
$mail->delete();
}
foreach ($request as $key => $value) {
$mail_service->create([
'drive' => $driver,
'key' => $key,
'value' => $value,
'email_id' => $emailid,
]);
}
}
}
}

View File

@@ -9,8 +9,10 @@ use App\Model\helpdesk\Form\Fields;
use App\Model\helpdesk\Form\Forms;
use App\Model\helpdesk\Manage\Help_topic;
// Request
use Illuminate\Http\Request;
use Exception;
// Class
use Form;
use Illuminate\Http\Request;
use Input;
use Lang;
use Redirect;
@@ -30,7 +32,20 @@ class FormController extends Controller
{
$this->fields = $fields;
$this->forms = $forms;
$this->middleware('auth');
$this->middleware('auth', [
'except' => [
'renderForm',
'getType',
'getAttribute',
'getForm',
'createValues',
'addChild',
'renderChild',
'jqueryScript',
'jqueryCheckboxScript',
'jquerySelectScript',
],
]);
}
/**
@@ -68,7 +83,7 @@ class FormController extends Controller
{
try {
return view('themes.default1.admin.helpdesk.manage.form.form');
} catch (Exception $ex) {
} catch (Exception $e) {
return redirect()->back()->with('fails', $e->getMessage());
}
}
@@ -83,9 +98,17 @@ class FormController extends Controller
public function show($id)
{
try {
return view('themes.default1.admin.helpdesk.manage.form.preview', compact('id'));
$forms = new Forms();
$form = $forms->find($id);
//dd($form);
if ($form) {
$fields = $form->fields();
return view('themes.default1.admin.helpdesk.manage.form.preview', compact('form', 'fields'));
}
throw new Exception("Sorry we can't find your request");
} catch (Exception $ex) {
return redirect()->back()->with('fails', $e->getMessage());
return redirect()->back()->with('fails', $ex->getMessage());
}
}
@@ -94,38 +117,41 @@ class FormController extends Controller
*
* @return Response
*/
public function store(Forms $forms)
public function store(Request $request)
{
if (!Input::get('formname')) {
return Redirect::back()->with('fails', Lang::get('lang.please_fill_form_name'));
}
$required = Input::get('required');
$count = count($required);
$require = [];
for ($i = 2; $i < $count + 2; $i++) {
for ($j = 0; $j < 1; $j++) {
array_push($require, $required[$i][$j]);
}
}
$forms->formname = Input::get('formname');
$forms->save();
$count = count(Input::get('name'));
$fields = [];
for ($i = 0; $i <= $count; $i++) {
if (!empty(Input::get('name')[$i])) {
array_push($fields, [
'forms_id' => $forms->id,
'label' => Input::get('label')[$i],
'name' => Input::get('name')[$i],
'type' => Input::get('type')[$i],
'value' => Input::get('value')[$i],
'required' => $require[$i],
]);
}
}
Fields::insert($fields);
$this->validate($request, [
'formname' => 'required|unique:custom_forms,formname',
'label.*' => 'required',
'name.*' => 'required',
'type.*' => 'required',
]);
try {
$forms = new Forms();
$require = Input::get('required');
return Redirect::back()->with('success', Lang::get('lang.successfully_created_form'));
$forms->formname = Input::get('formname');
$forms->save();
$count = count(Input::get('name'));
$fields = [];
for ($i = 0; $i <= $count; $i++) {
if (!empty(Input::get('name')[$i])) {
$name = str_slug(Input::get('name')[$i], '_');
$field = Fields::create([
'forms_id' => $forms->id,
'label' => Input::get('label')[$i],
'name' => $name,
'type' => Input::get('type')[$i],
'required' => $require[$i],
]);
$field_id = $field->id;
$this->createValues($field_id, Input::get('value')[$i]);
}
}
return Redirect::back()->with('success', Lang::get('lang.successfully_created_form'));
} catch (Exception $ex) {
return redirect()->back()->with('fails', $ex->getMessage());
}
}
/**
@@ -154,4 +180,441 @@ class FormController extends Controller
return redirect()->back()->with('success', Lang::get('lang.form_deleted_successfully'));
}
public function edit($id)
{
try {
$forms = new Forms();
$form = $forms->find($id);
$select_forms = $forms->where('id', '!=', $id)->lists('formname', 'id')->toArray();
//dd($form);
if ($form) {
$fields = $form->fields();
//dd($fields);
return view('themes.default1.admin.helpdesk.manage.form.edit', compact('form', 'fields', 'select_forms'));
}
throw new Exception("Sorry we can't find your request");
} catch (Exception $ex) {
return redirect()->back()->with('fails', $ex->getMessage());
}
}
public function addChildForm($id)
{
try {
$forms = new Forms();
$form = $forms->find($id);
$select_forms = $forms->where('id', '!=', $id)->lists('formname', 'id')->toArray();
//dd($form);
if ($form) {
$fields = $form->fields();
//dd($fields);
return view('themes.default1.admin.helpdesk.manage.form.add-child', compact('form', 'fields', 'select_forms'));
}
throw new Exception("Sorry we can't find your request");
} catch (Exception $ex) {
return redirect()->back()->with('fails', $ex->getMessage());
}
}
public function update($id, Request $request)
{
$this->validate($request, [
'formname' => 'required|unique:custom_forms,formname,'.$id,
'label.*' => 'required',
'name.*' => 'required',
'type.*' => 'required',
]);
try {
if (!$request->input('formname')) {
throw new Exception(Lang::get('lang.please_fill_form_name'));
}
$form = new Forms();
$forms = $form->find($id);
if (!$forms) {
throw new Exception('Sorry we can not find your request');
}
$forms->formname = Input::get('formname');
$forms->save();
$count = count(Input::get('name'));
$field = new Fields();
$fields = $field->where('forms_id', $forms->id)->get();
if ($fields->count($fields) > 0) {
foreach ($fields as $fi) {
$fi->delete();
}
}
//dd(Input::get('label'),Input::get('name'),Input::get('type'),Input::get('required'));
for ($i = 0; $i < $count; $i++) {
$name = str_slug(Input::get('name')[$i], '_');
$field = $field->create([
'forms_id' => $forms->id,
'label' => Input::get('label')[$i],
'name' => $name,
'type' => Input::get('type')[$i],
'required' => Input::get('required')[$i],
]);
$field_id = $field->id;
$this->createValues($field_id, Input::get('value')[$i]);
}
return redirect()->back()->with('success', 'updated');
} catch (Exception $ex) {
return redirect()->back()->with('fails', $ex->getMessage());
}
}
public function renderForm($formid)
{
$html = '';
$forms = new Forms();
$form = $forms->find($formid);
if ($form) {
$fields = $form->fields();
foreach ($fields as $field) {
$html .= self::getForm($field);
}
}
return self::requiredStyle().$html;
}
public static function getType($type)
{
switch ($type) {
case 'select':
return 'select';
case 'text':
return 'text';
case 'email':
return 'email';
case 'textarea':
return 'textarea';
case 'select':
return 'select';
case 'radio':
return 'radio';
case 'checkbox':
return 'checkbox';
case 'hidden':
return 'hidden';
case 'password':
return 'password';
}
}
public static function getAttribute($type)
{
switch ($type) {
case 'select':
return "null,['class'=>'form-control']";
case 'text':
return "['class'=>'form-control']";
case 'email':
return "['class'=>'form-control']";
case 'textarea':
return "['class'=>'form-control']";
case 'radio':
return '';
case 'checkbox':
return '';
case 'hidden':
return '';
case 'password':
return "['class'=>'form-control']";
}
}
public static function getForm($field)
{
$required = false;
$required_class = self::requiredClass($field->required);
if ($field->required === '1') {
$required = true;
}
$type = $field->type;
$field_type = self::getType($type);
switch ($field_type) {
case 'select':
return self::selectForm($field_type, $field, $required, $required_class);
case 'text':
return Form::label($field->label, $field->label, ['class' => $required_class]).
Form::$field_type($field->name, null, ['class' => "form-control $field->id", 'id' => $field->id, 'required' => $required]);
case 'email':
return Form::label($field->label, $field->label, ['class' => $required_class]).
Form::$field_type($field->name, null, ['class' => "form-control $field->id", 'id' => $field->id, 'required' => $required]);
case 'password':
return Form::label($field->label, $field->label, ['class' => $required_class]).
Form::$field_type($field->name, ['class' => "form-control $field->id", 'id' => $field->id, 'required' => $required]);
case 'textarea':
return Form::label($field->label, $field->label, ['class' => $required_class]).
Form::$field_type($field->name, null, ['class' => "form-control $field->id", 'id' => $field->id, 'required' => $required]);
case 'radio':
return self::radioForm($field_type, $field, $required, $required_class);
case 'checkbox':
return self::checkboxForm($field_type, $field, $required, $required_class);
case 'hidden':
return Form::$field_type($field->name, null, ['id' => $field->id]);
}
}
public function createValues($fieldid, $values, $childid = null, $key = '')
{
if ($values) {
$values_array = explode(',', $values);
$field_values = new \App\Model\helpdesk\Form\FieldValue();
$field_value = $field_values->where('field_id', $fieldid)->get();
if ($field_value->count() > 0) {
foreach ($field_value as $fv) {
$fv->delete();
}
}
if (count($values_array) > 0) {
foreach ($values_array as $value) {
$field_values->create([
'field_id' => $fieldid,
'child_id' => $childid,
'field_key' => $key,
'field_value' => str_slug($value, '_'),
]);
}
}
}
}
public function addChild($fieldid, Request $request)
{
$ids = $request->except('_token');
try {
foreach ($ids as $valueid => $formid) {
$field_value = new \App\Model\helpdesk\Form\FieldValue();
$field_values = $field_value->where('field_id', $fieldid);
$values = $field_values->where('id', $valueid)->first();
if ($values) {
//if ($formid) {
$values->child_id = $formid;
$values->save();
//}
}
}
return redirect()->back()->with('success', 'Updated');
} catch (Exception $ex) {
return redirect()->back()->with('fails', $ex->getMessage());
}
}
public function renderChild(Request $request)
{
self::setSession();
$render = '';
$value = $request->input('valueid');
$fieldid = $request->input('fieldid');
$field_values = new \App\Model\helpdesk\Form\FieldValue();
$field_value = $field_values->where('field_id', $fieldid)->where('field_value', $value)->first();
$child = '';
if ($field_value) {
$child = $field_value->child_id;
}
if ($child !== '') {
$render = $this->renderForm($child);
}
return $render;
}
public static function jqueryScript($value, $fieldid, $fieldname, $type = '', $index = '')
{
if ($type == 'select') {
return self::jquerySelectScript($fieldid);
}
if ($type == 'checkbox') {
return self::jqueryCheckboxScript($fieldid, $index);
}
return '<script>
$("#'.str_slug($value).'").on("change", function () {
var valueid = $("#'.str_slug($value).'").val();
var fieldid = $("#'.$fieldid.str_slug($value).'").val();
send'.$fieldid.str_slug($value).'(valueid,fieldid);
});
function send'.$fieldid.str_slug($value).'(valueid,fieldid) {
$.ajax({
url: "'.url('forms/render/child/').'",
dataType: "html",
data: {"valueid": valueid,"fieldid": fieldid},
success: function (response) {
$("#'.$fieldname.'").html(response);
},
error: function (response) {
$("#'.$fieldname.'").html(response);
}
});
}
</script>';
}
public static function jqueryCheckboxScript($fieldid, $index)
{
$session = self::getSession();
$fields = new Fields();
$field = $fields->find($fieldid);
if ($field) {
return '<script>
$("#'.$session.$index.'").on("change", function () {
var valueid = $("#'.$session.$index.'").val();
var fieldid = $("#f'.$session.$index.'").val();
if($(this).is(":checked")) {
send'.$session.$index.'(valueid,fieldid);
}else{
$("#div'.$session.'"+valueid).empty();
}
});
function send'.$session.$index.'(valueid,fieldid) {
$.ajax({
url: "'.url('forms/render/child/').'",
dataType: "html",
data: {"valueid": valueid,"fieldid": fieldid},
success: function (response) {
$("#div'.$session.'"+valueid).html(response);
},
error: function (response) {
$("#div'.$session.'"+valueid).html(response);
}
});
}
</script>';
}
}
public static function jquerySelectScript($fieldid)
{
$fields = new Fields();
$field = $fields->find($fieldid);
$session = self::getSession();
if ($field) {
return '<script>
$(document).ready(function () {
var valueid = $(".'.$session.$fieldid.'").val();
var fieldid = $("#hidden'.$session.$fieldid.'").val();
send'.$session.$fieldid.'(valueid,fieldid);
$(".'.$session.$fieldid.'").on("change", function () {
valueid = $(".'.$session.$fieldid.'").val();
var fieldid = $("#hidden'.$session.$fieldid.'").val();
send'.$session.$fieldid.'(valueid,fieldid);
});
function send'.$session.$fieldid.'(valueid,fieldid) {
$.ajax({
url: "'.url('forms/render/child/').'",
dataType: "html",
data: {"valueid": valueid,"fieldid": fieldid},
success: function (response) {
$("#'.$session.$field->name.'").html(response);
},
error: function (response) {
$("#'.$session.$field->name.'").html(response);
}
});
}
});
</script>';
}
}
public static function selectForm($field_type, $field, $required, $required_class)
{
$session = self::getSession();
$script = self::jqueryScript($field_value = '', $field->id, $field->name, $field_type);
$form_hidden = Form::hidden('fieldid[]', $field->id, ['id' => 'hidden'.$session.$field->id]).Form::label($field->label, $field->label, ['class' => $required_class]);
$select = Form::$field_type($field->name, ['' => 'Select', 'Selects' => $field->values()->lists('field_value', 'field_value')->toArray()], null, ['class' => "form-control $session$field->id", 'id' => $session.$field->id, 'required' => $required]).'</br>';
$html = $script.$form_hidden.$select;
$response_div = '<div id='.$session.$field->name.'></div>';
return $html.$response_div;
}
public static function radioForm($field_type, $field, $required, $required_class)
{
$radio = '';
$html = '';
$values = $field->values()->lists('field_value')->toArray();
if (count($values) > 0) {
foreach ($values as $field_value) {
$script = self::jqueryScript($field_value, $field->id, $field->name, $field_type);
$radio .= '<div>'.Form::hidden('fieldid[]', $field->id, ['id' => $field->id.str_slug($field_value)]);
$radio .= Form::$field_type($field->name, $field_value, null, ['class' => "$field->id", 'id' => str_slug($field_value), 'required' => $required]).$script.'<span> '.removeUnderscore($field_value).'</span></div>';
}
$html = Form::label($field->label, $field->label, ['class' => $required_class]).'</br>'.$radio.'<div id='.$field->name.'></br></div>';
}
return $html;
}
public static function checkboxForm($field_type, $field, $required, $required_class)
{
$session = self::getSession();
$checkbox = '';
$html = '';
$values = $field->values()->lists('field_value')->toArray();
if (count($values) > 0) {
$i = 1;
foreach ($values as $field_value) {
$script = self::jqueryScript($field_value, $field->id, $field->name, $field_type, $i);
$checkbox .= Form::hidden('fieldid[]', $field->id, ['id' => 'f'.$session.$i]);
$checkbox .= Form::$field_type($field->name, $field_value, null, ['class' => "$field->id", 'id' => $session.$i, 'required' => $required]);
$checkbox .= '<span> '.removeUnderscore($field_value).'</span>';
//$checkbox .="</br>";
$checkbox .= '<div>'.$script.'<div id=div'.$session.$field_value.'></div></div>';
$i++;
}
$html = Form::label($field->label, $field->label, ['class' => $required_class]).'</br>'.$checkbox;
}
return $html;
}
public static function requiredStyle()
{
$style = "<style>
.required:after {
color: #e32 !important;
content: ' * ' !important;
display:inline !important;
}
</style>";
return $style;
}
public static function requiredClass($required)
{
$class = '';
if ($required === '1') {
$class = 'required';
}
return $class;
}
public static function setSession()
{
$form = self::getSession();
$form++;
\Session::set('fromid', $form);
}
public static function getSession()
{
$form = 0;
if (\Session::has('fromid')) {
$form = \Session::get('fromid');
}
return $form;
}
}

View File

@@ -87,7 +87,7 @@ class HelptopicController extends Controller
$forms = $form->get();
$agents = $agent->where('role', '=', 'agent')->get();
$slas = $sla->get();
$priority = $priority->get();
$priority = Ticket_Priority::where('status', '=', 1)->get();
return view('themes.default1.admin.helpdesk.manage.helptopic.create', compact('priority', 'departments', 'topics', 'forms', 'agents', 'slas'));
} catch (Exception $e) {
@@ -148,7 +148,7 @@ class HelptopicController extends Controller
$topics = $topic->whereId($id)->first();
$forms = $form->get();
$slas = $sla->get();
$priority = $priority->get();
$priority = Ticket_Priority::where('status', '=', 1)->get();
$sys_help_topic = \DB::table('settings_ticket')
->select('help_topic')
->where('id', '=', 1)->first();

View File

@@ -8,7 +8,6 @@ use App;
use App\Http\Controllers\Controller;
//supports
use App\Http\Requests;
use Cache;
use Config;
//classes
use File;
@@ -17,6 +16,7 @@ use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Session;
use Input;
use Lang;
use UnAuth;
use Validator;
/**
@@ -46,24 +46,12 @@ class LanguageController extends Controller
*/
public function switchLanguage($lang)
{
//if(Cache::has('language'))
//{
// return Cache::get('language');
//} else return 'false';
// Cache::put('language',$)
$path = base_path('resources/lang'); // Path to check available language packages
if (array_key_exists($lang, Config::get('languages')) && in_array($lang, scandir($path))) {
// dd(array_key_exists($lang, Config::get('languages')));
// app()->setLocale($lang);
Cache::forever('language', $lang);
// dd(Cache::get('language'));
// dd()
$changed = UnAuth::changeLanguage($lang);
if (!$changed) {
return \Redirect::back()->with('fails', Lang::get('lang.language-error'));
} else {
return Redirect::back()->with('fails', Lang::get('lang.language-error'));
return \Redirect::back();
}
return Redirect::back();
}
/**

View File

@@ -0,0 +1,195 @@
<?php
namespace App\Http\Controllers\Admin\helpdesk;
// controllers
use App\Http\Controllers\Common\NotificationController;
use App\Http\Controllers\Common\PhpMailController;
use App\Http\Controllers\Controller;
// requests
use App\Http\Requests\helpdesk\PriorityRequest;
// models
use App\Model\helpdesk\Email\Emails;
use App\Model\helpdesk\Manage\Help_topic;
use App\Model\helpdesk\Settings\CommonSettings;
use App\Model\helpdesk\Settings\Email;
use App\Model\helpdesk\Ticket\Ticket_Priority;
use Auth;
use DB;
use Exception;
// classes
use Illuminate\Http\Request;
use Illuminate\support\Collection;
use Input;
use Lang;
/**
* TicketController.
*
* @author Ladybird <info@ladybirdweb.com>
*/
class PriorityController extends Controller
{
public function __construct(PhpMailController $PhpMailController, NotificationController $NotificationController)
{
$this->PhpMailController = $PhpMailController;
$this->NotificationController = $NotificationController;
$this->middleware('auth');
}
/**
* Show the Inbox ticket list page.
*
* @return type response
*/
public function priorityIndex()
{
$user_status = CommonSettings::where('id', '=', 6)->first();
// dd( $user_status);
return view('themes.default1.admin.helpdesk.manage.ticket_priority.index', compact('user_status'));
}
/**
* Show the Inbox ticket list page.
*
* @return type response
*/
public function userPriorityIndex(Request $request)
{
try {
$user_status = $request->user_settings_priority;
CommonSettings::where('id', '=', 6)->update(['status' => $user_status]);
return 'Your Status Updated';
} catch (Exception $e) {
return Redirect()->back()->with('fails', $e->getMessage());
}
}
/**
* @return type
*/
public function priorityIndex1()
{
try {
$ticket = new Ticket_Priority();
$tickets = $ticket->select('priority_id', 'priority', 'priority_desc', 'priority_color', 'status', 'is_default', 'ispublic')->get();
return \Datatable::Collection($tickets)
->showColumns('priority', 'priority_desc')
->addColumn('priority_color', function ($model) {
return "<button class='btn' style = 'background-color:$model->priority_color'></button>";
})
->addColumn('status', function ($model) {
if ($model->status == 1) {
return "<a style='color:green'>active</a>";
} elseif ($model->status == 0) {
Ticket_Priority::where('priority_id', '=', '$priority_id')
->update(['priority_id' => '']);
return "<a style='color:red'>inactive</a>";
}
})
->addColumn('action', function ($model) {
if ($model->is_default > 0) {
return '<a href='.url('ticket_priority/'.$model->priority_id.'/edit')." class='btn btn-info btn-xs' disabled='disabled'>Edit</a>&nbsp;<a href=".url('ticket_priority/'.$model->priority_id.'/destroy')." class='btn btn-warning btn-info btn-xs' disabled='disabled' > delete </a>";
} else {
return '<a href='.url('ticket_priority/'.$model->priority_id.'/edit')." class='btn btn-info btn-xs'>Edit</a>&nbsp;<a class='btn btn-danger btn-xs' onclick='confirmDelete(".$model->priority_id.")'>Delete </a>";
}
})
->searchColumns('priority')
->orderColumns('priority', 'priority_color')
->make();
} catch (Exception $ex) {
return redirect()->back()->with('fails', $ex->getMessage());
}
}
/**
* @return type
*/
public function priorityCreate()
{
return view('themes.default1.admin.helpdesk.manage.ticket_priority.create');
}
public function priorityCreate1(PriorityRequest $request)
{
$tk_priority = new Ticket_Priority();
$tk_priority->priority = $request->priority;
$tk_priority->status = $request->status;
$tk_priority->priority_desc = $request->priority_desc;
$tk_priority->priority_color = $request->priority_color;
$tk_priority->ispublic = $request->ispublic;
$tk_priority->save();
return \Redirect::route('priority.index')->with('success', Lang::get('lang.priority_successfully_created'));
}
/**
* @param type $priority_id
*
* @return type
*/
public function priorityEdit($priority_id)
{
$tk_priority = Ticket_Priority::wherepriority_id($priority_id)->first();
return view('themes.default1.admin.helpdesk.manage.ticket_priority.edit', compact('tk_priority'));
}
/**
* @param PriorityRequest $request
*
* @return type
*/
public function priorityEdit1(PriorityRequest $request)
{
$priority_id = $request->priority_id;
$tk_priority = Ticket_Priority::findOrFail($priority_id);
$tk_priority->priority = $request->priority;
$tk_priority->status = $request->status;
$tk_priority->priority_desc = $request->priority_desc;
$tk_priority->priority_color = $request->priority_color;
$tk_priority->ispublic = $request->ispublic;
$tk_priority->save();
if ($request->input('default_priority') == 'on') {
Ticket_Priority::where('is_default', '>', '0')
->update(['is_default' => '0']);
Ticket_Priority::where('priority_id', '=', $priority_id)
->update(['is_default' => $priority_id]);
}
return \Redirect::route('priority.index')->with('success', (Lang::get('lang.priority_successfully_updated')));
}
/**
* @param type $priority_id
*
* @return type
*/
public function destroy($priority_id)
{
$default_priority = Ticket_Priority::where('is_default', '>', '0')->first();
// dd($default_priority->is_default);
$topic = DB::table('help_topic')->where('priority', '=', $priority_id)->update(['priority' => $default_priority->is_default]);
// if ($topic > 0) {
// if ($topic > 1) {
// $text_topic = 'Emails';
// } else {
// $text_topic = 'Email';
// }
// $topic = '<li>'.Lang::get('lang.associated_help_topic_have_been_moved_to_default_sla').'</li>';
// } else {
// $topic = '';
// }
// dd('llll');
$tk_priority = Ticket_Priority::findOrFail($priority_id);
$tk_priority->delete();
return \Redirect::route('priority.index')->with('success', (Lang::get('lang.delete_successfully')));
}
}

View File

@@ -7,10 +7,11 @@ use App\Http\Controllers\Controller;
// requests
use App\Http\Requests\helpdesk\CompanyRequest;
use App\Http\Requests\helpdesk\EmailRequest;
use App\Http\Requests\helpdesk\Job\TaskRequest;
use App\Http\Requests\helpdesk\RatingUpdateRequest;
use App\Http\Requests\helpdesk\StatusRequest;
use App\Http\Requests\helpdesk\SystemRequest;
// models
use App\Http\Requests\helpdesk\SystemRequest;
use App\Model\helpdesk\Agent\Department;
use App\Model\helpdesk\Email\Emails;
use App\Model\helpdesk\Email\Template;
@@ -22,6 +23,7 @@ use App\Model\helpdesk\Settings\Alert;
use App\Model\helpdesk\Settings\CommonSettings;
use App\Model\helpdesk\Settings\Company;
use App\Model\helpdesk\Settings\Email;
use App\Model\helpdesk\Settings\Followup;
use App\Model\helpdesk\Settings\Responder;
use App\Model\helpdesk\Settings\System;
use App\Model\helpdesk\Settings\Ticket;
@@ -31,8 +33,8 @@ use App\Model\helpdesk\Utility\Date_time_format;
use App\Model\helpdesk\Utility\Time_format;
use App\Model\helpdesk\Utility\Timezones;
use App\Model\helpdesk\Workflow\WorkflowClose;
use DateTime;
// classes
use DateTime;
use DB;
use Exception;
use File;
@@ -156,10 +158,17 @@ class SettingsController extends Controller
/* Fetch the values from Timezones table */
$timezones = $timezone->get();
/* Fetch status value of common settings */
$common_setting = $common_settings->select('status')->where('option_name', '=', 'user_set_ticket_status')->first();
// /dd($common_setting);
$common_setting = $common_settings->select('status')
->where('option_name', '=', 'user_set_ticket_status')
->first();
$send_otp = $common_settings->select('status')
->where('option_name', '=', 'send_otp')
->first();
$email_mandatory = $common_settings->select('status')
->where('option_name', '=', 'email_mandatory')
->first();
/* Direct to System Settings Page */
return view('themes.default1.admin.helpdesk.settings.system', compact('systems', 'departments', 'timezones', 'time', 'date', 'date_time', 'common_setting'));
return view('themes.default1.admin.helpdesk.settings.system', compact('systems', 'departments', 'timezones', 'time', 'date', 'date_time', 'common_setting', 'send_otp', 'email_mandatory'));
} catch (Exception $e) {
return redirect()->back()->with('fails', $e->getMessage());
}
@@ -177,7 +186,6 @@ class SettingsController extends Controller
public function postsystem($id, System $system, SystemRequest $request)
{
try {
//dd($request->user_set_ticket_status);
/* fetch the values of system request */
$systems = $system->whereId('1')->first();
/* fill the values to coompany table */
@@ -196,6 +204,10 @@ class SettingsController extends Controller
$usts->status = $request->user_set_ticket_status;
$usts->save();
}
$sotp = CommonSettings::where('option_name', '=', 'send_otp')
->update(['status' => $request->send_otp]);
$email_mandatory = CommonSettings::where('option_name', '=', 'email_mandatory')
->update(['status' => $request->email_mandatory]);
/* redirect to Index page with Success Message */
return redirect('getsystem')->with('success', Lang::get('lang.system_updated_successfully'));
} catch (Exception $e) {
@@ -343,8 +355,42 @@ class SettingsController extends Controller
$emails1 = $email1->get();
$workflow = $workflow->whereId('1')->first();
$cron_path = base_path('artisan');
$command = ":- <pre>***** php $cron_path schedule:run >> /dev/null 2>&1</pre>";
$shared = ":- <pre>/usr/bin/php-cli -q $cron_path schedule:run >> /dev/null 2>&1</pre>";
$warn = '';
$condition = new \App\Model\MailJob\Condition();
$job = $condition->checkActiveJob();
$commands = [
'' => 'Select',
'everyMinute' => 'Every Minute',
'everyFiveMinutes' => 'Every Five Minute',
'everyTenMinutes' => 'Every Ten Minute',
'everyThirtyMinutes' => 'Every Thirty Minute',
'hourly' => 'Every Hour',
'daily' => 'Every Day',
'dailyAt' => 'Daily at',
'weekly' => 'Every Week',
'monthly' => 'Monthly',
'yearly' => 'Yearly',
];
$followupcommands = [
'' => 'Select',
'everyMinute' => 'Every Minute',
'everyFiveMinutes' => 'Every Five Minute',
'everyTenMinutes' => 'Every Ten Minute',
'everyThirtyMinutes' => 'Every Thirty Minute',
'hourly' => 'Every Hour',
'daily' => 'Every Day',
'weekly' => 'Every Week',
'monthly' => 'Monthly',
'yearly' => 'Yearly',
];
if (ini_get('register_argc_argv') == '') {
//$warn = "Please make 'register_argc_argv' flag as on. Or you can set all your job url in cron";
}
return view('themes.default1.admin.helpdesk.settings.crone', compact('emails', 'templates', 'emails1', 'workflow'));
return view('themes.default1.admin.helpdesk.settings.cron.cron', compact('emails', 'templates', 'emails1', 'workflow', 'warn', 'command', 'commands', 'followupcommands', 'condition', 'shared'));
// } catch {
// }
}
@@ -357,10 +403,25 @@ class SettingsController extends Controller
*
* @return type Response
*/
public function postSchedular(Email $email, Template $template, Emails $email1, Request $request, WorkflowClose $workflow)
public function postSchedular(Email $email, Template $template, Followup $followup, Emails $email1, TaskRequest $request, WorkflowClose $workflow)
{
// dd($request);
try {
$followup = $followup->whereId('1')->first();
$status = $request->followup_notification_cron;
if ($status = 'null') {
$followup->status = $request->followup_notification_cron;
}
if ($status = 1) {
$followup->status = $request->followup_notification_cron;
$followup->condition = $request->followup_notification_commands;
$followup->save();
}
if ($request->followup_notification_dailyAt) {
$followup->condition = $request->followup_notification_dailyAt;
$followup->save();
}
/* fetch the values of email request */
$emails = $email->whereId('1')->first();
if ($request->email_fetching) {
@@ -376,12 +437,13 @@ class SettingsController extends Controller
$emails->save();
//workflow
$work = $workflow->whereId('1')->first();
if ($request->condition == 'on') {
if ($request->condition) {
$work->condition = 1;
} else {
$work->condition = 0;
}
$work->save();
$this->saveConditions();
/* redirect to Index page with Success Message */
return redirect('job-scheduler')->with('success', Lang::get('lang.job-scheduler-success'));
} catch (Exception $e) {
@@ -725,7 +787,7 @@ class SettingsController extends Controller
}
/**
* To display the list of ratings in the system.
* To display the list of ratings in the system.
*
* @return type View
*/
@@ -759,7 +821,7 @@ class SettingsController extends Controller
}
/**
* To store rating data.
* To store rating data.
*
* @return type Redirect
*/
@@ -822,7 +884,7 @@ class SettingsController extends Controller
/**
* To delete a type of rating.
*
* @return type Redirect
* @return type Redirect
*/
public function RatingDelete($slug, \App\Model\helpdesk\Ratings\RatingRef $ratingrefs)
{
@@ -831,4 +893,171 @@ class SettingsController extends Controller
return redirect()->back()->with('success', Lang::get('lang.rating_deleted_successfully'));
}
public function saveConditions()
{
if (\Input::get('fetching-commands') && \Input::get('notification-commands')) {
$fetching_commands = \Input::get('fetching-commands');
$fetching_dailyAt = \Input::get('fetching-dailyAt');
$notification_commands = \Input::get('notification-commands');
$notification_dailyAt = \Input::get('notification-dailyAt');
$work_commands = \Input::get('work-commands');
$workflow_dailyAt = \Input::get('workflow-dailyAt');
$fetching_command = $this->getCommand($fetching_commands, $fetching_dailyAt);
$notification_command = $this->getCommand($notification_commands, $notification_dailyAt);
$work_command = $this->getCommand($work_commands, $workflow_dailyAt);
$jobs = ['fetching' => $fetching_command, 'notification' => $notification_command, 'work' => $work_command];
$this->storeCommand($jobs);
}
}
public function getCommand($command, $daily_at)
{
if ($command == 'dailyAt') {
$command = "dailyAt,$daily_at";
}
return $command;
}
public function storeCommand($array = [])
{
$command = new \App\Model\MailJob\Condition();
$commands = $command->get();
if ($commands->count() > 0) {
foreach ($commands as $condition) {
$condition->delete();
}
}
if (count($array) > 0) {
foreach ($array as $key => $save) {
$command->create([
'job' => $key,
'value' => $save,
]);
}
}
}
public function getTicketNumber(Request $request)
{
$this->validate($request, [
'format' => ['required', 'regex:/^(?=.*[$|-|#]).+$/'],
'type' => 'required',
]);
$format = $request->input('format');
$type = $request->input('type');
$number = $this->switchNumber($format, $type);
return $number;
}
public function switchNumber($format, $type)
{
switch ($type) {
case 'random':
return $this->createRandomNumber($format);
case 'sequence':
return $this->createSequencialNumber($format);
}
}
public function createRandomNumber($format)
{
$number = '';
$array = str_split($format);
for ($i = 0; $i < count($array); $i++) {
if ($array[$i] === '$') {
$number .= $this->getRandomAlphebet();
}
if ($array[$i] === '#') {
$number .= rand(0, 9);
}
if ($array[$i] !== '$' && $array[$i] !== '#') {
$number .= $array[$i];
}
}
return $number;
}
public function createSequencialNumber($format)
{
$number = '';
$array_format = str_split($format);
$count = count($array_format);
for ($i = 0; $i < $count; $i++) {
//dd($sub);
if ($array_format[$i] === '$') {
$number .= 'A';
}
if ($array_format[$i] === '#') {
$number .= '0';
}
if ($array_format[$i] !== '$' && $array_format[$i] !== '#') {
$number .= $array_format[$i];
}
}
return $number;
//return $this->nthTicketNumber($number);
}
public function checkCurrentFormat($current, $format)
{
$check = true;
$array_current = str_split($current);
$array_format = str_split($format);
$count_current = count($array_current);
$count_format = count($array_format);
if ($count_current === $count_format) {
return false;
}
for ($i = 0; $i < $count_current; $i++) {
if ($array_current[$i] !== $array_format[$i]) {
return false;
}
}
return $check;
}
public function nthTicketNumber($current, $type, $format, $force = false)
{
$check = $this->checkCurrentFormat($current, $format);
if ($check === false && $force === false) {
$current = $this->createSequencialNumber($format);
}
if ($type === 'sequence') {
$pos_first = stripos($current, '-');
$pos_last = strpos($current, '-', $pos_first + 1);
$current = str_replace('-', '', $current);
$number = ++$current;
if ($pos_first) {
$number = substr_replace($number, '-', $pos_first, 0);
}
if ($pos_last) {
$number = substr_replace($number, '-', $pos_last, 0);
}
}
if ($type === 'random') {
$number = $this->createRandomNumber($format);
}
return $number;
}
public function getRandomAlphebet()
{
$alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$shuffled = str_shuffle($alpha);
$shuffled_array = str_split($shuffled);
$char = $shuffled_array[0];
return $char;
}
}

View File

@@ -0,0 +1,107 @@
<?php
namespace App\Http\Controllers\Admin\helpdesk\SocialMedia;
use App\Http\Controllers\Controller;
use App\Model\helpdesk\Settings\SocialMedia;
use Exception;
use Illuminate\Http\Request;
class SocialMediaController extends Controller
{
public function __construct()
{
$this->middleware(['auth', 'roles'], ['except' => ['configService']]);
}
public function settings($provider)
{
try {
$social = new SocialMedia();
return view('themes.default1.admin.helpdesk.settings.social-media.settings', compact('social', 'provider'));
} catch (Exception $ex) {
return redirect()->back()->with('fails', $ex->getMessage());
}
}
public function postSettings($provider, Request $request)
{
$this->validate($request, [
'client_id' => 'required',
'client_secret' => 'required',
'redirect' => 'required|url',
]);
try {
$requests = $request->except('_token');
$this->insertProvider($provider, $requests);
return redirect()->back()->with('success', 'Updated');
} catch (Exception $ex) {
dd($ex);
return redirect()->back()->with('fails', $ex->getMessage());
}
}
public function deleteProvider($provider, $requests)
{
$social = new SocialMedia();
$socials = $social->where('provider', $provider)->get();
if ($socials->count() > 0) {
foreach ($socials as $media) {
if (array_key_exists($media->key, $requests)) {
$media->delete();
}
}
}
}
public function insertProvider($provider, $requests = [])
{
$this->deleteProvider($provider, $requests);
$social = new SocialMedia();
foreach ($requests as $key => $value) {
$social->create([
'provider' => $provider,
'key' => $key,
'value' => $value,
]);
}
}
public function index()
{
try {
$social = new SocialMedia();
return view('themes.default1.admin.helpdesk.settings.social-media.index', compact('social'));
} catch (Exception $ex) {
return redirect()->back()->with('fails', $ex->getMessage());
}
}
public function configService()
{
$social = new SocialMedia();
$services = $this->services();
foreach ($services as $service) {
\Config::set("services.$service.client_id", $social->getvalueByKey($service, 'client_id'));
\Config::set("services.$service.client_secret", $social->getvalueByKey($service, 'client_secret'));
\Config::set("services.$service.redirect", $social->getvalueByKey($service, 'redirect'));
}
// dd(\Config::get('services'));
}
public function services()
{
return [
'facebook',
'google',
'github',
'twitter',
'linkedin',
'bitbucket',
];
}
}

View File

@@ -9,6 +9,8 @@ use App\Http\Requests\helpdesk\TeamRequest;
use App\Http\Requests\helpdesk\TeamUpdate;
// models
use App\Model\helpdesk\Agent\Assign_team_agent;
use App\Model\helpdesk\Agent\Department;
use App\Model\helpdesk\Agent\Groups;
use App\Model\helpdesk\Agent\Teams;
use App\User;
// classes
@@ -66,7 +68,7 @@ class TeamController extends Controller
public function create(User $user)
{
try {
$user = $user->get();
$user = $user->where('role', '<>', 'user')->where('active', '=', 1)->get();
return view('themes.default1.admin.helpdesk.agent.teams.create', compact('user'));
} catch (Exception $e) {
@@ -111,11 +113,99 @@ class TeamController extends Controller
*
* @return type Response
*/
public function edit($id, User $user, Assign_team_agent $assign_team_agent, Teams $team)
public function show($id, User $user, Assign_team_agent $assign_team_agent, Teams $team)
{
try {
$user = $user->whereId($id)->first();
$teams = $team->whereId($id)->first();
// $team_lead_name=User::whereId($teams->team_lead)->first();
// $team_lead = $team_lead_name->first_name . " " . $team_lead_name->last_name;
// $total_members = $assign_team_agent->where('team_id',$id)->count();
return view('themes.default1.admin.helpdesk.agent.teams.show', compact('user', 'teams', 'id'));
} catch (Exception $e) {
return redirect()->back()->with('fails', $e->getMessage());
}
}
public function getshow($id)
{
// dd($request);
// $id = $request->input('show_id');
// dd($id);
$users = DB::table('team_assign_agent')->select('team_assign_agent.id', 'team_assign_agent.team_id', 'users.user_name', 'users.first_name', 'users.last_name', 'users.active', 'users.assign_group', 'users.primary_dpt', 'users.role')
->join('users', 'users.id', '=', 'team_assign_agent.agent_id')
->where('team_assign_agent.team_id', '=', $id);
// ->get();
// dd($users);
return \Datatable::query($users)
->showColumns('user_name')
->addColumn('first_name', function ($model) {
$full_name = ucfirst($model->first_name).' '.ucfirst($model->last_name);
return $full_name;
})
->addColumn('active', function ($model) {
if ($model->active == '1') {
$role = "<a class='btn btn-success btn-xs'>".'Active'.'</a>';
} elseif ($model->active == 'agent') {
$role = "<a class='btn btn-primary btn-xs'>".'Inactive'.'</a>';
}
return $role;
})
->addColumn('assign_group', function ($model) {
$group = Groups::whereId($model->assign_group)->first();
return $group->name;
})
->addColumn('primary_dpt', function ($model) {
$dept = Department::whereId($model->primary_dpt)->first();
return $dept->name;
})
->addColumn('role', function ($model) {
if ($model->role == 'admin') {
$role = "<a class='btn btn-success btn-xs'>".$model->role.'</a>';
} elseif ($model->role == 'agent') {
$role = "<a class='btn btn-primary btn-xs'>".$model->role.'</a>';
}
return $role;
})
// ->showColumns('role')
->searchColumns('first_name', 'last_name')
->orderColumns('first_name', 'last_name')
->make();
}
/**
* Show the form for editing the specified resource.
*
* @param type $id
* @param type User $user
* @param type Assign_team_agent $assign_team_agent
* @param type Teams $team
*
* @return type Response
*/
public function edit($id, User $user, Assign_team_agent $assign_team_agent, Teams $team)
{
try {
$user = $user->where('role', '<>', 'user')->where('active', '=', 1)->get();
$teams = $team->whereId($id)->first();
$agent_team = $assign_team_agent->where('team_id', $id)->get();
$agent_id = $agent_team->lists('agent_id', 'agent_id');

View File

@@ -12,13 +12,11 @@ use App\Http\Requests\helpdesk\TemplateUdate;
// models
use App\Model\helpdesk\Email\Emails;
use App\Model\helpdesk\Email\Template;
use App\Model\helpdesk\Settings\CommonSettings;
use App\Model\helpdesk\Utility\Languages;
// classes
use Exception;
use Illuminate\Http\Request;
use Input;
use Lang;
/**
* TemplateController.
@@ -320,69 +318,22 @@ class TemplateController extends Controller
public function postDiagno(DiagnosRequest $request)
{
try {
$email_details = Emails::where('id', '=', $request->from)->first();
if ($email_details->sending_protocol == 'mail') {
$mail = new \PHPMailer(); // defaults to using php "mail()"
$mail->IsSendmail(); // telling the class to use SendMail transport
$mail->SetFrom($email_details->email_address, $email_details->email_name); // sender details
$address = $request->to; // receiver email
$mail->AddAddress($address);
$mail->Subject = $request->subject; // subject of the email
$body = $request->message; // body of the email
$mail->CharSet = 'utf8';
// $mail->MsgHTML($body);
// $body = $request->message;
$rtl = CommonSettings::where('option_name', '=', 'enable_rtl')->first();
if ($rtl->option_value == 1) {
$mail->ContentType = 'text/html';
$body = '<html dir="rtl" xml:lang="ar" lang="ar"><head></head><body dir="rtl">'.$body.'</body></html>';
} else {
}
if (!$mail->Send()) {
$return = Lang::get('lang.mailer_error').': '.$mail->ErrorInfo;
} else {
$return = Lang::get('lang.message_has_been_sent');
}
} elseif ($email_details->sending_protocol == 'smtp') {
$mail = new \PHPMailer();
$mail->isSMTP(); // Set mailer to use SMTP
if ($email_details->smtp_validate == '1') {
$mail->SMTPOptions = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true,
],
];
}
$mail->Host = $email_details->sending_host; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = $email_details->email_address; // SMTP username
$mail->Password = \Crypt::decrypt($email_details->password); // SMTP password
$mail->SMTPSecure = $email_details->sending_encryption; // Enable TLS encryption, `ssl` also accepted
$mail->Port = $email_details->sending_port; // TCP port to connect to
$mail->setFrom($email_details->email_address, $email_details->email_name);
$mail->addAddress($request->to, ''); // Add a recipient
$mail->isHTML(true); // Set email format to HTML
$mail->CharSet = 'utf8';
$mail->Subject = $request->subject;
$body = $request->message;
$rtl = CommonSettings::where('option_name', '=', 'enable_rtl')->first();
if ($rtl->option_value == 1) {
$mail->ContentType = 'text/html';
$body = '<html dir="rtl" xml:lang="ar" lang="ar"><head></head><body dir="rtl">'.$body.'</body></html>';
} else {
}
$mail->Body = $body;
if (!$mail->send()) {
$return = Lang::get('lang.mailer_error').': '.$mail->ErrorInfo;
} else {
$return = Lang::get('lang.message_has_been_sent');
}
$to = $request->input('to');
$subject = $request->input('subject');
$msg = $request->input('message');
$from = $request->input('from');
$from_address = Emails::where('id', '=', $from)->first();
if (!$from_address) {
throw new Exception('Sorry! We can not find your request');
}
$controller = new PhpMailController();
$controller->setMailConfig($from_address);
$controller->laravelMail($to, '', $subject, $msg, [], null);
return redirect()->back()->with('success', $return);
return redirect()->back()->with('success', 'Mail has send successfully');
} catch (Exception $e) {
dd($e);
return redirect()->back()->with('fails', $e->getMessage());
}
}

View File

@@ -0,0 +1,168 @@
<?php
namespace App\Http\Controllers\Admin\helpdesk;
use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\Request;
class UrlSettingController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function settings(Request $request)
{
$url = $request->url();
$www = $this->checkWWW($url);
$https = $this->checkHTTP($url);
//dd($www, $https);
try {
return view('themes.default1.admin.helpdesk.settings.url.settings', compact('www', 'https'));
} catch (Exception $ex) {
return redirect()->back()->with('fails', $ex->getMessage());
}
}
public function postSettings(Request $request)
{
try {
$www = $request->input('www');
$ssl = $request->input('ssl');
$string_www = $this->www($www);
$sting_ssl = $this->ssl($ssl);
$string = $string_www.$sting_ssl;
$this->writeHtaccess($string);
return redirect()->back()->with('success', 'updated');
} catch (Exception $ex) {
dd($ex);
return redirect()->back()->with('fails', $ex->getMessage());
}
}
public function www($www)
{
switch ($www) {
case 'yes':
return $this->changeWww();
case 'no':
return $this->changeNonwww();
}
}
public function changeWww()
{
$string = "RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]\n";
return $string;
}
public function changeNonwww()
{
// $string = "\nRewriteEngine On
//RewriteBase /
//RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
//RewriteRule ^(.*)$ http://%1/$1 [R=301,L]\n";
$string = '';
return $string;
}
public function ssl($ssl)
{
switch ($ssl) {
case 'yes':
return $this->changeHttps();
case 'no':
return $this->changeHttp();
}
}
public function changeHttps()
{
$string = "RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]\n";
return $string;
}
public function changeHttp()
{
//$string = "RewriteCond %{HTTPS} off
//RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]\n";
$string = '';
return $string;
}
public function writeHtaccess($string)
{
$file = public_path('.htaccess');
$this->deleteCustom();
$content = file_get_contents($file);
file_put_contents($file, $content."#custom\n".$string);
$new_content = file_get_contents($file);
}
public function deleteCustom()
{
$file = public_path('.htaccess');
$content = file_get_contents($file);
$custom_pos = strpos($content, '#custom');
if ($custom_pos) {
$content = substr_replace($content, '', $custom_pos);
}
file_put_contents($file, $content);
}
public function checkWwwInUrl($url)
{
$check = false;
if (strpos($url, 'www') !== false) {
$check = true;
}
return $check;
}
public function checkHttpsInUrl($url)
{
$check = false;
if (strpos($url, 'https') !== false) {
$check = true;
}
return $check;
}
public function checkWWW($url)
{
$check = $this->checkWwwInUrl($url);
$array['www'] = true;
$array['nonwww'] = false;
if ($check == false) {
$array['www'] = false;
$array['nonwww'] = true;
}
return $array;
}
public function checkHTTP($url)
{
$check = $this->checkHttpsInUrl($url);
$array['https'] = true;
$array['http'] = false;
if ($check == false) {
$array['https'] = false;
$array['http'] = true;
}
return $array;
}
}

View File

@@ -132,7 +132,7 @@ class WorkflowController extends Controller
->addColumn('Actions', function ($model) {
$confirmation = 'Are you sure?';
return "<a class='btn btn-info btn-xs btn-flat' href='".route('workflow.edit', $model->id)."'><i class='fa fa-edit text-black'></i> Edit</a> <a class='btn btn-danger btn-xs btn-flat' href='".route('workflow.delete', $model->id)."' onclick='return confirm_delete()'><i class='fa fa-trash text-black'></i> Delete</a> ";
return "<a class='btn btn-info btn-xs btn-flat' href='".route('workflow.edit', $model->id)."'><i class='fa fa-edit text-black'></i> Edit</a> <a class='btn btn-danger btn-xs btn-flat' href='".route('workflow.delete', $model->id)."'><i class='fa fa-trash text-black'></i> Delete</a>";
})
->make();
}