change response json

This commit is contained in:
Muhammad Fajar
2022-11-03 10:50:27 +07:00
parent c6f5d129c2
commit b96c6726e9
10 changed files with 62 additions and 123 deletions

View File

@@ -2,6 +2,7 @@
namespace Modules\Linksehat\Http\Controllers\Api; namespace Modules\Linksehat\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Person; use App\Models\Person;
use App\Models\User; use App\Models\User;
@@ -10,6 +11,7 @@ use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Laravel\Socialite\Facades\Socialite; use Laravel\Socialite\Facades\Socialite;
use Modules\Linksehat\Transformers\UserProfileResource; use Modules\Linksehat\Transformers\UserProfileResource;
use Symfony\Component\HttpFoundation\Response;
use Validator; use Validator;
class AuthController extends Controller class AuthController extends Controller
@@ -60,11 +62,9 @@ class AuthController extends Controller
} }
if (!$user) { if (!$user) {
return response()->json([ $message = filter_var($request->phone_or_email, FILTER_VALIDATE_EMAIL) ? "User dengan alamat email " . $request->phone_or_email . " tidak ditemukan" : "User dengan nomor telepon " . $request->phone_or_email . " tidak ditemukan";
'message' => filter_var($request->phone_or_email, FILTER_VALIDATE_EMAIL) ?
"User dengan alamat email " . $request->phone_or_email . " tidak ditemukan" : return Helper::responseJson(statusCode: Response::HTTP_NOT_FOUND, message: $message);
"User dengan nomor telepon " . $request->phone_or_email . " tidak ditemukan"
], 404);
} }
// TODO Send the OTP // TODO Send the OTP
@@ -74,13 +74,10 @@ class AuthController extends Controller
// Send Whatsapp // Send Whatsapp
} }
return response()->json([ return Helper::responseJson(data: [
'message' => 'OTP Terkirim', 'otp' => $user->otp,
'data' => [ 'otp_valid_until' => $user->otp_created_at->addMinutes(config('linksehat.otp_valid_minutes'))
'otp' => $user->otp, ], message: 'OTP Terkirim');
'otp_valid_until' => $user->otp_created_at->addMinutes(config('linksehat.otp_valid_minutes'))
]
]);
} }
public function login(Request $request) public function login(Request $request)
@@ -124,11 +121,7 @@ class AuthController extends Controller
return response(['message' => 'Mode Login Tidak Dikenal'], 403); return response(['message' => 'Mode Login Tidak Dikenal'], 403);
} }
return response([ return Helper::responseJson(data: ['token' => $user->createToken('app')->plainTextToken], message: 'Selamat Datang');
'message' => 'Selamat Datang',
'user' => UserProfileResource::make($user),
'token' => $user->createToken('app')->plainTextToken
]);
} }
public function register(Request $request) public function register(Request $request)
@@ -148,19 +141,14 @@ class AuthController extends Controller
])->validate(); ])->validate();
try { try {
$user = User::create([ User::create([
'email' => $request->email, 'email' => $request->email,
'password' => Hash::make($request->password), 'password' => Hash::make($request->password),
]); ]);
return response()->json([ return Helper::responseJson(statusCode: Response::HTTP_CREATED, message: 'Akun berhasil dibuat, silahkan cek E-mail untuk konfirmasi');
'message' => 'Akun berhasil dibuat, silahkan cek E-mail untuk konfirmasi'
], 201);
} catch (\Exception $e) { } catch (\Exception $e) {
return response()->json([ return Helper::responseJson(['error_message' => $e->getMessage()], Response::HTTP_FORBIDDEN, 'Terjadi masalah ketika mendaftar');
'message' => 'Terjadi masalah ketika mendaftar',
'error_message' => $e->getMessage()
], 403);
} }
} }
@@ -169,7 +157,7 @@ class AuthController extends Controller
$token = $request->bearerToken(); $token = $request->bearerToken();
Auth::user()->tokens()->where('id', $token)->delete(); Auth::user()->tokens()->where('id', $token)->delete();
return response(['message' => 'Berhasil Logout.']); return Helper::responseJson(message: 'Behasil Logout.');
} }
public function mockOtp(Request $request) public function mockOtp(Request $request)
@@ -178,23 +166,12 @@ class AuthController extends Controller
'phone_or_email' => 'required' 'phone_or_email' => 'required'
]); ]);
$user = User::where((filter_var($request->phone_or_email, FILTER_VALIDATE_EMAIL) ? 'email' : 'phone'), $request->phone_or_email)->first(); $user = User::query()->where((filter_var($request->phone_or_email, FILTER_VALIDATE_EMAIL) ? 'email' : 'phone'), $request->phone_or_email)->firstOrFail();
if ($user) { return Helper::responseJson(data: [
return response()->json([ 'otp' => $user->otp,
'message' => 'OTP Anda', 'otp_valid_until' => $user->otp_created_at ? $user->otp_created_at->addMinutes(config('linksehat.otp_valid_minutes')) : null
'data' => [ ], message: 'OTP Anda');
'otp' => $user->otp,
'otp_valid_until' => $user->otp_created_at ? $user->otp_created_at->addMinutes(config('linksehat.otp_valid_minutes')) : null
]
]);
}
if (!$user) {
return response()->json([
'message' => 'User Tidak Ditemukan'
], 404);
}
} }
public function redirectSocialLogin($provider) public function redirectSocialLogin($provider)
@@ -224,10 +201,9 @@ class AuthController extends Controller
]); ]);
} }
return response([ return Helper::responseJson(data: [
'message' => 'Selamat Datang',
'user' => UserProfileResource::make($user), 'user' => UserProfileResource::make($user),
'token' => $user->createToken('app')->plainTextToken 'token' => $user->createToken('app')->plainTextToken
]); ], message: 'Selamat Datang');
} }
} }

