Paulo Vieira 70ccaf34ef last commit
entrega final do projecto
2018-01-13 18:27:23 +00:00

82 lines
2.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Contracts\Support\Jsonable;
use App\Http\Resources\User as UserResource;
use Illuminate\Support\Facades\DB;
use App\Mail\Mail;
use App\User;
use App\StoreUserRequest;
use Hash;
class UserControllerAPI extends Controller
{
public function getUsers(Request $request)
{
if ($request->has('page')) {
return UserResource::collection(User::paginate(5));
} else {
return UserResource::collection(User::all());
}
}
public function getUser($id)
{
return new UserResource(User::find($id));
}
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'min:3'
]);
$user = new User();
$user->username = $request->email;
$user->fill($request->all());
$user->password = Hash::make($user->password);
$user->save();
auth()->login($user);
\Mail::to($user)->send(new Mail);
return response()->json(new UserResource($user), 201);
}
public function update(Request $request, $id)
{
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users'.$id,
'password' => 'min:3'
]);
$user = User::findOrFail($id);
$user->username = $request->email;
$user->update($request->all());
return new UserResource($user);
}
public function delete($id)
{
$user = User::findOrFail($id);
$user->delete();
return response()->json(null, 204);
}
public function emailAvailable(Request $request)
{
$totalEmail = 1;
if ($request->has('email') && $request->has('id')) {
$totalEmail = DB::table('users')->where('email', '=', $request->email)->where('id', '<>', $request->id)->count();
} else if ($request->has('email')) {
$totalEmail = DB::table('users')->where('email', '=', $request->email)->count();
}
return response()->json($totalEmail == 0);
}
}