diff --git a/.~lock.exampleCSV.csv# b/.~lock.exampleCSV.csv#
new file mode 100644
index 0000000000000000000000000000000000000000..14b5460cbe12543dee445f7c5334707b71d958d6
--- /dev/null
+++ b/.~lock.exampleCSV.csv#
@@ -0,0 +1 @@
+,wildansupernova,wildansupernova,28.01.2019 21:29,file:///home/wildansupernova/.config/libreoffice/4;
\ No newline at end of file
diff --git a/README.md b/README.md
index ec3fb23e91030be280464772e1bd2bb7771ed789..175a98e40a6164f4c06fe22728058e3777743a53 100644
--- a/README.md
+++ b/README.md
@@ -32,6 +32,10 @@
 11. Run `npm run production`
 12. Please make sure that your web server already configured to `public/` folder
 
+### Jalanin Kalo mau nge development
+- `npm run watch` lalu buka satu terminal lagi terus jalanin `php artisan serve`
+
+
 ### User Seeding 
 
 `php artisan db:seed --class=UsersVariantTableSeeder`
diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
index 9897320c8097e769ee5bc4db40492adc3db84449..7b6bbc6803d270cafaf46d2d3100f03b35c8478f 100644
--- a/app/Http/Controllers/Auth/RegisterController.php
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -11,6 +11,7 @@ use App\Http\Controllers\Controller;
 use Illuminate\Support\Facades\Hash;
 use Illuminate\Support\Facades\Validator;
 use Illuminate\Foundation\Auth\RegistersUsers;
+use Illuminate\Support\Facades\Storage;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Http\Request;
 
@@ -81,8 +82,86 @@ class RegisterController extends Controller
         }
     }
 
+    private function combineArray(array $temp1, array $temp2) {
+        $result = [];
+        // custom PHP array combine code
+        $i=0;
+        if(count($temp1) == count($temp2)){
+            foreach($temp1 as $key => $value){
+                $result[$value]=$temp2[$i];
+                $i++;
+            }
+        }
+
+        return $result;
+    }
+
+    public function massRegisterCSV(Request $request) {
+//        $path = $request->file('upload-file')->openFile();
+//        // return $path->fread($path->getSize());
+//        return $path->fgetcsv($delimiter=';');
+//        // $uploadedFile = $request->file('upload-file');
+//        // $path = $uploadedFile->store('public/files');
+//        // Storage::delete($path);
+
+
+
+        $fileObject = $request->file('upload-file')->openFile();
+        $countRow = 1;
+        $header = $fileObject->fgetcsv($delimiter=";");
+        while (!$fileObject->eof()) {
+            $dataArray = $fileObject->fgetcsv($delimiter=";");
+            if (array(null) !== $dataArray) { // ignore blank lines
+                $data = $this->combineArray($header, $dataArray);
+                $username = $data['username'];
+                $countRow = $countRow + 1;
+                $strLine = ' At line '.$countRow;
+                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">&times;</button>
+                                This user <strong>already exist.</strong>'.$strLine.'
+                              </div>';
+                    return view('auth.register');
+                } else if(strlen($data['username']) > 18){
+                    echo '<div class="alert alert-warning alert-dismissible fade show text-center">
+                                <button type="button" class="close" data-dismiss="alert">&times;</button>
+                                <strong>Username</strong> too long (maximum size: 18 characters).'.$strLine.'
+                              </div>';
+                    return view('auth.register');
+                } else if(strlen($data['phone']) > 18){
+                    echo '<div class="alert alert-warning alert-dismissible fade show text-center">
+                                <button type="button" class="close" data-dismiss="alert">&times;</button>
+                                <strong>Invalid</strong> phone number.'.$strLine.'
+                              </div>';
+                    return view('auth.register');
+                }
+            }
+
+        }
+        $fileObject = $request->file('upload-file')->openFile();
+        $header = $fileObject->fgetcsv($delimiter=";");
+        while (!$fileObject->eof()) {
+            $dataArray = $fileObject->fgetcsv($delimiter=";");
+            if (array(null) !== $dataArray) {
+                $data = array_combine($header, $dataArray);
+                $user = $this->create($data);
+                $this->createRole($data, $user);
+            }
+        }
+        echo '<div class="alert alert-success alert-dismissible fade show text-center">
+                    <button type="button" class="close" data-dismiss="alert">&times;</button>
+                    <strong>Success !</strong> New users has successfully registered!
+                  </div>';
+        return view('auth.register');
+    }
+
     public function registerUser(Request $request) {
         $data = $request->all();
+        return $this->validationAndCreateUser($data);
+//        echo $id;
+    }
+
+    private function validationAndCreateUser($data) {
         $username = $data['username'];
         if(User::where('username',$username)->count()>0) {
             echo '<div class="alert alert-warning alert-dismissible fade show text-center">
@@ -102,26 +181,33 @@ class RegisterController extends Controller
                     <strong>Invalid</strong> phone number.
                   </div>';
             return view('auth.register');
+        } else if($data['password'] !== $data['password_confirmation']){
+            echo '<div class="alert alert-warning alert-dismissible fade show text-center">
+                    <button type="button" class="close" data-dismiss="alert">&times;</button>
+                    <strong>Password is not the same with password confirmation</strong>
+                  </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]);
-           }
+            $user = $this->create($data);
+            $this->createRole($data, $user);
             echo '<div class="alert alert-success alert-dismissible fade show text-center">
                     <button type="button" class="close" data-dismiss="alert">&times;</button>
                     <strong>Success !</strong> New user has successfully registered!
                   </div>';
