<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Thomas Costigan</title>
    <description>The latest articles on DEV Community by Thomas Costigan (@thomas_costigan_001).</description>
    <link>https://dev.to/thomas_costigan_001</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2724909%2F52d1f8b1-d396-497d-ac97-d3d82608b186.png</url>
      <title>DEV Community: Thomas Costigan</title>
      <link>https://dev.to/thomas_costigan_001</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thomas_costigan_001"/>
    <language>en</language>
    <item>
      <title>VS Code</title>
      <dc:creator>Thomas Costigan</dc:creator>
      <pubDate>Tue, 21 Jan 2025 12:26:58 +0000</pubDate>
      <link>https://dev.to/thomas_costigan_001/vs-code-4p8i</link>
      <guid>https://dev.to/thomas_costigan_001/vs-code-4p8i</guid>
      <description>&lt;p&gt;can anyone tell me where the protected guarded id goes and how to format it into the code. The code isn't accepting it&lt;/p&gt;

&lt;p&gt;&amp;lt;?php&lt;/p&gt;

&lt;p&gt;namespace App\Models;&lt;/p&gt;

&lt;p&gt;use App\Traits\Sortable;&lt;br&gt;
use Illuminate\Database\Eloquent\Model;&lt;br&gt;
use Illuminate\Database\Eloquent\Builder;&lt;br&gt;
use Illuminate\Database\Eloquent\Factories\HasFactory;&lt;/p&gt;

&lt;p&gt;class Vacancy extends Model&lt;br&gt;
protected $guarded = ['id'];&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
    /** &lt;a class="mentioned-user" href="https://dev.to/use"&gt;@use&lt;/a&gt; HasFactory&amp;lt;\Database\Factories\VacancyFactory&amp;gt; */&lt;br&gt;
    use HasFactory, Sortable;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public function applications():  HasMany {
    return $this-&amp;gt;HasMany(Application::class);
  }

}   


//add applications has many relationship

public function casts(): array
{
    return [
        'application_open' =&amp;gt; 'date',
        'application_close' =&amp;gt; 'date',
    ];
}

