Skip to content

Commit

Permalink
#1
Browse files Browse the repository at this point in the history
localization finished,  middleware for access controll created, all parts of role and permissions finished, directorate changed to department and other thinks that not mentioned here has done.
div100 committed Mar 23, 2019
1 parent 4969d11 commit 10e10d1
Showing 38 changed files with 2,275 additions and 1,036 deletions.
8 changes: 5 additions & 3 deletions app/Http/Controllers/Auth/RegisterController.php
Original file line number Diff line number Diff line change
@@ -7,6 +7,8 @@
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use DB;
use QueryException;

class RegisterController extends Controller
{
@@ -55,8 +57,8 @@ protected function validator(array $data)
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed','regex:/^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$/'],
'position' =>['required','string','min:4'],
'directorate'=>['required','string','min:4'],
'position' =>['required','string','min:3'],
'department'=>['required','string','min:3'],
'phone' =>['required','regex:/^07[0-9]{8}/'],

],$passRegexMessage);
@@ -74,7 +76,7 @@ protected function create(array $data)
'name' => $data['name'],
'email' => $data['email'],
'position' => $data['position'],
'directorate' => $data['directorate'],
'department' => $data['department'],
'phone' => $data['phone'],
'password' => Hash::make($data['password']),
]);
94 changes: 54 additions & 40 deletions app/Http/Controllers/HomeController.php
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ class HomeController extends Controller
public function __construct()
{
$this->middleware('auth');

}

/**
@@ -33,58 +34,60 @@ public function __construct()
public function index()
{

Role::firstOrCreate(['name' => 'Super_Admin']);
Role::firstOrCreate(['name' => 'Super_admin']);
Role::firstOrCreate(['name' => 'Admin']);
Role::firstOrCreate(['name' => 'Supervisor']);
Role::firstOrCreate(['name' => 'User_Approver']);
Role::firstOrCreate(['name' => 'Booking_Approver']);
Role::firstOrCreate(['name' => 'Normal_User']);
Role::firstOrCreate(['name' => 'User_approver']);
Role::firstOrCreate(['name' => 'Booking_approver']);
Role::firstOrCreate(['name' => 'Normal_user']);

$Super_Admin = Role::findByName('Super_Admin');
$Super_Admin = Role::findByName('Super_admin');
$Admin = Role::findByName('Admin');
$Supervisor = Role::findByName('Supervisor');
$Booking_Approver = Role::findByName('Booking_Approver');
$User_Approver = Role::findByName('User_Approver');
$Normal_user = Role::findByName('Normal_User');

$Booking_Approver = Role::findByName('Booking_approver');
$User_Approver = Role::findByName('User_approver');
$Normal_user = Role::findByName('Normal_user');

Permission::firstOrCreate(['name'=>'C_driver_car','permission_description'=>'can register new driver and car']);
Permission::firstOrCreate(['name'=>'U_driver_car','permission_description'=>'can update data of driver and car']);
Permission::firstOrCreate(['name'=>'R_driver_car','permission_description'=>'can read registered drivers and cars']);
Permission::firstOrCreate(['name'=>'App_booking','permission_description'=>'can approve bookings']);
Permission::firstOrCreate(['name'=>'U_booking','permission_description'=>'can update approved bookings']);
Permission::firstOrCreate(['name'=>'C_booking','permission_description'=>'can reserve vehical']);
Permission::firstOrCreate(['name'=>'C_user','permission_description'=>'can register new user with approve status']);
Permission::firstOrCreate(['name'=>'R_user','permission_description'=>'can read registered users']);
Permission::firstOrCreate(['name'=>'R_users_role','permission_description'=>'can read assigned roles for users']);
Permission::firstOrCreate(['name'=>'App_user','permission_description'=>'can approver pending users']);
Permission::firstOrCreate(['name'=>'C_role','permission_description'=>'can create new role and assign permissions for created role']);
Permission::firstOrCreate(['name'=>'U_role','permission_description'=>'can update permissions of roles']);
Permission::firstOrCreate(['name'=>'R_role','permission_description'=>'can read roles with their permissions']);
Permission::firstOrCreate(['name'=>'Create_driver_car','permission_description'=>'can register new driver and car']);
Permission::firstOrCreate(['name'=>'Update_driver_car','permission_description'=>'can update data of driver and car']);
Permission::firstOrCreate(['name'=>'Read_driver_car','permission_description'=>'can read registered drivers and cars']);
Permission::firstOrCreate(['name'=>'Approve_booking','permission_description'=>'can approve bookings']);
Permission::firstOrCreate(['name'=>'Read_booking','permission_description'=>'can read bookings']);
Permission::firstOrCreate(['name'=>'Update_booking','permission_description'=>'can update approved bookings']);
Permission::firstOrCreate(['name'=>'Create_booking','permission_description'=>'can reserve vehical']);
Permission::firstOrCreate(['name'=>'Create_user','permission_description'=>'can register new user with approve status']);
Permission::firstOrCreate(['name'=>'Read_user','permission_description'=>'can read registered users']);
Permission::firstOrCreate(['name'=>'Read_users_role','permission_description'=>'can read assigned roles for users']);
Permission::firstOrCreate(['name'=>'Approve_user','permission_description'=>'can approve pending users']);
Permission::firstOrCreate(['name'=>'Create_role','permission_description'=>'can create new role and assign permissions for created role']);
Permission::firstOrCreate(['name'=>'Update_role','permission_description'=>'can update permissions of roles']);
Permission::firstOrCreate(['name'=>'Read_role','permission_description'=>'can read roles with their permissions']);

$C_driver_car = Permission::findByName('C_driver_car');
$U_driver_car = Permission::findByName('U_driver_car');
$R_driver_car = Permission::findByName('R_driver_car');
$App_booking = Permission::findByName('App_booking');
$U_booking = Permission::findByName('U_booking');
$C_booking = Permission::findByName('C_booking');
$C_user = Permission::findByName('C_user');
$R_user = Permission::findByName('R_user');
$R_users_role = Permission::findByName('R_users_role');
$App_user = Permission::findByName('App_user');
$C_role = Permission::findByName('C_role');
$U_role = Permission::findByName('U_role');
$R_role = Permission::findByName('R_role');
$C_driver_car = Permission::findByName('Create_driver_car');
$U_driver_car = Permission::findByName('Update_driver_car');
$R_driver_car = Permission::findByName('Read_driver_car');
$App_booking = Permission::findByName('Approve_booking');
$R_booking = Permission::findByName('Read_booking');
$U_booking = Permission::findByName('Update_booking');
$C_booking = Permission::findByName('Create_booking');
$C_user = Permission::findByName('Create_user');
$R_user = Permission::findByName('Read_user');
$R_users_role = Permission::findByName('Read_users_role');
$App_user = Permission::findByName('Approve_user');
$C_role = Permission::findByName('Create_role');
$U_role = Permission::findByName('Update_role');
$R_role = Permission::findByName('Read_role');


$oneMonthAgo = Carbon::now()->subMonths(1);

$Super_Admin->givePermissionTo(Permission::all());
$Admin->syncPermissions($C_driver_car,$U_driver_car,$R_driver_car,$App_booking,$C_booking,$U_booking,
$C_user,$R_user,$R_users_role,$App_user,$R_role);
$Supervisor->givePermissionTo($R_driver_car,$R_role,$R_user,$R_users_role,$C_booking);
$C_user,$R_user,$App_user);
$Supervisor->givePermissionTo($R_driver_car,$R_role,$R_user,$R_users_role,$C_booking,$R_booking);
$Normal_user->givePermissionTo($C_booking);
$Booking_Approver->givePermissionTo($App_booking,$U_booking,$U_driver_car,$C_booking);
$User_Approver->givePermissionTo($App_user,$C_booking);
$Booking_Approver->givePermissionTo($App_booking,$U_booking,$U_driver_car);
$User_Approver->givePermissionTo($App_user);

$totalCar = Car::count();
$totalUser = User::count();
@@ -124,7 +127,17 @@ public function index()
->where('created_at','>=',$oneMonthAgo)->count();
$rejectedByMe = Booking::where('approver_user_id',Auth::user()->id)->where('approval',false)
->where('created_at','>=',$oneMonthAgo)->get();

$usersRejectedByMeCount = User::where('approver_user_id',Auth::user()->id)->where('status',false)
->where('created_at','>=',$oneMonthAgo)->count();
$usersRejectedByMe = User::where('approver_user_id',Auth::user()->id)->where('status',false)
->where('created_at','>=',$oneMonthAgo)->get();

$usersApprovedByMeCount = User::where('approver_user_id',Auth::user()->id)->where('status',true)
->where('created_at','>=',$oneMonthAgo)->count();
$usersApprovedByMe = User::where('approver_user_id',Auth::user()->id)->where('status',true)
->where('created_at','>=',$oneMonthAgo)->get();

$user = User::where('id',Auth::user()->id)->first();

return view('home')->with(['user'=>$user,'myBookings'=>$myBookings,'pend'=> $myPendingBookings,'appr'=>$myApprovedBookings,
@@ -133,6 +146,7 @@ public function index()
'trueCar'=>$trueCar,'falseCar'=>$falseCar,'totalCar'=>$totalCar,'totalDriver'=>$totalDriver,'totalBooking'=>$totalBooking
,'totalUser'=>$totalUser,'trueDriver'=>$trueDriver,'falseDriver'=>$falseDriver,'pendingUser'=>$pendingUser,
'approvedByMe'=>$approvedByMe,'approvedByMeCount'=>$approvedByMeCount,
'rejectedByMe'=>$rejectedByMe,'rejectedByMeCount'=>$rejectedByMeCount]);
'rejectedByMe'=>$rejectedByMe,'rejectedByMeCount'=>$rejectedByMeCount,'usersApprovedByMe'=>$usersApprovedByMe
,'usersApprovedByMeCount'=>$usersApprovedByMeCount,'usersRejectedByMe'=>$usersRejectedByMe,'usersRejectedByMeCount'=>$usersRejectedByMeCount]);
}
}
20 changes: 20 additions & 0 deletions app/Http/Controllers/LanguageController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use Config;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Session;

class LanguageController extends Controller
{
public function switchLang($lang)
{
if (array_key_exists($lang, Config::get('languages'))) {
Session::put('applocale', $lang);
}
return Redirect::back();
}
}
72 changes: 41 additions & 31 deletions app/Http/Controllers/bookingController.php
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App;
use Auth;
use App\booking;
use DB;
@@ -20,12 +21,15 @@ class bookingController extends Controller
public function __construct(){

$this->middleware('auth');
$this->middleware(['permission:Read_booking|Update_booking']);

}

public function index()
{

$freeCars = DB::table('cars')->get();
$freeDrivers = DB::table('drivers')->get();
$freeCars = DB::table('cars')->where('status',true)->get();
$freeDrivers = DB::table('drivers')->where('status',true)->get();

$approvedCount = DB::table('bookings')->where('approval',true)->count();
$rejectedCount = DB::table('bookings')->where('approval',false)->wherenotnull('approver_description')->count();
@@ -41,7 +45,7 @@ public function pendings(){
$freeDrivers = DB::table('drivers')->where('status',true)->get();

$countPendings = DB::table('bookings')->where("approval",null)->count();
$pendings = DB::table('bookings')->where('approval',null)->paginate(5);
$pendings = DB::table('bookings')->where('approval',null)->orderByDesc('pickup_time')->paginate(5);

return view('/bookings/pendings')->with(['pendings'=>$pendings,"countPendings"=>$countPendings,
'freeDrivers'=>$freeDrivers,'freeCars'=>$freeCars]);
@@ -72,13 +76,16 @@ public function create()
public function store(Request $request)
{
$user_id =$request->input('user_id');

$x=0;
$pickup_time = $request->input('pickup_time');
$return_time = $request->input('return_time');
$count = $request->input('count');
$description = $request->input('description');
$destination = $request->input('destination');
$created_at = now(); $updated_at = now();

$bookings = DB::table('bookings')->where('user_id',$user_id)->get();

$rules = array('pickup_time'=>'date|required',
'return_time'=>'after:pickup_time|date|required',
'count'=>'numeric|min:1',
@@ -88,17 +95,36 @@ public function store(Request $request)
if($validator->fails()){
return $validator->errors()->toArray();
}

else{
try{
$bookingArray = array();
foreach ($bookings as $data) {
$x++;
if(
$data->user_id == $user_id &&$data->pickup_time ==$pickup_time &&$data->return_time ==$return_time
&& $data->count ==$count &&$data->destination ==$destination){
return "DUPLICATE";
if(App::getLocale()=='fa'){
$bookingArray[$x]= "رزرویشن با این مشخصات انجام گردیده است.";
}else{
$bookingArray[$x]= "This booking has already been taken";
}

}
}

try{

DB::statement(DB::raw("INSERT INTO bookings (booking_id,pickup_time,return_time,count,description,destination
,user_id,created_at,updated_at)
values (
DEFAULT,'$pickup_time','$return_time',$count,'$description','$destination',$user_id,now(),now()
)
"));

return "Your booking is wait for response";
if(App::getLocale()=='fa'){
return "رزرو شما موفقانه ثبت گردید";
}
return "ُSuccessfully your booking saved";
}catch(QueryException $e){
return $e->getMessage();
}
@@ -172,15 +198,18 @@ public function update(Request $request, $id)
try{
DB::statement(DB::raw("update bookings set approval = $approval, approver_description =
'$approver_description',approver_user_id=$app_user_id,updated_at=now() where booking_id = $id"));
return "you have rejected";
if(App::getLocale()=='fa'){
return "رزرو را رد نمودید";
}
return "you have rejected the booking";

} catch(QueryException $e){
return $e->getMessage();
}

}else{

if($approval == true || $approval =="true"|| $approval ===true){
if($approval == true || $approval =="true"|| $approval === true){
$rules = array(
'approval_pickup_time' => 'required|date',
'approval_return_time' => 'required|date|after:approval_pickup_time',
@@ -197,36 +226,17 @@ public function update(Request $request, $id)
,approval_return_time='$approval_return_time',driver_id=$driver_id,approver_description = '$approver_description',approver_user_id=$app_user_id,
updated_at=now() where
booking_id=$id"));
if(App::getLocale()=='fa'){
return "موفقانه تصویب گردید.";
}
return "successfully approved";
}
catch(QueryException $e){
return $ex->getMessage();
}
}


}
}
// if($approval){
// return "Null Value";
// }
// if(empty($request->input('approval')) || $request->input('approval')==null || $request->input('approval')==""
// || $request->input('approval')=="null"){
// $approval_pickup_time = null; $approval_return_time = null; $driver_id = null; $car_id =null;$approver_description =null;
// $rules = array("approval_pickup_time"=>"required|date_format:Y-m-d H:i:s",
// "approval_return_time"=>"date_format:Y-m-d H:i:s");
// return $request->all();
// die();
// }
// return $approval;
// $validator = Validator::make($request->all(), $rules);
// if($validator->fails()){
// return $validator->errors()->toArray();
// }
// else{
// return "There is no Error";
// }

}

/**
69 changes: 47 additions & 22 deletions app/Http/Controllers/carController.php
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@

use Illuminate\Http\Request;
use App\car;
use App;
use DB;
use Validator;
use Illuminate\Database\QueryException;
@@ -17,20 +18,28 @@ class carController extends Controller
* @return \Illuminate\Http\Response
*/
public function __construct(){
return $this->middleware('auth');
$this->middleware('auth');
$this->middleware(['permission:Read_driver_car|Update_driver_car|Create_driver_car']);
}
public function index()
{

//
$drivers = DB::select(DB::raw("SELECT drivers.driver_id,drivers.name FROM drivers left JOIN cars on cars.driver_id = drivers.driver_id where cars.driver_id IS NULL"));

$carsData = DB::table('cars')->orderBy('plate_no','des')->get();
$carsData = DB::table('cars')->orderBy('plate_no','des')->paginate(5);
$dataCounts = DB::table('cars')->count();
return view('/cars/index')->with(compact('carsData','dataCounts','drivers'));
}

