Skip to content

Commit

Permalink
Merge pull request #65 from larsverp/feature/points
Browse files Browse the repository at this point in the history
Feature/points
  • Loading branch information
larsverp committed May 22, 2020
2 parents 734e2a0 + f9ec7df commit 6f275e3
Show file tree
Hide file tree
Showing 8 changed files with 164 additions and 2 deletions.
34 changes: 34 additions & 0 deletions app/Http/Controllers/CategoriesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use App\Categories;
use App\CatEve;
use App\cat_use;
use Illuminate\Http\Request;

class CategoriesController extends Controller
Expand Down Expand Up @@ -51,4 +52,37 @@ public function remove($id){
$category->delete();
return response($category, 200);
}

public function follow(Request $request){
$ValidateAttributes = request()->validate([
'category_id' => ['required', 'uuid', 'exists:categories,id']
]);
$ValidateAttributes["user_id"] = $request->user()->id;

$data = cat_use::where('category_id', $ValidateAttributes["category_id"])
->where('user_id', $ValidateAttributes["user_id"])
->First();
if($data == null){
$data = cat_use::FindOrFail(cat_use::create($ValidateAttributes)->id);
}
$data->update(['following' => true]);
return response($data, 201);
}

public function unfollow($id, Request $request){
$unfollow = cat_use::where('user_id', $request->user()->id)
->where('category_id', $id)
->FirstOrFail();
$unfollow->update(['following' => false]);
return response($unfollow, 200);
}

public function followers($id, Request $request){
$users = cat_use::where('category_id', $id)
->where('following', true)
->pluck('user_id');
return response()->json([
"total" => count($users)
], 200);
}
}
7 changes: 7 additions & 0 deletions app/Http/Controllers/TicketsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use App\Tickets;
use App\Events;
use Mail;
use App\Points\Points;
use Illuminate\Support\Str;
use SimpleSoftwareIO\QrCode\Facades\QrCode;

Expand Down Expand Up @@ -38,6 +39,8 @@ public function create(Request $request){
$m->to($request->user()->email)->subject('Your ticket for '.$event->title);
});

Points::Hosts('event_subscribe', $event->host_id, $request);

return response($ticket, 201);
}

