/** * Save comment in activity stream * * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function save(Request $request) { $asId = $request->get('as_id'); $userId = Auth::user()->id; $comment = $request->get('comment'); $results = $this->streamApi->saveActivityComment($asId, $userId, $comment); return response()->json(["status" => "success", "commentator" => Tools::getUserFirstName(Auth::user()->id), "comment" => $results->comment, "created_at" => Tools::dateConverter($results->created_at)]); }
/** * Save activity stream * * @param $plan * @return bool */ public function saveActivityStream($plan) { try { $assigneeName = Tools::getUserFirstName($plan['creator_id']); $userId = $plan['creator_id']; $type = $plan['type']; $status = $plan['status']; if ($type != 'plan') { $assigneeName = $plan['assignee']; $userId = $plan['tester_id']; $status = $plan['tickets_overall_status']; } $this->model->create(['plan_id' => $plan['plan_id'], 'user_id' => $userId, 'activity' => $assigneeName . ' ' . Tools::getStatusText('activity', $type, $status) . ' ' . $plan['description']]); } catch (\Exception $e) { Tools::log($e->getMessage() . ' activity stream', $plan); Session::flash('flash_error', config('testplanner.messages.plan.system.activity_stream_error')); return true; } return true; }
/** * Retrieve custom accessor * * @return mixed */ public function getUserFirstNameAttribute() { return Tools::getUserFirstName($this->user_id); }
/** * Get tester plan's response * * @param $planId * @param $userId * @return array */ public function planRenderer($planId, $userId) { // Get plan $plan = DB::table('plans AS p')->join('testers AS t', 'p.id', '=', 't.plan_id')->join('tickets AS ti', 'p.id', '=', 'ti.plan_id')->select('p.*', 'p.id AS plan_id', 't.user_id AS tester_id', 't.browsers', 'ti.tickets')->where('p.id', '=', $planId)->where('t.user_id', '=', $userId)->first(); // Get responses $ticketsResponses = $this->trModel->where('plan_id', '=', $planId)->where('tester_id', '=', $userId)->get(); // Get ticket definitions $ticketTexts = unserialize($plan->tickets); // If there are no responses, create a blank object if ($ticketsResponses->count() == 0) { $browsers = explode(',', $plan->browsers); foreach ($browsers as $browser) { $results[$browser] = ['ticket_resp_id' => '', 'response_status' => '', 'tickets' => $ticketTexts]; } $plan->responses = $results; } else { foreach ($ticketsResponses as $row) { $responseTickets = []; foreach ($ticketTexts as $ticketText) { $responses = unserialize($row->responses); foreach ($responses as $response) { $ticketTextId = $ticketText['id']; if ($ticketTextId == $response['id']) { $ticketDesc = $ticketText['desc']; if (preg_match('/^ECOM-\\d/', $ticketDesc)) { list($project, $summary) = explode(':', $ticketDesc); $descUrl = url(config('testplanner.jira.info.domain')) . '/browse/' . $project; } else { $descUrl = ''; } $responseTickets[$ticketTextId] = ['id' => $ticketTextId, 'desc' => $ticketDesc, 'description_url' => $descUrl, 'objective' => $ticketText['objective'], 'test_steps' => $ticketText['test_steps'], 'notes_response' => nl2br($response['notes_response']), 'test_status' => isset($response['test_status']) ? $response['test_status'] : null]; } } } $results[$row->browser] = ['ticket_resp_id' => $row->id, 'response_status' => $row->status, 'tickets' => $responseTickets]; } $plan->responses = $results; } $plan->reporter = Tools::getUserFirstName($plan->creator_id); $plan->assignee = Tools::getUserFirstName($plan->tester_id); $plan->browsers = $plan->browsers; $plan->description = $plan->description; return get_object_vars($plan); }