public function scopeSearch(Builder $query, $search) {

    return $query-&amp;gt;where('title', 'like', "%{$search}%");
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
    </item>
    <item>
      <title>Vacancy page</title>
      <dc:creator>Thomas Costigan</dc:creator>
      <pubDate>Sat, 18 Jan 2025 19:43:44 +0000</pubDate>
      <link>https://dev.to/thomas_costigan_001/vacancy-page-296l</link>
      <guid>https://dev.to/thomas_costigan_001/vacancy-page-296l</guid>
      <description>&lt;p&gt;Hi I am having trouble displaying vacancies on the page&lt;/p&gt;

&lt;p&gt;&amp;lt;?php&lt;/p&gt;

&lt;p&gt;namespace App\Http\Controllers;&lt;/p&gt;

&lt;p&gt;use App\Models;&lt;br&gt;
use App\Models\Category;&lt;br&gt;
use App\Services\VacancyService;&lt;br&gt;
use Illuminate\Http\Request;&lt;br&gt;
use Illuminate\Validation\Rule;&lt;br&gt;
use App\Models\Vacancy;&lt;br&gt;
use Illuminate\Support\Facades\Gate;&lt;br&gt;
use Illuminate\Validation\Rules\File;&lt;/p&gt;

&lt;p&gt;use App\Actions\AddVacancyAction;&lt;br&gt;
use App\Actions\UpdateVacancyAction;&lt;/p&gt;

&lt;p&gt;use App\Actions\DestroyVacancyAction;&lt;/p&gt;

&lt;p&gt;use Illuminate\Database\Eloquent\Model;&lt;br&gt;
use App\Http\Requests\StoreVacancyRequest;&lt;/p&gt;

&lt;p&gt;class VacancyController extends Controller&lt;br&gt;
{&lt;br&gt;
    protected $service;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Other model methods and properties




      //tbc add CRUD action functions- see week 4 notes
//start by implmenting index action- see week 4 index action and view
public function index(Request $request)
{
    if (!Gate::allows('viewAny', Vacancy::class)) {
    return redirect()-&amp;gt;route('login')-&amp;gt;with('info', 'Please Login to view vacancies');
    }
    $size = $request-&amp;gt;input('size', 10);
    $sort = $request-&amp;gt;input('sort', 'id');
    $direction = $request-&amp;gt;input('direction', 'asc');
    $search = $request-&amp;gt;query('search', null);

    // $vacancies = Vacancy::with(['category'])
    //     -&amp;gt;search($search)
    //     -&amp;gt;sortable($sort, $direction)
    //     -&amp;gt;paginate($size)
    //     -&amp;gt;withQueryString();

    $vacancies = $this-&amp;gt;service-&amp;gt;findAll($search, $sort, $direction, $size);

    return view('vacancies.index', ['vacancies' =&amp;gt; $vacancies, 'search' =&amp;gt; $search]);
} _
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;// display list of vacancies
_
public function create()
{&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    if (!Gate::allows('create', Vacancy::class)) {
        return redirect()-&amp;gt;back()
            -&amp;gt;with('warning', 'Not authorised');
    } else {

        $vacancy = new Vacancy;

        $categories = $this-&amp;gt;service-&amp;gt;getCategorySelectList();
        return view('vacancies.create', ['vacancy' =&amp;gt; $vacancy, 'categories' =&amp;gt; $categories]);
    } // show create vacancy form


}

public function store(Request $request, Vacancy $service)
{


    Gate::allows('create', Vacancy::class);

    $data = $request-&amp;gt;validate([
        'title' =&amp;gt; ['required'],
        'closing date' =&amp;gt; ['required'],
        'category_id' =&amp;gt; ['required'],
        'skills required' =&amp;gt; ['required', 'numeric'],
        'location' =&amp;gt; ['required', 'numeric', 'min:0', 'max:5'],
        'job description' =&amp;gt; ['min:0', 'max:500'],
        ['category_id' =&amp;gt; 'The category field is required']
    ]);

    // store new vacancy
    $vacancy = $service-&amp;gt;create($data);
    if(!$vacancy){
        return redirect()-&amp;gt;route('vacancies.index')-&amp;gt;with('error', 'Failed to create vacancy');
    }


        return redirect()-&amp;gt;route('vacancies.show', $vacancy-&amp;gt;id)-&amp;gt;with('success', 'Vacancy created successfully');
    }

// public function store(StoreVacancyRequest $request, AddVacancyAction $action)






public function show(int $id)
{

    if (!Gate::allows('viewAny', Vacancy::class)) {
        return redirect()-&amp;gt;route('login')-&amp;gt;with('info', 'Please Login to view vacancies');
    }
    $vacancy = Vacancy::findOrFail($id);
    return view('vacancies.show', ['vacancy' =&amp;gt; $vacancy]);
} // display specified vacancy

public function edit(int $id)
{
    if (!Gate::allows('update', Vacancy::class)) {
        return redirect()-&amp;gt;route('login')-&amp;gt;with('info', 'Please Login to edit a vacancy');
    }

    $vacancy = Vacancy::findOrFail($id);
     $categories = Category::all()-&amp;gt;pluck('name', 'id');


    return view('vacancies.edit', ['vacancy' =&amp;gt; $vacancy, 'categories' =&amp;gt; $categories]);
}
public function update(int $id, array $data, Request $request) 


{
  if  (!Gate::allows('update', Vacancy::class)) {
    return redirect()-&amp;gt;back()
        -&amp;gt;with('warning', 'Not authorised');
  }

    $data = $request-&amp;gt;validate([
        'title' =&amp;gt; ['required', Rule::unique('vacancies')-&amp;gt;ignore($id)],
        'category_id' =&amp;gt; ['required'],
        'closing_date' =&amp;gt; ['required'],
        'skills_required' =&amp;gt; ['required', 'numeric'],
        'location' =&amp;gt; ['required', 'numeric', 'min:0', 'max:5'],
        'job_description' =&amp;gt; ['min:0', 'max:500'],
        'image' =&amp;gt; ['nullable', File::types(['png', 'jpg', 'jpeg', 'webp'])-&amp;gt;max(1024)],
    ]);



    $vacancy = $this-&amp;gt;service-&amp;gt;update($id, $data);
    if ($vacancy === null) {
        return redirect()-&amp;gt;route('vacancies.index')
            -&amp;gt;with('error', 'Vacancy not found');
    }
    return redirect()-&amp;gt;route("vacancies.show", $id)
        -&amp;gt;with('success', 'Vacancy updated successfully');
}

// Other methods like destroy, create, etc.


public function delete(int $id)
{
    // authorise the deletion
    Gate::authorize('delete', Vacancy::class);


    if ($this-&amp;gt;service-&amp;gt;delete($id)) {
        return redirect()-&amp;gt;route('vacancies.index')-&amp;gt;with('success', 'Vacancy deleted successfully');
    } else {
        return redirect()-&amp;gt;route('vacancies.index')-&amp;gt;with('error', 'Vacancy not found');
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;}&lt;br&gt;
    // show edit vacancy form &lt;br&gt;
    // public function update(Request $request, string $id) { … ;} // update  &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//public function destroy(int $id) { … ;} // remove specified vacancy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
    </item>
    <item>
      <title>Visual Studio code error</title>
      <dc:creator>Thomas Costigan</dc:creator>
      <pubDate>Thu, 16 Jan 2025 17:17:54 +0000</pubDate>
      <link>https://dev.to/thomas_costigan_001/visual-studio-code-error-1nf2</link>
      <guid>https://dev.to/thomas_costigan_001/visual-studio-code-error-1nf2</guid>
      <description>&lt;p&gt;Hi,&lt;br&gt;
I am doing a project for a Vacancy Job Service and get this error whenever I run composer install after someone sent it back to me.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fke76osd0j0f1dfrz1nsh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fke76osd0j0f1dfrz1nsh.png" alt="Image description" width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me know if that image works&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>php</category>
      <category>career</category>
    </item>
  </channel>
</rss>
