84 lines
2.6 KiB
PHP
84 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Imports\UserImport;
|
|
use App\Models\User;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class UploadDataController extends Controller
|
|
{
|
|
public function add(Request $request)
|
|
{
|
|
ini_set('memory_limit', '512M');
|
|
$request->validate([
|
|
'file' => 'required|extensions:csv',
|
|
]);
|
|
|
|
$file = $request->file('file');
|
|
// $path = $file->store('file', 'public');
|
|
$extension = $file->getClientOriginalExtension();
|
|
|
|
if ($extension == 'csv') {
|
|
$csvData = array_map(function($row) {
|
|
return str_getcsv($row, ';');
|
|
}, file($file));
|
|
array_shift($csvData);
|
|
|
|
foreach ($csvData as $row) {
|
|
User::updateOrCreate(
|
|
['nim' => $row[0]],
|
|
['name' => $row[1], 'angkatan' => $row[3]]
|
|
);
|
|
}
|
|
}
|
|
|
|
return redirect()->back()->with('success', 'Data berhasil diimpor.');
|
|
}
|
|
|
|
public function upload(Request $request)
|
|
{
|
|
Log::info('Upload method accessed');
|
|
|
|
$request->validate([
|
|
'file' => 'required|mimes:csv,xls,xlsx',
|
|
]);
|
|
|
|
try {
|
|
$file = $request->file('file');
|
|
Log::info('File validated and received');
|
|
|
|
// Simpan file ke dalam folder penyimpanan tertentu
|
|
$path = $file->store('file', 'public');
|
|
Log::info('File stored successfully at ' . $path);
|
|
|
|
$extension = $file->getClientOriginalExtension();
|
|
Log::info('File extension: ' . $extension);
|
|
|
|
if ($extension == 'csv') {
|
|
$csvData = array_map('str_getcsv', file($file));
|
|
Log::info('CSV data processed');
|
|
|
|
foreach ($csvData as $row) {
|
|
User::updateOrCreate(
|
|
['nim' => $row[0]],
|
|
['name' => $row[1], 'angkatan' => $row[2]]
|
|
);
|
|
Log::info('Data updated or created for NIM: ' . $row[0]);
|
|
}
|
|
} else {
|
|
Excel::import(new UserImport, storage_path('app/public/' . $path));
|
|
Log::info('Excel data imported');
|
|
}
|
|
|
|
Log::info('Data imported successfully');
|
|
return redirect()->back()->with('success', 'Data berhasil diimpor.');
|
|
} catch (\Exception $e) {
|
|
Log::error('Error: ' . $e->getMessage());
|
|
return redirect()->back()->with('error', 'Terjadi kesalahan. Silakan coba lagi.');
|
|
}
|
|
}
|
|
}
|