Skip to content

Commit

Permalink
Merge pull request #3 from xs-shahin/laravel-mongo
Browse files Browse the repository at this point in the history
Laravel mongo
  • Loading branch information
AhnabShahin authored Aug 27, 2023
2 parents 59c45ca + 8fe0760 commit fa126cc
Show file tree
Hide file tree
Showing 62 changed files with 1,233 additions and 63 deletions.
8 changes: 5 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,15 @@
}
],
"require": {
"nwidart/laravel-modules": "^9.0"
"nwidart/laravel-modules": "^9.0",
"jenssegers/mongodb": "^3.9"
},
"extra": {
"laravel": {
"providers": [
"Xpeedstudio\\Hr\\Providers\\EmployeeProvider"
"Xpeedstudio\\Hr\\Providers\\EmployeeProvider",
"Jenssegers\\Mongodb\\MongodbServiceProvider"
]
}
}
}
}
2 changes: 1 addition & 1 deletion composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

72 changes: 72 additions & 0 deletions src/Controllers/CountryController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<?php

namespace Xpeedstudio\Hr\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Xpeedstudio\Hr\Helpers\Helper;
use Xpeedstudio\Hr\Models\Country;
use Xpeedstudio\Hr\Models\Region;

class CountryController extends Controller
{
public function index(Request $request)
{
$perPage = $request->input('per_page', 10); // Number of results per page (default: 10)
$search = $request->input('search', ''); // Search query (default: empty string)

$countries = Country::with('region')
->when($search, function ($query, $search) {
return $query->where('country_name', 'like', '%' . $search . '%');
})
->paginate($perPage);

return response()->json([
'countries' => $countries,
]);

return view('xpeedstudio/hr::country.index', compact('countries'));
}
public function create()
{
$regions = Region::all();

return view('xpeedstudio/hr::country.create', compact('regions'));
}

public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'country_name' => 'required',
'region_id' => 'required|exists:regions,id'
]);

if ($validator->fails()) {
return response()->json([
'errors' => $validator->errors()
], 422); // HTTP status code for Unprocessable Entity
}

// If validation passes, create the employee
$data = Country::create($request->all());

return response()->json([
'message' => 'Country created successfully.',
'data' => [$data]
], 201); // HTTP status code for Created
}

public function show($id)
{
$countries = Country::find($id);
return response()->json([
'message' => 'Country created successfully.',
'data' => [
'countries' => $countries
]
], 201); // HTTP status code for Created

return view('xpeedstudio/hr::country.show', compact('countries'));
}
}
48 changes: 38 additions & 10 deletions src/Controllers/DepartmentController.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,35 +5,63 @@
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Xpeedstudio\Hr\Models\Department;
use Xpeedstudio\Hr\Models\Employee;
use Xpeedstudio\Hr\Models\Location;
use Illuminate\Support\Facades\Validator;