Expand All @@ -48,6 +51,10 @@ public function remove($id, Request $request){
$ValidateAttributes["unsubscribe"] = true;

$ticket = Tickets::FindOrFail($id);

$event = Events::FindOrFail($ticket->event_id);
Points::Hosts('event_unsubscribe', $event->host_id, $request);

if($ticket->user_id == $request->user()->id){
if($ticket->update($ValidateAttributes)){
return response()->json([
Expand Down
11 changes: 10 additions & 1 deletion app/Http/Controllers/UserController.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
use Mail;
use App\hos_use;
use App\Hosts;
use App\Categories;
use App\cat_use;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Http;
Expand Down Expand Up @@ -163,13 +165,20 @@ public function admin(Request $request){
return $ValidateAttributes;
}

public function following(Request $request){
public function followingHosts(Request $request){
$hosts = hos_use::where('user_id', $request->user()->id)
->where('following', true)
->pluck('host_id');
return Hosts::FindOrFail($hosts);
}

public function followingCategories(Request $request){
$category = cat_use::where('user_id', $request->user()->id)
->where('following', true)
->pluck('category_id');
return Categories::FindOrFail($category);
}

private function send_mail($mail){
$user = User::where('email', $mail)->firstOrFail();

Expand Down
52 changes: 52 additions & 0 deletions app/Points/Points.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<?php

namespace App\Points;

use Illuminate\Http\Request;
use App\hos_use;
use App\cat_use;
use App\points_settings;

class Points
{
static function Hosts($setting, $host, Request $request){
$settings = points_settings::pluck('setting')->toArray();
if(in_array($setting, $settings)){
$data = hos_use::where('host_id', $host)
->where('user_id', $request->user()->id)
->First();
if($data == null){
$data = hos_use::FindOrFail(hos_use::create(['host_id' => $host, 'user_id' => $request->user()->id])->id);
}
$newPoints = $data->points + points_settings::where('setting', $setting)->pluck('value')[0];
$data->update(['points' => $newPoints]);
}
else{
dd( response()->json([
'succes' => false,
'reason' => 'The given setting is not a valid setting, see documentation for further info'
], 403));
}
}

static function Categories($setting, $category, Request $request){
$settings = points_settings::pluck('setting')->toArray();
if(in_array($setting, $settings)){
$data = cat_use::where('category_id', $category)
->where('user_id', $request->user()->id)
->First();
if($data == null){
$data = cat_use::FindOrFail(cat_use::create(['category_id' => $category, 'user_id' => $request->user()->id])->id);
}
$newPoints = $data->points + points_settings::where('setting', $setting)->pluck('value')[0];
$data->update(['points' => $newPoints]);
}
else{
dd( response()->json([
'succes' => false,
'reason' => 'The given setting is not a valid setting, see documentation for further info'
], 403));
}
}

}
16 changes: 16 additions & 0 deletions app/cat_use.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class cat_use extends Model
{
protected $fillable = ['category_id', 'user_id', 'points', 'following'];

public $timestamps = false;

protected $hidden = [
'id',
];
}
1 change: 1 addition & 0 deletions config/app.php
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@
'Mail' => Illuminate\Support\Facades\Mail::class,
'Notification' => Illuminate\Support\Facades\Notification::class,
'Password' => Illuminate\Support\Facades\Password::class,
'Points' => App\Points\Points::class,
'Queue' => Illuminate\Support\Facades\Queue::class,
'Redirect' => Illuminate\Support\Facades\Redirect::class,
'Redis' => Illuminate\Support\Facades\Redis::class,
Expand Down
34 changes: 34 additions & 0 deletions database/migrations/2020_05_22_080437_create_cat_uses_table.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateCatUsesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('cat_uses', function (Blueprint $table) {
$table->id();
$table->uuid('category_id');
$table->uuid('user_id');
$table->integer('points')->default(0);
$table->boolean('following')->default(false);
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('cat_uses');
}
}
11 changes: 10 additions & 1 deletion routes/api.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@
Route::post('users/register/rockstar', 'UserController@rockstar')->middleware(['auth:api', 'scope:admin']);
Route::post('users/register/admin', 'UserController@admin')->middleware(['auth:api', 'scope:admin']);
#Get following hosts
Route::get('users/following', 'UserController@following')->middleware(['auth:api', 'scope:admin,rockstar,partner,guest']);
Route::get('users/following/hosts', 'UserController@followingHosts')->middleware(['auth:api', 'scope:admin,rockstar,partner,guest']);
Route::get('users/following/categories', 'UserController@followingCategories')->middleware(['auth:api', 'scope:admin,rockstar,partner,guest']);

#Admin endpoints
Route::get('users', 'UserController@index')->middleware(['auth:api', 'scope:admin']);
Expand Down Expand Up @@ -121,6 +122,14 @@
Route::delete('categories/{id}', 'CategoriesController@remove')
->where('id', '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$')
->middleware(['auth:api', 'scope:admin']);
#Follow and unfollow category endpoints
Route::post('categories/follow', 'CategoriesController@follow')->middleware(['auth:api', 'scope:admin,rockstar,partner,guest']);
Route::delete('categories/unfollow/{id}', 'CategoriesController@unfollow')
->where('id', '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$')
->middleware(['auth:api', 'scope:admin,rockstar,partner,guest']);
Route::get('categories/followers/{id}', 'CategoriesController@followers')
->where('id', '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$')
->middleware(['auth:api', 'scope:admin,rockstar,partner,guest']);

#PointsSettings endpoint
Route::get('pointsettings', 'PointsSettingsController@index')->middleware(['auth:api', 'scope:admin']);
Expand Down

0 comments on commit 6f275e3

Please sign in to comment.