From a640d50bb552982a171f131c3954514bccdad804 Mon Sep 17 00:00:00 2001
From: Winarto <13515061@std.stei.itb.ac.id>
Date: Fri, 16 Mar 2018 21:58:29 +0700
Subject: [PATCH] Ubah database, tambah image upload, email regex validation

---
 app/Http/Controllers/MembersController.php    | 130 ++++++++++++++++++
 app/Http/Controllers/UsersController.php      |   5 +-
 app/Member.php                                |  10 ++
 .../2014_10_12_000000_create_users_table.php  |   4 -
 ...2018_03_16_121506_create_members_table.php |  37 +++++
 .../2018_03_16_134857_profile_image.php       |  32 +++++
 public/.htaccess                              |   3 +-
 resources/views/layouts/app.blade.php         |   3 +-
 resources/views/users/editprofile.blade.php   |  15 +-
 resources/views/users/profile.blade.php       |   3 +-
 routes/web.php                                |   2 +-
 storage/app/public/profile_image/noimage.jpg  | Bin 0 -> 26644 bytes
 12 files changed, 230 insertions(+), 14 deletions(-)
 create mode 100644 app/Http/Controllers/MembersController.php
 create mode 100644 app/Member.php
 create mode 100644 database/migrations/2018_03_16_121506_create_members_table.php
 create mode 100644 database/migrations/2018_03_16_134857_profile_image.php
 create mode 100644 storage/app/public/profile_image/noimage.jpg

