Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
3 views11 pages

Use App

The document outlines a Laravel application for managing groups, including a Group model with relationships to employees, work days, and shifts. It features a GroupController with methods for CRUD operations, including validation rules for creating and updating groups. Additionally, it provides Blade templates for displaying, creating, and editing groups, along with a paginated view of existing groups.

Uploaded by

showkat islam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views11 pages

Use App

The document outlines a Laravel application for managing groups, including a Group model with relationships to employees, work days, and shifts. It features a GroupController with methods for CRUD operations, including validation rules for creating and updating groups. Additionally, it provides Blade templates for displaying, creating, and editing groups, along with a paginated view of existing groups.

Uploaded by

showkat islam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 11

use App\Http\Controllers\GroupController;

Route::resource('groups', GroupController::class);

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Group extends Model

protected $fillable = ['group_name', 'description', 'shift_id', 'status'];

// Relationships

public function employees()

return $this->belongsToMany(Employee::class, 'employee_group');

public function workDays()

return $this->belongsToMany(WorkDay::class, 'group_work_day');

public function shift()

return $this->belongsTo(ShiftSetting::class, 'shift_id');


}

namespace App\Http\Controllers;

use App\Models\Group;

use App\Models\Employee;

use App\Models\WorkDay;

use App\Models\ShiftSetting;

use Illuminate\Http\Request;

class GroupController extends Controller

public function index()

$groups = Group::with(['employees', 'workDays', 'shift'])->paginate(10);

return view('groups.index', compact('groups'));

public function create()

$employees = Employee::all();

$workDays = WorkDay::all();

$shifts = ShiftSetting::all();

return view('groups.create', compact('employees', 'workDays', 'shifts'));

public function store(Request $request)

$validated = $request->validate([
'group_name' => 'required|unique:groups,group_name',

'description' => 'nullable|string',

'shift_id' => 'nullable|exists:shift_settings,id',

'status' => 'required|in:active,inactive',

'employee_ids' => 'required|array|min:1',

'employee_ids.*' => 'exists:employees,id',

'work_day_ids' => 'required|array|min:1',

'work_day_ids.*' => 'exists:work_days,id',

]);

$group = Group::create([

'group_name' => $validated['group_name'],

'description' => $validated['description'] ?? null,

'shift_id' => $validated['shift_id'] ?? null,

'status' => $validated['status'],

]);

$group->employees()->sync($validated['employee_ids']);

$group->workDays()->sync($validated['work_day_ids']);

return redirect()->route('groups.index')->with('success', 'Group created successfully.');

public function edit(Group $group)

$employees = Employee::all();

$workDays = WorkDay::all();

$shifts = ShiftSetting::all();

$group->load(['employees', 'workDays']);
return view('groups.edit', compact('group', 'employees', 'workDays', 'shifts'));

public function update(Request $request, Group $group)

$validated = $request->validate([

'group_name' => 'required|unique:groups,group_name,' . $group->id,

'description' => 'nullable|string',

'shift_id' => 'nullable|exists:shift_settings,id',

'status' => 'required|in:active,inactive',

'employee_ids' => 'required|array|min:1',

'employee_ids.*' => 'exists:employees,id',

'work_day_ids' => 'required|array|min:1',

'work_day_ids.*' => 'exists:work_days,id',

]);

$group->update([

'group_name' => $validated['group_name'],

'description' => $validated['description'] ?? null,

'shift_id' => $validated['shift_id'] ?? null,

'status' => $validated['status'],

]);

$group->employees()->sync($validated['employee_ids']);

$group->workDays()->sync($validated['work_day_ids']);

return redirect()->route('groups.index')->with('success', 'Group updated successfully.');

}
public function destroy(Group $group)

$group->employees()->detach();

$group->workDays()->detach();

$group->delete();

return redirect()->route('groups.index')->with('success', 'Group deleted successfully.');

@extends('layouts.master')

@section('content_body')

<div class="container">

<h1>Groups</h1>

<a href="{{ route('groups.create') }}" class="btn btn-primary mb-3">Add New Group</a>

@if(session('success'))

<div class="alert alert-success">{{ session('success') }}</div>

@endif

@if($groups->count())

<table class="table table-bordered">

<thead>

<tr>

<th>ID</th>

<th>Group Name</th>

<th>Description</th>

<th>Employees</th>
<th>Work Days</th>

<th>Shift</th>

<th>Status</th>

<th>Actions</th>

</tr>

</thead>

<tbody>

@foreach($groups as $group)

<tr>

<td>{{ $group->id }}</td>

<td>{{ $group->group_name }}</td>

<td>{{ $group->description }}</td>

<td>

@foreach($group->employees as $employee)

{{ $employee->name }}@if(!$loop->last), @endif

@endforeach

</td>

<td>

@foreach($group->workDays as $day)

{{ $day->day_name }}@if(!$loop->last), @endif

