Please having this issue Target class [App\Http\Controllers] does not exist can someone help me to fix that.
My Routes
Route::post("/add", "@ContactController@addContacts");
Route::get("/get-all/{token}/{pagination?}", "@ContactController@getPaginatedData");
Route::post("/update/{id}", "@ContactController@editSingleData");
Route::post("/delete/{id}", "@ContactController@deleteContacts");
Route::get("/get-single/{id}", "@ContactController@getSingleData");
Route::get("/search/{search}/{token}/{pagination?}", "@ContactController@searchData");
My Controller is ContactController
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Contacts;
use Validator;
use Illuminate\Routing\UrlGenerator;
class ContactController extends Controller
{
protected $contacts;
protected $base_url;
public function __construct(UrlGenerator $urlGenerator)
{
$this->middleware("auth:users");
$this->base_url = $urlGenerator->to("/");
$this->contacts = new Contacts;
}
public function addContacts(Request $request)
{
$validator = Validator::make($request->all(), [
'token' => 'required',
'firstname' => 'required|string',
'phone_number' => 'required|string'
]);
if ($validator->fails()) {
return response()->json([
"success" => false,
'message' => $validator->message()->toArray()
], 500);
}
$profile_picture = $request->profile_image;
$file_name = "";
if ($profile_picture == null) {
$file_name = "default-avatal.png";
} else {
$generat_name = uniqid()."".time().data("ymd")."_IMG";
$base64Image = $profile_picture;
$fileBin = file_get_contents($base64Image);
$mimetype = mine_content_type($base64Image);
if ("image/png") {
$fileBin = $generat_name.".png";
}
elseif ("image/jpg") {
$fileBin = $generat_name.".jpg";
}
elseif ("image/jpeg") {
$fileBin = $generat_name.".jpeg";
}
elseif ("image/webp") {
$fileBin = $generat_name.".webp";
} else {
return response()->json([
'success' => false,
'message' => "only png, jpg, jpeg and webp files are required"
], 500);
}
}
$user_token = $request->token;
$user = auth("users")->authenticate($user_token);
$user_id = $user->id;
$this->contacts->user_id = $user_id;
$this->contacts->phone_number = $request->phone_number;
$this->contacts->firstname = $request->firstname;
$this->contacts->lastname = $request->lastname;
$this->contacts->email = $request->email;
$this->contacts->image_file = $request->image_file;
$this->contacts->save();
if ($profile_picture == null) {
} else {
file_put_contents("./profile_image/".$file_name, $fileBin);
}
return response()->json([
"success" => true,
"message" => "Contact save succefully"
], 200);
}
//getting contact specific to a particular user
public function getPaginatedData($token, $pagination = null)
{
$file_directory = $this->base_url."/profile_images";
$user = auth("users")->authentication($token);
$user_id = $user->id;
if ($pagination == null || $pagination == "") {
$contacts = $this->contacts
->where("user_id")
->orderBy("id", "DESC")
->get()
->toArray();
return response()->json([
'success' => true,
'data' =>$contacts,
'file_directory' => $file_directory
], 200);
}
$contacts_paginated = $this->contacts
->where("user_id", $user_id)
->orderBy("id", "DESC")
->pagination($pagination);
return response()->json([
'success' => true,
'data' => $contacts,
'file_directory' => $file_directory
], 200);
}
//update contact endpoint/fucntion
public function editSingleData(Request $request, $id)
{
$validator = Validator::make($request->all(), [
'firstname' => ['required', 'string'],
'phonenumber' => ['required', 'string']
]);
if ($validator->fails()) {
return response()->json([
"success" => false,
'message' => $validator->message()->toArray()
], 500);
}
$findData = $this->contacts::find($id);
if (!$findData) {
return response()->json([
"success" => false,
"message" => "please this content has no valid id"
], 500);
}
$profile_picture = $request->profile_image;
$file_name = "";
if ($profile_picture == null) {
$file_name = "default-avatal.png";
} else {
$generat_name = uniqid()."".time().data("ymd")."_IMG";
$base64Image = $profile_picture;
$fileBin = file_get_contents($base64Image);
$mimetype = mine_content_type($base64Image);
if ("image/png") {
$fileBin = $generat_name.".png";
}
elseif ("image/jpg") {
$fileBin = $generat_name.".jpg";
}
elseif ("image/jpeg") {
$fileBin = $generat_name.".jpeg";
}
elseif ("image/webp") {
$fileBin = $generat_name.".webp";
} else {
return response()->json([
'success' => false,
'message' => "only png, jpg, jpeg and webp files are required"
], 500);
}
$findData->phone_number = $request->phone_number;
$findData->firstname = $request->firstname;
$findData->lastname = $request->lastname;
$findData->email = $request->email;
$findData->image_file = $request->image_file;
$findData->save();
}
//detele contact
public function deleteContacts($id)
{
$findData = $this->contact::find($id);
if (!findData) {
return response()->json([
"success" => true,
"message" => "contact with this id doesnt exits"
], 500);
}
$getFile = $fileData->image_file;
if ($fileData->delete()) {
$getFile == "default-avatar.png"? :unlink("./profile_images/".getFile);
return response()->json([
"success" => true,
"message" => "contact deleted successfully"
], 200);
}
}
//get data
public function getSingleData($id)
{
$file_directory = $this->base_url."/profile_images";
$findData = $this->contact::find($id);
if (!findData) {
return response()->json([
"success" => true,
"message" => "contact with this id doesnt exits"
], 500);
}
return response()->json([
"success" => true,
"data" => $findData,
"message" => "contact with this id doesnt exits"
], 500);
}
//this function is to search for data as well as paginating our data searched
public function searchData($search, $token, $pagination = null)
{
$file_directory = $this->base_url."/profile_images";
user = auth("users")->authentication($token);
$user_id = $user->id;
if (pagination == null || $pagination=="") {
$non_paginated_search_query = $this->contacts::where("user_id", $user_id)
->where(function ($query) use ($search) {
$query->where("firstname", "LIKE", "$search%")
->orWhere("lastname", "LIKE", "%search%")
->orWhere("email", "LIKE", "%search%")
->orWhere("phone_number", "LIKE", "%$search%");
})->get()->toArray();
return response()->json([
"success" => true,
"data" => $non_paginated_search_query,
"file_directory" => $file_directory
], 200);
}
$paginated_search_query = $this->contacts::where("user_id", $user_id)
->where(function ($query) use ($search) {
$query->where("firstname", "LIKE", "$search%")
->orWhere("lastname", "LIKE", "%search%")
->orWhere("email", "LIKE", "%search%")
->orWhere("phone_number", "LIKE", "%$search%");
})->get()->toArray();
return response()->json([
"success" => true,
"data" => $paginated_search_query,
"file_directory" => $file_directory
], 200);
}
}