Rapport-Laravel/app/Http/Controllers/MetricdataimportController.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!');
}
}
}