Viewing file: VendorController.php (14.94 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers;
use App\Models\Vendor;
use App\Models\BankInfo;
use App\Models\StoreSettings;
use App\Models\KycData;
use App\Models\VendorDelete;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Hash;
use GuzzleHttp\Client;
use DateTime;
use App\Helpers\CloudflareAPIHelper;
use App\Helpers\NotificationHelper;
class VendorController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//
}
// get Vendor
function index()
{
// if (count($req->query())===0) {
// $categories=Categories::with('sub_Categories')->where("vendor_id",$vendor_id)->where("parent",0)->get();
// return response()->json(["data"=>$categories]);
// // return json_encode($categories)
// }else{
// $pr= new Categories;
// $table = $pr->getTable();
// $columns = \Schema::getColumnListing($table);
// $categories = Categories::query();
// $params = $req->query();
// foreach ($params as $key => $value) {
// if (in_array($key,$columns,true)) {
// if (!empty($value) || $value==0){
// $categories->where($key,$value);
// }
// }else{
// return response()->json(['error' => 'true', 'message' =>"invalid parameter ".$key]);
// }
// }
// $categories=$categories->with('sub_Categories')->where("vendor_id",$vendor_id)->where("parent",0)->get();
// return response()->json(["data"=>$categories]);
// }
return response()->json(["message"=>"Not Allowed"],403);
}
public function phoneNumber(Request $req) {
$phone=$req->input('phone');
$val="/(^(\+8801|8801|01|008801))[1|3-9]{1}(\d){8}$/";
if(preg_match($val,$phone)){
$data=Vendor::where("phone",$phone)->where('delete_request',0)->get();
if (count($data)>0) {
if ($data[0]->active==0) {
return response()->json(["error"=>"true","message"=>"Phone number is already used. Please try with different phone number"],400);
}else {
return response()->json(["error"=>"true","message"=>"Phone number is already used. Please try with different phone number"],400);
}
}else {
return response()->json(["message"=>"Success"]);
}
}else{
return response()->json(['error' => 'true', 'message' =>"Invalid phone Number"],400);
}
}
function otpSend(Request $req) {
// if ($req->input("type")=="reset") {
// }
if ($req->input("type")=="registration") {
$dt=Vendor::where('phone',$req->input('phone'))->where('delete_request', '!=',2)->first();
if ($dt) {
return response()->json(['error' => 'true', 'message' =>"Phone number is already used. Please try with different phone number"],400);
}
}else {
$data=Vendor::where("phone",$req->input('phone'))->where('active',1)->first();
if (!$data) {
return response()->json(["error"=>"true", "message"=>"Phone Number Not Exist"],400);
}
}
// Storing a value in the KV store
$cloudflareAPI = new CloudflareAPIHelper();
$namespaceId = env('VENDOR_OTP_NAMESPACE'); // Replace with your Cloudflare Workers KV namespace ID
$key = strval($req->input('phone'));
// $value = ["444785" => date('d-m-Y H:i', strtotime("+5 min"))]; // JSON payload
$a = rand(100000,900000);
$a = strval($a);
$client = new Client();
$res = $client->request('GET', "https://smsc.cdrlink.xyz/cloudsms_v1/api/sms?api_key=xkdoFNkd1UqIfGbzFfmaShnksCoTcCQuwDx8DxkfH3EOeBrm&source_addr=jiff&destination_addr=".$key."&message=".$a);
if ($res->getStatusCode()==200) {
$cloudflareAPI->put($namespaceId, $key, $a);
return response()->json(["message"=>"An OTP is sent to your mobile number"]);
}else {
// return response()->json(["error"=>"true", "message"=>"Something Is wrong, please try again"],$res);
return response()->json(["error"=>"true", "message"=>json_decode($res->getBody()->getContents())],500);
}
}
function matchOtp(Request $req){
try {
$cloudflareAPI = new CloudflareAPIHelper();
$namespaceId = env('VENDOR_OTP_NAMESPACE'); // Replace with your Cloudflare Workers KV namespace ID
$key=$req->input('phone');
// Retrieving a value from the KV store
$value = $cloudflareAPI->get($namespaceId, $key);
if ($value==$req->input('otp')) {
$deleted = $cloudflareAPI->delete($namespaceId, $key);
return response()->json(["message"=>"matched"]);
}else{
return response()->json(['error'=>'true',"message"=>"OTP not matched"],400);
}
}catch (\Exception $exception) {
return response()->json(['error' => 'true', 'message' =>$exception->getMessage()],500);
}
}
//create new vendor
public function create(Request $req)
{
try {
$validator = Validator::make($req->all(), [
'first_name' => 'required|string|between:2,50',
'last_name' => 'required|string|between:2,50',
// 'email' => 'required|string|email|max:100',
'phone' => 'required|string',
'password' => 'required|string|between:8,32',
'store_name' => 'required|string|between:2,120',
'address' => 'required|string|between:2,160',
'district' => 'required',
]);
if ($validator->fails()==true) {
return response()->json(['error'=>'true',"message"=>$validator->errors()->all()],402);
}
$phone=$req->input('phone');
$val="/(^(\+8801|8801|01|008801))[1|3-9]{1}(\d){8}$/";
if(preg_match($val,$phone)){
$phone =substr($phone,-11);
}else{
return response()->json(['error' => 'true', 'message' =>"Invalid phone Number"],400);
}
$dt=Vendor::where('phone','LIKE','%'.$phone)->where('delete_request',0)->first();
if ($dt) {
return response()->json(['error' => 'true', 'message' =>"Phone number is already used. Please try with different phone number"],400);
}
DB::beginTransaction();
$vendor= new Vendor;
// $vendor->id=88000003;
$vendor->first_name = $req->input('first_name');
$vendor->last_name = $req->input('last_name');
$vendor->phone = $req->input('phone');
$vendor->email = $req->input('email');
$vendor->password = Hash::make($req->input('password'));
$vendor->active = 1;
$vendor->save();
} catch (\Exception $exception) {
DB::rollback();
return response()->json(['error' => 'true', 'message' =>$exception->getMessage()],500);
}
if ($vendor) {
try {
$store_settings = StoreSettings::create([
'store_name' => $req->input('store_name'),
'district' => $req->input('district'),
'address' => $req->input('address'),
'image_folder'=>str_replace(" ","_", $req->input('first_name'))."_".$vendor->id,
'vendor_id' =>$vendor->id,
]);
} catch (\Exception $exception) {
DB::rollback();
return response()->json(['error' => 'true', 'message' =>$exception->getMessage()],500);
}
DB::commit();
$d = new DateTime();
$t=$d->format("ymdHisv");
$data=["vendor_id"=>$vendor->id,"_id"=>$t,"store_id"=>$store_settings->id,'image_folder'=>str_replace(" ","_", $req->input('first_name'))."_".$vendor->id];
$req_data = [
'id' => strval($vendor->id),
'name' => $req->input('first_name')." ".$req->input('last_name'),
'phone' => strval( $req->input('phone')),
'store_name' => $req->input('store_name')
];
// $this->createVendor($req_data,$vendor->id);
return response()->json(['message' => "Vendor Created Successfully","data"=> $data]);
} else {
DB::rollback();
return response()->json(['error' => 'true','message' => "Vendor Not created"],500);
}
}
function createVendor($req_data,$vendor_id) {
$client = new Client();
$res = $client->request('POST', 'http://157.245.155.94:3039/create-vendor',[
'json' => $req_data
]);
if ($res->getStatusCode()==200) {
$vendor=Vendor::find($vendor_id);
$vendor->is_synced= 1;
$ven=$vendor->save();
}
}
public function KycData(Request $req)
{
try {
$vendor_id=auth()->user()->id;
$kyc=KycData::updateOrCreate([
'vendor_id'=>$vendor_id
],
[
'front'=>$req->input('front'),
'back'=>$req->input('back'),
'vendor_id'=>$vendor_id,//Auth::user()->id;
'face'=>$req->input('face'),
'signature'=>$req->input('signature'),
'type'=>$req->input('type'),
]);
Vendor::find($vendor_id)->update([
"verified" => 1
]);
return response()->json(['message' =>"Success"]);
} catch (\Exception $exception) {
return response()->json(['error' => 'true', 'message' =>$exception->getMessage()],500);
}
}
public function profilePicture(Request $req)
{
try {
$vendor_id=auth()->user()->id;
$data=Vendor::where('id',$vendor_id)->update([
'image'=>$req->input('profile')
]);
return response()->json(['message' =>"Success"]);
} catch (\Exception $exception) {
return response()->json(['error' => 'true', 'message' =>$exception->getMessage()],500);
}
}
// update vendor
public function update(Request $req)
{
try{
$vendor_id=auth()->user()->id;
$vendor = Vendor::where('id',$vendor_id)->first();
if (empty($vendor)) {
return response()->json(['error' => 'true', 'message' =>"Invalid vendor"],401);
}else{
$validator = Validator::make($req->all(), [
'first_name' => 'required|string|between:2,50',
'last_name' => 'required|string|between:2,50',
'email' => 'nullable|email|string|between:10,120'
]);
if ($validator->fails()==true) {
return response()->json(['error'=>'true',"message"=>$validator->errors()->all()],402);
}
$vendor->first_name = $req->input('first_name');
$vendor->last_name = $req->input('last_name');
// $vendor->phone = $req->input('phone');
$vendor->email = $req->input('email');
$ven=$vendor->save();
if ($ven) {
$notification=new NotificationHelper();
$notification->send('/profile',["json"=>['vendor_id' => auth()->user()['id']]]);
// try {
// $client = new Client([
// 'auth' => [env('NOTIFICATION_USER'), env('NOTIFICATION_PASSWORD')]
// ]);
// $res= $client->request('POST', env('NOTIFICATION_URL').'/profile',["json"=>['vendor_id' => auth()->user()['id']]]);
// } catch (\Throwable $th) {
// }
return response()->json(['message' => "Success"]);
}else {
return response()->json(['error' => 'true', 'message' => "Vendor Profile not updated"],500);
}
}
} catch (\Exception $exception) {
return response()->json(['error' => 'true', 'message' =>$exception->getMessage()],500);
}
}
// delete categories
public function deleteUser(Request $req)
{
try{
$vendor_id=auth()->user()->id;
VendorDelete::updateOrCreate([
'vendor_id'=>$vendor_id
],
[
'type'=>$req->input('type')
]);
Vendor::find($vendor_id)->update([
"delete_request" => ($req->input('type'))==1? 1 : 0
]);
return response()->json(['message' => "Success"]);
} catch (\Exception $exception) {
return response()->json(['error' => 'true', 'message' =>$exception->getMessage()],500);
}
}
public function bankInfo(Request $req)
{
try {
$vendor_id=auth()->user()->id;
$validator = Validator::make($req->all(), [
'acc_name' => 'required|string|between:3,100',
'acc_no' => 'required|string|between:2,50',
'bank_code' => 'required',
'bank_name' => 'required|string|between:5,100',
'district' => 'required|string|between:2,50',
'routing_no' => 'required|between:2,50',
]);
if ($validator->fails()==true) {
return response()->json(['error'=>'true',"message"=>$validator->errors()->all()],402);
}
$bank_info = BankInfo::create([
"acc_name"=>$req->input("acc_name"),
"acc_no"=>$req->input("acc_no"),
"vendor_id"=>$vendor_id,
"bank_code"=>$req->input("bank_code"),
"bank_name"=>$req->input("bank_name"),
"branch_name"=>$req->input("branch_name"),
"district"=>$req->input("district"),
"routing_no"=>$req->input("routing_no")
]);
$d = new DateTime();
$t=$d->format("ymdHisv");
$data=["_id"=>$t,"id"=>$bank_info->id];
return response()->json(['message' => "Success","data"=> $data]);
} catch (\Exception $exception) {
return response()->json(['error' => 'true', 'message' =>$exception->getMessage()],500);
}
}
}
|