This commit is contained in:
Neerholt 2020-08-12 11:15:49 +02:00
commit 9c26526740
14 changed files with 102 additions and 64 deletions

View File

@ -3,9 +3,11 @@
namespace App\Http\Controllers;
use App\Resource;
use App\ResourceCategory;
use App\ResourceExtension;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Symfony\Component\Mime\MimeTypes;
class ResourceController extends Controller
{
@ -49,30 +51,54 @@ class ResourceController extends Controller
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
public static function store(Request $request)
{
$file = $request->file("resource");
$resourceExtension = ResourceExtension::where("extension", "=", $file->extension())->first();
$resourceExtension = ResourceExtension::query()->where("extension", "=", $file->extension())->first();
//Create resourceExtension if it doesn't exist
if($resourceExtension === null) {
$category = substr($file->getMimeType(), 0, strpos($file->getMimeType(), "/"));
$resourceCategory = ResourceCategory::query()->where("name", "=", $category)->first();
//Create resourceCategory if it doesn't exist
if($resourceCategory === null){
$data = [
"name" => $category,
"description" => "",
"slug" => ""
];
$resourceCategory = new ResourceCategory($data);
$resourceCategory->save();
}
$data = [
"extension" => $file->extension(),
"description" => ""
"description" => "",
"resource_category_id" => $resourceCategory->id
];
$resourceExtension = new ResourceExtension($data);
$resourceExtension->save();
} else {
}
$resource = new Resource();
$resource->extension_id = $resourceExtension->id;
$resource->filename = substr(md5($file->getFilename() . rand()), 0, 7);
$fileName = time().'_'.$file->getClientOriginalName();
$filePath = $file->storeAs('uploads', $fileName, 'public');
/* /uploads/filename.ext */
$resource->filename = '/' . $filePath;
$resource->save();
}
return Response::detect("resources.store");
return $resource;
}
/**
@ -117,6 +143,6 @@ class ResourceController extends Controller
*/
public function destroy($id)
{
//
}
}

View File

