You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
4.8 KiB
132 lines
4.8 KiB
<?php
|
|
|
|
namespace App\Http\Controllers\Api\V1\Auth;
|
|
|
|
use App\CentralLogics\Helpers;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\DeliveryMan;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Illuminate\Support\Str;
|
|
|
|
class DeliveryManLoginController extends Controller
|
|
{
|
|
public function login(Request $request)
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
'phone' => 'required|exists:delivery_men,phone',
|
|
'password' => 'required|min:6'
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json(['errors' => Helpers::error_processor($validator)], 403);
|
|
}
|
|
|
|
$data = [
|
|
'phone' => $request->phone,
|
|
'password' => $request->password
|
|
];
|
|
|
|
if (auth('delivery_men')->attempt($data)) {
|
|
$token = Str::random(120);
|
|
|
|
if(auth('delivery_men')->user()->application_status != 'approved')
|
|
{
|
|
return response()->json([
|
|
'errors' => [
|
|
['code' => 'auth-003', 'message' => translate('messages.your_application_is_not_approved_yet')]
|
|
]
|
|
], 401);
|
|
}
|
|
else if(!auth('delivery_men')->user()->status)
|
|
{
|
|
$errors = [];
|
|
array_push($errors, ['code' => 'auth-003', 'message' => translate('messages.your_account_has_been_suspended')]);
|
|
return response()->json([
|
|
'errors' => $errors
|
|
], 401);
|
|
}
|
|
|
|
$delivery_man = DeliveryMan::where(['phone' => $request['phone']])->first();
|
|
$delivery_man->auth_token = $token;
|
|
$delivery_man->save();
|
|
|
|
if(isset($delivery_man->zone)){
|
|
if($delivery_man->vehicle_id){
|
|
|
|
$topic = 'delivery_man_'.$delivery_man->zone->id.'_'.$delivery_man->vehicle_id;
|
|
}else{
|
|
$topic = $delivery_man->type=='zone_wise'?$delivery_man->zone->deliveryman_wise_topic:'restaurant_dm_'.$delivery_man->restaurant_id;
|
|
}
|
|
}
|
|
return response()->json(['token' => $token, 'topic'=> isset($topic)?$topic:'No_topic_found'], 200);
|
|
} else {
|
|
$errors = [];
|
|
array_push($errors, ['code' => 'auth-001', 'message' => 'Unauthorized.']);
|
|
return response()->json([
|
|
'errors' => $errors
|
|
], 401);
|
|
}
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
'f_name' => 'required',
|
|
'identity_type' => 'required|in:passport,driving_license,nid',
|
|
'identity_number' => 'required',
|
|
'email' => 'required|unique:delivery_men',
|
|
'phone' => 'required|regex:/^([0-9\s\-\+\(\)]*)$/|min:10|unique:delivery_men',
|
|
'password'=>'required|min:6',
|
|
'zone_id' => 'required',
|
|
'vehicle_id' => 'required',
|
|
'earning' => 'required|in:0,1',
|
|
'image' => 'nullable|max:2048',
|
|
'identity_image.*' => 'nullable|max:2048',
|
|
], [
|
|
'f_name.required' => translate('messages.first_name_is_required'),
|
|
'zone_id.required' => translate('messages.select_a_zone'),
|
|
'earning.required' => translate('messages.select_dm_type')
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json(['errors' => Helpers::error_processor($validator)],403);
|
|
}
|
|
|
|
if ($request->has('image')) {
|
|
$image_name = Helpers::upload('delivery-man/', 'png', $request->file('image'));
|
|
} else {
|
|
$image_name = 'def.png';
|
|
}
|
|
|
|
$id_img_names = [];
|
|
if (!empty($request->file('identity_image'))) {
|
|
foreach ($request->identity_image as $img) {
|
|
$identity_image = Helpers::upload('delivery-man/', 'png', $img);
|
|
array_push($id_img_names, $identity_image);
|
|
}
|
|
$identity_image = json_encode($id_img_names);
|
|
} else {
|
|
$identity_image = json_encode([]);
|
|
}
|
|
|
|
$dm = New DeliveryMan();
|
|
$dm->f_name = $request->f_name;
|
|
$dm->l_name = $request->l_name;
|
|
$dm->email = $request->email;
|
|
$dm->phone = $request->phone;
|
|
$dm->identity_number = $request->identity_number;
|
|
$dm->identity_type = $request->identity_type;
|
|
$dm->identity_image = $identity_image;
|
|
$dm->image = $image_name;
|
|
$dm->active = 0;
|
|
$dm->zone_id = $request->zone_id;
|
|
$dm->vehicle_id = $request->vehicle_id;
|
|
$dm->earning = $request->earning;
|
|
$dm->password = bcrypt($request->password);
|
|
$dm->application_status= 'pending';
|
|
$dm->save();
|
|
|
|
return response()->json(['message' => translate('messages.deliveryman_added_successfully')], 200);
|
|
}
|
|
}
|
|
|