class DepartmentController extends Controller
{
public function index()
{
$departments = Department::all();
return view('xpeedstudio/hr::department-index', compact('departments'));

return response()->json([
'departments' => $departments,
]);

return view('xpeedstudio/hr::department.index', compact('departments'));
}
public function create()
{
return view('xpeedstudio/hr::department-create');
$locations = Location::all();
$managers = Employee::all();

return view('xpeedstudio/hr::department.create', compact('locations', 'managers'));
}

public function store(Request $request)
{
$request->validate([
'name' => 'required|unique:departments',
$validator = Validator::make($request->all(), [
'department_name' => 'required',
'location_id' => 'required|exists:locations,id',
'manager_id' => 'nullable',
]);

Department::create($request->all());
if ($validator->fails()) {
return response()->json([
'errors' => $validator->errors()
], 422); // HTTP status code for Unprocessable Entity
}

// If validation passes, create the employee
$data = Department::create($request->all());

return redirect()
->back()
->with('success', 'Department created successfully.');
return response()->json([
'message' => 'Department created successfully.',
'data' => [$data]
], 201); // HTTP status code for Created
}

public function show($id)
{
$department = Department::findOrFail($id);
return view('xpeedstudio/hr::department-show', compact('department'));
$department = Department::find($id);
return response()->json([
'message' => 'Department created successfully.',
'data' => [
'department' => $department
]
], 201); // HTTP status code for Created

return view('xpeedstudio/hr::department.show', compact('department'));
}
}
53 changes: 42 additions & 11 deletions src/Controllers/EmployeeController.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,54 @@
use Illuminate\Http\Request;
use Xpeedstudio\Hr\Models\Department;
use Xpeedstudio\Hr\Models\Employee;
use Illuminate\Support\Facades\Validator;

class EmployeeController extends Controller
{
public function index()
{
$employees = Employee::all();
return view('xpeedstudio/hr::employee-index', compact('employees'));
$employees = Employee::with('department','department.location','department.location.country','department.location.country.region')->get();

return response()->json([
'employees' => $employees,
]);

return view('xpeedstudio/hr::employee.index', compact('employees'));
}

public function create()
{
$departments = Department::all();
return view('xpeedstudio/hr::employee-create', compact('departments'));
return view('xpeedstudio/hr::employee.create', compact('departments'));
}

public function store(Request $request)
{
// dd( $request);
$request->validate([
'name' => 'required',
'email' => 'required|email',
'position' => 'required',
'department_id' => 'required|exists:departments,id',
$validator = Validator::make($request->all(), [
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required|email',
'phone_number' => 'required',
'hire_date' => 'required',
'job_id' => 'required|exists:jobs,id',
'salary' => 'required',
'commission_pct' => 'required',
'manager_id' => 'nullable',
'department_id' => 'required|exists:departments,id',
]);

Employee::create($request->all());
if ($validator->fails()) {
return response()->json([
'errors' => $validator->errors()
], 422); // HTTP status code for Unprocessable Entity
}

$data = Employee::create($request->all());

return response()->json([
'message' => 'Department created successfully.',
'data' => [$data]
], 201); // HTTP status code for Created

return redirect()->route('employees.index')
->with('success', 'Employee created successfully.');
Expand All @@ -41,6 +63,15 @@ public function store(Request $request)
public function show($id)
{
$employee = Employee::findOrFail($id);
return view('xpeedstudio/hr::employee-show', compact('employee'));

return response()->json([
'message' => 'Department created successfully.',
'data' => [
'employee' => $employee,
'department' => $employee->department
]
], 201); // HTTP status code for Created

return view('xpeedstudio/hr::employee.show', compact('employee'));
}
}
64 changes: 64 additions & 0 deletions src/Controllers/JobController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<?php

namespace Xpeedstudio\Hr\Controllers;

use Illuminate\Http\Request;
use Xpeedstudio\Hr\Models\Job;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;

class JobController extends Controller
{
public function index()
{
$jobs = Job::all();

return response()->json([
'jobs' => $jobs,
]);

return view('xpeedstudio/hr::job.index', compact('jobs'));
}
public function create()
{
$jobs = Job::all();

return view('xpeedstudio/hr::job.create', compact('jobs'));
}

public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'job_title' => 'required',
'min_salary' => 'required',
'max_salary' => 'nullable',
]);

if ($validator->fails()) {
return response()->json([
'errors' => $validator->errors()
], 422); // HTTP status code for Unprocessable Entity
}

// If validation passes, create the employee
$data = Job::create($request->all());

return response()->json([
'message' => 'Job created successfully.',
'data' => [$data]
], 201); // HTTP status code for Created
}

public function show($id)
{
$job = Job::find($id);
return response()->json([
'message' => 'Job created successfully.',
'data' => [
'job' => $job
]
], 201); // HTTP status code for Created

return view('xpeedstudio/hr::job.show', compact('job'));
}
}
Loading

0 comments on commit fa126cc

Please sign in to comment.