-           return view('auth.register');
+            return view('auth.register');
         }
-//        echo $id;
-
+    }
 
+    private function createRole(array $data, User $user) {
+        $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]);
+        } else if($role == User::ROLE_MANAJER) {
+            Manajer::create(['id'=>$user->id]);
+        }
     }
 
 }
diff --git a/exampleCSV.csv b/exampleCSV.csv
new file mode 100644
index 0000000000000000000000000000000000000000..acb8a640b877d949c8d87b3bbc4e80001a689d0e
--- /dev/null
+++ b/exampleCSV.csv
@@ -0,0 +1,4 @@
+name;username;email;phone;password;role
+Bianca Jodie;biancajod;wil@gmaillll.com;111111111111;123123;Mahasiswa
+Marion;marion;wwwwil@gmail.com;111111111111;123123;Dosen
+luna maya;mayaes;mayase@gmail.com;111111111111;123123;Manajer
diff --git a/public/mix-manifest.json b/public/mix-manifest.json
index e2b79fac9599b1e528cdc5ab76585029dcd4ff87..585e57f4862c59104ee7dc943aa40f83bdace6b8 100644
--- a/public/mix-manifest.json
+++ b/public/mix-manifest.json
@@ -1,3 +1,4 @@
 {
-    "/js/app.js": "/js/app.js"
+    "/js/app.js": "/js/app.js",
+    "/css/app.css": "/css/app.css"
 }
\ No newline at end of file
diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php
index bcc6f7ec4438e5ab13d62c96c3f86b5db5242288..297dd3573aaf315a7cf88d8ba3e07b045450c07c 100644
--- a/resources/views/auth/register.blade.php
+++ b/resources/views/auth/register.blade.php
@@ -4,8 +4,79 @@
 <div class="container">
     <div class="row justify-content-center">
         <div class="col-md-8">
+
+            <div class="card">
+                <div class="card-header">Mass Register</div>
+
+                <div class="card-body">
+                    <form method="POST" enctype="multipart/form-data" action="{{ route('massRegisterPost') }}">
+                        @csrf
+
+                        <div class="form-group row">
+                            <label for="upload-file">Upload CSV file</label>
+                            <input accept=".csv" type="file" class="form-control-file" id="upload-file" name="upload-file">
+                        </div>
+                        <p>
+                            <a class="btn btn-primary" data-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">
+                                Show csv template
+                            </a>
+                        </p>
+                        <div class="collapse" id="collapseExample">
+                            <ul>
+                                <li>Don't forget to include the header too</li>
+                                <li>Field delimiter use semicolon(";")</li>
+                            </ul>
+                            <table class="table table-bordered table-dark" >
+                                <thead>
+                                    <tr>
+                                        <th>name</th>
+                                        <th>username</th>
+                                        <th>email</th>
+                                        <th>phone</th>
+                                        <th>password</th>
+                                        <th>role</th>
+                                    </tr>
+                                </thead>
+                                <tbody>
+                                    <tr>
+                                        <td>Bianca Jodie</td>
+                                        <td>biancajod</td>
+                                        <td>wil@gmaillll.com</td>
+                                        <td>111111111111</td>
+                                        <td>123123</td>
+                                        <td>Mahasiswa</td>
+                                    </tr>
+                                    <tr>
+                                        <td>Marion</td>
+                                        <td>marion</td>
+                                        <td>wwwwil@gmail.com</td>
+                                        <td>111111111111</td>
+                                        <td>123123</td>
+                                        <td>Dosen</td>
+                                    </tr>
+                                    <tr>
+                                        <td>luna maya</td>
+                                        <td>mayaes</td>
+                                        <td>mayase@gmail.com</td>
+                                        <td>111111111111</td>
+                                        <td>123123</td>
+                                        <td>Manajer</td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                        <div class="form-group row mb-0">
+                            <div class="col-md-6 offset-md-4">
+                                <button type="submit" class="btn btn-primary">
+                                    Mass Register
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                </div>
+            </div>
             <div class="card">
-                <div class="card-header">Register</div>
+                <div class="card-header">Single Register</div>
 
                 <div class="card-body">
                     <form method="POST" action="/register">
diff --git a/routes/web.php b/routes/web.php
index 0c8ba7b91ca95216a58edac90647f55d96d75676..2420e0ffb2b6678de19044417668229e4a69cf90 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -36,6 +36,7 @@ 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/batch','Auth\RegisterController@massRegisterCSV')->name('massRegisterPost');
 
 Route::get('/home', 'HomeController@index')->name('home');
 Route::get('/generate/admin', 'Auth\RegisterController@generateAdmin');