Skip to content

Commit

Permalink
Merge branch 'master' into denny
Browse files Browse the repository at this point in the history
  • Loading branch information
hawk-xc committed Jun 30, 2024
2 parents 9031cfb + 63ce87a commit 53421bb
Show file tree
Hide file tree
Showing 4 changed files with 204 additions and 78 deletions.
3 changes: 2 additions & 1 deletion app/Http/Controllers/apis/AuthApisController.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,15 @@ public function login(Request $request)
} else {
return response()->json([
'status' => 404,
'data' => 'user not found'
'data' => 'user not found or user not authed'
], 400);
}
}

public function register(Request $request)
{
$data = $request->only(['username', 'name', 'email', 'password']);
$data['email_verified_at'] = date('Y-m-d H:i:s');

$rules = [
'username' => 'required',
Expand Down
137 changes: 80 additions & 57 deletions app/Http/Controllers/apis/DeviceApisController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,101 +3,124 @@
namespace App\Http\Controllers\apis;

use App\Http\Controllers\Controller;
use App\Http\Resources\DeviceResource;
use App\Models\Device;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;

class DeviceApisController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
public function index(Request $request)
{
$device = Device::where('user_id', Auth::user()->id)->get();
// $device = Device::all();
return new DeviceResource(true, 'List Data Posts', $device);
$devices = [];

foreach (Device::where('user_id', $request->user()->id)->get() as $device) {
$devices[] = $device;
$device['user_name'] = $device->User->name;
$device['created_at_diff'] = $device->created_at->diffForHumans();
}

return response()->json([
'status' => 200,
'total' => Device::where('user_id', $request->user()->id)->count(),
'data' => $devices
], 200);
}

/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
// 'user_id' => 'required',
'device_name' => 'required|min:3',
'device_year' => 'required|numeric|digits:4|min:1990|max:' . date('Y'),
'drive_link' => 'nullable|url',
'device_image' => 'nullable|image|max:1024|mimes:jpg,png,jpeg',
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
if ($request->hasFile('device_image')) {
$image = $request->file('device_image');
$image->storeAs('public/posts', $image->hashName());
}
$request['user_id'] = $request->user()->id;

$device = Device::create([
// 'user_id' => Auth::user()->id,
'user_id' => $request->user()->id,
'device_name' => $request->device_name,
'device_year' => $request->device_year,
'drive_link' => $request->drive_link,
// 'image_link' => $image->hashName(),
$validated = $request->validate([
'user_id' => 'required',
'device_name' => 'required',
'device_year' => 'required',
'drive_link' => 'nullable',
]);
return new DeviceResource(true, 'Data Perangkat Berhasil Ditambahkan', $device);

try {
// Masukkan data ke dalam database
$device = Device::create($validated);

// Kembalikan respons JSON
return response()->json([
'status' => 200,
'data' => $device
], 200);
} catch (\Exception $e) {
// Log error
// Log::error('Error creating device: ' . $e->getMessage());

// Kembalikan respons error
return response()->json([
'status' => 500,
'error' => 'Internal Server Error'
], 500);
}
}

/**
* Display the specified resource.
*/
public function show($id)
public function show(Device $device)
{
// $perangkat = Device::where('user_id', Auth::user()->id)->where('id', $id)->first();
$device =
Device::where('user_id', Auth::user()->id)->where('id', $id)->first();
if (!$device) {
return response()->json(['success' => false, 'message' => 'Data Perangkat Tidak Ditemukan'], 404);
}
return new DeviceResource(true, 'Data Perangkat Berhasil Ditampilkan', $device);
return response()->json([
'data' => 'data',
'status' => $device
], 200);
}

/**
* Show the form for editing the sp
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
public function update(Request $request, Device $device)
{
$device = Device::find($id);
if (!$device) {
return response()->json(['success' => false, 'message' => 'Data Perangkat Tidak Ditemukan'], 404);
}
$validator = Validator::make($request->all(), [
'device_name' => 'sometimes|required|min:3',
'device_year' => 'sometimes|required|numeric|digits:4|min:1990|max:' . date('Y'),
'drive_link' => 'nullable|url',
'device_image' => 'nullable|image|max:1024|mimes:jpg,png,jpeg',
$request['user_id'] = $request->user()->id;

$validated = $request->validate([
'user_id' => 'required',
'device_name' => 'required',
'device_year' => 'required',
'drive_link' => 'nullable',
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);

try {
// Masukkan data ke dalam database
$device = Device::find($device->id)->update($validated);

// Kembalikan respons JSON
return response()->json([
'status' => 200,
'data' => $device
], 200);
} catch (\Exception $e) {
// Log error
// Log::error('Error creating device: ' . $e->getMessage());

// Kembalikan respons error
return response()->json([
'status' => 500,
'error' => 'Internal Server Error'
], 500);
}
$device->update($request->only('device_name', 'device_year', 'drive_link'));
return new DeviceResource(true, 'Data Perangkat Berhasil Diupdate', $device);
}

/**
* Remove the specified resource from storage.
*/
public function destroy($id)
public function destroy(Device $device)
{
$device = Device::find($id);
if (!$device) {
return response()->json(['success' => false, 'message' => 'Data Perangkat Tidak Ditemukan'], 404);
}
$device->delete();
return response()->json(['success' => true, 'message' => 'Data Perangkat Berhasil Dihapus']);
Device::destroy($device->id);
return response()->json([
'status' => 200,
'data' => 'sukses',
], 200);
}
}
119 changes: 111 additions & 8 deletions app/Http/Controllers/apis/ProfileApisController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use App\Models\{
Device,
Ticket,
User,
Proces
};

class ProfileApisController extends Controller
{
Expand All @@ -23,23 +31,118 @@ public function index(Request $request)
/**
* Update the specified resource in storage.
*/
public function store(Request $request)
public function update(Request $request)
{
$user_id = $request->user()->id;
$user = $request->user();
$data = [];

$request->only(['username', 'name', 'email', 'password']);
//
$request->only(['username', 'name', 'email', 'b_password', 'n_password', 'c_password']);

return response()->json([
'data' => $request
if (isset($request->b_password) && isset($request->n_password) && isset($request->c_password)) {
$validator = Validator::make($request->all(), [
'username' => 'nullable',
'name' => 'nullable',
'email' => 'nullable',
'b_password' => 'required',
'n_password' => 'required|min:6',
'c_password' => 'required|same:n_password',
]);

if (!Hash::check($request->b_password, $user->password)) {
return response()->json(['error' => 'Old password is incorrect'], 400);
}

// $user->password = Hash::make($request->n_password);
$data['password'] = Hash::make($request->n_password);
} else {
$validator = Validator::make($request->all(), [
'username' => 'nullable',
'name' => 'nullable',
'email' => 'nullable',
]);
}

$data['username'] = $request->username;
$data['name'] = $request->name;
$data['email'] = $request->email;

$status = User::find($user->id)->update($data);

if ($status) {
return response()->json([
'status' => 200,
'data' => 'data user berhasil diperbahrui!'
], 200);
} else {
return response()->json([
'status' => 400,
'data' => 'data user gagal diperbahrui!'
]);
}
}

public function update_password(Request $request)
{

// Validasi input
$validator = Validator::make($request->all(), [
'b_password' => 'required',
'n_password' => 'required|min:6',
'c_password' => 'required|same:n_password',
]);

if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 400);
}

// Dapatkan user saat ini
$user = $request->user();

// Periksa apakah password lama cocok
if (!Hash::check($request->b_password, $user->password)) {
return response()->json(['error' => 'Old password is incorrect'], 400);
}

// Update password
$user->password = Hash::make($request->n_password);
$user->save();

return response()->json(['message' => 'Password updated successfully'], 200);
}

/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
public function destroy(Request $request)
{
//
$devices = Device::where('user_id', $request->user()->id);
$ticket = Ticket::whereIn('device_id', $devices->pluck('id'));
$proces = Proces::whereIn('ticket_id', $ticket->pluck('id'));

try {
if ($ticket->count() < 1) {
// menghapus semua data device
if ($devices->count() >= 0) {
$delete_device = $devices->get()->each->delete();
if ($delete_device) {
$request->user()->delete();
return response()->json([
'status' => 200,
'data' => 'user berhasil dihapus!',
], 200);
}
}
} else {
return response()->json([
'status' => 405,
'data' => 'user gagal dihapus!'
], 405);
}
} catch (\Exception $e) {
return response()->json([
'status' => 404,
'data' => $e
], 404);
}
}
}
23 changes: 11 additions & 12 deletions routes/api.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@

AuthApisController,
DeviceApisController,
DevicesApisController,
// DevicesApisController,
ProcessApisController,
TicketApisController,
ProfileApisController
ProfileApisController,
// DeviceApisController
};
use App\Http\Controllers\apis\DevicesApiController;
use App\Http\Controllers\DevicesApiController as ControllersDevicesApiController;
Expand All @@ -33,8 +34,12 @@
Route::post('/login', [AuthApisController::class, 'login']);
Route::post('/register', [AuthApisController::class, 'register']);

// Route::resource('/profile', [ProfileApisController::class])->middleware('auth:sanctum');
// Route::resource('/profile', [AuthApisController::class])->middleware('auth:sanctum');
Route::middleware('auth:sanctum')->group(function () {
Route::resource('/profile', ProfileApisController::class);
Route::resource('/ticket', TicketApisController::class);
Route::resource('/device', DeviceApisController::class);
Route::put('/passwordupdate', [ProfileApisController::class, 'update_password']);
});

Route::get('/antrean', [TicketApisController::class, 'index'])->middleware('auth:sanctum');
Route::post('/antrean', [TicketApisController::class, 'store'])->middleware('auth:sanctum');
Expand All @@ -52,11 +57,5 @@
Route::apiResource('/proces', ProcessApisController::class)->only([
'index', 'store', 'show', 'update', 'destroy'
])->middleware('auth:sanctum');
// Route::apiResource('/devices', DevicesApiController::class)->only([
// // 'index', 'show', 'update', 'destroy'
// ]);
Route::get('/device', [DeviceApisController::class, 'index'])->middleware('auth:sanctum');
Route::post('/device', [DeviceApisController::class, 'store'])->middleware('auth:sanctum');
Route::put('/device/{id}', [DeviceApisController::class, 'show'])->middleware('auth:sanctum');
Route::post('/device/{id}', [DeviceApisController::class, 'update'])->middleware('auth:sanctum');
Route::delete('/device/{id}', [DeviceApisController::class, 'destroy'])->middleware('auth:sanctum');

// Route::resource('/device/{id}', DeviceApisController::class);

0 comments on commit 53421bb

Please sign in to comment.