public function searchCar(Request $request){

if(App::getLocale()=='fa'){
$update = 'تجدید';
$notFound = 'به این مشخصات معلوماتی وجود ندارد';
}else{
$update = 'Update';
$notFound = 'Data not found!';
}
$searchOn = $request->input('searchon');
$searchInput= $request->input('searchInp');

@@ -61,6 +70,7 @@ public function searchCar(Request $request){

foreach ($dataArray as $data) {
if($data->status === false){$data->status = 'False';}else{$data->status='True';}

echo
"<td>" . $data->plate_no . "</td>".
"<td>" . $data->color . "</td>".
@@ -70,12 +80,13 @@ public function searchCar(Request $request){
"<td>" . $data->driver_id . "</td>" .
"<td>" . $data->created_at . "</td>" .
"<td class='Af'>" . $data->updated_at . "</td>" .
"<td><a href='/cars/$data->plate_no' id='$data->plate_no' class='btn btn-primary updateBtn'>Update</a></td>
<td><a href='cars/$data->plate_no' id='$data->plate_no' class='deleteBtn btn btn-danger'>Delete </button></td>
"<td><a href='/cars/$data->plate_no' id='$data->plate_no' class='btn btn-sm btn-primary updateBtn'>" .
$update
."</a></td>
</tr>";
}}

else{return "<tr><td colspan='8'><div class='card bg-light text-dark'><div class='card-body text-center' id='notFound'><h1>Data not found!</h1></div></div></td></tr>";}
}
}else{
return "<tr><td colspan='8'><div class='card bg-light text-dark'><div class='card-body text-center' id='notFound'><h1>$notFound</h1></div></div></td></tr>";}

}

