diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 9897320c8097e769ee5bc4db40492adc3db84449..54d3c51d76d2c165c29b996a6066e3831e2fc4a4 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -81,13 +81,13 @@ class RegisterController extends Controller } } - public function registerUser(Request $request) { - $data = $request->all(); + public function registerUser(array $data) { + $username = $data['username']; if(User::where('username',$username)->count()>0) { echo '<div class="alert alert-warning alert-dismissible fade show text-center"> <button type="button" class="close" data-dismiss="alert">×</button> - This user <strong>already exist.</strong> + User ' . $username . ' <strong>already exist.</strong> </div>'; return view('auth.register'); } else if(strlen($data['username']) > 18){ @@ -103,25 +103,72 @@ class RegisterController extends Controller </div>'; return view('auth.register'); } else { - $user = $this->create($data); - $role = $data['role']; - if($role == User::ROLE_DOSEN) { - Dosen::create(['id'=>$user->id]); - }else if($role == User::ROLE_MAHASISWA) { - $id_kelas_tesis = KelasTesis::orderByRaw('updated_at - created_at DESC')->first(); - Mahasiswa::create(['id'=>$user->id, 'id_kelas_tesis'=>$id_kelas_tesis->id]); - } else if($role == User::ROLE_MANAJER) { - Manajer::create(['id'=>$user->id]); - } - echo '<div class="alert alert-success alert-dismissible fade show text-center"> - <button type="button" class="close" data-dismiss="alert">×</button> - <strong>Success !</strong> New user has successfully registered! - </div>'; - return view('auth.register'); + $user = $this->create($data); + $role = $data['role']; + if($role == User::ROLE_DOSEN) { + Dosen::create(['id'=>$user->id]); + } else if ($role == User::ROLE_MAHASISWA) { + $id_kelas_tesis = KelasTesis::orderByRaw('updated_at - created_at DESC')->first(); + Mahasiswa::create(['id'=>$user->id, 'id_kelas_tesis'=>$id_kelas_tesis->id]); + } else if ($role == User::ROLE_MANAJER) { + Manajer::create(['id'=>$user->id]); + } + echo '<div class="alert alert-success alert-dismissible fade show text-center"> + <button type="button" class="close" data-dismiss="alert">×</button> + <strong>Success !</strong> New user has successfully registered! + </div>'; + return view('auth.register'); } -// echo $id; + } + public function massRegister(String $filename, String $role) { + $file = fopen($filename, 'r'); + while (($line = fgetcsv($file, 1000, ",")) !== FALSE) { + $data['name'] = $line[0]; + $data['username'] = $line[1]; + $data['email'] = $line[2]; + $data['phone'] = $line[3]; + $data['password'] = $line[4]; + $data['role'] = $role; + $this->registerUser($data); + } + + fclose($file); } + public function registerUsers(Request $request) { + $data = $request->all(); + + if (isset($_FILES["file"])) { + $file = $_FILES["file"]; + //if there was an error uploading the file + if ($file["error"] > 0) { + echo '<div class="alert alert-success alert-dismissible fade show text-center"> + <button type="button" class="close" data-dismiss="alert">×</button> + <strong>File Error!</strong> Please try to reupload the file. + </div>'; + return view('auth.register'); + } + else { + $extension = explode(".", $file["name"]); + + if (end($extension) != 'csv') { + echo '<div class="alert alert-success alert-dismissible fade show text-center"> + <button type="button" class="close" data-dismiss="alert">×</button> + <strong>File Error!</strong> Extension of the file must be csv. + </div>'; + return view('auth.register'); + } + else { + $this->massRegister($file["tmp_name"], $data["role"]); + return view('auth.register'); + } + } + } + else { + $this->registerUser($data); + return view('auth.register'); + } + } } diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index bcc6f7ec4438e5ab13d62c96c3f86b5db5242288..6ff9c8dd47445bd2f7ac3aa3b124b58044fa8e5a 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -104,6 +104,56 @@ </div> </div> </div> + + <!-- mass register --> + <div class="col-md-8"> + <div class="card"> + <div class="card-header">Mass Register</div> + + <div class="card-body"> + Upload CSV file with format: + name, NIM, e-mail, phone, password + <form method="POST" action="/register" enctype="multipart/form-data"> + @csrf + + <div class="form-group row"> + <label for="role" class="col-md-4 col-form-label text-md-right">Role</label> + + <div class="col-md-6"> + <select type="text" id="role" name="role" class="form-control"> + <option value="Mahasiswa">Mahasiswa</option> + <option value="Dosen">Dosen</option> + <option value="Manajer">Manajer</option> + </select> + </div> + </div> + + <div class="form-group row"> + <label for="file" class="col-md-4 col-form-label text-md-right">File</label> + + <div class="col-md-6"> + <input id="file" type="file" name="file" class="form-control{{ $errors->has('file') ? ' is-invalid' : '' }}" name="name" value="{{ old('name') }}" required autofocus> + + @if ($errors->has('file')) + <span class="invalid-feedback"> + <strong>{{ $errors->first('file') }}</strong> + </span> + @endif + </div> + </div> + + <div class="form-group row mb-0"> + <div class="col-md-6 offset-md-4"> + <button type="submit" class="btn btn-primary"> + Register + </button> + </div> + </div> + </form> + </div> + </div> + </div> + </div> </div> @endsection diff --git a/routes/web.php b/routes/web.php index 0c8ba7b91ca95216a58edac90647f55d96d75676..638df8d65fe9908d3c7ca3acb80a2c2536246f41 100644 --- a/routes/web.php +++ b/routes/web.php @@ -35,7 +35,8 @@ Route::post('mahasiswa/edit/{id}', 'MahasiswaController@edit'); Route::get('register','Auth\RegisterController@showForm')->name('register'); -Route::post('register','Auth\RegisterController@registerUser')->name('registerPost'); +Route::post('register','Auth\RegisterController@registerUsers')->name('registerPost'); + Route::get('/home', 'HomeController@index')->name('home'); Route::get('/generate/admin', 'Auth\RegisterController@generateAdmin');