crate service and request for create user
This commit is contained in:
@@ -2,9 +2,11 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers\V3\Dashboard;
|
namespace App\Http\Controllers\V3\Dashboard;
|
||||||
|
|
||||||
use App\Facades\DataTable\DataTableFacade;
|
|
||||||
use App\Facades\File\FileFacade;
|
use App\Facades\File\FileFacade;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Http\Requests\V3\Dashboard\UserManagement\ChangeConfirmEnabelRequest;
|
||||||
|
use App\Http\Requests\V3\Dashboard\UserManagement\ChangeConfirmStatusRequest;
|
||||||
|
use App\Http\Requests\V3\Dashboard\UserManagement\ChangePasswordRequest;
|
||||||
use App\Http\Requests\V3\Dashboard\UserManagement\GivePermissionRequest;
|
use App\Http\Requests\V3\Dashboard\UserManagement\GivePermissionRequest;
|
||||||
use App\Http\Requests\V3\Dashboard\UserManagement\GiveRoleRequest;
|
use App\Http\Requests\V3\Dashboard\UserManagement\GiveRoleRequest;
|
||||||
use App\Http\Requests\V3\Dashboard\UserManagement\StoreRequest;
|
use App\Http\Requests\V3\Dashboard\UserManagement\StoreRequest;
|
||||||
@@ -16,10 +18,10 @@ use App\Models\EdarateShahri;
|
|||||||
use App\Models\Province;
|
use App\Models\Province;
|
||||||
use App\Models\Role;
|
use App\Models\Role;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
use App\Services\Cartables\UserManagement\UserManagementService;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Auth;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
|
||||||
@@ -27,37 +29,61 @@ class UserManagementController extends Controller
|
|||||||
{
|
{
|
||||||
use ApiResponse;
|
use ApiResponse;
|
||||||
|
|
||||||
public function index(Request $request): JsonResponse
|
public function index(Request $request, UserManagementService $userManagementService): JsonResponse
|
||||||
{
|
{
|
||||||
Auth::user()->addActivityComplete(1038);
|
auth()->user()->addActivityComplete(1038);
|
||||||
|
|
||||||
$data = DataTableFacade::run(
|
$data = $userManagementService->datatable($request);
|
||||||
User::query(),
|
|
||||||
$request,
|
|
||||||
allowedFilters: ['*'],
|
|
||||||
allowedSortings: ['*'],
|
|
||||||
);
|
|
||||||
|
|
||||||
return $this->successResponse($data);
|
return response()->json($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(StoreRequest $request): jsonResponse
|
public function store(StoreRequest $request): jsonResponse
|
||||||
{
|
{
|
||||||
auth()->user()->addActivityComplete(1039);
|
auth()->user()->addActivityComplete(1039);
|
||||||
|
|
||||||
|
User::query()->create([
|
||||||
|
'username' => $request->username,
|
||||||
|
'national_code' => $request->national_code,
|
||||||
|
'password' => Hash::make($request->password),
|
||||||
|
'province_id' => $request->province_id,
|
||||||
|
'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::query()->find($request->province_id)->name_fa,
|
||||||
|
'city_id' => $request->city_id,
|
||||||
|
'city_fa' => ($request->city_id == 0) ? null : City::query()->find($request->city_id)->name_fa,
|
||||||
|
'edarate_ostani_id' => $request->edarate_ostani_id,
|
||||||
|
'edarate_ostani_name' => $request->edarate_ostani_id == null ?
|
||||||
|
null :
|
||||||
|
EdarateOstani::query()->find($request->edarate_ostani_id),
|
||||||
|
'edarate_shahri_id' => $request->edarate_shahri_id,
|
||||||
|
'edarate_shahri_name' => $request->edarate_shahri_id == null ?
|
||||||
|
null :
|
||||||
|
EdarateShahri::query()->find($request->edarate_shahri_id),
|
||||||
|
]);
|
||||||
|
|
||||||
|
return $this->successResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function storeExtra(StoreRequest $request): jsonResponse
|
||||||
|
{
|
||||||
DB::transaction(function () use ($request) {
|
DB::transaction(function () use ($request) {
|
||||||
|
auth()->user()->addActivityComplete(1039);
|
||||||
|
|
||||||
$user = User::query()->create([
|
$user = User::query()->create([
|
||||||
'username' => $request->username,
|
'username' => $request->username,
|
||||||
'national_code' => $request->national_code,
|
'national_code' => $request->national_code,
|
||||||
'password' => Hash::make($request->password),
|
'password' => Hash::make($request->password),
|
||||||
'province_id' => $request->province_id ?: null,
|
'province_id' => $request->province_id,
|
||||||
'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa,
|
'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::query()->find($request->province_id)->name_fa,
|
||||||
'city_id' => $request->city_id ?: null,
|
'city_id' => $request->city_id,
|
||||||
'city_fa' => ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa,
|
'city_fa' => ($request->city_id == 0) ? null : City::query()->find($request->city_id)->name_fa,
|
||||||
'edarate_ostani_id' => $request->edarate_ostani_id,
|
'edarate_ostani_id' => $request->edarate_ostani_id,
|
||||||
'edarate_ostani_name' => EdarateOstani::query()->find($request->edarate_ostani_name),
|
'edarate_ostani_name' => $request->edarate_ostani_id == null ?
|
||||||
|
null :
|
||||||
|
EdarateOstani::query()->find($request->edarate_ostani_id),
|
||||||
'edarate_shahri_id' => $request->edarate_shahri_id,
|
'edarate_shahri_id' => $request->edarate_shahri_id,
|
||||||
'edarate_shahri_name' => EdarateShahri::query()->find($request->edarate_shahri_name),
|
'edarate_shahri_name' => $request->edarate_shahri_id == null ?
|
||||||
|
null :
|
||||||
|
EdarateShahri::query()->find($request->edarate_shahri_id),
|
||||||
'first_name' => $request->first_name,
|
'first_name' => $request->first_name,
|
||||||
'last_name' => $request->last_name,
|
'last_name' => $request->last_name,
|
||||||
'position' => $request->position,
|
'position' => $request->position,
|
||||||
@@ -65,147 +91,157 @@ class UserManagementController extends Controller
|
|||||||
'degree' => $request->degree,
|
'degree' => $request->degree,
|
||||||
'major' => $request->major,
|
'major' => $request->major,
|
||||||
]);
|
]);
|
||||||
$user->avatar = FileFacade::save($request->file('avatar'), "avatar/{$user->id}");
|
$user->avatar = $request->has('avatar') ?
|
||||||
|
FileFacade::save($request->avatar, "user/{$user->id}") :
|
||||||
|
null;
|
||||||
});
|
});
|
||||||
|
|
||||||
return $this->successResponse();
|
return $this->successResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function show(User $user)
|
public function show(User $user): JsonResponse
|
||||||
{
|
{
|
||||||
$user = User::where('id', $user->id)->with(['roles', 'permissions'])->get();
|
return $this->successResponse($user->with(['roles', 'permissions'])->get());
|
||||||
|
|
||||||
return $this->successResponse($user);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws \Throwable
|
||||||
|
*/
|
||||||
public function update(UpdateRequest $request, User $user): JsonResponse
|
public function update(UpdateRequest $request, User $user): JsonResponse
|
||||||
{
|
{
|
||||||
auth()->user()->addActivityComplete(1040);
|
|
||||||
DB::transaction(function () use ($request, $user) {
|
DB::transaction(function () use ($request, $user) {
|
||||||
|
auth()->user()->addActivityComplete(1040);
|
||||||
|
|
||||||
$user->update([
|
$data = [
|
||||||
'username' => $request->username,
|
'username' => $request->username,
|
||||||
'national_code' => $request->national_code,
|
'national_code' => $request->national_code,
|
||||||
'province_id' => $request->province_id ?: null,
|
'province_id' => $request->province_id,
|
||||||
'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa,
|
'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::query()->find($request->province_id)->name_fa,
|
||||||
'city_id' => $request->city_id ?: null,
|
'city_id' => $request->city_id,
|
||||||
'city_fa' => ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa,
|
'city_fa' => ($request->city_id == 0) ? null : City::query()->find($request->city_id)->name_fa,
|
||||||
'edarate_ostani_id' => $request->edarate_ostani_id,
|
'edarate_ostani_id' => $request->edarate_ostani_id,
|
||||||
'edarate_ostani_name' => EdarateOstani::query()->find($request->edarate_ostani_name),
|
'edarate_ostani_name' => $request->edarate_ostani_id == null ?
|
||||||
|
null :
|
||||||
|
EdarateOstani::query()->find($request->edarate_ostani_id),
|
||||||
'edarate_shahri_id' => $request->edarate_shahri_id,
|
'edarate_shahri_id' => $request->edarate_shahri_id,
|
||||||
'edarate_shahri_name' => EdarateShahri::query()->find($request->edarate_shahri_name),
|
'edarate_shahri_name' => $request->edarate_shahri_id == null ?
|
||||||
|
null :
|
||||||
|
EdarateShahri::query()->find($request->edarate_shahri_id),
|
||||||
'first_name' => $request->first_name,
|
'first_name' => $request->first_name,
|
||||||
'last_name' => $request->last_name,
|
'last_name' => $request->last_name,
|
||||||
'position' => $request->position,
|
'position' => $request->position,
|
||||||
'mobile' => $request->mobile,
|
'mobile' => $request->mobile,
|
||||||
'degree' => $request->degree,
|
'degree' => $request->degree,
|
||||||
'major' => $request->major,
|
'major' => $request->major,
|
||||||
]);
|
];
|
||||||
|
|
||||||
if ($request->has('avatar')) {
|
if ($request->has('avatar')) {
|
||||||
FileFacade::delete($user->avatar, true);
|
if ($user->avatar) {
|
||||||
$user['avatar'] = FileFacade::save($request->file('avatar'), "avatar/{$user->id}/");
|
FileFacade::delete($user->avatar, true);
|
||||||
|
}
|
||||||
|
$data['avatar'] = FileFacade::save($request->file('avatar'), "avatar/{$user->id}/");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! is_null($request->password)) {
|
$user->update($data);
|
||||||
$user->password = Hash::make($request->password);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! is_null($request->permissions)) {
|
|
||||||
$user->syncPermissions(explode(',', $request->permissions));
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($request->filled('roles')) {
|
|
||||||
$user->syncRoles($request->roles);
|
|
||||||
}
|
|
||||||
|
|
||||||
$user->save();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return $this->successResponse();
|
return $this->successResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy(User $user)
|
public function destroy(User $user): JsonResponse
|
||||||
{
|
{
|
||||||
$user->delete();
|
DB::transaction(function () use ($user) {
|
||||||
|
if ($user->avatar) {
|
||||||
|
FileFacade::delete($user->avatar, true);
|
||||||
|
}
|
||||||
|
if ($user->photo) {
|
||||||
|
FileFacade::delete($user->photo, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
$user->roles()->detach();
|
||||||
|
$user->permissions()->detach();
|
||||||
|
$user->delete();
|
||||||
|
});
|
||||||
|
|
||||||
|
return $this->successResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function changePassword(User $user, ChangePasswordRequest $request): JsonResponse
|
||||||
|
{
|
||||||
|
$user->update([
|
||||||
|
'password' => Hash::make($request->new_password),
|
||||||
|
]);
|
||||||
|
|
||||||
return $this->successResponse();
|
return $this->successResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function givePermissionsTo(GivePermissionRequest $request, User $user): JsonResponse
|
public function givePermissionsTo(GivePermissionRequest $request, User $user): JsonResponse
|
||||||
{
|
{
|
||||||
|
$user->syncPermissions($request->permissions);
|
||||||
|
|
||||||
$user->givePermissionTo($request->permissions);
|
return $this->successResponse();
|
||||||
|
|
||||||
return $this->successResponse($user->load('permissions'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function givePermissionsToRole(GivePermissionRequest $request, Role $role): JsonResponse
|
public function giveRoleToUser(GiveRoleRequest $request, User $user): JsonResponse
|
||||||
{
|
{
|
||||||
$permissionId = $request->permissions;
|
$user->syncRoles($request->role);
|
||||||
$role->syncPermissions($permissionId);
|
|
||||||
|
|
||||||
return $this->successResponse($role->load('permissions'));
|
return $this->successResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function giveRolesToUser(GiveRoleRequest $request, User $user): JsonResponse
|
public function changeConfirmedStatus(ChangeConfirmStatusRequest $request, User $user): JsonResponse
|
||||||
{
|
{
|
||||||
$roles = $request->roles;
|
$user->update([
|
||||||
|
|
||||||
$user->assignRole($roles);
|
|
||||||
|
|
||||||
return $this->successResponse($user->load('roles'));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getUserPermissions(): JsonResponse
|
|
||||||
{
|
|
||||||
$userPermissions = Auth::user()->getUserPermissions();
|
|
||||||
|
|
||||||
return $this->successResponse($userPermissions);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function activityReport()
|
|
||||||
{
|
|
||||||
return view('version2.dashboard_pages.user_management.activity_report');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function userActivityLogs()
|
|
||||||
{
|
|
||||||
return response()->json([
|
|
||||||
'status' => 'succeed',
|
|
||||||
'message' => '',
|
|
||||||
'data' => auth()->user()->activityLogs,
|
|
||||||
], 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function changeConfirmedStatus(Request $request)
|
|
||||||
{
|
|
||||||
$request->validate([
|
|
||||||
'user_ids' => 'required|regex:/^(\d+)(,\d+)*$/',
|
|
||||||
'confirm' => 'required|in:0,1',
|
|
||||||
]);
|
|
||||||
|
|
||||||
$user_ids = explode(',', $request->user_ids);
|
|
||||||
|
|
||||||
User::whereIn('id', $user_ids)->update([
|
|
||||||
'confirmed' => $request->confirm,
|
'confirmed' => $request->confirm,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return $this->successResponse();
|
return $this->successResponse();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function changePassword(User $user, Request $request)
|
public function changeUserEnabeld(ChangeConfirmEnabelRequest $request, User $user): JsonResponse
|
||||||
{
|
{
|
||||||
$validData = $request->validate([
|
$user->update([
|
||||||
'password' => 'required|string|min:8|confirmed',
|
'enabled' => $request->enabled,
|
||||||
]);
|
]);
|
||||||
$user->password = Hash::make($request->password);
|
|
||||||
$user->save();
|
|
||||||
|
|
||||||
return $this->successResponse();
|
return $this->successResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// public function userActivityLogs()
|
||||||
|
// {
|
||||||
|
// return response()->json([
|
||||||
|
// 'status' => 'succeed',
|
||||||
|
// 'message' => '',
|
||||||
|
// 'data' => auth()->user()->activityLogs,
|
||||||
|
// ], 200);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public function userPermission($id)
|
||||||
|
// {
|
||||||
|
// $user = User::find($id);
|
||||||
|
//
|
||||||
|
// return response()->json([
|
||||||
|
// 'message' => 'success',
|
||||||
|
// 'data' => $user->permissions,
|
||||||
|
// ]);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public function assignPermission(Request $request, User $user)
|
||||||
|
// {
|
||||||
|
// if (auth()->user()) {
|
||||||
|
// auth()->user()->addActivityComplete(1042);
|
||||||
|
// }
|
||||||
|
// $permissions = explode(',', $request->permissions);
|
||||||
|
// if (! $permissions == null) {
|
||||||
|
// $user->syncPermissions($permissions);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return response()->json([
|
||||||
|
// 'message' => 'status',
|
||||||
|
// 'data' => User::where('id', $user->id)->with(['permissions'])->get(),
|
||||||
|
// ]);
|
||||||
|
// }
|
||||||
|
|
||||||
public function getUserSummaryReport(Request $request, User $user)
|
public function getUserSummaryReport(Request $request, User $user)
|
||||||
{
|
{
|
||||||
$request->fromDate = $request->fromDate ? $request->fromDate.' 00:00:00' : Carbon::now()->subDays(30)->format('Y-m-d 00:00:00');
|
$request->fromDate = $request->fromDate ? $request->fromDate.' 00:00:00' : Carbon::now()->subDays(30)->format('Y-m-d 00:00:00');
|
||||||
@@ -498,46 +534,137 @@ class UserManagementController extends Controller
|
|||||||
return View('word.user-activity-individual', compact('data'));
|
return View('word.user-activity-individual', compact('data'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function userPermission($id)
|
public function indexShow(Request $request)
|
||||||
{
|
{
|
||||||
$user = User::find($id);
|
$request->fromDate = $request->fromDate ? $request->fromDate.' 00:00:00' : Carbon::now()->format('Y-m-d 00:00:00');
|
||||||
|
$request->toDate = $request->toDate ? $request->toDate.' 23:59:59' : Carbon::now()->format('Y-m-d 23:59:59');
|
||||||
|
|
||||||
|
$roles_must_show_report = Role::where('for_report', 1)->get();
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
|
||||||
|
$users_activity = [];
|
||||||
|
|
||||||
|
foreach ($roles_must_show_report as $key => $value) {
|
||||||
|
$ids_list = '';
|
||||||
|
$users = $value->users()->select('id')->get()->toArray();
|
||||||
|
foreach ($users as $index => $item) {
|
||||||
|
if (! $index) {
|
||||||
|
$ids_list = $item['id'];
|
||||||
|
} else {
|
||||||
|
$ids_list .= ','.$item['id'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$temp_sql = "
|
||||||
|
SELECT sum(majmoe) AS activity FROM (SELECT *,
|
||||||
|
COUNT(quantity) AS majmoe
|
||||||
|
FROM (
|
||||||
|
SELECT *,
|
||||||
|
COUNT(*) AS quantity
|
||||||
|
FROM user_activity_logs
|
||||||
|
WHERE (created_at between '{$request->fromDate}' and '{$request->toDate}') and user_id IN(".$ids_list.')
|
||||||
|
GROUP BY yy,
|
||||||
|
mm,
|
||||||
|
dd,
|
||||||
|
hh,
|
||||||
|
user_id
|
||||||
|
) user_activity_by_hour_and_
|
||||||
|
GROUP BY user_id) AS calculated_table;';
|
||||||
|
|
||||||
|
$activity = DB::select($temp_sql)[0]->activity;
|
||||||
|
$users_activity[] = [
|
||||||
|
'activity_time' => $ids_list ? $activity : null,
|
||||||
|
'average' => round(($ids_list ? $activity : 0) / count($users), 2),
|
||||||
|
'group_name' => $value->name_fa,
|
||||||
|
'user_count' => count($users),
|
||||||
|
'is_static' => 0,
|
||||||
|
'group_id' => $value->id,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$country_group_ids_list = '';
|
||||||
|
$country_group_user_quantity = 0;
|
||||||
|
foreach (Role::whereIn('id', $this->country_group_ids_list_array)->get() as $key => $value) {
|
||||||
|
$users = $value->users()->select('id')->get();
|
||||||
|
$country_group_user_quantity += count($users);
|
||||||
|
foreach ($users as $index => $item) {
|
||||||
|
if (! $key) {
|
||||||
|
$country_group_ids_list = $item->id;
|
||||||
|
} else {
|
||||||
|
$country_group_ids_list .= ','.$item->id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$country_temp_sql = "
|
||||||
|
SELECT sum(majmoe) AS activity FROM (SELECT *,
|
||||||
|
COUNT(quantity) AS majmoe
|
||||||
|
FROM (
|
||||||
|
SELECT *,
|
||||||
|
COUNT(*) AS quantity
|
||||||
|
FROM user_activity_logs
|
||||||
|
WHERE (created_at between '{$request->fromDate}' and '{$request->toDate}') and user_id IN(".$country_group_ids_list.')
|
||||||
|
GROUP BY yy,
|
||||||
|
mm,
|
||||||
|
dd,
|
||||||
|
hh,
|
||||||
|
user_id
|
||||||
|
) user_activity_by_hour_and_
|
||||||
|
GROUP BY user_id) AS calculated_table;';
|
||||||
|
|
||||||
|
$users_activity[] = [
|
||||||
|
'activity_time' => $country_group_ids_list ? DB::select($country_temp_sql)[0]->activity : null,
|
||||||
|
'average' => round(($country_group_ids_list ? DB::select($country_temp_sql)[0]->activity : 0) / $country_group_user_quantity, 2),
|
||||||
|
'group_name' => 'کشوری',
|
||||||
|
'user_count' => $country_group_user_quantity,
|
||||||
|
'is_static' => 1,
|
||||||
|
'group_id' => 3,
|
||||||
|
];
|
||||||
|
|
||||||
|
$organization_group_ids_list = '';
|
||||||
|
$organization_group_user_quantity = 0;
|
||||||
|
foreach (Role::whereIn('id', $this->organization_group_ids_list_array)->get() as $key => $value) {
|
||||||
|
$users = $value->users()->select('id')->get();
|
||||||
|
$organization_group_user_quantity += count($users);
|
||||||
|
foreach ($users as $index => $item) {
|
||||||
|
if (! $key) {
|
||||||
|
$organization_group_ids_list = $item->id;
|
||||||
|
} else {
|
||||||
|
$organization_group_ids_list .= ','.$item->id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$organization_temp_sql = "
|
||||||
|
SELECT sum(majmoe) AS activity FROM (SELECT *,
|
||||||
|
COUNT(quantity) AS majmoe
|
||||||
|
FROM (
|
||||||
|
SELECT *,
|
||||||
|
COUNT(*) AS quantity
|
||||||
|
FROM user_activity_logs
|
||||||
|
WHERE (created_at between '{$request->fromDate}' and '{$request->toDate}') and user_id IN(".$organization_group_ids_list.')
|
||||||
|
|
||||||
|
GROUP BY yy,
|
||||||
|
mm,
|
||||||
|
dd,
|
||||||
|
hh,
|
||||||
|
user_id
|
||||||
|
) user_activity_by_hour_and_
|
||||||
|
GROUP BY user_id) AS calculated_table;';
|
||||||
|
|
||||||
|
$users_activity[] = [
|
||||||
|
'activity_time' => $organization_group_ids_list ? DB::select($organization_temp_sql)[0]->activity : null,
|
||||||
|
'average' => round(($organization_group_ids_list ? DB::select($organization_temp_sql)[0]->activity : 0) / $organization_group_user_quantity, 2),
|
||||||
|
'group_name' => 'سازمانی',
|
||||||
|
'user_count' => $organization_group_user_quantity,
|
||||||
|
'is_static' => 2,
|
||||||
|
'group_id' => 3,
|
||||||
|
];
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'message' => 'success',
|
'status' => 'succeed',
|
||||||
'data' => $user->permissions,
|
'message' => '',
|
||||||
]);
|
'data' => $users_activity,
|
||||||
}
|
], 200);
|
||||||
|
|
||||||
public function assignPermission(Request $request, User $user)
|
|
||||||
{
|
|
||||||
if (auth()->user()) {
|
|
||||||
auth()->user()->addActivityComplete(1042);
|
|
||||||
}
|
|
||||||
$permissions = explode(',', $request->permissions);
|
|
||||||
if (! $permissions == null) {
|
|
||||||
$user->syncPermissions($permissions);
|
|
||||||
}
|
|
||||||
|
|
||||||
return response()->json([
|
|
||||||
'message' => 'status',
|
|
||||||
'data' => User::where('id', $user->id)->with(['permissions'])->get(),
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function changeUserEnabeld(User $user)
|
|
||||||
{
|
|
||||||
if (Auth::user()->checkUserHasPermission('full-user-management')) {
|
|
||||||
$user->enabled = ! $user->enabled;
|
|
||||||
|
|
||||||
return $this->successResponse($user);
|
|
||||||
} elseif (Auth::user()->checkUserHasPermission('limited-user-management') && Auth::user()->province_id == $user->province_id) {
|
|
||||||
$user->enabled = ! $user->enabled;
|
|
||||||
|
|
||||||
return $this->successResponse();
|
|
||||||
} else {
|
|
||||||
return response()->json([
|
|
||||||
'message' => 'Forbidden',
|
|
||||||
], 403);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests\V3\Dashboard\UserManagement;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Validation\ValidationRule;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class ChangeConfirmEnabelRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
$user = auth()->user();
|
||||||
|
|
||||||
|
return $user->hasPermissionTo('full-user-management') ||
|
||||||
|
($user->hasPermissionTo('limited-user-management') && $this->province_id == $user->province_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array<string, ValidationRule|array|string>
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'enabled' => 'required|in:0,1',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests\V3\Dashboard\UserManagement;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Validation\ValidationRule;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class ChangeConfirmStatusRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array<string, ValidationRule|array|string>
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'confirm' => 'required|in:0,1',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests\V3\Dashboard\UserManagement;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Validation\ValidationRule;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class ChangePasswordRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array<string, ValidationRule|array|string>
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'password' => 'required|string|confirmed|min:8',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -23,8 +23,7 @@ class GiveRoleRequest extends FormRequest
|
|||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'roles' => 'array',
|
'role' => 'required|exists:roles,id',
|
||||||
'roles.*' => 'integer|exists:permissions,id',
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests\V3\Dashboard\UserManagement;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Validation\ValidationRule;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class StoreExrtraRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array<string, ValidationRule|array|string>
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'edarate_ostani_id' => 'nullable|exists:edarate_ostanis,id|required_without:edarate_shahri_id',
|
||||||
|
'edarate_shahri_id' => 'nullable|exists:edarate_shahris,id|required_without:edarate_ostani_id',
|
||||||
|
'province_id' => 'required|exists:provinces,id',
|
||||||
|
'city_id' => 'exists:cities,id',
|
||||||
|
'username' => 'required|unique:users,username',
|
||||||
|
'national_code' => 'unique:users,national_code',
|
||||||
|
'password' => 'required|string|confirmed|min:8',
|
||||||
|
'first_name' => 'required|string',
|
||||||
|
'last_name' => 'required|string',
|
||||||
|
'position' => 'string',
|
||||||
|
'mobile' => 'required|string',
|
||||||
|
'degree' => 'string',
|
||||||
|
'major' => 'string',
|
||||||
|
'avatar' => 'required|file|mimes:pdf,jpg,jpeg,png',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -23,20 +23,13 @@ class StoreRequest extends FormRequest
|
|||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
|
'edarate_ostani_id' => 'nullable|exists:edarate_ostanis,id|required_without:edarate_shahri_id',
|
||||||
|
'edarate_shahri_id' => 'nullable|exists:edarate_shahris,id|required_without:edarate_ostani_id',
|
||||||
'province_id' => 'required|exists:provinces,id',
|
'province_id' => 'required|exists:provinces,id',
|
||||||
'edarate_ostani_id' => 'exists:edarate_ostanis,id',
|
|
||||||
'city_id' => 'exists:cities,id',
|
'city_id' => 'exists:cities,id',
|
||||||
'edarate_shahri_id' => 'exists:edarate_shahris,id',
|
|
||||||
'username' => 'required|unique:users,username',
|
'username' => 'required|unique:users,username',
|
||||||
'national_code' => 'unique:users,national_code',
|
'national_code' => 'unique:users,national_code',
|
||||||
'password' => 'required|min:8',
|
'password' => 'required|string|confirmed|min:8',
|
||||||
'first_name' => 'string',
|
|
||||||
'last_name' => 'string',
|
|
||||||
'position' => 'string',
|
|
||||||
'mobile' => 'string',
|
|
||||||
'degree' => 'string',
|
|
||||||
'major' => 'string',
|
|
||||||
'avatar' => 'required|file|mimes:pdf,jpg,jpeg,png',
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,12 +25,10 @@ class UpdateRequest extends FormRequest
|
|||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'province_id' => 'required|exists:provinces,id',
|
'province_id' => 'required|exists:provinces,id',
|
||||||
'edarate_ostani_id' => 'exists:edarate_ostanis,id',
|
'edarate_ostani_id' => 'nullable|exists:edarate_ostanis,id|required_without:edarate_shahri_id',
|
||||||
'city_id' => 'exists:cities,id',
|
'edarate_shahri_id' => 'nullable|exists:edarate_shahris,id|required_without:edarate_ostani_id', 'city_id' => 'exists:cities,id',
|
||||||
'edarate_shahri_id' => 'exists:edarate_shahris,id',
|
|
||||||
'username' => [Rule::unique('users', 'username')->ignore($this->user->id)],
|
'username' => [Rule::unique('users', 'username')->ignore($this->user->id)],
|
||||||
'national_code' => ['required', Rule::unique('users', 'national_code')->ignore($this->user->id)],
|
'national_code' => ['required', Rule::unique('users', 'national_code')->ignore($this->user->id)],
|
||||||
'password' => 'min:8',
|
|
||||||
'first_name' => 'required|string',
|
'first_name' => 'required|string',
|
||||||
'last_name' => 'required|string',
|
'last_name' => 'required|string',
|
||||||
'position' => 'string',
|
'position' => 'string',
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Services\Cartables\UserManagement;
|
||||||
|
|
||||||
|
use App\Facades\DataTable\DataTableFacade;
|
||||||
|
use App\Models\User;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
|
||||||
|
class UserManagementService
|
||||||
|
{
|
||||||
|
public function datatable(Request $request): array
|
||||||
|
{
|
||||||
|
$user = Auth::user();
|
||||||
|
$query = $user->hasPermissionTo('full-user-management') ?
|
||||||
|
User::query() :
|
||||||
|
User::query()->where('province_id', '=', $user->province_id);
|
||||||
|
|
||||||
|
return DataTableFacade::run(
|
||||||
|
$query,
|
||||||
|
$request,
|
||||||
|
allowedFilters: ['*'],
|
||||||
|
allowedSortings: ['*'],
|
||||||
|
allowedSelects: ['id', 'username', 'status', 'province_id', 'province_fa', 'city_id', 'city_fa', 'first_name', 'last_name', 'mobile', 'position', 'major', 'setad_id', 'last_login', 'roles', 'edarate_shahri_id', 'edarate_shahri_name', 'national_code', 'name', 'enabled', 'email',
|
||||||
|
'edarate_ostani_id', 'edarate_ostani_name', 'degree', 'confirmed', 'checked', 'updated_at', 'photo', 'created_at'],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -590,23 +590,24 @@ Route::prefix('user_management')
|
|||||||
Route::get('/', 'index')->name('index')->middleware(
|
Route::get('/', 'index')->name('index')->middleware(
|
||||||
'permission:full-user-management|limited-user-management');
|
'permission:full-user-management|limited-user-management');
|
||||||
Route::post('/', 'store')->name('store');
|
Route::post('/', 'store')->name('store');
|
||||||
|
Route::post('/store_extra', 'storeExtra')->name('storeExtra');
|
||||||
Route::get('/{user}', 'show')->name('show');
|
Route::get('/{user}', 'show')->name('show');
|
||||||
Route::post('/{user}', 'update')->name('update');
|
Route::post('/{user}', 'update')->name('update');
|
||||||
Route::delete('/{user}', 'destroy')->name('destroy');
|
Route::delete('/{user}', 'destroy')->name('destroy');
|
||||||
|
Route::post('/change_password/{user}', 'changePassword')->name('changePassword');
|
||||||
Route::post('/give_permissions_to', 'givePermissionsTo')->name('givePermissionsTo');
|
Route::post('/give_permissions_to', 'givePermissionsTo')->name('givePermissionsTo');
|
||||||
Route::post('/give_permissions_to_role', 'givePermissionsToRole')->name('givePermissionsToRole');
|
Route::post('/give_role_to_user','giveRoleToUser')->name('giveRoleToUser');
|
||||||
Route::post('/give_roles_to_user','giveRolesToUser')->name('giveRolesToUser');
|
Route::post('/change_confirmed_status', 'changeConfirmedStatus')->name('changeConfirmedStatus');
|
||||||
|
Route::post('/change_user_enabeld','changeUserEnabeld')->name('changeUserEnabeld')->middleware(
|
||||||
|
'permission:full-user-management|limited-user-management');
|
||||||
Route::get('/activity_report', 'activityReport')->name('activityReport');
|
Route::get('/activity_report', 'activityReport')->name('activityReport');
|
||||||
Route::get('/userActivityLogs', 'userActivityLogs')->name('userActivityLogs');
|
Route::get('/userActivityLogs', 'userActivityLogs')->name('userActivityLogs');
|
||||||
Route::post('/change_confirmed_status', 'changeConfirmedStatus')->name('changeConfirmedStatus');
|
|
||||||
Route::get('/give_permissions_to', 'givePermissionsTo')->name('givePermissionsTo');
|
Route::get('/give_permissions_to', 'givePermissionsTo')->name('givePermissionsTo');
|
||||||
Route::get('/get_user_permissions', 'getUserPermissions')->name('getUserPermissions');
|
Route::get('/get_user_permissions', 'getUserPermissions')->name('getUserPermissions');
|
||||||
Route::get('/get_user_summary_report', 'getUserSummaryReport')->name('getUserSummaryReport');
|
Route::get('/get_user_summary_report', 'getUserSummaryReport')->name('getUserSummaryReport');
|
||||||
Route::get('/print_group', 'printGroup')->name('printGroup');
|
Route::get('/print_group', 'printGroup')->name('printGroup');
|
||||||
Route::get('/user_permission', 'userPermission')->name('userPermission');
|
Route::get('/user_permission', 'userPermission')->name('userPermission');
|
||||||
Route::get('/assign_permission', 'assignPermission')->name('assignPermission');
|
Route::get('/assign_permission', 'assignPermission')->name('assignPermission');
|
||||||
Route::post('/change_user_enabeld','changeUserEnabeld')->name('changeUserEnabeld');
|
|
||||||
Route::post('/change_password/{user}', 'changePassword')->name('changePassword');
|
|
||||||
});
|
});
|
||||||
Route::prefix('role')
|
Route::prefix('role')
|
||||||
->name('role.')
|
->name('role.')
|
||||||
|
|||||||
Reference in New Issue
Block a user