MIF_E31210181/app/Http/Controllers/UploadDataController.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.');
}
}
}