View File

@@ -2,6 +2,7 @@
namespace Modules\Linksehat\Http\Controllers\Api; namespace Modules\Linksehat\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\Organization; use App\Models\Organization;
use App\Models\PractitionerRole; use App\Models\PractitionerRole;
use Illuminate\Routing\Controller; use Illuminate\Routing\Controller;
@@ -58,11 +59,6 @@ class DashboardController extends Controller
$data = ArticleResource::collection(json_decode(Http::get('https://linksehat.com/api/medical-assistance-articles'))); $data = ArticleResource::collection(json_decode(Http::get('https://linksehat.com/api/medical-assistance-articles')));
} }
return response()->json([ return Helper::responseJson($data);
'status' => 'success',
'statusCode' => Response::HTTP_OK,
'message' => 'Data berhasil di ambil',
'data' => $data,
]);
} }
} }

View File

@@ -10,8 +10,7 @@ use DB;
use Illuminate\Contracts\Support\Renderable; use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Routing\Controller; use Illuminate\Routing\Controller;
use Modules\Linksehat\Transformers\DoctorResource; use Modules\Linksehat\Transformers\Doctor\DoctorResourceDetail;
use Modules\Linksehat\Transformers\Doctors\DoctorResourceDetail;
use Modules\Linksehat\Transformers\PractitionerRoleToDoctorResource; use Modules\Linksehat\Transformers\PractitionerRoleToDoctorResource;
class DoctorController extends Controller class DoctorController extends Controller
@@ -61,7 +60,7 @@ class DoctorController extends Controller
$doctors = $doctors->paginate($limit); $doctors = $doctors->paginate($limit);
return Helper::makeJsonResponse(Helper::paginateResources(PractitionerRoleToDoctorResource::collection($doctors))); return Helper::responseJson(Helper::paginateResources(PractitionerRoleToDoctorResource::collection($doctors)));
} }
/** /**
@@ -105,6 +104,7 @@ class DoctorController extends Controller
$doctor = DoctorResourceDetail::make($queryDoctor); $doctor = DoctorResourceDetail::make($queryDoctor);
$doctor['day_available'] = Helper::dailyAvailabilities($queryAvailables); $doctor['day_available'] = Helper::dailyAvailabilities($queryAvailables);
// return Helper::responseJson();
return response()->json(compact('doctor')); return response()->json(compact('doctor'));
} }

View File

@@ -2,6 +2,7 @@
namespace Modules\Linksehat\Http\Controllers\Api; namespace Modules\Linksehat\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\Organization; use App\Models\Organization;
use Illuminate\Contracts\Support\Renderable; use Illuminate\Contracts\Support\Renderable;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
@@ -115,7 +116,7 @@ class HospitalController extends Controller
}); });
$queryHospitals = $queryHospitals->orderBy('organizations.name', 'asc')->findOrFail($id); $queryHospitals = $queryHospitals->orderBy('organizations.name', 'asc')->findOrFail($id);
return HospitalResource::make($queryHospitals); return Helper::responseJson(new HospitalResource($queryHospitals));
} }
/** /**

View File

@@ -2,6 +2,7 @@
namespace Modules\Linksehat\Http\Controllers\Api; namespace Modules\Linksehat\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\File; use App\Models\File;
use App\Models\Person; use App\Models\Person;
use Auth; use Auth;
@@ -28,7 +29,7 @@ class PersonController extends Controller
unset($currentUserPerson->families); unset($currentUserPerson->families);
$families->prepend($currentUserPerson); $families->prepend($currentUserPerson);
return PersonResource::collection($families); return Helper::responseJson(PersonResource::collection($families));
} }
/** /**
@@ -68,14 +69,7 @@ class PersonController extends Controller
$personModel = Person::query()->create($personData); $personModel = Person::query()->create($personData);
return response()->json([ return Helper::responseJson(['person' => $personModel], Response::HTTP_CREATED, 'Data berhasil di buat');
'status' => 'success',
'statusCode' => Response::HTTP_CREATED,
'message' => 'Data Berhasil di buat',
'data' => [
'person' => $personModel,
],
], Response::HTTP_CREATED);
} }
/** /**
@@ -85,14 +79,7 @@ class PersonController extends Controller
*/ */
public function show(Person $person) public function show(Person $person)
{ {
return response()->json([ return Helper::responseJson(data: new PersonResource($person), message: 'Data Person dengan nama ' . $person->name . ' berhasil di ambil');
'status' => 'success',
'statusCode' => Response::HTTP_OK,
'message' => 'Data Person dengan nama ' . $person->name . ' berhasil di ambil',
'data' => [
'person' => new PersonResource($person),
],
]);
} }
/** /**
@@ -126,8 +113,6 @@ class PersonController extends Controller
'domicile_address_id', 'domicile_address_id',
]); ]);
return Person::query()->with('families')->find(auth()->user()->person_id);
$person->update($personData); $person->update($personData);
if ($request->hasFile('user_avatar')) { if ($request->hasFile('user_avatar')) {
@@ -167,14 +152,7 @@ class PersonController extends Controller
]); ]);
} }
return response()->json([ return Helper::responseJson(data: $person, message: 'Data Berhasil di update');
'status' => 'success',
'statusCode' => Response::HTTP_OK,
'message' => 'Data Berhasil di update',
'data' => [
'person' => $person,
],
]);
} }
/** /**

View File

@@ -2,10 +2,12 @@
namespace Modules\Linksehat\Http\Controllers\Api; namespace Modules\Linksehat\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\User; use App\Models\User;
use Illuminate\Contracts\Support\Renderable; use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Routing\Controller; use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
use Modules\Linksehat\Transformers\UserProfileResource; use Modules\Linksehat\Transformers\UserProfileResource;
class ProfileController extends Controller class ProfileController extends Controller
@@ -16,12 +18,9 @@ class ProfileController extends Controller
*/ */
public function index() public function index()
{ {
$user = auth()->user(); $user = Auth::user()->load('person');
$user->load('person');
return response()->json([ return Helper::responseJson(new UserProfileResource($user));
'user' => UserProfileResource::make($user)
]);
} }
/** /**
@@ -84,7 +83,7 @@ class ProfileController extends Controller
'preferred_lang' => 'in:id,en' 'preferred_lang' => 'in:id,en'
]); ]);
$user = auth()->user(); $user = Auth::user();
if ($user->person) { // Update Profile if ($user->person) { // Update Profile
$user->person->fill($request->only([ $user->person->fill($request->only([
'nik', 'name_prefix', 'name', 'name_suffix', 'gender', 'birth_date', 'deceased_at', 'marital_status' 'nik', 'name_prefix', 'name', 'name_suffix', 'gender', 'birth_date', 'deceased_at', 'marital_status'
@@ -122,7 +121,7 @@ class ProfileController extends Controller
} }
$user = User::find($user->id); // ReLoad User Data $user = User::find($user->id); // ReLoad User Data
return response()->json(UserProfileResource::make($user)); return Helper::responseJson(new UserProfileResource($user));
} }
/** /**

View File

@@ -2,6 +2,7 @@
namespace Modules\Linksehat\Http\Controllers\Api; namespace Modules\Linksehat\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\Organization; use App\Models\Organization;
use App\Models\Practice; use App\Models\Practice;
use App\Models\PractitionerRole; use App\Models\PractitionerRole;
@@ -32,14 +33,7 @@ class SearchController extends Controller
->where('organization_id', $request->organization_id) ->where('organization_id', $request->organization_id)
->get(['persons.name AS person_name', 'specialities.name AS speciality_name', 'practitioner_id', 'practitioner_roles.id']); ->get(['persons.name AS person_name', 'specialities.name AS speciality_name', 'practitioner_id', 'practitioner_roles.id']);
return response()->json([ return Helper::responseJson(SpecialityResource::collection($doctors));
'status' => 'success',
'statusCode' => Response::HTTP_OK,
'message' => 'Data Berhasil di ambil',
'data' => [
'doctors' => SpecialityResource::collection($doctors)
]
]);
} }
public function searchHospital(Request $request) public function searchHospital(Request $request)
@@ -74,11 +68,6 @@ class SearchController extends Controller
->groupBy(['practitioner_roles.organization_id', 'practitioner_roles.speciality_id']) ->groupBy(['practitioner_roles.organization_id', 'practitioner_roles.speciality_id'])
->get(); ->get();
return response()->json([ return Helper::responseJson(data: HospitalResource::collection($queryHospitals), message: 'Data rumah sakit berhasil di ambil');
'status' => 'success',
'statusCode' => Response::HTTP_OK,
'message' => 'Data rumah sakit berhasil di ambil',
'data' => HospitalResource::collection($queryHospitals)
]);
} }
} }

View File

@@ -2,6 +2,7 @@
namespace Modules\Linksehat\Http\Controllers\Api; namespace Modules\Linksehat\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\Practice; use App\Models\Practice;
use App\Models\PractitionerRole; use App\Models\PractitionerRole;
use App\Models\Speciality; use App\Models\Speciality;
@@ -42,26 +43,16 @@ class SpecialityController extends Controller
$specialisName = $doctor->speciality->name; $specialisName = $doctor->speciality->name;
} }
return response()->json([ return Helper::responseJson([
'status' => 'success', 'title' => 'Spesialis ' . $specialisName,
'statusCode' => Response::HTTP_OK, 'doctors' => SpecialityResource::collection($doctors)
'message' => 'Data Berhasil di ambil',
'data' => [
'title' => 'Spesialis ' . $specialisName,
'doctors' => SpecialityResource::collection($doctors)
]
]); ]);
} }
public function listSpeciality() public function listSpeciality()
{ {
$specialities = Speciality::query()->get(['name']); $querySpecialities = Speciality::query()->get(['name']);
return response()->json([ return Helper::responseJson(SpecialityResource::collection($querySpecialities));
'status' => 'success',
'statusCode' => Response::HTTP_OK,
'message' => 'Data Berhasil di ambil',
'data' => SpecialityResource::collection($specialities)
]);
} }
} }

View File

@@ -1,11 +1,11 @@
<?php <?php
namespace Modules\Linksehat\Transformers\Doctors; namespace Modules\Linksehat\Transformers\Doctor;
use App\Helpers\Helper; use App\Helpers\Helper;
use App\Models\Organization; use App\Models\Organization;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
use Modules\Linksehat\Transformers\Dashboard\HospitalResource; use Modules\Linksehat\Transformers\Hospital\HospitalResource;
class DoctorResourceDetail extends JsonResource class DoctorResourceDetail extends JsonResource
{ {

View File

@@ -4,6 +4,7 @@ namespace App\Helpers;
use Carbon\Carbon; use Carbon\Carbon;
use Carbon\CarbonPeriod; use Carbon\CarbonPeriod;
use Illuminate\Http\JsonResponse;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
class Helper class Helper
@@ -144,12 +145,20 @@ class Helper
return (object) $schedules; return (object) $schedules;
} }
public static function currencyIdrFormat($price) public static function currencyIdrFormat(int $price)
{ {
return "Rp. " . number_format($price, 0, ',', '.'); return "Rp. " . number_format($price, 0, ',', '.');
} }
public static function responseJson($data = [], $statusCode = Response::HTTP_OK, $message = 'Data berhasil di ambil') /**
* Helper Response Json.
*
* @param array|object $data
* @param int $statusCode
* @param string $message
* @return JsonResponse
*/
public static function responseJson(array|object $data = [], int $statusCode = Response::HTTP_OK, string $message = 'Data berhasil di ambil'): JsonResponse
{ {
return response()->json([ return response()->json([
'status' => $statusCode != 200 ? 'error' : 'success', 'status' => $statusCode != 200 ? 'error' : 'success',