Boakye51's avatar

Target class [App\Http\Controllers\] does not exist

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);
}

}

0 likes
2 replies
Sergiu17's avatar
Sergiu17
Best Answer
Level 60

All your routes have @ before controller name, you don't need that

https://laravel.com/docs/7.x/routing#basic-routing

// this will work
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");

Please or to participate in this conversation.