Example #1
0
 static function setChannelTopic($channel)
 {
     $payload = array();
     $channel = strtolower($channel);
     if ($channel == "test") {
         $channel_id = self::TEST_CHANNEL;
         $division_id = LGV_DIVISION_ID . ":" . PC_DIVISION_ID . ":" . PLC_DIVISION_ID;
     } elseif ($channel == "pc") {
         $channel_id = self::PC_CHANNEL;
         $division_id = PC_DIVISION_ID;
     } elseif ($channel == "plc") {
         $channel_id = self::PLC_CHANNEL;
         $division_id = PLC_DIVISION_ID;
     } elseif ($channel == "lgv") {
         $channel_id = self::LGV_CHANNEL;
         $division_id = LGV_DIVISION_ID;
     } elseif ($channel == "general") {
         $channel_id = self::TEST_CHANNEL;
         $division_id = LGV_DIVISION_ID . ":" . PC_DIVISION_ID . ":" . PLC_DIVISION_ID;
     }
     if ($channel_id) {
         $total = count(TicketsController::API()->all(['where' => ['tickets.division_id|=|' . $division_id], 'paginate' => 'false']));
         $opened = count(TicketsController::API()->all(['where' => ['tickets.status_id|=|' . TICKET_REQUESTING_STATUS_ID . ":" . TICKET_NEW_STATUS_ID . ":" . TICKET_IN_PROGRESS_STATUS_ID, 'tickets.division_id|=|' . $division_id], 'paginate' => 'false']));
         $waiting = count(TicketsController::API()->all(['where' => ['tickets.status_id|=|' . TICKET_WFF_STATUS_ID . ":" . TICKET_WFP_STATUS_ID, 'tickets.division_id|=|' . $division_id], 'paginate' => 'false']));
         $closed = count(TicketsController::API()->all(['where' => ['tickets.status_id|=|' . TICKET_SOLVED_STATUS_ID . ":" . TICKET_CLOSED_STATUS_ID, 'tickets.division_id|=|' . $division_id], 'paginate' => 'false']));
         $topic = "Requesting/New/Progress: *" . $opened . "* Waiting Feedback/Parts: *" . $waiting . "* Solved/Closed: *" . $closed . "*";
         $payload['channel'] = $channel;
         $payload['topic'] = $topic;
         $payload['token'] = env('BOT_C2_TOKEN');
         $response = self::apiCall(self::API_SET_CHANNEL_TOPIC, $payload);
     }
 }
 public function testStoreWithReplyAndStatusClosed()
 {
     $this->ticket_model = factory(App\Ticket::class)->make(['id' => $this->faker->randomNumber]);
     $request = new TicketStoreRequest(['user_id' => 12, 'title' => $this->faker->sentence, 'body' => $this->faker->paragraph, 'reply_body' => $this->faker->sentence, 'status' => 'closed']);
     $dispatch_request = $request->instance();
     $dispatch_request->merge(['auth_id' => auth()->user()->id]);
     $dispatcher = m::mock('Illuminate\\Bus\\Dispatcher[dispatchFrom]', [$this->app]);
     $dispatcher->shouldReceive('dispatchFrom')->once()->with('App\\Jobs\\TicketCreateJob', $dispatch_request, [])->andReturn($this->ticket_model);
     $dispatcher->shouldReceive('dispatchFrom')->once()->with('App\\Jobs\\ActionCreateJob', m::on(function ($param) {
         return empty(array_diff($param->toArray(), ['ticket_id' => $this->ticket_model->id, 'user_id' => $this->user_model->id, 'hours' => null, 'time_at' => null, 'status' => 'closed', 'defer_event' => true]));
     }), m::on(function ($param) use($request) {
         return empty(array_diff($param, ['type' => 'closed', 'body' => $request->get('reply_body')]));
     }));
     $this->app->instance('Illuminate\\Contracts\\Bus\\Dispatcher', $dispatcher);
     $controller = new TicketsController($this->ticket, $this->user);
     $controller->store($request);
 }
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function handle()
 {
     if ($this->argument('how') == 'escalating') {
         $tickets = TicketsController::API()->all([]);
     }
     // $debug = $this->option('debug');
     // $direct = $this->option('straight');
     // $a = new ImportManager();
     // $a->import($option,$debug,$direct);
 }