@ -274,6 +274,10 @@ class UserController extends Controller
return redirect()->route('users.login');
}
/*******************************************/
/* Account */
/*******************************************/
public function account()
{
return Response::detect("users.account");
@ -284,6 +288,11 @@ class UserController extends Controller
return Response::detect("users.edit");
}
public function accounteditpic()
{
return Response::detect("users.editpic");
}
public function accounteditpass()
{
return Response::detect("users.editpass");
@ -293,10 +302,11 @@ class UserController extends Controller
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
* @return \Illuminate\Http\RedirectResponse
*/
public function accountupdate(Request $request)
{
/** @var User $user */
$user = User::find(Auth::id());
if ($request->input('password') != null) { // If you're editing the password
@ -327,6 +337,10 @@ class UserController extends Controller
else
return redirect()->route("users.login")->with('success#passwordchange', '<p class="text-center text-white"><b>Dit password er hermed ændret!</b></p>');
}
} else if($request->file("resource")) { // Else if you're editing the profile pic
$user->update([ "resource_id" => ResourceController::store($request)->id ]);
return redirect()->route("users.account");
} else { // Else if you're not editing the password but anything else (Email, Phone Number). Then update user.
$data = $request->only(['email', 'phone']);
$user->update($data);
@ -343,6 +357,10 @@ class UserController extends Controller
return redirect()->route("users.index");
}
/*******************************************/
/* Search and settings */
/*******************************************/
public function search(Request $request){
if($request->ajax()){
$output = "<tr>".
@ -489,15 +507,6 @@ class UserController extends Controller
}
}
/* public function generateCookie(Request $cookieValue){
$response = new Response('Set Cookie');
$response->withCookie(cookie()->forever('languagesSetting', $cookieValue));
return $response;
}*/
public function setLanguages(Request $request){
if($request->ajax()){
if($request->lang === "en"){

View File

@ -12,6 +12,10 @@ use Illuminate\Database\Eloquent\Model;
//Class of which should extend Model Library
class ResourceCategory extends Model
{
protected $fillable = [
'name', 'description', 'slug'
];
public function resourceExtensions() {
return $this->hasMany("App\ResourceExtension");
}

View File

@ -13,7 +13,7 @@ use Illuminate\Database\Eloquent\Model;
class ResourceExtension extends Model
{
protected $fillable = [
'extension', 'description'
'extension', 'description', 'resource_category_id'
];
public function resources() {

View File

@ -29,7 +29,7 @@ class User extends Authenticatable
*/
//protected variable which contains name of database field(s) to be filled.
protected $fillable = [
'name_first', "name_last", 'email', 'password', "phone"
'name_first', "name_last", 'email', 'password', "phone", "resource_id"
];
/**

View File

@ -50,8 +50,8 @@ return [
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'root' => public_path(''),
'url' => env('APP_URL').'/public',
'visibility' => 'public',
],

View File

@ -6,7 +6,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateResourceCategory extends Migration
class CreateResourceCategories extends Migration
{
/**
* Run the migrations.

View File

@ -28,6 +28,7 @@ class CreateUsersTable extends Migration
$table->string('password');
$table->integer("phone")->unique();
$table->rememberToken();
$table->foreignId("resource_id")->nullable()->constrained("resources", "id");
$table->timestamps();
});
}

View File

@ -1,36 +0,0 @@
<?php
//Migrations acts as a version control for the database allowing you to modify the app's database schema
//allows use of necessary libraries
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateResourceCategories extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
/*Schema::create('resource_categories', function (Blueprint $table) {
$table->id();
$table->string("name")->unique();
$table->text("description");
$table->string("slug")->unique();
$table->timestamps();
});*/
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('resource_categories');
}
}

View File

@ -11,8 +11,10 @@
<h4 class="mt-0">{{__('msg.navn')}}: {{ Auth::user()->name_first . " " . Auth::user()->name_last }}</h4>
<h4 class="mt-0">{{__('msg.email')}}: {{ Auth::user()->email }}</h4>
<h4 class="mt-0">{{__('msg.telefon')}} Nr.: {{ Auth::user()->phone }}</h4>
{!! session()->get('success#credentialschanged') !!}
<a class="btn text-center btn-sde-blue mt-1" href="{{ route("users.accountedit") }}">{{__('msg.redigeroplysninger')}}</a>
<a class="btn text-center btn-sde-blue mt-1" href="{{ route("users.accounteditpass") }}">{{__('msg.ændrepassword')}}</a>
<a class="btn text-center btn-sde-blue mt-1" href="{{ route("users.accounteditpic") }}">{{__('msg.ændrebillede')}}</a>
</main>
@endsection

View File

@ -0,0 +1,30 @@
@extends("app.layout.base")
@section("title")
Account
@endsection
@section("content")
<main style="justify-content: unset">
<h1 class="text-center sde-blue mt-1">{{__('msg.konto')}}</h1>
<form method="post" action="{{ route("users.accountupdate", ['user' => Auth::user()]) }}" enctype="multipart/form-data">
@csrf
@method("put")
@if(\App\Resource::query()->where("resource_id", "=",Auth::user()->resource_id)->first() != null)
<img style="width: calc(100% - 72px); margin: auto;" src="{{ \App\Resource::query()->where("resource_id", "=",Auth::user()->resource_id)->first()->filename }}">
@else
@if(request()->cookie("mode") == "dark")
<img style="width: calc(100% - 72px); margin: auto;" src="{{ asset("/images/icons/user-hvid.svg") }}">
@else
<img style="width: calc(100% - 72px); margin: auto;" src="{{ asset("/images/icons/user.svg") }}">
@endif
@endif
<span>{{__('msg.profilbillede')}}:</span>
<input type="file" name="resource" class="custom-file-input" id="chooseFile">
<button type="submit" class="btn text-center btn-sde-blue mt-1">{{__('msg.rediger')}}</button>
<a href="{{ route('users.account') }}" class="btn text-center btn-sde-blue mt-1">{{__('msg.tilbage')}}</a>
</form>
</main>
@endsection

View File

@ -25,6 +25,7 @@ Route::get("/account", "UserController@account")->name("users.account");
Route::get("/account/edit", "UserController@accountedit")->name("users.accountedit");
Route::get("/account/editpass", "UserController@accounteditpass")->name("users.accounteditpass");
Route::put("/account/update", "UserController@accountupdate")->name("users.accountupdate");
Route::get("/account/editpic", "UserController@accounteditpic")->name("users.accounteditpic");
Route::get("/events/signups", "EventController@signups")->name("events.signups");
Route::get("/events/accountsignups", "EventController@accountsignups")->name("events.accountsignups");
Route::get("phones", "PhoneController@index")->name("phones.index");
@ -33,6 +34,7 @@ Route::get("/app/washing-reservations", "WashingReservationController@appindex")
Route::get("/settings", "SettingsController@index")->name("settings.index");
Route::post("/events/signup", "UserEventController@createajax")->name("userevents.createajax");
//Search/Filter
Route::get("/contactsapi", "ContactController@search")->name("contacts.search");
Route::get("/eventsapi", "EventController@search")->name("events.search");