diff --git a/app/Http/Controllers/MembersController.php b/app/Http/Controllers/MembersController.php
new file mode 100644
index 0000000..72b90e2
--- /dev/null
+++ b/app/Http/Controllers/MembersController.php
@@ -0,0 +1,130 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Storage;
+use App\Member;
+
+class MembersController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function create()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function show($id)
+    {
+        $user = Member::find($id);
+        if($user !== null){
+            return view('users.profile')->with('user', $user);
+        } else {
+            return abort(404);
+        }
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function edit($id)
+    {
+        $user = Member::find($id);
+        if($user !== null){
+            return view('users.editprofile')->with('user', $user);
+        } else {
+            return abort(404);
+        }
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, $id)
+    {
+        $this->validate($request, [
+            'email' => 
+                array(
+                    'required',
+                    'regex:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/'),
+            'phone_number' => 'required',
+            'company' => 'required',
+            'interest' => 'required',
+            'profile_image' => 'image|nullable|max:1999'
+        ]);
+
+        if($request->hasFile('profile_image')){
+            $fileNameWithExt = $request->file('profile_image')->getClientOriginalName();
+            $fileName = pathinfo($fileNameWithExt, PATHINFO_FILENAME);
+            $extension = $request->file('profile_image')->getClientOriginalExtension();
+            $fileNameToStore = $fileName . '_' . time() . '.' . $extension;
+
+            $path = $request->file('profile_image')->storeAs('public/profile_image', $fileNameToStore);
+        }
+
+        $user = Member::find($id);
+        $user->email = $request->input('email');
+        $user->phone_number = $request->input('phone_number');
+        $user->company = $request->input('company');
+        $user->interest = $request->input('interest');
+        $user->address = $request->input('address');
+        if($request->hasFile('profile_image')){
+            if($user->profile_image !== 'noimage.jpg'){
+                Storage::delete('public/profile_image/' . $user->profile_image);
+            }
+            $user->profile_image = $fileNameToStore;
+        }
+        $user->save();
+
+        return redirect('/profile/' . $id)->with('success', 'Profile Updated');
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy($id)
+    {
+        //
+    }
+}
diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php
index f125d07..98ce34e 100644
--- a/app/Http/Controllers/UsersController.php
+++ b/app/Http/Controllers/UsersController.php
@@ -72,7 +72,10 @@ class UsersController extends Controller
     public function update(Request $request, $id)
     {
         $this->validate($request, [
-            'email' => 'required',
+            'email' => 
+                array(
+                    'required',
+                    'regex:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/'),
             'phone_number' => 'required',
             'company' => 'required',
             'interest' => 'required'
diff --git a/app/Member.php b/app/Member.php
new file mode 100644
index 0000000..e99ceff
--- /dev/null
+++ b/app/Member.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Model;
+
+class Member extends Model
+{
+    //
+}
diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php
index 6d36712..67220e3 100644
--- a/database/migrations/2014_10_12_000000_create_users_table.php
+++ b/database/migrations/2014_10_12_000000_create_users_table.php
@@ -17,11 +17,7 @@ class CreateUsersTable extends Migration
             $table->increments('id');
             $table->string('name');
             $table->string('email', 191)->unique();
-            $table->string('phone_number');
             $table->string('password');
-            $table->string('company');
-            $table->string('interest');
-            $table->string('address')->nullable();
             $table->rememberToken();
             $table->timestamps();
         });
diff --git a/database/migrations/2018_03_16_121506_create_members_table.php b/database/migrations/2018_03_16_121506_create_members_table.php
new file mode 100644
index 0000000..5961cf6
--- /dev/null
+++ b/database/migrations/2018_03_16_121506_create_members_table.php
@@ -0,0 +1,37 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateMembersTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('members', function (Blueprint $table) {
+            $table->increments('id');
+            $table->string('name');
+            $table->string('email', 191)->unique();
+            $table->string('phone_number');
+            $table->string('company');
+            $table->string('interest');
+            $table->string('address')->nullable();
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('members');
+    }
+}
diff --git a/database/migrations/2018_03_16_134857_profile_image.php b/database/migrations/2018_03_16_134857_profile_image.php
new file mode 100644
index 0000000..db3e05d
--- /dev/null
+++ b/database/migrations/2018_03_16_134857_profile_image.php
@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class ProfileImage extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('members', function($table){
+            $table->string('profile_image')->default('noimage.jpg');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('members', function($table){
+            $table->dropColumn('profile_image');
+        });
+    }
+}
diff --git a/public/.htaccess b/public/.htaccess
index b75525b..b323428 100644
--- a/public/.htaccess
+++ b/public/.htaccess
@@ -11,11 +11,10 @@
 
     # Redirect Trailing Slashes If Not A Folder...
     RewriteCond %{REQUEST_FILENAME} !-d
+    RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_URI} (.+)/$
     RewriteRule ^ %1 [L,R=301]
 
     # Handle Front Controller...
-    RewriteCond %{REQUEST_FILENAME} !-d
-    RewriteCond %{REQUEST_FILENAME} !-f
     RewriteRule ^ index.php [L]
 </IfModule>
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
index 8181536..bfa5970 100644
--- a/resources/views/layouts/app.blade.php
+++ b/resources/views/layouts/app.blade.php
@@ -5,12 +5,13 @@
         <meta http-equiv="X-UA-Compatible" content="IE=edge">
         <meta name="viewport" content="width=device-width, initial-scale=1">
         <link rel="stylesheet" href="{{asset('css/app.css')}}">
+        <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
         <title>@yield('title')</title>
     </head>
     <body>
         <div class="container">
-            @include('inc.messages')
             @include('inc.navbar')
+            @include('inc.messages')
             @yield('content')
         </div>
     </body>
diff --git a/resources/views/users/editprofile.blade.php b/resources/views/users/editprofile.blade.php
index b4f21f4..9f77c78 100644
--- a/resources/views/users/editprofile.blade.php
+++ b/resources/views/users/editprofile.blade.php
@@ -3,7 +3,6 @@
 @section('title', $user->name . ' | Update Profile')
 
 @section('content')
-    <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
     <h2 class="sub-title">Edit Profile</h2>
     <div class="row">
         <div class="col-xs-12 col-sm-12 col-md-6 col-lg-6 col-xs-offset-0 col-sm-offset-0 col-md-offset-3 col-lg-offset-3 toppad" >  
@@ -14,12 +13,15 @@
                 <div class="panel-body">
                     <div class="row">
                         <div class="col-md-3 col-lg-3 " align="center"> <img alt="User Pic" 
-                        src="https://x1.xingassets.com/assets/frontend_minified/img/users/nobody_m.original.jpg" 
+                        src="/storage/profile_image/{{$user->profile_image}}"
                         class="img-circle img-responsive" id=""> </div>
                         
                             <div class=" col-md-9 col-lg-9 "> 
-                                {!! Form::open(['action' => ['UsersController@update',$user->id], 'method' => 'POST']) !!}
+                                {!! Form::open(['action' => ['MembersController@update',$user->id], 'method' => 'POST', 'enctype' => 'multipart/form-data']) !!}
                                 <div class="form-group">
+                                    {{Form::label('profile_image','Profile Image')}}
+                                    {{Form::file('profile_image')}}
+                                    
                                     {{Form::label('email','Email')}}
                                     {{Form::text('email', $user->email , ['class' => 'form-control'])}}
 
@@ -44,5 +46,12 @@
                 </div>
             </div>
         </div>
+        <link rel="stylesheet" type="text/css" href="css/file-upload.css" />
+<script src="js/file-upload.js"></script>
+<script type="text/javascript">
+    $(document).ready(function() {
+        $('.file-upload').file_upload();
+    });
+</script>
 
 @endsection
\ No newline at end of file
diff --git a/resources/views/users/profile.blade.php b/resources/views/users/profile.blade.php
index 86ea40a..3b1fd75 100644
--- a/resources/views/users/profile.blade.php
+++ b/resources/views/users/profile.blade.php
@@ -3,7 +3,6 @@
 @section('title', $user->name . ' | Profile')
 
 @section('content')
-    <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
     <h2 class="sub-title">Profile</h2>
     <div class="row">
         <div class="col-xs-12 col-sm-12 col-md-6 col-lg-6 col-xs-offset-0 col-sm-offset-0 col-md-offset-3 col-lg-offset-3 toppad" >  
@@ -14,7 +13,7 @@
                 <div class="panel-body">
                     <div class="row">
                         <div class="col-md-3 col-lg-3 " align="center"> <img alt="User Pic" 
-                        src="https://x1.xingassets.com/assets/frontend_minified/img/users/nobody_m.original.jpg" 
+                        src="/storage/profile_image/{{$user->profile_image}}" 
                         class="img-circle img-responsive" id=""> </div>
                         
                             <div class=" col-md-9 col-lg-9 "> 
diff --git a/routes/web.php b/routes/web.php
index e580395..6fa3587 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -15,4 +15,4 @@ Route::get('/', function () {
     return '<h1>Under Construction</h1>';
 });
 
-Route::resource('profile', 'UsersController');
\ No newline at end of file
+Route::resource('profile', 'MembersController');
\ No newline at end of file
diff --git a/storage/app/public/profile_image/noimage.jpg b/storage/app/public/profile_image/noimage.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..bed17c901e5fcdca78e6d892fdcd7c07b4b4bdb4
GIT binary patch
literal 26644
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

literal 0
HcmV?d00001

-- 
GitLab