@endforeach

</td>

<td>{{ $group->shift?->shift_name ?? '-' }}</td>

<td>{{ ucfirst($group->status) }}</td>

<td>

<a href="{{ route('groups.edit', $group->id) }}" class="btn btn-sm btn-warning">Edit</a>

<form action="{{ route('groups.destroy', $group->id) }}" method="POST"


style="display:inline-block;" onsubmit="return confirm('Are you sure?');">

@csrf
@method('DELETE')

<button class="btn btn-sm btn-danger" type="submit">Delete</button>

</form>

</td>

</tr>

@endforeach

</tbody>

</table>

{{ $groups->links() }}

@else

<p>No groups found.</p>

@endif

</div>

@endsection

Create:

@extends('layouts.master')

@section('content_body')

<div class="container">

<h1>Add New Group</h1>

<form method="POST" action="{{ route('groups.store') }}">

@csrf

<div class="form-group">

<label for="group_name">Group Name</label>


<input type="text" name="group_name" id="group_name" class="form-control
@error('group_name') is-invalid @enderror" value="{{ old('group_name') }}" required>

@error('group_name')

<div class="invalid-feedback">{{ $message }}</div>

@enderror

</div>

<div class="form-group">

<label for="description">Description (optional)</label>

<textarea name="description" id="description" class="form-control">{{ old('description')


}}</textarea>

</div>

<div class="form-group">

<label for="shift_id">Shift</label>

<select name="shift_id" id="shift_id" class="form-control">

<option value="">-- Select Shift --</option>

@foreach($shifts as $shift)

<option value="{{ $shift->id }}" {{ old('shift_id') == $shift->id ? 'selected' : '' }}>{{ $shift-
>shift_name }}</option>

@endforeach

</select>

</div>

<div class="form-group">

<label for="employee_ids">Employees</label>

<select name="employee_ids[]" id="employee_ids" class="form-control" multiple required>

@foreach($employees as $employee)

<option value="{{ $employee->id }}" {{ (collect(old('employee_ids'))->contains($employee-


>id)) ? 'selected':'' }}>{{ $employee->name }}</option>
@endforeach

</select>

</div>

<div class="form-group">

<label for="work_day_ids">Work Days</label>

<select name="work_day_ids[]" id="work_day_ids" class="form-control" multiple required>

@foreach($workDays as $day)

<option value="{{ $day->id }}" {{ (collect(old('work_day_ids'))->contains($day->id)) ? 'selected':''


}}>{{ $day->day_name }}</option>

@endforeach

</select>

</div>

<div class="form-group">

<label for="status">Status</label>

<select name="status" id="status" class="form-control" required>

<option value="active" {{ old('status') == 'active' ? 'selected' : '' }}>Active</option>

<option value="inactive" {{ old('status') == 'inactive' ? 'selected' : '' }}>Inactive</option>

</select>

</div>

<button type="submit" class="btn btn-success">Create Group</button>

</form>

</div>

@endsection

Edit:

@extends('layouts.master')
@section('content_body')

<div class="container">

<h1>Edit Group: {{ $group->group_name }}</h1>

<form method="POST" action="{{ route('groups.update', $group->id) }}">

@csrf

@method('PUT')

<div class="form-group">

<label for="group_name">Group Name</label>

<input type="text" name="group_name" id="group_name" class="form-control


@error('group_name') is-invalid @enderror" value="{{ old('group_name', $group->group_name) }}"
required>

@error('group_name')

<div class="invalid-feedback">{{ $message }}</div>

@enderror

</div>

<div class="form-group">

<label for="description">Description (optional)</label>

<textarea name="description" id="description" class="form-control">{{ old('description', $group-


>description) }}</textarea>

</div>

<div class="form-group">

<label for="shift_id">Shift</label>

<select name="shift_id" id="shift_id" class="form-control">

<option value="">-- Select Shift --</option>

@foreach($shifts as $shift)
<option value="{{ $shift->id }}" {{ (old('shift_id', $group->shift_id) == $shift->id) ? 'selected' :
'' }}>{{ $shift->shift_name }}</option>

@endforeach

</select>

</div>

<div class="form-group">

<label for="employee_ids">Employees</label>

<select name="employee_ids[]" id="employee_ids" class="form-control" multiple required>

@foreach($employees as $employee)

<option value="{{ $employee->id }}" {{ (collect(old('employee_ids', $group->employees-


>pluck('id')->toArray()))->contains($employee->id)) ? 'selected':'' }}>{{ $employee->name }}</option>

@endforeach

</select>

</div>

<div class="form-group">

<label for="work_day_ids">Work Days</label>

<select name="work_day_ids[]" id="work_day_ids" class="form-control" multiple required>

@foreach($workDays as $day)

<option value="{{ $day->id }}" {{ (collect(old('work_day_ids', $group->workDays->pluck('id')-


>toArray()))

You might also like