183 lines
6.0 KiB
PHP
183 lines
6.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Requests\LambdaRequest;
|
|
use DB;
|
|
use Auth;
|
|
use Log;
|
|
|
|
class MetricdataimportController extends Controller
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->middleware('auth');
|
|
$this->_viewname = 'metricdataimport';
|
|
$this->_title = 'Metric Data Import';
|
|
$this->_base_url = '/metricdataimport';
|
|
}
|
|
|
|
protected function get_form_fields($type, $values)
|
|
{
|
|
return [
|
|
'file_upload' => ['title' => 'Import File', 'type' => 'file', 'required' => true],
|
|
'is_bde' => ['title' => 'Is Dashboard Metric?', 'type' => 'yesno', 'required' => true]
|
|
];
|
|
}
|
|
|
|
// $response = LambdaRequest::signedrequest('post', 'catalog', 'activity/metric_target_import', $data);
|
|
public function list(Request $request)
|
|
{
|
|
$response = LambdaRequest::signedrequest('get', 'catalog', 'metricdataimport/get_all');
|
|
|
|
// echo '<pre>'; print_r($response); exit;
|
|
if ($response->statusCode == 401) {
|
|
return redirect('/unauthorised');
|
|
}
|
|
$fields = $this->get_list_fields();
|
|
//echo '<pre>'; print_r($fields); exit;
|
|
return $this->view($this->_listtype)->with([
|
|
'title' => $this->_title,
|
|
'fields' => $fields,
|
|
'base_url' => $this->_base_url,
|
|
'items' => $response->data->items,
|
|
'buttons' => $this->get_list_buttons()
|
|
]);
|
|
}
|
|
|
|
protected function get_list_fields()
|
|
{
|
|
return [
|
|
'actions' => ['title' => 'Actions', 'buttons' => ['edit', 'delete', 'download_file' => ['icon' => 'cloud-download', 'querystring' => 'id={DOWNLOAD_URL}']]],
|
|
'file_name' => ['title' => 'File Name', 'type' => 'text'],
|
|
'status' => ['title' => 'Status', 'type' => 'select']
|
|
];
|
|
}
|
|
|
|
public function download_file($download_url)
|
|
{
|
|
// echo '<pre>'; print_r(['id'=> $download_url->id]); exit;
|
|
return redirect($download_url->id);
|
|
}
|
|
|
|
// public function list(Request $request)
|
|
// {
|
|
// $values = [];
|
|
// $fields = $this->get_form_fields('new', $values);
|
|
|
|
// return $this->view('form')->with([
|
|
// 'title' => $this->_title,
|
|
// 'mode' => 'new',
|
|
// 'fields' => $fields,
|
|
// 'base_url' => $this->_base_url,
|
|
// 'item' => $values,
|
|
// ]);
|
|
// }
|
|
|
|
protected function _uploadMedia($request, $name = 'image', $folder = 'image', $prefix = '')
|
|
{
|
|
$path = '';
|
|
try {
|
|
$file = $request->file($name);
|
|
if (!$file) {
|
|
return $path;
|
|
}
|
|
|
|
$filename = str_replace(' ', '_', $file->getClientOriginalName());
|
|
if ($prefix !== '') {
|
|
$filename = $prefix . '_' . $filename;
|
|
}
|
|
|
|
$path = $file->storeAs($folder, uniqid() . '_' . $filename, 's3');
|
|
$path = rtrim(env('AWS_URL', 'https://did94hhhcgq1d.cloudfront.net'), '/') . '/' . $path;
|
|
} catch (\Throwable $e) {
|
|
Log::debug($e->getMessage());
|
|
}
|
|
|
|
return $path;
|
|
}
|
|
|
|
public function postajaxsave(Request $request, $type = '')
|
|
{
|
|
try {
|
|
$request->validate([
|
|
'file_upload' => 'required|file|max:10240',
|
|
'is_bde' => 'required',
|
|
]);
|
|
|
|
$is_bde = $request->input('is_bde') == 'yes' ? true : false;
|
|
|
|
$path = $this->_uploadMedia($request, 'file_upload', 'metric_data_import');
|
|
|
|
if (!$path) {
|
|
return response()->json(
|
|
[
|
|
'status' => 'error',
|
|
'message' => 'File upload failed',
|
|
],
|
|
500,
|
|
);
|
|
}
|
|
|
|
$data = [
|
|
'file_path' => $path,
|
|
'partition' => 'rapport-' . Auth::user()->domain,
|
|
'is_bde' => $is_bde
|
|
];
|
|
|
|
Log::debug(print_r($data, true));
|
|
|
|
|
|
$response = LambdaRequest::signedrequest('post', 'catalog', 'metricdataimport/metric_target_import', $data);
|
|
// echo "<pre>"; print_r($response); exit;
|
|
if (isset($response->statusCode) && $response->statusCode == 200 && $response->status === 'success') {
|
|
return response()->json(
|
|
[
|
|
'statusCode' => $response->statusCode,
|
|
'status' => $response->status,
|
|
'message' => $response->message,
|
|
'data' => $response->data,
|
|
],
|
|
200,
|
|
);
|
|
}
|
|
|
|
return response()->json(
|
|
[
|
|
'statusCode' => $response->statusCode ?? 500,
|
|
'status' => 'error',
|
|
'message' => !empty($response->message)
|
|
? $response->message
|
|
: 'Import failed',
|
|
'data' => [],
|
|
],
|
|
500,
|
|
);
|
|
} catch (\Exception $e) {
|
|
\Log::error($e->getMessage());
|
|
|
|
return response()->json(
|
|
[
|
|
'status' => 'error',
|
|
'message' => 'Something went wrong',
|
|
],
|
|
500,
|
|
);
|
|
}
|
|
}
|
|
|
|
public function delete($id) {
|
|
// echo '<pre>'; print_r($id); exit;
|
|
$response = LambdaRequest::signedrequest('get', 'catalog', 'metricdataimport/delete', ['id' => $id]);
|
|
// echo '<pre>'; print_r($response); exit;
|
|
if($response->statusCode == 200 && $response->status == "success") {
|
|
//echo '<pre>'; print_r($response); exit;
|
|
return redirect($this->_base_url.'s')->withMessage('Successfully Marked Deleted !!!');
|
|
} else {
|
|
return redirect($this->_base_url.'s')->withError('Some Error occured! '. $response->message);
|
|
//return \Redirect::back()->withMessage('Some Error occured!');
|
|
}
|
|
}
|
|
}
|