no message

This commit is contained in:
sujitprasad
2016-02-01 18:58:12 +05:30
parent b0e8fadb58
commit 36b3747eb2
5 changed files with 1948 additions and 0 deletions

View File

@@ -0,0 +1,759 @@
<?php
namespace App\Http\Controllers\Api\v1;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Controllers\Api\v1\TicketController;
//use Illuminate\Support\Facades\Request as Value;
use App\Model\helpdesk\Ticket\Tickets;
use App\Model\helpdesk\Ticket\Ticket_Thread;
use App\Model\helpdesk\Ticket\Ticket_attachments;
use App\Http\Requests\helpdesk\TicketRequest;
use App\User;
use App\Model\helpdesk\Agent\Teams;
use App\Model\kb\Settings;
use App\Model\helpdesk\Manage\Help_topic;
use App\Model\helpdesk\Manage\Sla_plan;
use App\Model\helpdesk\Utility\Priority;
use App\Model\helpdesk\Agent\Department;
use App\Model\helpdesk\Ticket\Ticket_source;
/**
* -----------------------------------------------------------------------------
* Api Controller
* -----------------------------------------------------------------------------
*
*
* @author Vijay Sebastian <vijay.sebastian@ladybirdweb.com>
* @copyright (c) 2016, Ladybird Web Solution
* @name Faveo HELPDESK
* @version v1
*
*
*/
class ApiController extends Controller {
public $user;
public $request;
public $ticket;
public $model;
public $thread;
public $attach;
public $ticketRequest;
public $faveoUser;
public $team;
public $setting;
public $helptopic;
public $slaPlan;
public $department;
public $priority;
public $source;
/**
*
* @param Request $request
*/
public function __construct(Request $request) {
$this->request = $request;
$this->middleware('jwt.auth');
$this->middleware('api', ['except' => 'GenerateApiKey']);
$user = \JWTAuth::parseToken()->authenticate();
$this->user = $user;
$ticket = new TicketController();
$this->ticket = $ticket;
$model = new Tickets();
$this->model = $model;
$thread = new Ticket_Thread();
$this->thread = $thread;
$attach = new Ticket_attachments();
$this->attach = $attach;
$ticketRequest = new TicketRequest();
$this->ticketRequest = $ticketRequest;
$faveoUser = new User();
$this->faveoUser = $faveoUser;
$team = new Teams();
$this->team = $team;
$setting = new Settings();
$this->setting = $setting;
$helptopic = new Help_topic();
$this->helptopic = $helptopic;
$slaPlan = new Sla_plan();
$this->slaPlan = $slaPlan;
$priority = new Priority();
$this->priority = $priority;
$department = new Department();
$this->department = $department;
$source = new Ticket_source();
$this->source = $source;
}
/**
* Create Tickets
* @method POST
* @param user_id,subject,body,helptopic,sla,priority,dept
* @return json
*/
public function CreateTicket() {
try {
$v = \Validator::make($this->request->all(), [
'user_id' => 'required|exists:users,id',
'subject' => 'required',
'body' => 'required',
'helptopic' => 'required|exists:help_topic,id',
'sla' => 'required|exists:sla_plan,id',
'priority' => 'required|exists:ticket_priority,priority_id',
'dept' => 'required|exists:department,id',
]);
if ($v->fails()) {
$error = $v->errors();
return response()->json(compact('error'));
}
$user_id = $this->request->input('user_id');
$subject = $this->request->input('subject');
$body = $this->request->input('body');
$helptopic = $this->request->input('helptopic');
$sla = $this->request->input('sla');
$priority = $this->request->input('priority');
$headers = $this->request->input('headers');
$dept = $this->request->input('dept');
$assignto = $this->request->input('assignto');
$form_data = $this->request->input('form_data');
$source = $this->request->input('source');
$attach = $this->request->input('attachments');
/**
* return s ticket number
*/
$response = $this->ticket->create_ticket($user_id, $subject, $body, $helptopic, $sla, $priority, $source, $headers, $dept, $assignto, $form_data, $attach);
/**
* return ticket details
*/
$result = $this->thread->where('id', $response)->first();
//$result = $this->attach($result->id,$file);
return response()->json(compact('result'));
} catch (\Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Reply for the ticket
* @param TicketRequest $request
* @return json
*/
public function TicketReply() {
try {
$v = \Validator::make($this->request->all(), [
'ticket_ID' => 'required|exists:tickets,id',
'ReplyContent' => 'required',
]);
if ($v->fails()) {
$error = $v->errors();
return response()->json(compact('error'));
}
$attach = $this->request->input('attachments');
$result = $this->ticket->reply($this->thread, $this->request, $this->attach, $attach);
return response()->json(compact('result'));
} catch (\Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Edit a ticket
* @return json
*/
public function EditTicket() {
try {
$v = \Validator::make($this->request->all(), [
'ticket_id' => 'required|exists:tickets,id',
'subject' => 'required',
'sla_plan' => 'required|exists:sla_plan,id',
'help_topic' => 'required|exists:help_topic,id',
'ticket_source' => 'required|exists:ticket_source,id',
'ticket_priority' => 'required|exists:ticket_priority,priority_id',
]);
if ($v->fails()) {
$error = $v->errors();
return response()->json(compact('error'));
}
$ticket_id = $this->request->input('ticket_id');
$result = $this->ticket->ticket_edit_post($ticket_id, $this->thread, $this->model);
return response()->json(compact('result'));
} catch (\Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Delete The Ticket
* @return json
*/
public function DeleteTicket() {
try {
$v = \Validator::make($this->request->all(), [
'ticket_id' => 'required|exists:tickets,id',
]);
if ($v->fails()) {
$error = $v->errors();
return response()->json(compact('error'));
}
$id = $this->request->input('ticket_id');
$result = $this->ticket->delete($id, $this->model);
return response()->json(compact('result'));
} catch (\Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Get all opened tickets
* @return json
*/
public function OpenedTickets() {
try {
$result = $this->model->where('status', '=', 1)->where('isanswered', '=', 0)->where('assigned_to', '=', 0)->orderBy('id', 'DESC')->get();
return response()->json(compact('result'));
} catch (\Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Get Unsigned Tickets
* @return json
*/
public function UnassignedTickets() {
try {
$result = $this->model->where('assigned_to', '=', 0)->where('status', '1')->orderBy('id', 'DESC')->get();
return response()->json(compact('result'));
} catch (\Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Get closed Tickets
* @return json
*/
public function CloseTickets() {
try {
$result = $this->model->where('status', '>', 1)->where('status', '<', 4)->orderBy('id', 'DESC')->get();
return response()->json(compact('result'));
} catch (\Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Get All agents
* @return json
*/
public function GetAgents() {
try {
$result = $this->faveoUser->where('role', 'agent')->where('active', 1)->get();
return response()->json(compact('result'));
} catch (Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Get All Teams
* @return json
*/
public function GetTeams() {
try {
$result = $this->team->get();
return response()->json(compact('result'));
} catch (Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* To assign a ticket
* @return json
*/
public function AssignTicket() {
try {
$v = \Validator::make($this->request->all(), [
'ticket_id' => 'required',
'user' => 'required',
]);
if ($v->fails()) {
$error = $v->errors();
return response()->json(compact('error'));
}
$id = $this->request->input('ticket_id');
$response = $this->ticket->assign($id);
if ($response == 1) {
$result = 'success';
return response()->json(compact('result'));
} else {
return response()->json(compact('response'));
}
} catch (Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Get all customers
* @return json
*/
public function GetCustomers() {
try {
$v = \Validator::make($this->request->all(), [
'search' => 'required',
]);
if ($v->fails()) {
$error = $v->errors();
return response()->json(compact('error'));
}
$search = $this->request->input('search');
$result = $this->faveoUser->where('first_name', 'like', '%' . $search . '%')->orWhere('last_name', 'like', '%' . $search . '%')->orWhere('user_name', 'like', '%' . $search . '%')->orWhere('email', 'like', '%' . $search . '%')->get();
return response()->json(compact('result'));
} catch (Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Get a customer by id
* @return json
*/
public function GetCustomer() {
try {
$v = \Validator::make($this->request->all(), [
'user_id' => 'required',
]);
if ($v->fails()) {
$error = $v->errors();
return response()->json(compact('error'));
}
$id = $this->request->input('user_id');
$result = $this->faveoUser->where('id', $id)->first();
return response()->json(compact('result'));
} catch (Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Search tickets
* @return json
*/
public function SearchTicket() {
try {
$v = \Validator::make($this->request->all(), [
'search' => 'required',
]);
if ($v->fails()) {
$error = $v->errors();
return response()->json(compact('error'));
}
$search = $this->request->input('search');
$result = $this->thread->select('ticket_id')->where('title', 'like', '%' . $search . '%')->orWhere('body', 'like', '%' . $search . '%')->get();
return response()->json(compact('result'));
} catch (Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Get threads of a ticket
* @return json
*/
public function TicketThreads() {
try {
$v = \Validator::make($this->request->all(), [
'id' => 'required',
]);
if ($v->fails()) {
$error = $v->errors();
return response()->json(compact('error'));
}
$id = $this->request->input('id');
$result = $this->thread->where('ticket_id', $id)->get();
return response()->json(compact('result'));
} catch (Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Check the url is valid or not
* @return json
*/
public function CheckUrl() {
//dd($this->request);
try {
$v = \Validator::make($this->request->all(), [
'url' => 'required|url'
]);
if ($v->fails()) {
$error = $v->errors();
return response()->json(compact('error'));
}
$url = $this->request->input('url');
$url = $url . "/api/v1/helpdesk/check-url?token=" . \Config::get('app.token');
$result = $this->CallGetApi($url);
return response()->json(compact('result'));
} catch (Exception $ex) {
$error = $e->getMessage();
return response()->json(compact('error'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Success for currect url
* @return string
*/
public function UrlResult() {
return "success";
}
/**
* Call curl function for Get Method
* @param type $url
* @return type int|string|json
*/
public function CallGetApi($url) {
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
if (curl_errno($curl)) {
echo 'error:' . curl_error($curl);
}
return $response;
curl_close($curl);
}
/**
* Call curl function for POST Method
* @param type $url
* @param type $data
* @return type int|string|json
*/
public function CallPostApi($url, $data) {
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($curl);
if (curl_errno($curl)) {
echo 'error:' . curl_error($curl);
}
return $response;
curl_close($curl);
}
/**
* To generate api string
*
* @return type | json
*/
public function GenerateApiKey() {
try {
$set = $this->setting->where('id', '1')->first();
if ($set->api_enable == 1) {
$key = str_random(32);
$set->api_key = $key;
$set->save();
$result = $set->api_key;
return response()->json(compact('result'));
} else {
$result = 'please enable api';
return response()->json(compact('result'));
}
} catch (Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Get help topics
* @return json
*/
public function GetHelpTopic() {
try {
$result = $this->helptopic->get();
return response()->json(compact('result'));
} catch (Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Get Sla plans
* @return json
*/
public function GetSlaPlan() {
try {
$result = $this->slaPlan->get();
return response()->json(compact('result'));
} catch (Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Get priorities
* @return json
*/
public function GetPriority() {
try {
$result = $this->priority->get();
return response()->json(compact('result'));
} catch (Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Get departments
* @return json
*/
public function GetDepartment() {
try {
$result = $this->department->get();
return response()->json(compact('result'));
} catch (Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Getting the tickets
* @return type json
*/
public function GetTickets() {
try {
$tickets = $this->model->paginate(10);
$tickets->toJson();
return $tickets;
} catch (Exception $e) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
} catch (\TokenExpiredException $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* Fetching the Inbox details
* @return type json
*/
public function Inbox() {
try {
$result = $this->user->join('tickets', 'users.id', '=', 'tickets.user_id')
->join('department', 'department.id', '=', 'tickets.dept_id')
->join('priority', 'priority.id', '=', 'tickets.priority_id')
->join('sla_plan', 'sla_plan.id', '=', 'tickets.sla')
->join('help_topic', 'help_topic.id', '=', 'tickets.help_topic_id')
->join('ticket_status', 'ticket_status.id', '=', 'tickets.status')
->join('ticket_thread', function($join) {
$join->on('tickets.id', '=', 'ticket_thread.ticket_id')
->whereNotNull('title');
})
->select('first_name', 'last_name', 'email', 'profile_pic', 'ticket_number', 'tickets.id', 'title', 'tickets.created_at', 'department.name as department_name', 'priority.name as priotity_name', 'sla_plan.name as sla_plan_name', 'help_topic.topic as help_topic_name', 'ticket_status.name as ticket_status_name')
->groupby('tickets.id')
->distinct()
->paginate(10)
->toJson();
return $result;
} catch (Exception $ex) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
}
}
/**
* Create internal note
* @return type json
*/
public function InternalNote() {
try {
$v = \Validator::make($this->request->all(), [
'userid' => 'required|exists:users,id',
'ticketid' => 'required|exists:tickets,id',
'body' => 'required',
]);
if ($v->fails()) {
$error = $v->errors();
return response()->json(compact('error'));
}
$userid = $this->request->input('userid');
$ticketid = $this->request->input('ticketid');
$body = $this->request->input('body');
$thread = $this->thread->create(['ticket_id' => $ticketid, 'user_id' => $userid, 'is_internal' => 1, 'body' => $body]);
return response()->json(compact('thread'));
} catch (Exception $ex) {
$error = $e->getMessage();
$line = $e->getLine();
$file = $e->getFile();
return response()->json(compact('error', 'file', 'line'));
}
}
}

View File

@@ -0,0 +1,156 @@
<?php namespace App\Http\Controllers\Api\v1;
// controllers
use App\Http\Controllers\Controller;
// requests
use Illuminate\Http\Request;
use App\Http\Requests\helpdesk\InstallerRequest;
// models
use App\User;
use App\Model\helpdesk\Settings\System;
use App\Model\helpdesk\Form\Form_details;
use App\Model\helpdesk\Utility\Date_time_format;
// classes
use App;
use Artisan;
use Config;
use File;
use Hash;
use Input;
use Redirect;
use Session;
use View;
use Exception;
/**
* |=======================================================================
* |Class: InstallController
* |=======================================================================
*
* Class to perform the first install operation without this the database
* settings could not be started
*
* @package Faveo HELPDESK
* @subpackage Controller
* @author Ladybird <info@ladybirdweb.com>
*
*/
class InstallerApiController extends Controller {
/**
* config_database
* This function is to configure the database and install the application via API call.
* @return type Json
*/
public function config_database(Request $request) {
error_reporting(E_ALL & ~E_NOTICE);
// Check for pre install
if (\Config::get('database.install') == '%0%') {
$default = $request->database;
$host = $request->host;
$database = $request->databasename;
$dbusername = $request->dbusername;
$dbpassword = $request->dbpassword;
$port = $request->port;
if(isset($default) && isset($host) && isset($database) && isset($dbusername)){
// Setting environment values
$_ENV['DB_TYPE'] = $default;
$_ENV['DB_HOST'] = $host;
$_ENV['DB_PORT'] = $port;
$_ENV['DB_DATABASE'] = $database;
$_ENV['DB_USERNAME'] = $dbusername;
$_ENV['DB_PASSWORD'] = $dbpassword;
$config = '';
foreach ($_ENV as $key => $val) {
$config .= "{$key}={$val}\n";
}
// Write environment file
$fp = fopen(base_path()."/.env", 'w');
fwrite($fp, $config);
fclose($fp);
return ['response'=>'success','status'=>'1'];
} else {
return ['response'=>'fail','reason'=>'insufficient parameters','status'=>'0'];
}
} else {
return ['response'=>'fail','reason'=>'this system is already installed','status'=>'0'];
}
}
/**
* config_database
* This function is to configure the database and install the application via API call.
* @return type Json
*/
public function config_system(Request $request) {
// Check for pre install
if (\Config::get('database.install') == '%0%') {
$firstname = $request->firstname;
$lastname = $request->lastname;
$email = $request->email;
$username = $request->username;
$password = $request->password;
$timezone = $request->timezone;
$datetime = $request->datetime;
// Migrate database
Artisan::call('migrate', array('--force' => true));
Artisan::call('db:seed', array('--force' => true));
// var_dump($datetime);
// $date_time_format = Date_time_format::where('format','=',$datetime)->first();
// // dd($date_time_format->id);
// if($date_time_format->id){
// $date_time = 1;
// } else {
// return 'date time format not supported';
// }
// Creating minum settings
$system = System::where('id','=','1')->first();
$system->time_zone = 1;
$system->date_time_format = 1;
$system->save();
// Creating user
$user = User::create(array(
'first_name' => $firstname,
'last_name' => $lastname,
'email' => $email,
'user_name' => $username,
'password' => Hash::make($password),
'active' => 1,
'role' => 'admin',
'assign_group' => 1,
'primary_dpt' => 1,
));
// Setting database installed status
$value = '1';
$install = app_path('../config/database.php');
$datacontent = File::get($install);
$datacontent = str_replace('%0%', $value, $datacontent);
File::put($install, $datacontent);
// Applying email configuration on route
$smtpfilepath = "\App\Http\Controllers\Common\SettingsController::smtp()";
$path22 = app_path('Http/routes.php');
$content23 = File::get($path22);
$content23 = str_replace('"%smtplink%"', $smtpfilepath, $content23);
File::put($path22, $content23);
// If user created return success
if($user){
return ['response'=>'success','status'=>'1'];
}
} else {
return ['response'=>'fail','reason'=>'this system is already installed','status'=>'0'];
}
}
}

View File

@@ -0,0 +1,378 @@
<?php
namespace App\Http\Controllers\Api\v1;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class TestController extends Controller {
public $server;
public function __construct() {
$server = new Request();
$url = $_SERVER['REQUEST_URI'];
$server = parse_url($url);
$server["path"] = dirname($server["path"]);
$server = parse_url($server["path"]);
$server["path"] = dirname($server["path"]);
$this->server = "http://" . $_SERVER['HTTP_HOST'] . $server['path'] . "/";
}
static function CallGetApi($url) {
//dd($url);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
if (curl_errno($curl)) {
echo 'error:' . curl_error($curl);
}
return $response;
curl_close($curl);
}
static function CallPostApi($url, $data) {
//dd($url);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($curl);
if (curl_errno($curl)) {
echo 'error:' . curl_error($curl);
}
return $response;
curl_close($curl);
}
public function TicketReply() {
$file = file_get_contents(base_path() . '/../lb-faveo/Img/Ladybird.png');
$data = [
'ticket_ID' => '81',
'ReplyContent' => 'reply for the ticket id',
'api-key' => 'clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg',
'attachments' => [
[
'name' => 'ladybird',
'size' => '26398',
'type' => 'png',
'file' => $file,
],
[
'name' => 'ladybird',
'size' => '26398',
'type' => 'png',
'file' => $file,
]
],
];
$data = http_build_query($data, '', '&');
$url = $this->server . "helpdesk/reply?token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallPostApi($url, $data);
return $respose;
}
public function CreateTicket() {
$file = file_get_contents(base_path() . '/../lb-faveo/Img/Ladybird.png');
$data = [
'user_id' => '1',
'subject' => 'Api create via faveo api',
'body' => 'Test me when call api',
'helptopic' => '1',
'sla' => '1',
'priority' => '1',
'headers' => [0 => 'vijaycodename47@gmail.com'],
'dept' => '1',
'assignto' => '0',
'source' => 'api',
'api-key' => 'clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg',
/** if attachment */
'attachments' => [
[
'name' => 'ladybird',
'size' => '26398',
'type' => 'png',
'file' => $file,
],
[
'name' => 'ladybird',
'size' => '26398',
'type' => 'png',
'file' => $file,
]
],
];
$data = http_build_query($data, '', '&');
$url = $this->server . "helpdesk/create?token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallPostApi($url, $data);
return $respose;
}
public function GenerateToken() {
$data = [
//'email'=>'vijaycodename47@gmail.com',
'username' => 'vijay',
'password' => 'manjapra',
'api-key' => 'clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg'
];
$data = http_build_query($data, '', '&');
$url = $this->server . "authenticate";
//dd($url);
$_this = new self();
$respose = $_this->CallPostApi($url, $data);
return $respose;
}
public function CreateUser() {
$data = [
'email' => 'vijaycodename@gmail.com',
'password' => 'manjapra',
'api-key' => 'clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg'
];
$data = http_build_query($data, '', '&');
$url = $this->server . "register";
$_this = new self();
$respose = $_this->CallPostApi($url, $data);
return $respose;
}
public function GetAuthUser() {
$url = $this->server . "authenticate/user?token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function EditTicket() {
$data = [
'ticket_id' => '81',
'subject' => 'Api editing ticket via faveo api',
'sla_plan' => '2',
'help_topic' => '2',
'ticket_source' => '2',
'api-key' => 'clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg',
'ticket_priority' => '2',
];
$data = http_build_query($data, '', '&');
$url = $this->server . "helpdesk/edit?token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallPostApi($url, $data);
return $respose;
}
public function DeleteTicket() {
$data = [
'ticket_id' => [],
'api-key' => 'clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg'
];
$data = http_build_query($data, '', '&');
$url = $this->server . "helpdesk/delete?token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallPostApi($url, $data);
return $respose;
}
public function OpenedTickets() {
$url = $this->server . "helpdesk/open?token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function UnassignedTickets() {
$url = $this->server . "helpdesk/unassigned?token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function CloseTickets() {
$url = $this->server . "helpdesk/closed?token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function GetAgents() {
$url = $this->server . "helpdesk/agents?token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function GetTeams() {
$url = $this->server . "helpdesk/teams?token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function AssignTicket() {
$data = [
'ticket_id' => '8',
'user' => 'vijay.sebastian@ladybird.com',
'api-key' => 'clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg'
];
$data = http_build_query($data, '', '&');
$url = $this->server . "helpdesk/assign?token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallPostApi($url, $data);
return $respose;
}
public function GetCustomers() {
$search = [
'search' => 'vij',
'api-key' => 'clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg'
];
$data = http_build_query($search, '', '&');
$url = $this->server . "helpdesk/customers?token=" . \Config::get('app.token');
$url = $url . '&' . $data;
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function GetCustomer() {
$search = [
'user_id' => '1',
'api-key' => 'clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg'
];
$data = http_build_query($search, '', '&');
$url = $this->server . "helpdesk/customer?token=" . \Config::get('app.token');
$url = $url . '&' . $data;
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function GetSearch() {
$search = [
'search' => 'api',
'api-key' => 'clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg'
];
$data = http_build_query($search, '', '&');
$url = $this->server . "helpdesk/ticket-search?token=" . \Config::get('app.token');
$url = $url . '&' . $data;
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function TicketThreads() {
$search = [
'id' => '8',
'api-key' => 'clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg'
];
$data = http_build_query($search, '', '&');
$url = $this->server . "helpdesk/ticket-thread?token=" . \Config::get('app.token');
$url = $url . '&' . $data;
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function Url() {
$search = [
'url' => 'http://localhost/FaveoHELPDESK+KBLatests',
'api-key' => 'clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg'
];
$data = http_build_query($search, '', '&');
$url = $this->server . "helpdesk/url?token=" . \Config::get('app.token');
$url = $url . '&' . $data;
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function GenerateApiKey() {
$url = $this->server . "helpdesk/api-key?token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function GetHelpTopic() {
$url = $this->server . "helpdesk/help-topic?api-key=clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg&token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function GetSlaPlan() {
$url = $this->server . "helpdesk/sla-plan?api-key=clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg&token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function GetPriority() {
$url = $this->server . "helpdesk/priority?api-key=clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg&token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function GetDepartment() {
$url = $this->server . "helpdesk/department?api-key=clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg&token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function GetTickets() {
$url = $this->server . "helpdesk/tickets?api-key=clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg&token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function Inbox() {
$url = $this->server . "helpdesk/inbox?api-key=clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg&token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallGetApi($url);
return $respose;
}
public function InternalNote() {
$data = [
'ticketid' => '23',
'userid' => 1,
'body' => 'Testing the api internal note',
'api-key' => 'clYbe1g7BYVEJznBdvCEBR0xDCLDqKgg'
];
$data = http_build_query($data, '', '&');
$url = $this->server . "helpdesk/internal-note?token=" . \Config::get('app.token');
$_this = new self();
$respose = $_this->CallPostApi($url, $data);
return $respose;
}
}

View File

@@ -0,0 +1,519 @@
<?php
namespace App\Http\Controllers\Api\v1;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Model\helpdesk\Ticket\Tickets;
use App\Model\helpdesk\Settings\Company;
use App\User;
use App\Model\helpdesk\Ticket\Ticket_Collaborator;
use App\Model\helpdesk\Ticket\Ticket_Thread;
use Auth;
use Mail;
use Input;
use App\Model\helpdesk\Ticket\Ticket_Status;
use App\Model\helpdesk\Ticket\Ticket_attachments;
use App\Model\helpdesk\Settings\System;
use App\Model\helpdesk\Settings\Alert;
/**
* -----------------------------------------------------------------------------
* Ticket Controller
* -----------------------------------------------------------------------------
*
*
* @author Vijay Sebastian <vijay.sebastian@ladybirdweb.com>
* @copyright (c) 2016, Ladybird Web Solution
* @name Faveo HELPDESK
* @version v1
*
*
*/
class TicketController extends Controller {
/**
* Create Ticket
* @param type $user_id
* @param type $subject
* @param type $body
* @param type $helptopic
* @param type $sla
* @param type $priority
* @return type string
*/
public function create_ticket($user_id, $subject, $body, $helptopic, $sla, $priority, $source, $headers, $dept, $assignto, $form_data, $attach = '') {
try {
$max_number = Tickets::whereRaw('id = (select max(`id`) from tickets)')->first();
if ($max_number == null) {
$ticket_number = "AAAA-9999-9999999";
} else {
foreach ($max_number as $number) {
$ticket_number = $max_number->ticket_number;
}
}
$ticket = new Tickets;
$ticket->ticket_number = $this->ticket_number($ticket_number);
$ticket->user_id = $user_id;
$ticket->dept_id = $dept;
$ticket->help_topic_id = $helptopic;
$ticket->sla = $sla;
$ticket->assigned_to = $assignto;
$ticket->status = '1';
$ticket->priority_id = $priority;
$ticket->source = $source;
$ticket->save();
$ticket_number = $ticket->ticket_number;
$id = $ticket->id;
if ($form_data != null) {
$help_topic = Help_topic::where('id', '=', $helptopic)->first();
$forms = Fields::where('forms_id', '=', $help_topic->custom_form)->get();
foreach ($form_data as $key => $form_details) {
foreach ($forms as $from) {
if ($from->name == $key) {
$form_value = new Ticket_Form_Data;
$form_value->ticket_id = $id;
$form_value->title = $from->label;
$form_value->content = $form_details;
$form_value->save();
}
}
}
}
$this->store_collaborators($headers, $id);
$thread = $this->ticket_thread($subject, $body, $id, $user_id);
if (!empty($attach)) {
$this->attach($thread, $attach);
}
return $thread;
} catch (\Exception $e) {
return $e->getMessage();
}
}
/**
* store_collaborators
* @param type $headers
* @return type
*/
public function store_collaborators($headers, $id) {
try {
$company = $this->company();
if (isset($headers)) {
foreach ($headers as $email => $name) {
$name = $name;
$email = $email;
if ($this->check_email($email) == false) {
$create_user = new User;
$create_user->user_name = $name;
$create_user->email = $email;
$create_user->active = 1;
$create_user->role = "user";
$password = $this->generateRandomString();
$create_user->password = Hash::make($password);
$create_user->save();
$user_id = $create_user->id;
Mail::send('emails.pass', ['password' => $password, 'name' => $name, 'from' => $company, 'emailadd' => $email], function ($message) use ($email, $name) {
$message->to($email, $name)->subject('password');
});
} else {
$user = $this->check_email($email);
$user_id = $user->id;
}
$collaborator_store = new Ticket_Collaborator;
$collaborator_store->isactive = 1;
$collaborator_store->ticket_id = $id;
$collaborator_store->user_id = $user_id;
$collaborator_store->role = "ccc";
$collaborator_store->save();
}
}
return true;
} catch (\Exception $e) {
return $e->getMessage();
}
}
/**
* Generate Ticket Thread
* @param type $subject
* @param type $body
* @param type $id
* @param type $user_id
* @return type
*/
public function ticket_thread($subject, $body, $id, $user_id) {
try {
$thread = new Ticket_Thread;
$thread->user_id = $user_id;
$thread->ticket_id = $id;
$thread->poster = 'client';
$thread->title = $subject;
$thread->body = $body;
$thread->save();
return $thread->id;
} catch (\Exception $e) {
return $e->getMessage();
}
}
/**
* Generates Ticket Number
* @param type $ticket_number
* @return type integer
*/
public function ticket_number($ticket_number) {
try {
$number = $ticket_number;
$number = explode('-', $number);
$number1 = $number[0];
if ($number1 == 'ZZZZ') {
$number1 = 'AAAA';
}
$number2 = $number[1];
if ($number2 == '9999') {
$number2 = '0000';
}
$number3 = $number[2];
if ($number3 == '9999999') {
$number3 = '0000000';
}
$number1++;
$number2++;
$number3++;
$number2 = sprintf('%04s', $number2);
$number3 = sprintf('%07s', $number3);
$array = array($number1, $number2, $number3);
$number = implode('-', $array);
return $number;
} catch (\Exception $e) {
return $e->getMessage();
}
}
/**
* Generate a random string for password
* @param type $length
* @return type string
*/
public function generateRandomString($length = 10) {
try {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
} catch (\Exception $e) {
return $e->getMessage();
}
}
/**
* Replying a ticket
* @param type Ticket_Thread $thread
* @param type TicketRequest $request
* @return type bool
*/
public function reply($thread, $request, $ta, $attach = '') {
try {
$check_attachment = null;
$eventthread = $thread->where('ticket_id', $request->input('ticket_ID'))->first();
$eventuserid = $eventthread->user_id;
$emailadd = User::where('id', $eventuserid)->first()->email;
$source = $eventthread->source;
$form_data = $request->except('ReplyContent', 'ticket_ID', 'attachment');
\Event::fire(new \App\Events\ClientTicketFormPost($form_data, $emailadd, $source));
$reply_content = $request->input('ReplyContent');
$thread->ticket_id = $request->input('ticket_ID');
$thread->poster = 'support';
$thread->body = $request->input('ReplyContent');
$thread->user_id = Auth::user()->id;
$ticket_id = $request->input('ticket_ID');
$tickets = Tickets::where('id', '=', $ticket_id)->first();
$tickets->isanswered = '1';
$tickets->save();
$ticket_user = User::where('id', '=', $tickets->user_id)->first();
if ($tickets->assigned_to == 0) {
$tickets->assigned_to = Auth::user()->id;
$tickets->save();
$thread2 = New Ticket_Thread;
$thread2->ticket_id = $thread->ticket_id;
$thread2->user_id = Auth::user()->id;
$thread2->is_internal = 1;
$thread2->body = "This Ticket have been assigned to " . Auth::user()->first_name . " " . Auth::user()->last_name;
$thread2->save();
}
if ($tickets->status > 1) {
$tickets->status = '1';
$tickets->isanswered = '1';
$tickets->save();
}
$thread->save();
if (!empty($attach)) {
$check_attachment = $this->attach($thread->id, $attach);
}
$thread1 = Ticket_Thread::where('ticket_id', '=', $ticket_id)->first();
$ticket_subject = $thread1->title;
$user_id = $tickets->user_id;
$user = User::where('id', '=', $user_id)->first();
$email = $user->email;
$user_name = $user->user_name;
$ticket_number = $tickets->ticket_number;
$company = $this->company();
$username = $ticket_user->user_name;
if (!empty(Auth::user()->agent_sign)) {
$agentsign = Auth::user()->agent_sign;
} else {
$agentsign = null;
}
\Event::fire(new \App\Events\FaveoAfterReply($reply_content, $user->phone_number, $request, $tickets));
Mail::send(array('html' => 'emails.ticket_re-reply'), ['content' => $reply_content, 'ticket_number' => $ticket_number, 'From' => $company, 'name' => $username, 'Agent_Signature' => $agentsign], function ($message) use ($email, $user_name, $ticket_number, $ticket_subject, $check_attachment) {
$message->to($email, $user_name)->subject($ticket_subject . '[#' . $ticket_number . ']');
// if(isset($attachments)){
// if ($check_attachment == 1) {
// $size = count($attach);
// for ($i = 0; $i < $size; $i++) {
// $message->attach($attachments[$i]->getRealPath(), ['as' => $attachments[$i]->getClientOriginalName(), 'mime' => $attachments[$i]->getClientOriginalExtension()]);
// }
// }
}, true);
$collaborators = Ticket_Collaborator::where('ticket_id', '=', $ticket_id)->get();
foreach ($collaborators as $collaborator) {
//mail to collaborators
$collab_user_id = $collaborator->user_id;
$user_id_collab = User::where('id', '=', $collab_user_id)->first();
$collab_email = $user_id_collab->email;
if ($user_id_collab->role == "user") {
$collab_user_name = $user_id_collab->user_name;
} else {
$collab_user_name = $user_id_collab->first_name . " " . $user_id_collab->last_name;
}
Mail::send('emails.ticket_re-reply', ['content' => $reply_content, 'ticket_number' => $ticket_number, 'From' => $company, 'name' => $collab_user_name, 'Agent_Signature' => $agentsign], function ($message) use ($collab_email, $collab_user_name, $ticket_number, $ticket_subject, $check_attachment) {
$message->to($collab_email, $collab_user_name)->subject($ticket_subject . '[#' . $ticket_number . ']');
// if ($check_attachment == 1) {
// $size = sizeOf($attachments);
// for ($i = 0; $i < $size; $i++) {
// $message->attach($attachments[$i]->getRealPath(), ['as' => $attachments[$i]->getClientOriginalName(), 'mime' => $attachments[$i]->getClientOriginalExtension()]);
// }
// }
}, true);
}
return $thread;
} catch (\Exception $e) {
return $e->getMessage();
}
}
/**
* company
* @return type
*/
public function company() {
try {
$company = Company::Where('id', '=', '1')->first();
if ($company->company_name == null) {
$company = "Support Center";
} else {
$company = $company->company_name;
}
return $company;
} catch (\Exception $e) {
return $e->getMessage();
}
}
/**
* Ticket edit and save ticket data
* @param type $ticket_id
* @param type Ticket_Thread $thread
* @return type bool
*/
public function ticket_edit_post($ticket_id, $thread, $ticket) {
try {
$ticket = $ticket->where('id', '=', $ticket_id)->first();
$ticket->sla = Input::get("sla_plan");
$ticket->help_topic_id = Input::get("help_topic");
$ticket->source = Input::get("ticket_source");
$ticket->priority_id = Input::get("ticket_priority");
$ticket->save();
$threads = $thread->where('ticket_id', '=', $ticket_id)->first();
$threads->title = Input::get("subject");
$threads->save();
return $threads;
} catch (\Exception $e) {
return $e->getMessage();
}
}
/**
* function to assign ticket
* @param type $id
* @return type bool
*/
public function assign($id) {
try {
$UserEmail = Input::get('user');
//dd($id);
// $UserEmail = 'sujitprasad12@yahoo.in';
$user = User::where('email', '=', $UserEmail)->first();
$user_id = $user->id;
$ticket = Tickets::where('id', '=', $id)->first();
$ticket_number = $ticket->ticket_number;
$ticket->assigned_to = $user_id;
$ticket->save();
$ticket_thread = Ticket_Thread::where('ticket_id', '=', $id)->first();
$ticket_subject = $ticket_thread->title;
$thread = New Ticket_Thread;
$thread->ticket_id = $ticket->id;
$thread->user_id = Auth::user()->id;
$thread->is_internal = 1;
$thread->body = "This Ticket has been assigned to " . $user->first_name . " " . $user->last_name;
$thread->save();
$company = $this->company();
$system = $this->system();
$agent = $user->first_name;
$agent_email = $user->email;
$master = Auth::user()->first_name . " " . Auth::user()->last_name;
if (Alert::first()->internal_status == 1 || Alert::first()->internal_assigned_agent == 1) {
// ticket assigned send mail
Mail::send('emails.Ticket_assign', ['agent' => $agent, 'ticket_number' => $ticket_number, 'from' => $company, 'master' => $master, 'system' => $system], function ($message) use ($agent_email, $agent, $ticket_number, $ticket_subject) {
$message->to($agent_email, $agent)->subject($ticket_subject . '[#' . $ticket_number . ']');
});
}
return 1;
} catch (\Exception $e) {
return $e->getMessage();
}
}
/**
* Function to delete ticket
* @param type $id
* @param type Tickets $ticket
* @return type string
*/
public function delete($ids, $ticket) {
try {
foreach ($ids as $id) {
$ticket_delete = $ticket->where('id', '=', $id)->first();
if ($ticket_delete) {
if ($ticket_delete->status == 5) {
$ticket_delete->delete();
$ticket_threads = Ticket_Thread::where('ticket_id', '=', $id)->get();
if ($ticket_threads) {
foreach ($ticket_threads as $ticket_thread) {
if ($ticket_thread) {
$ticket_thread->delete();
}
}
}
$ticket_attachments = Ticket_attachments::where('thread_id', '=', $id)->get();
if ($ticket_attachments) {
foreach ($ticket_attachments as $ticket_attachment) {
if ($ticket_attachment) {
$ticket_attachment->delete();
}
}
}
} else {
$ticket_delete->is_deleted = 0;
$ticket_delete->status = 5;
$ticket_delete->save();
$ticket_status_message = Ticket_Status::where('id', '=', $ticket_delete->status)->first();
$thread = New Ticket_Thread;
$thread->ticket_id = $ticket_delete->id;
$thread->user_id = Auth::user()->id;
$thread->is_internal = 1;
$thread->body = $ticket_status_message->message . " " . Auth::user()->first_name . " " . Auth::user()->last_name;
$thread->save();
}
} else {
return "ticket not found";
}
}
return "your tickets has been deleted";
} catch (\Exception $e) {
return $e->getMessage();
}
}
/**
* check email for dublicate entry
* @param type $email
* @return type bool
*/
public function check_email($email) {
try {
$check = User::where('email', '=', $email)->first();
if ($check == true) {
return $check;
} else {
return false;
}
} catch (\Exception $e) {
return $e->getMessage();
}
}
/**
* system
* @return type
*/
public function system() {
try {
$system = System::Where('id', '=', '1')->first();
if ($system->name == null) {
$system = "Support Center";
} else {
$system = $system->name;
}
return $system;
} catch (\Exception $e) {
return $e->getMessage();
}
}
/**
* Create Attachment
* @param type $thread
* @param type $attach
* @return int
*/
public function attach($thread, $attach) {
try {
$ta = new Ticket_attachments();
foreach ($attach as $file) {
$ta->create(['thread_id' => $thread, 'name' => $file['name'], 'size' => $file['size'], 'type' => $file['type'], 'file' => $file['file'], 'poster' => 'ATTACHMENT']);
}
$ta->create(['thread_id' => $thread, 'name' => $name, 'size' => $size, 'type' => $type, 'file' => $file, 'poster' => 'ATTACHMENT']);
return 1;
} catch (\Exception $e) {
return $e->getMessage();
}
}
}

View File

@@ -0,0 +1,136 @@
<?php
namespace App\Http\Controllers\Api\v1;
use App\Http\Controllers\Controller;
use JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
use App\Http\Requests;
use Illuminate\Http\Request;
use App\User;
use Illuminate\Support\Facades\Hash;
/**
* -----------------------------------------------------------------------------
* Token authenticate Controller
* -----------------------------------------------------------------------------
*
*
* @author Vijay Sebastian <vijay.sebastian@ladybirdweb.com>
* @copyright (c) 2016, Ladybird Web Solution
* @name Faveo HELPDESK
* @version v1
*
*
*/
class TokenAuthController extends Controller {
public function __construct() {
$this->middleware('api');
}
/**
* Authenticating user with username and password and retuen token
* @param Request $request
* @return type json
*/
public function authenticate(Request $request) {
$usernameinput = $request->input('username');
$password = $request->input('password');
$field = filter_var($usernameinput, FILTER_VALIDATE_EMAIL) ? 'email' : 'user_name';
//$credentials = $request->only('email', 'password');
try {
if (!$token = JWTAuth::attempt([$field => $usernameinput, 'password' => $password])) {
return response()->json(['error' => 'invalid_credentials', 'status_code'=>401]);
}
} catch (JWTException $e) {
return response()->json(['error' => 'could_not_create_token', 500]);
} catch (\Exception $e){
$error = $e->getMessage();
return response()->json(compact('error'));
}
// if no errors are encountered we can return a JWT
return response()->json(compact('token'));
}
/**
* Get the user details from token
* @return type json
*/
public function getAuthenticatedUser() {
//dd(JWTAuth::parseToken()->authenticate());
try {
if (!$user = JWTAuth::parseToken()->authenticate()) {
return response()->json(['user_not_found', 404]);
}
} catch (\Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
return response()->json(['token_expired', $e->getStatusCode()]);
} catch (\Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {
return response()->json(['token_invalid', $e->getStatusCode()]);
} catch (\Tymon\JWTAuth\Exceptions\JWTException $e) {
return response()->json(['token_absent', $e->getStatusCode()]);
}
catch (\Exception $e){
$error = $e->getMessage();
return response()->json(compact('error'));
}
//dd($user);
return response()->json(compact('user'));
}
/**
* Register a user with username and password
* @param Request $request
* @return type json
*/
public function register(Request $request) {
try {
$v = \Validator::make($request->all(), [
'email' => 'required|email|unique:users',
'password' => 'required',
]);
if ($v->fails()) {
$error = $v->errors();
return response()->json(compact('error'));
}
$newuser = $request->all();
$password = Hash::make($request->input('password'));
$newuser['password'] = $password;
return User::create($newuser);
} catch (\Exception $e) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
/**
* verify the url is existing or not
* @return type json
*/
public function CheckUrl() {
try {
$v = \Validator::make($request->all(), [
'url' => 'required|url'
]);
if ($v->fails()) {
$error = $v->errors();
return response()->json(compact('error'));
}
$url = $this->request->input('url');
$url = $url.'/api/v1/helpdesk/check-url';
} catch (Exception $ex) {
$error = $e->getMessage();
return response()->json(compact('error'));
}
}
}