dbfdg
type == 'company')
{
$supports = Support::where('created_by', \Auth::user()->creatorId())->with(['createdBy','assignUser'])->get();
$countTicket = Support::where('created_by', '=', \Auth::user()->creatorId())->count();
$countOpenTicket = Support::where('status', '=', 'open')->where('created_by', '=', \Auth::user()->creatorId())->count();
$countonholdTicket = Support::where('status', '=', 'on hold')->where('created_by', '=', \Auth::user()->creatorId())->count();
$countCloseTicket = Support::where('status', '=', 'close')->where('created_by', '=', \Auth::user()->creatorId())->count();
return view('support.index', compact('supports','countTicket','countOpenTicket','countonholdTicket','countCloseTicket'));
}
else {
$supports = Support::where('user', \Auth::user()->id)->where('created_by', \Auth::user()->creatorId())->with(['createdBy','assignUser'])->get();
$countTicket = Support::where('user', \Auth::user()->id)->where('created_by', \Auth::user()->creatorId())->count();
$countOpenTicket = Support::where('status', '=', 'open')->where('user', \Auth::user()->id)->where('created_by', \Auth::user()->creatorId())->count();
$countonholdTicket = Support::where('status', '=', 'on hold')->where('user', \Auth::user()->id)->where('created_by', \Auth::user()->creatorId())->count();
$countCloseTicket = Support::where('status', '=', 'close')->where('user', \Auth::user()->id)->where('created_by', \Auth::user()->creatorId())->count();
return view('support.index', compact('supports','countTicket','countOpenTicket','countonholdTicket','countCloseTicket'));
}
}
public function create()
{
$priority = [
__('Low'),
__('Medium'),
__('High'),
__('Critical'),
];
//$status = Support::$status;
$status = Support::status();
$users = User::where('created_by', \Auth::user()->creatorId())->where('type', '!=', 'client')->get()->pluck('name', 'id');
return view('support.create', compact('priority', 'users','status'));
}
public function store(Request $request)
{
$validator = \Validator::make(
$request->all(), [
'subject' => 'required',
'priority' => 'required',
]
);
if($validator->fails())
{
$messages = $validator->getMessageBag();
return redirect()->back()->with('error', $messages->first());
}
$support = new Support();
$support->subject = $request->subject;
$support->priority = $request->priority;
$support->end_date = $request->end_date;
$support->ticket_code = date('hms');
$support->status = 'Open';
if(!empty($request->attachment))
{
//storage limit
$image_size = $request->file('attachment')->getSize();
$result = Utility::updateStorageLimit(\Auth::user()->creatorId(), $image_size);
if($result==1)
{
if($support->attachment)
{
$path = storage_path('uploads/supports' . $support->attachment);
if(file_exists($path))
{
\File::delete($path);
}
}
$fileName = time() . "_" . $request->attachment->getClientOriginalName();
$support->attachment = $fileName;
$dir = 'uploads/supports';
$path = Utility::upload_file($request,'attachment',$fileName,$dir,[]);
if($path['flag']==0){
return redirect()->back()->with('error', __($path['msg']));
}
}
}
$support->description = $request->description;
$support->created_by = \Auth::user()->creatorId();
$support->ticket_created = \Auth::user()->id;
if(\Auth::user()->type == 'company')
{
$support->user= $request->user;
}
else
{
$support->user = \Auth::user()->id;;
}
$support->save();
//For Notification
$setting = Utility::settings(\Auth::user()->creatorId());
$support_priority = \App\Models\Support::$priority[$support->priority];
$user = User::find($support->user);
$supportNotificationArr = [
'support_priority' => $support_priority,
'support_user_name' => $user->name,
];
//Slack Notification
if(isset($setting['support_notification']) && $setting['support_notification'] ==1)
{
Utility::send_slack_msg('new_support_ticket', $supportNotificationArr);
}
//Telegram Notification
if(isset($setting['telegram_support_notification']) && $setting['telegram_support_notification'] ==1)
{
Utility::send_telegram_msg('new_support_ticket', $supportNotificationArr);
}
// send mail
$id =!empty($request->user )? $request->user: \Auth::user()->id;
$employee = User::find($id);
$support_priority = \App\Models\Support::$priority[$support->priority];
$supportArr = [
'support_name'=> $employee->name,
'support_title' => $support->subject,
'support_priority' => $support_priority,
'support_end_date' => $support->end_date,
'support_description' => $support->description,
];
$resp = Utility::sendEmailTemplate('new_support_ticket', [$employee->id => $employee->email], $supportArr);
//webhook
$module ='New Support Ticket';
$webhook= Utility::webhookSetting($module);
if($webhook)
{
$parameter = json_encode($support);
$status = Utility::WebhookCall($webhook['url'],$parameter,$webhook['method']);
if($status == true)
{
return redirect()->route('support.index')->with('success', __('Support successfully added.').((!empty ($resp) && $resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : ''));
}
else
{
return redirect()->back()->with('error', __('Webhook call failed.'));
}
}
return redirect()->route('support.index')->with('success', __('Support successfully added.') .((isset($result) && $result!=1) ? '
' . $result . '' : '').(($resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : '') );
}
public function show(Support $support)
{
//
}
public function edit(Support $support)
{
$priority = [
__('Low'),
__('Medium'),
__('High'),
__('Critical'),
];
//$status = Support::$status;
$status = Support::status();
$users = User::where('created_by', \Auth::user()->creatorId())->where('type', '!=', 'client')->get()->pluck('name', 'id');
return view('support.edit', compact('priority', 'users', 'support','status'));
}
public function update(Request $request, Support $support)
{
$validator = \Validator::make(
$request->all(), [
'subject' => 'required',
'priority' => 'required',
]
);
if($validator->fails())
{
$messages = $validator->getMessageBag();
return redirect()->back()->with('error', $messages->first());
}
$support->subject = $request->subject;
$support->user = $request->user;
$support->priority = $request->priority;
$support->status = $request->status;
$support->end_date = $request->end_date;
if(!empty($request->attachment))
{
//storage limit
$file_path = '/uploads/supports/'.$support->attachment;
$image_size = $request->file('attachment')->getSize();
$result = Utility::updateStorageLimit(\Auth::user()->creatorId(), $image_size);
if($result==1)
{
if($support->attachment)
{
Utility::changeStorageLimit(\Auth::user()->creatorId(), $file_path);
$path = storage_path('uploads/supports' . $support->attachment);
if(file_exists($path))
{
\File::delete($path);
}
}
$fileName = time() . "_" . $request->attachment->getClientOriginalName();
$support->attachment = $fileName;
$dir = 'uploads/supports';
$path = Utility::upload_file($request,'attachment',$fileName,$dir,[]);
if($path['flag']==0){
return redirect()->back()->with('error', __($path['msg']));
}
}
}
$support->description = $request->description;
if(\Auth::user()->type == 'company')
{
$support->user= $request->user;
}
else
{
$support->user = \Auth::user()->id;;
}
$support->save();
return redirect()->route('support.index')->with('success', __('Support successfully updated.'));
}
public function destroy(Support $support)
{
$support->delete();
if($support->attachment)
{
//storage limit
$file_path = '/uploads/supports/'.$support->attachment;
$result = Utility::changeStorageLimit(\Auth::user()->creatorId(), $file_path);
\File::delete(storage_path('uploads/supports/' . $support->attachment));
}
return redirect()->route('support.index')->with('success', __('Support successfully deleted.'));
}
public function reply($ids)
{
try {
$id = Crypt::decrypt($ids);
} catch (\Throwable $th) {
return redirect()->back()->with('error', __('Support Not Found.'));
}
$id = \Crypt::decrypt($ids);
$replyes = SupportReply::where('support_id', $id)->with(['users'])->get();
$support = Support::with(['assignUser','createdBy'])->find($id);
foreach($replyes as $reply)
{
$supportReply = SupportReply::find($reply->id);
$supportReply->is_read = 1;
$supportReply->save();
}
return view('support.reply', compact('support', 'replyes'));
}
public function replyAnswer(Request $request, $id)
{
$supportReply = new SupportReply();
$supportReply->support_id = $id;
$supportReply->user = \Auth::user()->id;
$supportReply->description = $request->description;
$supportReply->created_by = \Auth::user()->creatorId();
$supportReply->save();
return redirect()->back()->with('success', __('Support reply successfully send.'));
}
public function grid()
{
if(\Auth::user()->type == 'company')
{
$supports = Support::where('created_by', \Auth::user()->creatorId())->with(['assignUser','createdBy'])->get();
return view('support.grid', compact('supports'));
}
elseif(\Auth::user()->type == 'client')
{
// $supports = Support::where('user', \Auth::user()->id)->orWhere('ticket_created', \Auth::user()->id)->with(['assignUser','createdBy'])->get();
$supports = Support::where('user', \Auth::user()->id)->where('created_by', \Auth::user()->creatorId())->with(['createdBy','assignUser'])->get();
return view('support.grid', compact('supports'));
}
else
{
// $supports = Support::where('user', \Auth::user()->id)->orWhere('ticket_created', \Auth::user()->id)->with(['assignUser','createdBy'])->get();
$supports = Support::where('user', \Auth::user()->id)->where('created_by', \Auth::user()->creatorId())->with(['createdBy','assignUser'])->get();
return view('support.grid', compact('supports'));
}
}
}