@@ -125,15 +136,10 @@ public function store(Request $request)
else{
try{
Car::create($request->all());
// DB::statement(DB::raw("insert into cars values($plate_no,'$color','$model','$type',$status,now(),now(),$driver_id)"));
//||||----- Car::create($request->all()) appear this error-->>
//note PHP can not check null value it can check '' values only and only.
// NOTE SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer: "NULL"
// (SQL: insert into "cars" ("plate_no", "color", "model", "type", "status", "driver_id", "updated_at", "created_at")
// values (99999, red, 2009, corolla, true, NULL, 2019-02-21 17:46:52, 2019-02-21 17:46:52) returning "plate_no")----\\||||
//

return "successfully done " . $plate_no;
if(App::getLocale()=='fa'){
return "موفقانه موتر جدید با پلیت نمبر $plate_no علاوه گردید.";
}
return "successfully new car with plate number of " . $plate_no . 'added to system';
}
catch(QueryException $ex){
print($ex->getMessage());
@@ -153,15 +159,18 @@ public function store(Request $request)
*/
public function show($plate_no)
{

if(App::getLocale()=='fa'){$update = 'تجدید';}else{$update = 'Update';}

//
$data = DB::table('cars')->where('plate_no',$plate_no)->first();
if($data->status == 1){$data->status = "True";}else{$data->status="False";}
if($data->driver_id == null){$data->driver_id = "NULL";}

$row = "<tr><td><b>".$data->plate_no."</b></td><td>" . $data->color ."</td><td>"
.$data->model."</td><td>".$data->type."</td><td>".$data->status."</td><td>".$data->driver_id."</td><td>".$data->created_at."</td><td>".$data->updated_at.
"</td><td><a href='/cars/"
.$data->plate_no ."' id='".$data->plate_no."'class='btn btn-primary updateBtn' >Update</a></td><td><a a href='/cars/"
.$data->plate_no ."' id='".$data->plate_no. "'class='btn btn-danger deleteBtn'>Delete </button></td></td></tr>";
.$data->plate_no ."' id='".$data->plate_no."'class='btn btn-primary btn-sm updateBtn' >$update</a></td>";
// return json_encode($data);
return $row;
}
@@ -213,7 +222,13 @@ public function update(Request $request, $plate_no_for_update)
$d_id_driver = DB::table('drivers')->where('driver_id',$driver_id)->count();
$arrayOfErr = array();
if(!($data['plate_no'] == $plate_no)){$plate_count = DB::table('cars')->where('plate_no',$plate_no)->count();
if($plate_count > 0){$arrayOfErr[0] = "plate number(".$plate_no.") has already been taken";}}
if($plate_count > 0){
if(App::getLocale()=='fa'){
$arrayOfErr[0] = "پلیت نمبر $plate_no در سیستم نیز موجود است.";
}else{
$arrayOfErr[0] = "plate number(".$plate_no.") has already been taken";}
}
}



@@ -229,7 +244,13 @@ public function update(Request $request, $plate_no_for_update)


if($d_id_driver<=0 && $driver_id)
{$arrayOfErr[2] = "there is no driver registered with ID of " . $driver_id . " ";}
{
if(App::getLocale()=='if'){
$arrayOfErr[2] = "راننده با این $driver_id در سیستم ثبت نیست.";
}else{
$arrayOfErr[2] = "there is no driver registered with ID of " . $driver_id . " ";
}
}

if($arrayOfErr){
return $arrayOfErr;
@@ -238,7 +259,11 @@ public function update(Request $request, $plate_no_for_update)
try {
$update = DB::table('cars')->where('plate_no',$plate_no_for_update)
->update(['plate_no'=>$plate_no,'color'=>$color,'model'=>$model,'type'=>$type,'status'=>$status,'driver_id'=>$driver_id]);
return "successfully updated";

if(App::getLocale()=='fa'){
return 'موفقانه تجدید گردید';
}
return "successfully updated";
}
catch(QueryException $ex){

33 changes: 23 additions & 10 deletions app/Http/Controllers/driverController.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php

namespace App\Http\Controllers;

use App;
use Illuminate\Http\Request;
use Validator;
use Response;
@@ -21,54 +21,64 @@ class driverController extends Controller
*/
// protected $redirectTo = '/drivers';
public function __construct(){
return $this->middleware('auth');
$this->middleware('auth');
$this->middleware(['permission:Read_driver_car|Update_driver_car|Create_driver_car']);
}
public function index()
{
$driversData = DB::table('drivers')->orderBy('driver_id','des')->paginate(5);
$dataCounts = DB::table('drivers')->count();

return view('/drivers/index')->with(compact('driversData','dataCounts'));
}
public function searchDriver(Request $request){
if(App::getLocale()=='fa'){
$update = 'تجدید';
$notFound = 'به این مشخصات معلوماتی وجود ندارد';
}else{
$update = 'Update';
$notFound = 'Data not found!';
}

$searchOn = $request->input('searchon');
$searchInput= $request->input('searchInp');

if($searchOn == "id"){
$dataArray = DB::table('drivers')->where("driver_id",'LIKE',"%$searchInput%")->paginate(5);
$dataArray = DB::table('drivers')->where("driver_id",'LIKE',"%$searchInput%")->get();
$dataCount = DB::table('drivers')->where("driver_id",'LIKE',"%$searchInput%")->count();}

if($searchOn == "name"){
$dataArray = DB::table('drivers')->where("name",'LIKE',"%$searchInput%")->paginate(5);
$dataArray = DB::table('drivers')->where("name",'LIKE',"%$searchInput%")->get();
$dataCount = DB::table('drivers')->where("name",'LIKE',"%$searchInput%")->count();}

if($searchOn == "father_name"){
$dataArray = DB::table('drivers')->where("father_name",'LIKE',"%$searchInput%")->paginate(5);
$dataArray = DB::table('drivers')->where("father_name",'LIKE',"%$searchInput%")->get();
$dataCount = DB::table('drivers')->where("father_name",'LIKE',"%$searchInput%")->count();}

if($searchOn == "phone_no"){
$dataArray = DB::table('drivers')->where("phone_no",'LIKE',"%$searchInput%")->paginate(5);
$dataArray = DB::table('drivers')->where("phone_no",'LIKE',"%$searchInput%")->get();
$dataCount = DB::table('drivers')->where("phone_no",'LIKE',"%$searchInput%")->count();}

if($searchOn == "status"){
if($searchInput == 'a'){$searchInput = str_replace('a', false, false);}
$dataArray = DB::table('drivers')->where("status",'LIKE',"%$searchInput%")->paginate(5);
$dataArray = DB::table('drivers')->where("status",'LIKE',"%$searchInput%")->get();
$dataCount = DB::table('drivers')->where("status",'LIKE',"%$searchInput%")->count();}
if($dataCount >0 ){

foreach ($dataArray as $data) {
if($data->status === false){$data->status = 'false';}else{$data->status='true';}
if(App::getLocale()=='fa'){$update = "تجدید";}else{$update = 'Update';}
echo "<tr><td><b>". $data->driver_id . "</b></td>" .
"<td>" . $data->name . "</td>".
"<td>" . $data->father_name . "</td>".
"<td>" . $data->phone_no . "</td>" .
"<td>" . $data->status . "</td>" .
"<td>" . $data->created_at . "</td>" .
"<td class='Af'>" . $data->updated_at . "</td>" .
"<td><a href='/drivers/$data->driver_id' id='$data->driver_id' class='btn btn-primary updateBtn'>Update</a></td>
<td><a href='drivers/$data->driver_id' id='$data->driver_id' class='deleteBtn btn btn-danger'>Delete </button></td>
"<td><a href='/drivers/$data->driver_id' id='$data->driver_id' class='btn btn-primary btn-sm updateBtn'>$update</a></td>
</tr>";
}}else{return "<tr><td colspan='8'><div class='card bg-light text-dark'><div class='card-body text-center' id='notFound'><h1>Data not found!</h1></div></div></td></tr>";}
}}else{return "<tr><td colspan='8'><div class='card bg-light text-dark'><div class='card-body text-center' id='notFound'><h1>$notFound</h1></div></div></td></tr>";}

}

@@ -174,6 +184,9 @@ public function update(Request $request, $id)
if(!($data['phone_no']==$phone_no)){
$phCount = DB::table('drivers')->where('phone_no',$phone_no)->count();
if($phCount>0){
if(App::getLocale()=='fa'){
return "این شماره مربوط راننده دیگر می باشد.";
}
return "the phone no has already been taken";
}
}
23 changes: 23 additions & 0 deletions app/Http/Controllers/lang.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

namespace App\Http\Controllers;
use App;
use Illuminate\Http\Request;


class lang extends Controller
{
//
public function lang(Request $req){
return $req->all();
$lang = App::getLocale();
if($lang == 'en'){
App::setLocale('en');
return "english";
}else{
App::setLocale('pr');
return App::getLocale();

}
}
}
83 changes: 48 additions & 35 deletions app/Http/Controllers/permissionController.php
Original file line number Diff line number Diff line change
@@ -17,7 +17,9 @@ class permissionController extends Controller
* @return \Illuminate\Http\Response
*/
public function __construct(){
return $this->middleware('auth');
$this->middleware('auth');

$this->middleware(['permission:Read_role|Update_role|Create_role|Read_users_role']);
}
public function index()
{
@@ -99,41 +101,52 @@ public function update(Request $request, $id)
{

$user = User::find($id);
if(!(empty($request->permission_id))){
if(in_array('Do Everything',$request->permission_id))
{$user->givePermissionTo('Do Everything');}
else{$user->revokePermissionTo('Do Everything');}
if(in_array('Approve',$request->permission_id))
{$user->givePermissionTo('Approve');}
else{$user->revokePermissionTo('Approve');}
if(in_array('Booking',$request->permission_id))
{$user->givePermissionTo('Booking');}
else{$user->revokePermissionTo('Booking');}
if(in_array('monitor',$request->permission_id))
{$user->givePermissionTo('monitor');}
else{$user->revokePermissionTo('monitor');}
if(in_array('Read',$request->permission_id))
{$user->givePermissionTo('Read');}
else{$user->revokePermissionTo('Read');}
if(in_array('Update',$request->permission_id))
{$user->givePermissionTo('Update');}
else{$user->revokePermissionTo('Update');}
if(in_array('Delete',$request->permission_id))
{$user->givePermissionTo('Delete');}
else{$user->revokePermissionTo('Delete');}
if(in_array('Create',$request->permission_id))
{$user->givePermissionTo('Create');}
else{$user->revokePermissionTo('Create');}
if(!(empty($request->permission_name))){
if(in_array('Create_driver_car',$request->permission_name))
{$user->givePermissionTo('Create_driver_car');}
else{$user->revokePermissionTo('Create_driver_car');}
if(in_array('Update_driver_car',$request->permission_name))
{$user->givePermissionTo('Update_driver_car');}
else{$user->revokePermissionTo('Update_driver_car');}
if(in_array('Read_driver_car',$request->permission_name))
{$user->givePermissionTo('Read_driver_car');}
else{$user->revokePermissionTo('Read_driver_car');}
if(in_array('Approve_booking',$request->permission_name))
{$user->givePermissionTo('Approve_booking');}
else{$user->revokePermissionTo('Approve_booking');}
if(in_array('Update_booking',$request->permission_name))
{$user->givePermissionTo('Update_booking');}
else{$user->revokePermissionTo('Update_booking');}
if(in_array('Create_booking',$request->permission_name))
{$user->givePermissionTo('Create_booking');}
else{$user->revokePermissionTo('Create_booking');}
if(in_array('Create_user',$request->permission_name))
{$user->givePermissionTo('Create_user');}
else{$user->revokePermissionTo('Create_user');}
if(in_array('Read_user',$request->permission_name))
{$user->givePermissionTo('Read_user');}
else{$user->revokePermissionTo('Read_user');}
if(in_array('Read_users_role',$request->permission_name))
{$user->givePermissionTo('Read_users_role');}
else{$user->revokePermissionTo('Read_users_role');}
if(in_array('Approve_user',$request->permission_name))
{$user->givePermissionTo('Approve_user');}
else{$user->revokePermissionTo('Approve_user');}
if(in_array('Create_role',$request->permission_name))
{$user->givePermissionTo('Create_role');}
else{$user->revokePermissionTo('Create_role');}
if(in_array('Update_role',$request->permission_name))
{$user->givePermissionTo('Update_role');}
else{$user->revokePermissionTo('Update_role');}
if(in_array('Read_role',$request->permission_name))
{$user->givePermissionTo('Read_role');}
else{$user->revokePermissionTo('Read_role');}
return 'successfully permissions changed for selected user';}
else{$user->revokePermissionTo(Permission::all());
return "No permissions assigned";
}



return 'successfully Done';}
else{
$permission = array("Create",'Delete','Update','Read',"Do Everything",'monitor','Booking','Approve');
foreach ($permission as $key => $per) {
$user->revokePermissionTo($per);
}
return "permission/permissions remvoed for this user";
}

// $adminRole = Role::findByName('admin');
// $adminRole->syncPermissions($insertPermission,$editPermission,$approvePermission,$removePermission);
84 changes: 43 additions & 41 deletions app/Http/Controllers/rolesController.php
Original file line number Diff line number Diff line change
@@ -17,6 +17,8 @@ class rolesController extends Controller
public function __construct()
{
$this->middleware('auth');

$this->middleware(['permission:Read_role|Update_role|Create_role|Read_users_role']);
}
use HasRoles;
/**
@@ -63,7 +65,7 @@ public function searchUser(Request $request){
"<td>" . $data->id . "</td>".
"<td>" . $data->name . "</td>".
"<td>" . $data->position . "</td>" .
"<td>" . $data->directorate . "</td>" .
"<td>" . $data->department . "</td>" .
"<td>" . $data->email . "</td>" .
"<td>" . $data->phone . "</td>" .
"<td>" . $data->status . "</td>" .
@@ -159,7 +161,7 @@ public function edit($id)
$userHasRoles = DB::table('model_has_roles')
->join('users', 'users.id', '=', 'model_has_roles.model_id')
->join('roles','roles.id','=','model_has_roles.role_id')
->select('users.id as id','roles.name as role_name','users.name as name','users.directorate','users.position')
->select('users.id as id','roles.name as role_name','users.name as name','users.department','users.position')
->where('users.id','=', $id)
->get();
if($userHasRoles =='[]'){
@@ -217,45 +219,45 @@ public function update(Request $request, $id)
}else{
$role = Role::find($id);
if(!(empty($request->permission_name))){
if(in_array('C_driver_car',$request->permission_name))
{$role->givePermissionTo('C_driver_car');}
else{$role->revokePermissionTo('C_driver_car');}
if(in_array('U_driver_car',$request->permission_name))
{$role->givePermissionTo('U_driver_car');}
else{$role->revokePermissionTo('U_driver_car');}
if(in_array('R_driver_car',$request->permission_name))
{$role->givePermissionTo('R_driver_car');}
else{$role->revokePermissionTo('R_driver_car');}
if(in_array('App_booking',$request->permission_name))
{$role->givePermissionTo('App_booking');}
else{$role->revokePermissionTo('App_booking');}
if(in_array('U_booking',$request->permission_name))
{$role->givePermissionTo('U_booking');}
else{$role->revokePermissionTo('U_booking');}
if(in_array('C_booking',$request->permission_name))
{$role->givePermissionTo('C_booking');}
else{$role->revokePermissionTo('C_booking');}
if(in_array('C_user',$request->permission_name))
{$role->givePermissionTo('C_user');}
else{$role->revokePermissionTo('C_user');}
if(in_array('R_user',$request->permission_name))
{$role->givePermissionTo('R_user');}
else{$role->revokePermissionTo('R_user');}
if(in_array('R_users_role',$request->permission_name))
{$role->givePermissionTo('R_users_role');}
else{$role->revokePermissionTo('R_users_role');}
if(in_array('App_user',$request->permission_name))
{$role->givePermissionTo('App_user');}
else{$role->revokePermissionTo('App_user');}
if(in_array('C_role',$request->permission_name))
{$role->givePermissionTo('C_role');}
else{$role->revokePermissionTo('C_role');}
if(in_array('U_role',$request->permission_name))
{$role->givePermissionTo('U_role');}
else{$role->revokePermissionTo('U_role');}
if(in_array('R_role',$request->permission_name))
{$role->givePermissionTo('R_role');}
else{$role->revokePermissionTo('R_role');}
if(in_array('Create_driver_car',$request->permission_name))
{$role->givePermissionTo('Create_driver_car');}
else{$role->revokePermissionTo('Create_driver_car');}
if(in_array('Update_driver_car',$request->permission_name))
{$role->givePermissionTo('Update_driver_car');}
else{$role->revokePermissionTo('Update_driver_car');}
if(in_array('Read_driver_car',$request->permission_name))
{$role->givePermissionTo('Read_driver_car');}
else{$role->revokePermissionTo('Read_driver_car');}
if(in_array('Approve_booking',$request->permission_name))
{$role->givePermissionTo('Approve_booking');}
else{$role->revokePermissionTo('Approve_booking');}
if(in_array('Update_booking',$request->permission_name))
{$role->givePermissionTo('Update_booking');}
else{$role->revokePermissionTo('Update_booking');}
if(in_array('Create_booking',$request->permission_name))
{$role->givePermissionTo('Create_booking');}
else{$role->revokePermissionTo('Create_booking');}
if(in_array('Create_user',$request->permission_name))
{$role->givePermissionTo('Create_user');}
else{$role->revokePermissionTo('Create_user');}
if(in_array('Read_user',$request->permission_name))
{$role->givePermissionTo('Read_user');}
else{$role->revokePermissionTo('Read_user');}
if(in_array('Read_users_role',$request->permission_name))
{$role->givePermissionTo('Read_users_role');}
else{$role->revokePermissionTo('Read_users_role');}
if(in_array('Approve_user',$request->permission_name))
{$role->givePermissionTo('Approve_user');}
else{$role->revokePermissionTo('Approve_user');}
if(in_array('Create_role',$request->permission_name))
{$role->givePermissionTo('Create_role');}
else{$role->revokePermissionTo('Create_role');}
if(in_array('Update_role',$request->permission_name))
{$role->givePermissionTo('Update_role');}
else{$role->revokePermissionTo('Update_role');}
if(in_array('Read_role',$request->permission_name))
{$role->givePermissionTo('Read_role');}
else{$role->revokePermissionTo('Read_role');}
return 'successfully permissions changed for selected role';}
else{$role->revokePermissionTo(Permission::all());
return "No permissions assigned";
133 changes: 91 additions & 42 deletions app/Http/Controllers/userController.php
Original file line number Diff line number Diff line change
@@ -6,6 +6,7 @@

use App\User;
use Auth;
use App;
use illuminate\Http\QueryException;
use Validator;
use DB;
@@ -15,21 +16,30 @@
class userController extends Controller
{
public function __construct(){
return $this->middleware('auth');

$this->middleware('auth');
$this->middleware(['permission:Read_user|Approve_user|Create_user']);
}

public function index(){
$countOfUsers = DB::table('users')->where('status',true)->count();

$dataOfusersTable = User::where('status',true)->orWhere('status',false)->paginate(5);
$dataOfusersTable = User::where('status',true)->orWhere('status',false)->orderBy('created_at','DESC')->paginate(5);

return view('/users/index')->with(['dataOfusersTable'=>$dataOfusersTable,'countOfUsers'=>$countOfUsers]);
}
public function searchUser(Request $request){
if(App::getLocale()=='fa'){
$update = 'تجدید';
$notFound = 'به این مشخصات معلوماتی وجود ندارد';
}else{
$update = 'Update';
$notFound = 'Data not found!';
}

$searchOn = $request->input('searchon');
$searchInput= $request->input('searchInp');
if($searchOn == "user_id"){

if($searchOn == "id"){
$dataArray = DB::table('users')->where("id",'LIKE',"%$searchInput%")->get();
$dataCount = DB::table('users')->where("id",'LIKE',"%$searchInput%")->count();}

@@ -41,43 +51,53 @@ public function searchUser(Request $request){
$dataArray = DB::table('users')->where("position",'LIKE',"%$searchInput%")->get();
$dataCount = DB::table('users')->where("position",'LIKE',"%$searchInput%")->count();}

if($searchOn == "directorate"){
$dataArray = DB::table('users')->where("directorate",'LIKE',"%$searchInput%")->get();
$dataCount = DB::table('users')->where("directorate",'LIKE',"%$searchInput%")->count();}
if($searchOn == "department"){
$dataArray = DB::table('users')->where("department",'LIKE',"%$searchInput%")->get();
$dataCount = DB::table('users')->where("department",'LIKE',"%$searchInput%")->count();}

if($searchOn == "status"){
if($searchInput == 'a'){$searchInput = str_replace('a', false, false);}
$dataArray = DB::table('users')->where("status",'LIKE',"%$searchInput%")->get();
$dataCount = DB::table('users')->where("status",'LIKE',"%$searchInput%")->count();}
if($searchOn == "id"){
$dataArray = DB::table('users')->where("id",'LIKE',"%$searchInput%")->get();
$dataCount = DB::table('users')->where("id",'LIKE',"%$searchInput%")->count();}
if($searchOn == "email"){
$dataArray = DB::table('users')->where("email",'LIKE',"%$searchInput%")->get();
$dataCount = DB::table('users')->where("email",'LIKE',"%$searchInput%")->count();}
if($searchOn == "approver_user_id"){
$dataArray = DB::table('users')->where("approver_user_id",'LIKE',"%$searchInput%")->get();
$dataCount = DB::table('users')->where("approver_user_id",'LIKE',"%$searchInput%")->count();}
if($searchOn == "phone"){
$dataArray = DB::table('users')->where("phone",'LIKE',"%$searchInput%")->get();
$dataCount = DB::table('users')->where("phone",'LIKE',"%$searchInput%")->count();}

if($dataCount >0 ){

foreach ($dataArray as $data) {
if($data->status === false){$data->status = 'False';}else{$data->status='True';}
if($data->status === false){$data->status = 'False';}else if($data->status == ''){$data->status='';}else{$data->status='True';}
echo
"<tr>".
"<td>" . $data->id . "</td>".
"<td>" . $data->name . "</td>".
"<td>" . $data->position . "</td>" .
"<td>" . $data->directorate . "</td>" .
"<td>" . $data->department . "</td>" .
"<td>" . $data->email . "</td>" .
"<td>" . $data->phone . "</td>" .
"<td>" . $data->status . "</td>" .
"<td>" . $data->approver_user_id . "</td>" .
"<td>" . $data->created_at . "</td>" .
"<td class='Af'>" . $data->updated_at . "</td>" .
"<td><a href='/cars/$data->id' id='$data->id' class='btn btn-primary updateBtn'>Update</a></td>
"<td><a href='/cars/$data->id' id='$data->id' class='btn btn-primary btn-sm updateBtn'>$update</a></td>
</tr>";
}}

else{return "<tr><td colspan='8'><div class='card bg-light text-dark'><div class='card-body text-center' id='notFound'><h1>Data not found!</h1></div></div></td></tr>";}
else{

return "<tr><td colspan='11'><div class='card bg-light text-dark'><div class='card-body text-center' id='notFound'><h1>$notFound</h1></div></div></td></tr>";}

}
public function pendings(){

$countPendings = DB::table('users')->where("status",null)->count();
$pendings = User::where('status',null)->paginate(5);
$pendings = User::where('status',null)->orderBy('created_at','DESC')->paginate(5);
$permissions = DB::table('permissions')->get();

return view('/users/pendings')->with(['pendings'=>$pendings,"countPendings"=>$countPendings,'permissions'=>$permissions
@@ -115,9 +135,9 @@ public function store(Request $request)
$rules = array(
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:6', 'confirmed'],
'position' =>['required','string','min:4'],
'directorate'=>['required','string','min:4'],
'password' => ['required', 'string', 'min:8', 'confirmed','regex:/^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$/'],
'position' =>['required','string','min:3'],
'department'=>['required','string','min:3'],
'phone' =>['required','regex:/^07[0-9]{8}/','unique:users'],
);
$validator = Validator::make($request->all(),$rules,$passRegexMessage);
@@ -133,7 +153,7 @@ public function store(Request $request)
'name' => $request->input('name'),
'email' => $request->input('email'),
'position' =>$request->input('position'),
'directorate' => $request->input('directorate'),
'department' => $request->input('department'),
'phone' => $request->input('phone'),
'status' =>$request->input('status'),
'created_at'=>now(),
@@ -143,7 +163,10 @@ public function store(Request $request)
]);

$id = DB::getPdo()->lastInsertId();
return 'successfully done '. $id ;
if(App::getLocale()=="fa"){
return "استفاده کننده جدید با آی دی $id موفقانه به سیستم علاوه گردید.";
}
return 'Successfully new user with '. $id . 'saved to system' ;
}
catch(QueryException $e){
return $e.getMessage();
@@ -194,10 +217,21 @@ public function approveUser(Request $request,$id){
$user->approver_user_id =Auth::user()->id;
$user->save();
if($user->status == 'true'){
return "successfully Approved";}
if(App::getLocale()=='fa'){
return "موفقانه در سیستم علاوه گردید.";
}
return "successfully Approved";

}
if($user->status == 'false'){
if(App::getLocale()=='fa'){
return "موفقانه رد گردید";
}
return "successfully Rejected";}
if($user->status == ''){
if(App::getLocale()=='fa'){
return "هنوز هم به حالت معلق باقی ماند.";
}
return "pending not abrogated";}
}catch(QueryException $e){
return $e->getMessage();
@@ -210,9 +244,14 @@ public function approveUser(Request $request,$id){

}
function changePassword(Request $request, $id){
if(App::getLocale()=='fa'){
$passRegexMessage = [
'new_password.regex' => 'مقدار پسورد از 8 رقم کمتر نباشد، حد اقل یک سمبول ، یک شماره و یک حرف ضروری می باشد.'
];
}else{
$passRegexMessage = [
'new_password.regex'=>' Password must has 8 letters, at least one letter, one number and one special charecter ',
];
];}

$rules = array(
'previous_password' =>['required'],
@@ -235,14 +274,20 @@ function changePassword(Request $request, $id){
DB::table('users')->update([
'password'=>Hash::make($npass)
]);
if(App::getLocale()=='fa'){
return "پسورد شما موفقانه تغیر یافت.";
}
return "Your passsword has changed successfully";
}catch(QueryException $e){
return $e.getMessage();
}
}
}else{
echo "The password confirmation does not match.";
return $npass . " ".$cnpass;
if(App::getLocale()=='fa'){
return "پسورد ها با هم مچ نمی کنند.";
}
return "The password confirmation does not match.";

}
}else{
return "wrong password";
@@ -261,14 +306,14 @@ public function update(Request $request, $id)
$phone = $user->phone = $request->input('phone');
$pass =$user->password = Hash::make($request->input('password'));
$position = $user->position = $request->input('position');
$directorate = $user->directorate =$request->input('directorate');
$department = $user->department =$request->input('department');
$status = $status = $request->input('status');
$rules = array(
'position' =>['required','string','min:4'],
'directorate'=>['required','string','min:4'],
'position' =>['required','string','min:3'],
'department'=>['required','string','min:3'],
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255'],
// 'password' => ['required', 'string', 'min:6', 'confirmed'],
// 'password' => ['required', 'string', 'min:8', 'confirmed'],
'phone' =>['required','regex:/^07[0-9]{8}/'],
);
if(strpos($requestUrl,'/home')){
@@ -279,18 +324,29 @@ public function update(Request $request, $id)

if(!($data['email']==$email)){
$countEmail = DB::table('users')->where('email',$email)->count();
if($countEmail>0){ return "Duplicate Email"; }
if($countEmail>0){
if(App::getLocale()=='fa'){
return "این ایمیل در سیستم موجود است.";
}
return "Duplicate Email"; }
}

if(!($data['phone']==$phone)){
$countPhone = DB::table('users')->where('phone',$phone)->count();
if($countPhone>0){ return "Duplicate phone number"; }
if($countPhone>0){
if(App::getLocale()=='fa'){
return "این شماره تلفون در سیستم موجود است.";
}
return "Duplicate phone number"; }
}

try{
DB::table('users')
->where('id', $id)
->update(['name' => $name,'email'=>$email,'phone'=>$phone,'position'=>$position,'directorate'=>$directorate]);
->update(['name' => $name,'email'=>$email,'phone'=>$phone,'position'=>$position,'department'=>$department]);
if(App::getLocale()=='fa'){
return "موفقانه تجدید گردید.";
}
return "successfully Updated";
}
catch(QueryException $e){$e.getMessage();}
@@ -306,6 +362,9 @@ public function update(Request $request, $id)
if($user->status == 'true'){
return "successfully Approved";}
if($user->status == 'false'){
if(App::getLocale()=='fa'){
return "موفقانه رد گردید.";
}
return "successfully Rejected";}

}catch(QueryException $e){
@@ -315,16 +374,6 @@ public function update(Request $request, $id)
return "don't change on select options";
}
}

//

// $passRegexMessage = ['password.regex'=>' Password must has 8 letters, at least one letter, one number and one special charecter ',
// 'phone.regex'=>'phone number must start with 07 and not be greater than 10 numbers'];



// else{
// }
}

/**
1 change: 1 addition & 0 deletions app/Http/Kernel.php
Original file line number Diff line number Diff line change
@@ -31,6 +31,7 @@ class Kernel extends HttpKernel
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\App\Http\Middleware\Language::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
25 changes: 25 additions & 0 deletions app/Http/Middleware/Language.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Foundation\Application;
use Illuminate\Http\Request;
use Illuminate\Routing\Redirector;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Session;

class Language
{
public function handle($request, Closure $next)
{
if (Session::has('applocale') AND array_key_exists(Session::get('applocale'), Config::get('languages'))) {
App::setLocale(Session::get('applocale'));
}
else { // This is optional as Laravel will automatically set the fallback language if there is none specified
App::setLocale(Config::get('app.fallback_locale'));
}
return $next($request);
}
}
2 changes: 1 addition & 1 deletion app/User.php
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ class User extends Authenticatable
* @var array
*/
protected $fillable = [
'name', 'email', 'password','position','phone','directorate'
'name', 'email', 'password','position','phone','department'
];

/**
2 changes: 1 addition & 1 deletion app/booking.php
Original file line number Diff line number Diff line change
@@ -10,6 +10,6 @@ class booking extends Model
protected $fillable=[
'start_time','end_time', 'destination', 'user_id','car_id', 'driver_id'
];
protected $dates = ['pickup_time','return_time','approval_pickup_time','approval_return_time','created_at', 'updated_at'];
protected $date = ['pickup_time','return_time','approval_pickup_time','approval_return_time','created_at', 'updated_at'];

}
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@
"license": "MIT",
"require": {
"php": "^7.1.3",
"doctrine/dbal": "^2.9",
"fideloper/proxy": "^4.0",
"laravel/framework": "5.7.*",
"laravel/tinker": "^1.0",
233 changes: 232 additions & 1 deletion composer.lock
2 changes: 1 addition & 1 deletion config/app.php
Original file line number Diff line number Diff line change
@@ -80,7 +80,7 @@
|
*/

'locale' => 'en',
'locale' => 'fa',

/*
|--------------------------------------------------------------------------
6 changes: 6 additions & 0 deletions config/languages.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?php

return [
'en' => 'English',
'fa' => 'فارسی',
];
33 changes: 33 additions & 0 deletions database/migrations/2019_03_18_033754_rename_directorate_user.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class RenameDirectorateUser extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
//
$table->renameColumn('directorate','department');
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
//
});
}
}
7 changes: 7 additions & 0 deletions public/css/bootstrap-rtl.min.css

Large diffs are not rendered by default.

260 changes: 156 additions & 104 deletions public/js/crud.js

Large diffs are not rendered by default.

152 changes: 152 additions & 0 deletions resources/lang/en/msg.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
<?php
return[
'Home'=>'Home',
'Cars'=>'Cars ',
'Drivers'=>'Drivers',
'Bookings'=>' Bookings',
'Booking'=>' Booking',
'Pendings: '=>'Pendings: ',
'Users'=>'Users',
'Access controller'=>'Access controller',
'Users role'=>'Users role',
'Roles'=>' Roles',
'Permissions'=>'Permissions ',
'Users permission'=>'Users permission',
'language'=>'language',
'Persian'=>'Persian',
'English'=>'English',
'My pending bookings'=>'My pending bookings',
'Pending bookings number: '=>'Pending bookings number: ',
'My approved bookings'=>'My approved bookings',
'My rejected bookings'=>'My rejected bookings',
'Bookings approved by me'=>'Bookings approved by me',
'Bookings rejected by me'=>'Bookings rejected by me',
'Booking_Id'=>'Booking_Id',
'User'=>'User',
'Destination'=>'Destination',
'Pickup_time'=>'Pickup_time ',
'Return_time'=>'Return_time',
'Count'=>'Count',
'Description'=>'Description',
'Approval'=>'Approval',
'Created_at'=>'Created_at',
'Updated_at'=>'Updated_at',
'Dashboard'=>'Dashboard',
'Total users: '=>'Total users: ',
'Approved users: '=>'Approved users: : ',
'Rejected users: '=>'Rejected users: ',
'Pending users: '=>'Pending users: ',
'Total bookings: '=>'Total bookings: ',
'Pending bookings: '=>'Pending bookings: ',
'Approved bookings: '=>'Approved bookings: ',
'Rejected bookings: '=>'Rejected bookings: ',
'Total cars: '=>'Total cars: ',
'Good condition cars: '=>'Good condition cars: ',
'Damaged cars: '=>'Damaged cars: ',
'Total drivers: '=>'Total drivers: ',
'Present drivers: '=>'Present drivers: ',
'Absent drivers: '=>'Absent drivers: ',
'My profile'=>'My profile',
'ID'=>'ID',
'Name'=>'Name',
'Position'=>'Position',
'Department'=>'Department',
'Email'=>'Email',
'Phone'=>'Phone number ',
'Change password'=>'Change password',
'Update'=>'Update',
'One month ago of your activities'=>'One month ago of your activities',
'Total of my approved bookings: '=>'Total of your approved bookings: ',
'Total of my rejected bookings: '=>'Total of your rejected bookings: ',
'Total of my pending bookings: '=>'Total of your pending bookings: ',
'Total of bookings approved by you: '=>'Total of bookings approved by you: ',
'Total of bookings rejected by you: '=>' Total of bookings rejected by you: ',
'Save'=>'Save',
'Cancel'=>'Cancel',
'Current password'=>'Current password',
'Password'=>'Passsword',
'Confirm password'=>'Confirm password',
'New password'=>'New password ',
'Confirm new password'=>'Confirm new password',
'Action'=>'Action',
'Pending' =>'Pending',
'Your request for membership is waiting for approving!'=>'Your request for membership is waiting for approving!',
'Approval_description'=>'Approval_description',
'Approval_pickup_time'=>'Approval_pickup_time',
'Approval_return_time'=>'Approval_return_time',
'Approver'=>'Approver',
'Driver'=>'Driver',
'Car_plate'=>'Car_plate',
'Change'=>'Change',
'Bookings rejected by you '=>'Bookings rejected by you ',
'Bookings approved by you'=>'Bookings approved by you',
'Register new car'=>'Register new car',
'Search by'=>'Search by',
'Plate number'=>'Plate number',
'Car color'=>'Car color',
'Car type'=>'Car type',
'Car model'=>'Car model',
'Driver Id'=>'Driver Id',
'Status'=>'Status',
'New car registeration'=>'New car registeration',
'Plate number'=>'Plate number',
'Color'=>'Color',
'Model'=>'Model',
'Type'=>'Type',
'Search'=>'Search',
'Phone number'=>'Phone number',
'Name'=>'Name',
'Father name'=>'Father name',
'Driver existence'=>'Driver existense',
'Register new driver'=>'Register new driver',
'Present'=>'Present',
'Absent'=>'Absent',
'Insert name'=>'Insert name',
'Insert father name'=>'Insert father name',
'Insert phone number'=>'Insert phone number',
'New driver registeration'=>'New driver registeration',
'Approve or reject'=>'Approve or reject',
'Approve' => 'Approve or reject',
'TRUE'=>'TRUE',
'FALSE'=>'FALSE',
'Select a car'=>'Select a car',
'Select a driver'=>'Select a driver',
'Car'=>'Car',
'Please write cause of approval or rejection'=>'Please write cause of approval or rejection',
'Booking approval'=>'Booking approval',
'There are no pending booking wait for approving'=>'There are no pending booking wait for approving',
'Approved: '=>'Approved: ',
'Rejected: '=>'Rejected: ',
'Approver_user'=>'Approver_user',
'Approved'=>'Approved',
'Rejected'=>'Rejected',
'Approver Id'=>'Approver Id',
'GIS'=>'GIS',
'Administration'=>'Administration',
'Maslaki'=>'Maslaki',
'Deputy Directorate of System development'=>'Deputy Directorate of System development',
'Select a department'=>'Select a department',
'Register new user'=>'Register new user',
'Total approved users: '=>'Total approved users: ',
'New user registeration'=>'New user registeration',
'Give/Change role'=>'Give/Change role',
'User Id: '=>'User Id: ',
'User name: '=>'User name: ',
'Role'=>'Role',
'User role'=>'User role',
'Users Permission'=>'Users permission',
'Note: '=>'Note: permissions with firebrick background are belogns to roles, for changing please refer to user roles.',
'give/change permission'=>'Give/change permission',
'Create new role'=>'Create new role',
'New role creation'=>'New role creation',
'Assign permission'=>'giving and revoking permission',
'Total pendings users: '=>'Total pendings users: ',
'Insert your destination'=>'Insert your destination',
'Count of persons'=>'Count of persons',
'More description'=>'More description',
'Car booking'=>'Car booking',
'Reserve'=>'Reserve',
'Prepared'=>'Prepared',
'Damaged'=>'Damaged',
''=>'',
];
163 changes: 163 additions & 0 deletions resources/lang/fa/msg.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
<?php
return[
'Home'=>'خانه',
'Cars'=>'موتر ها',
'Drivers'=>'راننده ها',
'Bookings'=>'رزرو ها',
'Booking' =>' پیشنهاد موتر ',
'Pendings'=>'معلق ها',
'Users'=>'استفاده کننده ها',
'Access controller'=>'کنترول دسترسی به اطلاعات',
'Users role'=>'نقش استفاده کننده ها',
'Roles'=>'نقش ها',
'Permissions'=>'صلاحیت ها',
'Users permission'=>'صلاحیت های استفاده کننده ها',
'language'=>'زبان',
'Persian'=>'فارسی',
'English'=>'انگلیسی',
'My pending bookings'=>'رزرو های معلق من',
'My approved bookings'=>'رزرو های تصویب شدۀ من',
'My rejected bookings'=>'رزرو های رد شدۀ من',
'Bookings approved by me'=>'رزرو های تصویب شده توسط من',
'Bookings rejected by me'=>'رزرو های رد شده توسط من',
'Booking_Id'=>'آی دی رزرو',
'User'=>'استفاده کننده',
'Destination'=>'مقصد',
'Pickup_time'=>'زمان رفتن',
'Return_time'=>'زمان برگشت',
'Count'=>'تعداد',
'Description'=>'شرح',
'Approval'=>'قبولی',
'Created_at'=>'تاریخ ایجاد',
'Updated_at'=>'تاریخ تجدید',
'Dashboard'=>'خلاصه معلومات',
'Total users: '=>'مجموعه استفاده کننده ها: ',
'Approved users: '=>' استفاده کننده های تصویب شده: ',
'Rejected users: '=>'استفاده کننده های رد شده: ',
'Pending users: '=>'استفاده کننده های معلق: ',
'Total bookings: '=>'مجموعه رزرو ها: ',
'Pending bookings: '=>'تعداد رزرو های معلق : ',
'Pending bookings number: '=>'تعداد رزرو های معلق : ',
'Approved bookings: '=>'رزرو های تصویب شده: ',
'Rejected bookings: '=>'رزرو های رد شده: ',
'Total cars: '=>'مجموعه موتر ها: ',
'Good condition cars: '=>'موتر های جور: ',
'Damaged cars: '=>'موتر های خراب: ',
'Total drivers: '=>'مجموعه راننده ها: ',
'Present drivers: '=>'راننده های حاضر: ',
'Absent drivers: '=>'راننده های غیر حاضر: ',
'My profile'=>'مشخصات من',
'ID'=>'آی دی',
'Name'=>'نام',
'Position'=>'وظیفه',
'Department'=>' بخش',
'Email'=>'ایمیل',
'Phone'=>'شماره تلفون',
'Change password'=>'تغییر رمز پسورد',
'Update'=>'تجدید',
'One month ago of your activities'=>'فعالیت های یک ماه گذشته ',
'Total of my approved bookings: '=>' مجموعه رزرو های تصویب شدۀ شما: ',
'Total of my rejected bookings: '=>'مجموعه رزرو های رد شدۀ شما: ',
'Total of my pending bookings: '=>'مجموعه رزرو های معلق شما: ',
'Total of bookings approved by you: '=>'مجموعه رزرو های تصویب شده توسط شما: ',
'Total of bookings rejected by you: '=>' مجموعه رزرو های رد شده توسط شما: ',
'Save'=>'ذخیره',
'Cancel'=>'لغو',
'Current password'=>'پسورد فعلی ',
'New password'=>'پسورد جدید ',
'Password'=>'پسورد',
'Confirm password'=>' تاییدی پسورد',
'Confirm new password'=>'تأییدی پسورد جدید',
'Action'=>'عمل',
'Pending'=>'معلق',
'Your request for membership is waiting for approving!'=>'!پیشنهاد شما منتظر تصویب از سوی اداره می باشد',
'Approver_description'=>'شرح تصویب کننده',
'Approval_pickup_time'=>'زمان رفتن',
'Approval_return_time'=>'زمان برگشت',
'Approver'=>'تصویب کننده',
'Driver'=>'راننده',
'Car_plate'=>'پلیت موتر',
'Change'=>'تغییر',
'Bookings rejected by you '=>'رزرو را شما رد نموده اید',
'Bookings approved by you'=>' رزرو را شما تصویب نموده اید ',
'Register new car'=>' ثبت موتر جدید',
'Search by'=>'جستجو توسط ',
'Plate number'=>'شماره پلیت',
'Car color'=>'رنگ موتر ',
'Car type'=>'نوع موتر',
'Car model'=>'مودل موتر',
'Driver Id'=>'آی دی راننده',
'Status'=>'حالت',
'New car registeration'=>' ثبت موتر جدید ',
'Color'=>'رنگ',
'Model'=>'مودل',
'Type'=>'نوع',
'Search'=>'جستجو',
'Phone number'=>'شماره تلفون',
'Name'=>'نام',
'Father name'=>'نام پدر',
'Driver existence'=>'موجودیت راننده',
'Register new driver'=>'ثبت راننده جدید ',
'Present'=>'حاضر',
'Absent'=>'غیر حاضر',
'Insert name'=>'نام را وارد کنید ',
'Insert father name'=>'نام پدر را وارد کنید',
'Insert phone number'=>'شماره تلفون را وارد کنید',
'New driver registeration'=>'ثبت راننده جدید ',
'Approve or reject'=>'تصویب یا رد',
'Approve' => 'تصویب یا رد',
'TRUE'=>'تصویب',
'FALSE'=>'رد',
'Select a car'=>'یک موتر را انتخاب کنید',
'Select a driver'=>'یک راننده را انتخاب کنید',
'Car'=>'موتر',
'Please write cause of approval or rejection'=>'لطفاً علت تصویب و یا رد را بنویسید',
'Booking approval'=>'تصویب رزرو',
'There are no pending booking wait for approving'=>'کدام رزروی برای تصویب وجود ندارد.',
'Approved: '=>'تصویب شده: ',
'Rejected: '=>': رد شده',
'Pendings: '=>'معلق : ',
'Approver_user'=>'تصویب کننده',
'Approved'=>'تصویب شده',
'Rejected'=>'رد شده',
'Approver Id'=>' آی دی تصویب کننده',
'GIS'=>'معاونیت جی آی اس',
'Administration'=>'معاونیت مالی و اداری ',
'Maslaki'=>'معاونیت مسلکی',
'Deputy Directorate of System development'=>'معاونیت انسجام امور',
'Select a department'=>'یک بخش را انتخاب کن',
'Register new user'=>'ثبت استفاده کننده جدید',
'Total approved users: '=>'مجموعه استفاده کننده های تصویب شده: ',
'New user registeration'=>'ثبت نام استفاده کننده جدید',
'Give/Change role'=>'دادن/تغیر نقش',
'User Id: '=>'آی دی استفاده کننده: ',
'User name: '=>'نام استفاده کننده: ',
'Role'=>'نقش',
'User role'=>'نقش استفاده کننده ها',
'Users Permission'=>'صلاحیت استفاده کننده ها',
'Note: '=>' یاد داشت: صلاحیت های که به رنگ جیگری هستند مربوط نقش ها می شود، برای تغیر آن به بخش نقش ها مراجعه کنید.',
'give/change permission'=>'دادن/تغیر صلاحیت',
'Create new role'=>'ایجاد نقش جدید',
'New role creation'=>'ایجاد نقش جدید',
'Assign permission'=>'دادن و گرفتن نقش',
'Total pendings users: '=>'مجموعه استفاده کننده های معلق: ',
'Insert your destination'=>'جای رفتن تان را بنویسید.',
'Count of persons'=>'تعداد اشخاص',
'More description'=>'وضاحت بیشتر',
'Car booking'=>'رزرو موتر',
'Reserve'=>'رزرو',
'Damaged'=>'خراب',
'Prepared'=>'آماده',
'NULL'=>'خالی',
''=>'',
''=>'',
''=>'',
''=>'',
''=>'',
''=>'',
''=>'',
''=>'',
''=>'',
''=>'',
''=>'',
];
158 changes: 158 additions & 0 deletions resources/lang/fa/validation.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
<?php

return [

/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/

'accepted' => 'The :attribute must be accepted.',
'active_url' => 'The :attribute is not a valid URL.',
'after'=>'باید :attriibute بعد از :date بیاید.',
'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
'alpha' => 'The :attribute may only contain letters.',
'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.',
'alpha_num' => 'The :attribute may only contain letters and numbers.',
'array' => 'The :attribute must be an array.',
'before' => 'The :attribute must be a date before :date.',
'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
'between' => [
'numeric' =>':attribute باید از :min الی :max قیمت بگیرد.',
'file' => 'The :attribute must be between :min and :max kilobytes.',
'string'=> ':attribute باید از :min الی :max حرف داشته باشد',
'array' => 'The :attribute must have between :min and :max items.',
],
'boolean' => 'The :attribute field must be true or false.',
'confirmed' => 'The :attribute confirmation does not match.',
'date'=>':attribute تاریخ صحیح نیست',
'date_equals' => 'The :attribute must be a date equal to :date.',
'date_format' => 'The :attribute does not match the format :format.',
'date_format' => ':attribute چارچوب تاریخ را ندارد',
'different' => 'The :attribute and :other must be different.',
'digits' => ':attribute باید :digits عدد باشد.',
'digits_between' => 'The :attribute must be between :min and :max digits.',
'digits_between' => ':attribute حتمی باید از :min الی :max باشد.',
'dimensions' => 'The :attribute has invalid image dimensions.',
'distinct' => ':attribute تکراری می باشد.',
'email' => 'The :attribute must be a valid email address.',

'email' => ':attribute باید یک ایمیل درست باشد.',
'exists' => 'The selected :attribute is invalid.',
'file' => 'The :attribute must be a file.',
'filled' => 'The :attribute field must have a value.',
'gt' => [
'numeric' => 'The :attribute must be greater than :value.',
'file' => 'The :attribute must be greater than :value kilobytes.',
'string' => 'The :attribute must be greater than :value characters.',
'array' => 'The :attribute must have more than :value items.',
],
'gte' => [
'numeric' => 'The :attribute must be greater than or equal :value.',
'file' => 'The :attribute must be greater than or equal :value kilobytes.',
'string' => 'The :attribute must be greater than or equal :value characters.',
'array' => 'The :attribute must have :value items or more.',
],
'image' => 'The :attribute must be an image.',
'in' => 'The selected :attribute is invalid.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The :attribute must be an integer.',
'ip' => 'The :attribute must be a valid IP address.',
'ipv4' => 'The :attribute must be a valid IPv4 address.',
'ipv6' => 'The :attribute must be a valid IPv6 address.',
'json' => 'The :attribute must be a valid JSON string.',
'lt' => [
'numeric' => 'The :attribute must be less than :value.',
'file' => 'The :attribute must be less than :value kilobytes.',
'string' => 'The :attribute must be less than :value characters.',
'array' => 'The :attribute must have less than :value items.',
],
'lte' => [
'numeric' => 'The :attribute must be less than or equal :value.',
'file' => 'The :attribute must be less than or equal :value kilobytes.',
'string' => 'The :attribute must be less than or equal :value characters.',
'array' => 'The :attribute must not have more than :value items.',
],
'max' => [
'numeric' => ':attribute نباید بزرگتر از :max باشد.',
'file' => 'The :attribute may not be greater than :max kilobytes.',
'string' => ':attribute نباید بیشتر از :max حروف داشته باشد.',
'array' => 'The :attribute may not have more than :max items.',
],
'mimes' => 'The :attribute must be a file of type: :values.',
'mimetypes' => 'The :attribute must be a file of type: :values.',
'min' => [
'numeric' => ':attribute حد اقل از :min کمتر نباشد .',
'file' => 'The :attribute must be at least :min kilobytes.',
'string' => ':attribute حد اقل از :min کمتر حروف نداشته باشد. ',
'array' => 'The :attribute must have at least :min items.',
],
'not_in' => 'The selected :attribute is invalid.',
'not_regex' => 'The :attribute format is invalid.',
'numeric' => ':attribute باید نمبر باشد.',
'present' => 'The :attribute field must be present.',
'regex' => 'The :attribute format is invalid.',

'required' => 'The :attribute field is required.',
'required' => ':attribute ضروری می باشد',

'required_if' => 'The :attribute field is required when :other is :value.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :values is present.',
'required_with_all' => 'The :attribute field is required when :values are present.',
'required_without' => 'The :attribute field is required when :values is not present.',
'required_without_all' => 'The :attribute field is required when none of :values are present.',
'same' => 'The :attribute and :other must match.',
'size' => [
'numeric' => 'The :attribute must be :size.',
'file' => 'The :attribute must be :size kilobytes.',
'string' => 'The :attribute must be :size characters.',
'array' => 'The :attribute must contain :size items.',
],
'starts_with' => 'The :attribute must start with one of the following: :values',
'string' => 'The :attribute must be a string.',
'string' => ':attribute باید حروفی باشد.',
'timezone' => 'The :attribute must be a valid zone.',
'unique' => 'The :attribute has already been taken.',
'unique' => ':attribute تکراری است.',
'uploaded' => 'The :attribute failed to upload.',
'url' => 'The :attribute format is invalid.',
'uuid' => 'The :attribute must be a valid UUID.',

/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/

'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],

/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap our attribute placeholder
| with something more reader friendly such as "E-Mail Address" instead
| of "email". This simply helps us make our message more expressive.
|
*/

'attributes' => [],

];
222 changes: 113 additions & 109 deletions resources/views/auth/register.blade.php
Original file line number Diff line number Diff line change
@@ -33,125 +33,129 @@
<a href="{{ url('/home') }}" class="navbar-brand">
<img width='220' height='80' src="{{ asset('img/logo.png') }}"></a>
</div>
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Register') }}</div>

<div class="card-body">
<form method="POST" action="{{ route('register') }}">
@csrf

<div class="form-group row">
<label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>

<div class="col-md-6">
<input id="name" type="text" class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" name="name" value="{{ old('name') }}" required autofocus>

@if ($errors->has('name'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('name') }}</strong>
</span>
@endif
</div>
</div>

<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Register') }}</div>

<div class="card-body">
<form method="POST" action="{{ route('register') }}">
@csrf


<div class="form-group row">
<label for="position" class="col-md-4 col-form-label text-md-right">{{ __('Position') }}</label>

<div class="col-md-6">
<input id="position" type="text" class="form-control{{ $errors->has('position') ? ' is-invalid' : '' }}" name="position" value="{{ old('position') }}" required autofocus>

@if ($errors->has('position'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('position') }}</strong>
</span>
@endif
<label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>

<div class="col-md-6">
<input id="name" type="text" class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" name="name" value="{{ old('name') }}" required autofocus>

@if ($errors->has('name'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('name') }}</strong>
</span>
@endif
</div>
</div>
</div>

<div class="form-group row">
<label for="directorate" class="col-md-4 col-form-label text-md-right">{{ __('Directorate') }}</label>

<div class="col-md-6">
<input id="position" type="text" class="form-control{{ $errors->has('directorate') ? ' is-invalid' : '' }}" name="directorate" value="{{ old('directorate') }}" required autofocus>

@if ($errors->has('directorate'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('directorate') }}</strong>
</span>
@endif

<div class="form-group row">
<label for="position" class="col-md-4 col-form-label text-md-right">{{ __('Position') }}</label>

<div class="col-md-6">
<input id="position" type="text" class="form-control{{ $errors->has('position') ? ' is-invalid' : '' }}" name="position" value="{{ old('position') }}" required autofocus>

@if ($errors->has('position'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('position') }}</strong>
</span>
@endif
</div>
</div>
</div>

<div class="form-group row">
<label for="phone" class="col-md-4 col-form-label text-md-right">{{ __('Phone') }}</label>

<div class="col-md-6">
<input id="phone" type="text" class="form-control{{ $errors->has('phone') ? ' is-invalid' : '' }}" name="phone" value="{{ old('phone') }}" required autofocus>

@if ($errors->has('phone'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('phone') }}</strong>
</span>
@endif

<div class="form-group row">
<label for="department" class="col-md-4 col-form-label text-md-right">{{ __('Department') }}</label>

<div class="col-md-6">
<select class='form-control' name="department" id="department"
class="form-control{{ $errors->has('department') ? ' is-invalid' : '' }}" name="department" value="{{ old('department') }}" required autofocus>
<option value="">{{ __('Select a department') }}</option>
<option value="Deputy Directorate of System development">{{ __('Deputy Directorate of System development') }}</option>
<option value="GIS">{{ __('GIS') }}</option>
<option value="Administration">{{ __('Administration') }}</option>
<option value="Maslaki">{{ __('Maslaki') }}</option>
</select>

@if ($errors->has('department'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('department') }}</strong>
</span>
@endif
</div>
</div>
</div>



<div class="form-group row">
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>

<div class="col-md-6">
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required>

@if ($errors->has('email'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif

<div class="form-group row">
<label for="phone" class="col-md-4 col-form-label text-md-right">{{ __('Phone') }}</label>

<div class="col-md-6">
<input id="phone" type="text" class="form-control{{ $errors->has('phone') ? ' is-invalid' : '' }}" name="phone" value="{{ old('phone') }}" required autofocus>

@if ($errors->has('phone'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('phone') }}</strong>
</span>
@endif
</div>
</div>
</div>

<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>

<div class="col-md-6">
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>

@if ($errors->has('password'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('password') }}</strong>
</span>
@endif



<div class="form-group row">
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>

<div class="col-md-6">
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required>

@if ($errors->has('email'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
</div>
</div>

<div class="form-group row">
<label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label>

<div class="col-md-6">
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>

<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>

<div class="col-md-6">
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>

@if ($errors->has('password'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('password') }}</strong>
</span>
@endif
</div>
</div>
</div>

<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Register') }}
</button>

<div class="form-group row">
<label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label>

<div class="col-md-6">
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
</div>
</div>
</div>

</form>
<div class="float-right">

<a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>

<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Register') }}
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
80 changes: 42 additions & 38 deletions resources/views/bookings/index.blade.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
@extends("layouts.app")
@section('content')

@if(Auth::user()->can('Update_booking'))
<!-- Modal box-->
<div id='updateModal' class="modal fade insert-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered ">
@@ -9,22 +9,22 @@
<div class="row">
<div class="col-md-12">
<div class="card text-white bg-secondary ">
<div class="card-header">{{ __('Update') }}</div>
<div class="card-header">{{ __('msg.Update') }}</div>
<div class="card-body">

<form action='' id='updateForm'>
@csrf
<input type="hidden" name='booking_id' value="">
<div class="row" style="padding-left:15px;padding-right:15px">
<div class=" options-approve form-group col-md-4">
<label for="approval"><b>{{ __('approval') }}</b> </label>&nbsp;
<label for="approval"><b>{{ __('msg.Approval') }}</b> </label>&nbsp;
<select class='form-control form-control-sm' name='approval' id="approval">
<option value="true">{{ __('TRUE') }}</option>
<option value="false">{{ __('FALSE') }}</option>
<option value="true">{{ __('msg.TRUE') }}</option>
<option value="false">{{ __('msg.FALSE') }}</option>
</select>
</div>
<div class="form-group col-md-4">
<label for="car"><b>{{ __('car') }} </b></label>&nbsp;
<label for="car"><b>{{ __('msg.Car') }} </b></label>&nbsp;
<select class='form-control form-control-sm plate_no' name='plate_no' id="plate_no">
<option value="">SELECT A CAR</option>
@foreach ($freeCars as $item)
@@ -36,7 +36,7 @@
</select>
</div>
<div class="form-group col-md-4">
<label for="driver"><b>{{ __('driver') }} </b></label>&nbsp;
<label for="driver"><b>{{ __('msg.Driver') }} </b></label>&nbsp;
<select class='form-control form-control-sm driver_id' name='driver_id' id="driver_id">
<option value="">SELECT A DRIVER</option>

@@ -46,16 +46,16 @@
</select>
</div>
<div class="form-group col-md-12 col-sm-12 col-lg-6">
<label for='approval_pickup_time'><b>{{ __('approval pickup time') }}</b></label>&nbsp;
<label for='approval_pickup_time'><b>{{ __('msg.Approval_pickup_time') }}</b></label>&nbsp;
<input class='form-control' type='text' name="approval_pickup_time" id='approval_pickup_time' value="" placeholder="yyyy-mm-dd hh:mm">
</div>
<div class="form-group col-md-12 col-sm-12 col-lg-6">
<label for='approval_return_time'><b>{{ __('approval return time') }}</b></label>&nbsp;
<label for='approval_return_time'><b>{{ __('msg.Approval_return_time') }}</b></label>&nbsp;
<input class='form-control' type='text' name="approval_return_time" id='approval_return_time' value="" placeholder="yyyy-mm-dd hh:mm">
</div>

<div class="form-group col-md-12">
<label for='approver_description'><b>{{ __('approver description') }}</b></label>&nbsp;
<label for='approver_description'><b>{{ __('msg.Approver_description') }}</b></label>&nbsp;
<textarea class='form-control' type='text' name="approver_description" id='approver_description' placeholder=" are you agree or not agree, why?"></textarea>
<div class="help-error"></div>
</div>
@@ -75,29 +75,35 @@
</div>
</div>
</div>

<h5> {{ __('Pendings: ') . $pendingsCount.', ' . __('Approved: ') . $approvedCount .', '. __('Rejected: ') }} {{ $rejectedCount }}</h5>
<table class="table table-bordered table-responsive table-light">
@endif
@if(Auth::user()->can('Read_booking'))
<h5> {{ __('msg.Pendings: ') . $pendingsCount.', ' . __('msg.Approved: ') . $approvedCount .', '. __('msg.Rejected: ') }} {{ $rejectedCount }}</h5>
@endif
@if(Auth::user()->can('Update_booking')||Auth::user()->can('Read_booking'))
<table class="table table-bordered table-responsive table-light">
<thead>
<tr>
<th scope="col">{{ __('Booking Id') }}</th>
<th scope="col">{{ __('msg.Booking_Id') }}</th>

<th scope="col">{{__('User')}}</th>
<th scope="col">{{__('Destination')}}</th>
<th scope="col">{{__('Pickup Time')}}</th>
<th scope="col">{{ __('Return Time')}}</th>
<th scope="col">{{__('Count of persons')}}</th>
<th scope="col">{{__('Description')}}</th>
<th scope="col">{{__('Approval')}}</th>
<th scope="col">{{__('Approval_description')}}</th>
<th scope="col">{{__('Approval_pickup_time')}}</th>
<th scope="col">{{__('Approval_return_time')}}</th>
<th scope="col">{{__('Approver_user')}}</th>
<th scope="col">{{__('Driver')}}</th>
<th scope="col">{{__('Car')}}</th>
<th scope="col">{{__('created_time')}}</th>
<th scope="col">{{__('updated_time')}}</th>
<th scope="col" colspan="2" class='text-center'>Action</th>
<th scope="col">{{__('msg.User')}}</th>
<th scope="col">{{__('msg.Destination')}}</th>
<th scope="col">{{__('msg.Pickup_time')}}</th>
<th scope="col">{{ __('msg.Return_time')}}</th>
<th scope="col">{{__('msg.Count')}}</th>
<th scope="col">{{__('msg.Description')}}</th>
<th scope="col">{{__('msg.Approval')}}</th>
<th scope="col">{{__('msg.Approver_description')}}</th>
<th scope="col">{{ __('msg.Approval_pickup_time')}}</th>
<th scope="col">{{ __('msg.Approval_return_time')}}</th>
<th scope="col">{{__('msg.Approver_user')}}</th>
<th scope="col">{{__('msg.Driver')}}</th>
<th scope="col">{{__('msg.Car')}}</th>
<th scope="col">{{__('msg.Created_at')}}</th>
<th scope="col">{{__('msg.Updated_at')}}</th>

@if(Auth::user()->can('Update_booking'))
<th scope="col" colspan="2" class='text-center'>{{ __('msg.Action') }}</th>
@endif
</tr>
</thead>
<tbody>
@@ -113,9 +119,9 @@
<td>{{$rowData->description}}</td>
<td>
@if($rowData->approval === true)
<span style="background-color:dodgerblue;border-radius:3px;padding:4px"> {{ _('Approved')}}</span>
<span style="background-color:dodgerblue;border-radius:3px;padding:4px;display:inline-block"> {{ __('msg.Approved')}}</span>
@else
<span style="color:white;background-color:firebrick;border-radius:3px;padding:4px"> {{ _('Rejected')}}</span>
<span style="color:white;background-color:firebrick;border-radius:3px;padding:4px;display:inline-block"> {{ __('msg.Rejected')}}</span>
@endif
</td>
<td>{{$rowData->approver_description}}</td>
@@ -126,16 +132,14 @@
<td>{{$rowData->plate_no}}</td>
<td>{{$rowData->created_at}}</td>
<td>{{ $rowData->updated_at}}</td>
@if(
Auth::user()->can('App_booking')&&
Auth::user()->can('U_booking'))
<td><a href="/bookings/{{ $rowData->booking_id }}" id="{{ $rowData->booking_id }} "class="btn btn-primary updateBtn" data-toggle="modal" data-target="#updateModal">Update</button></td>
@endif
@if(Auth::user()->can('Update_booking'))
<td><a href="/bookings/{{ $rowData->booking_id }}" id="{{ $rowData->booking_id }} "class="btn btn-primary updateBtn" data-toggle="modal" data-target="#updateModal">{{ __('msg.Update') }}</button></td>
@endif
</tr>
@endforeach

</tbody>
</table>
{{ $bookingsData->links() }}

@endif
@endsection()
Loading

0 comments on commit 10e10d1

Please sign in to comment.