Example #4
0
 /**
  * Define the application's command schedule.
  *
  * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
  * @return void
  */
 protected function schedule(Schedule $schedule)
 {
     $schedule->call(function () {
         $tickets = TicketsController::API()->all(['where' => ['deadline|<|0', 'deadline|>|-60'], 'paginate' => 'false']);
         foreach ($tickets as $ticket) {
             EmailsManager::sendEscalation($ticket->id);
             SlackManager::sendEscalation($ticket);
         }
     })->everyMinute();
     $schedule->call(function () {
         SlackManager::setChannelsTopic();
     })->twiceDaily(7, 15);
 }
 public function draft(CreateTicketRequestDraftRequest $request)
 {
     $draft = TicketsController::API()->getDraft();
     $ticket = $draft ? $draft : new Ticket();
     $ticket->title = $request->get('title');
     $ticket->post = $request->get('post');
     $ticket->creator_id = Auth::user()->active_contact->id;
     $ticket->company_id = Auth::user()->active_contact->company->id;
     $ticket->contact_id = Auth::user()->active_contact->id;
     $ticket->status_id = TICKET_DRAFT_STATUS_ID;
     $ticket->assignee_id = 0;
     $ticket->priority_id = 0;
     $ticket->division_id = 0;
     $ticket->equipment_id = 0;
     $ticket->job_type_id = 0;
     $ticket->level_id = 0;
     $ticket->job_type_id = 0;
     $ticket->save();
     return 'success';
 }
 public static function sendEscalation($id)
 {
     $ticket = TicketsController::API()->find(['id' => $id]);
     self::setSubject("Escalate Ticket #" . $ticket->id . " | " . $ticket->company->name);
     self::$view = "emails/escalate";
     self::$data['title'] = "Escalate Ticket #" . $ticket->id;
     self::$data['ticket'] = $ticket;
     $events = explode(",", $ticket->event_id);
     foreach ($events as $event) {
         switch ($event) {
             case EVENT_ASSIGNEE_ID:
                 self::add("to", $ticket->assignee->email);
                 break;
             case EVENT_HELPDESK_MANAGER_ID:
                 self::add("to", self::HELPDESK_MANAGER_EMAIL);
                 break;
             case EVENT_ACCOUNT_MANAGER_ID:
                 self::add("to", $ticket->company->account_manager->email);
                 break;
             case EVENT_TEAM_LEADER_ID:
                 switch ($ticket->division->id) {
                     case LGV_DIVISION_ID:
                         self::add("to", self::LGV_TEAM_LEADER_EMAIL);
                         break;
                     case PC_DIVISION_ID:
                         self::add("to", self::PC_TEAM_LEADER_EMAIL);
                         break;
                     case PLC_DIVISION_ID:
                         self::add("to", self::PLC_TEAM_LEADER_EMAIL);
                         break;
                     default:
                         break;
                 }
                 break;
             case EVENT_FIELD_MANAGER_ID:
                 self::add("to", self::FIELD_MANAGER_EMAIL);
                 break;
             case EVENT_CUSTOMER_SERVICE_MANAGER_ID:
                 self::add("to", self::CUSTOMER_SERVICE_MANAGER_EMAIL);
                 break;
             case EVENT_THE_PRESIDENT_ID:
                 self::add("to", self::PRESIDENT_EMAIL);
                 break;
             default:
                 break;
         }
     }
     self::send();
     Activity::log("Escalating Ticket Email Send", self::$data, -1, -1);
 }
 public function tickets($id)
 {
     $params = array_merge(Request::input(), ['where' => ['companies.id|=|' . $id], 'paginate' => 10]);
     $data['tickets'] = TicketsController::API()->all($params);
     return view('tickets/tickets', $data);
 }