diff --git a/app/Http/Controllers/MembersController.php b/app/Http/Controllers/MembersController.php new file mode 100644 index 0000000000000000000000000000000000000000..72b90e26c4d8d1b1615008bd07608942b05e5fdb --- /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 f125d07214543a3dcb57eec5b7e9a6952ad6fe31..98ce34e830404b2972fc27597d0084b5752e4636 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 0000000000000000000000000000000000000000..e99cefff995ff940624a1731f7758655f8de4368 --- /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 6d36712b97dc383a3ced799bde4be80227ae0b05..67220e30f5ac595fac319f67094448ca437c19ed 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 0000000000000000000000000000000000000000..5961cf652d2ab27de4d1f19c2c20e7abbabb7805 --- /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 0000000000000000000000000000000000000000..db3e05dfdf4ff8df1788ea11865dff70ffa38166 --- /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 b75525bedcd85c37bf37df77ecb65dcadfa617d1..b32342881a69fbe1fd8785770b25e4f7af60b73e 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 81815368cdff56c63db3f468a3af4935a7e2a9ef..bfa5970739cad0c2036d74a3095640d3ca35469e 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 b4f21f42179c91f78eb0dbfbdf4330ad123a406c..9f77c789f060aaa80c37ca3e8653a0d6fb000fe1 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 86ea40ab5f97a4ffecbf9516f5a937110ad00e08..3b1fd754a3d3d5dcad0e579e2e84ca3e39881e14 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 e58039552214df605c10cf975e1fb5357c8786c8..6fa3587af56a6f004095e6ccb8c65877dee06bb6 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 Binary files /dev/null and b/storage/app/public/profile_image/noimage.jpg differ