Browse Source

Permission in profile edit & add

Shah Rakibur Rahaman 1 year ago
parent
commit
a4ab282d53

+ 29 - 0
app/Helpers/functions.php

@@ -125,5 +125,34 @@ if(!function_exists('name_initials')){
 	}
 } 
 
+
+if(!function_exists('student_proposal')){
+	function student_proposal($std_id,$pro_id){ 
+
+		$apply_checked = \App\StudentProposal::where('student_id',$std_id)->where('proposal_id',$pro_id)->exists();
+
+		if($apply_checked){
+			return FALSE;
+		}
+
+		return TRUE;
+		 
+	}
+} 
+
+if(!function_exists('profile_permission')){
+	function profile_permission($std_id){ 
+
+		$apply_checked = \App\StudentProposal::where('student_id',$std_id)->exists();
+
+		if($apply_checked){
+			return FALSE;
+		}
+
+		return TRUE;
+		 
+	}
+} 
+
  
  

+ 25 - 2
app/Http/Controllers/AjaxController.php

@@ -129,8 +129,7 @@ class AjaxController extends Controller
              
           
         }elseif($name=="add_department"){
-            $user =Auth::guard('admin')->user();
-            info($req->all());
+            $user =Auth::guard('admin')->user(); 
 
             $validator=\Validator::make($req->all(), [
                 'dapartment'=>'required', 
@@ -149,6 +148,30 @@ class AjaxController extends Controller
                 ['msg'=>'Department saved successfully.']
             ); 
              
+        }elseif($name=="update_profile"){
+            info($req->all());
+            $validator=\Validator::make($req->all(), [
+                'first_name'=>'required', 
+                'last_name'=>'required', 
+                'university_name'=>'required', 
+                'department'=>'required', 
+            ]); 
+
+            if($validator->fails()){
+                $errors=$validator->errors()->all();
+                return response(['msg'=>$errors[0]], 422);
+            }
+
+            $data = User::find($req->id); 
+            $data->first_name =$req->first_name; 
+            $data->last_name =$req->last_name; 
+            $data->university_name =$req->university_name; 
+            $data->department =$req->department;  
+            $data->update();
+
+            return response(
+                ['msg'=>'Saved successfully.']
+            ); 
         }  
 	}
 }

+ 3 - 2
app/Http/Controllers/ModalController.php

@@ -31,9 +31,10 @@ class ModalController extends Controller{
         }elseif($name=="view_apply_proposal"){
             $data['std_proposal'] =StudentProposal::find($req->id); 
 
-        }elseif($name=="add_destination"){
+        }elseif($name=="view_student_proposal"){
+            $data['proposal']= Proposal::where('student_id',$user->id)->get(); 
 
-        } else $name='default';
+        }else $name='default';
 
         return view("modal_pages.{$name}", $data);
     }

+ 32 - 0
app/Http/Controllers/Teacher/SubContentController.php

@@ -0,0 +1,32 @@
+<?php
+
+namespace App\Http\Controllers\Teacher;
+
+use App\Http\Controllers\Controller;
+use Illuminate\Http\Request;
+use \App\Helpers\PageSL; 
+use App\StudentProposal;
+use Auth;
+
+class SubContentController extends Controller
+{
+    public function get(Request $req, $name){
+
+		$user=Auth::guard('teacher')->user();
+		$carbon=new \Carbon\Carbon;
+
+		$data=[
+			'user'=>$user,
+			'carbon'=>$carbon,
+			'name'=>$name
+		];
+
+		if($name=="load_profile_info"){
+			$data['students'] = StudentProposal::where('teacher_id',$user->id)->get(); 
+			
+		}else $name='default'; 
+		//$data['page_sl']=new PageSL($data['chapter_details']); 
+		return view("teacher.sub_contents.{$name}", $data);
+
+	}
+}

+ 3 - 1
app/Http/Controllers/TeacherHomeController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
 use Illuminate\Http\Request;
 use App\User;
 use App\StudentProposal;
+use App\Models\Department;
 use Auth;
 
 class TeacherHomeController extends Controller
@@ -16,7 +17,8 @@ class TeacherHomeController extends Controller
     public function teacher_profile(Request $request)
     {   $user = Auth::guard('teacher')->user();
         $students = StudentProposal::where('teacher_id',$user->id)->get(); 
-        return view('teacher_profile',compact('students','user'));
+        $departments =Department::where('status',1)->orderBy('name','ASC')->get();
+        return view('teacher_profile',compact('students','user','departments'));
     }
 
     

+ 16 - 0
resources/views/modal_pages/view_student_proposal.blade.php

@@ -0,0 +1,16 @@
+@extends('modal_pages.base')
+
+@section('main')
+ 
+    @foreach($proposal as $row)
+        {{ $row->title}}
+    @endforeach
+ 
+
+<script>
+    $(function(){
+        // $('.select2').select2();
+        $('#modal_page_footer').hide(); 
+    });
+    </script>
+@endsection

+ 19 - 7
resources/views/profile.blade.php

@@ -128,12 +128,19 @@
                                                                             <strong style="font-size:13px; font-weight:600 !important; ">{{date('d M Y', strtotime($row->created_at))}}</strong>
                                                                             <span style="font-size:10px; display: block;">{{$row->created_at->diffForHumans()}}</span>                                             
                                                                         </div>
-                                                                        <div class="mt-2 pt-1" style="margin-right: 10px; width: 20%; text-align: end;">                                                                          
+                                                                        <div class="mt-2 pt-1" style="margin-right: 10px; width: 20%; text-align: end;"> 
+                                                                            @if(student_proposal($row->student_id, $row->id))                                                                         
                                                                             <a role="" data-bs-toggle="collapse" data-bs-parent="#collapse" href="#collapse2" aria-expanded="true" aria-controls="collapse2">
                                                                                 <i class="fa fa-edit change_pass_btn" style="font-size: 13px !important; padding: 4px;"  data-toggle="collapse" data-target="#demo14" onclick="editProposal({{$row}})"></i>
                                                                             </a> 
+                                                                            @endif
+                                                                            <span class="open_modal_page hand" data-title="View Proposal" data-url="{{route('modal-get',['name'=>'view_student_proposal','id'=>$row->id])}}">
                                                                                 <i class="fa fa-eye change_pass_btn" style="font-size: 13px !important; padding: 4px;"></i>
-                                                                                <i class="fa fa-trash change_pass_btn delete_proposal" style="font-size: 13px !important; padding: 4px;"  data-id="{{ $row->id }}"></i>                                                                          
+                                                                            </span>
+                                                                            
+                                                                            @if(student_proposal($row->student_id, $row->id))
+                                                                            <i class="fa fa-trash change_pass_btn delete_proposal" style="font-size: 13px !important; padding: 4px;"  data-id="{{ $row->id }}"></i>                                                                          
+                                                                            @endif
                                                                         </div>
                                                                     </div>
                                                                 @endforeach   
@@ -425,13 +432,14 @@
                                                                         </td>
                                                                         <td style="font-size: 11px;">{{date("d M, Y", strtotime($row->start_date)).'-'.date("d M, Y", strtotime($row->end_date))}}</td>
                                                                           <td class="text-center" style="width: 75px;">
-                                                                                <div class="icon_bar" style="border: none;">                                                                                              
+                                                                                <div class="icon_bar" style="border: none;"> 
+                                                                                    @if(profile_permission($row->student_id))                                                                                             
                                                                                     <a role="" data-bs-toggle="collapse" data-bs-parent="#collapse" href="#collapse1" aria-expanded="true" aria-controls="collapse1">
                                                                                         <i class="fa fa-edit" data-toggle="collapse" data-target="#demo11" onclick="editInstitute({{$row}})"></i>
                                                                                     </a>
                                                                                     
                                                                                         <i class="fa fa-trash delete_education" data-id="{{ $row->id }}"></i>
-                                                                                                                                                                       
+                                                                                    @endif                                                                                   
                                                                                 </div>
                                                                          </td>   
                                                                     </tr>
@@ -803,10 +811,12 @@
                                                                             <td style="font-size: 11px;">{{date("d M, Y", strtotime($row->end_date))}}</td>
                                                                             <td class="text-center" style="width: 75px;">
                                                                                     <div class="icon_bar" style="border: none;">
+                                                                                    @if(profile_permission($row->student_id))   
                                                                                     <a role="" data-bs-toggle="collapse" data-bs-parent="#collapse" href="#collapse1" aria-expanded="true" aria-controls="collapse1">
                                                                                             <i class="fa fa-edit" data-toggle="collapse" data-target="#demo12" onclick="editWork({{$row}})"></i>
                                                                                         </a>
                                                                                         <i class="fa fa-trash delete_work" data-id="{{ $row->id }}"></i>
+                                                                                    @endif
                                                                                     </div>
                                                                             </td>   
                                                                         </tr> 
@@ -1120,12 +1130,14 @@
                                                                                 <strong style="font-size: 12px;">Reading</strong>
                                                                             </td>
                                                                             <td class="text-center" style="width: 75px;">
-                                                                                <div class="icon_bar">
-                                                                                    <a role="" data-bs-toggle="collapse" data-bs-parent="#collapse" href="#collapse1" aria-expanded="true" aria-controls="collapse1">
+                                                                                @if(profile_permission($row->student_id))
+                                                                                <div class="icon_bar"> 
+                                                                                        <a role="" data-bs-toggle="collapse" data-bs-parent="#collapse" href="#collapse1" aria-expanded="true" aria-controls="collapse1">
                                                                                             <i class="fa fa-edit" data-toggle="collapse" data-target="#demo13" onclick="editScore({{$row}})"></i>
                                                                                         </a>
-                                                                                        <i class="fa fa-trash delete_score" data-id="{{ $row->id }}"></i>
+                                                                                        <i class="fa fa-trash delete_score" data-id="{{ $row->id }}"></i> 
                                                                                 </div>
+                                                                                @endif
                                                                             </td>                                                       
                                                                         </tr>
                                                                         @endforeach

+ 7 - 0
resources/views/teacher/sub_contents/base.blade.php

@@ -0,0 +1,7 @@
+@yield('main')
+
+<script>
+$(function(){
+	$('.tooltips').tooltip();
+});
+</script>

+ 26 - 0
resources/views/teacher/sub_contents/load_profile_info.blade.php

@@ -0,0 +1,26 @@
+@extends('teacher.sub_contents.base')  
+@section('main') 
+<div class="single_glance_row mt-5">
+    <span class="title" style="font-size:11px; font-weight: 600;">Name :</span>
+    <span class="tbl2 mb-2">
+        {{$user->first_name}} {{$user->last_name}}
+    </span>
+</div>
+<div class="single_glance_row mt-1">
+    <span class="title" style="font-size:11px; font-weight: 600;">Email :</span>
+    <span style="font-size: 11px; color: #868e96;">{{$user->email}}</span>
+</div>
+<div class="single_glance_row mt-1" style="display: flex;">
+    <span class="title" style="font-size:11px; font-weight: 600;">University Name :</span>
+    <span style="font-size: 11px; color: #868e96;"> {{$user->university_name }}</span>
+</div>
+<div class="single_glance_row mt-1" style="display: flex;">
+    <span class="title" style="font-size:11px; font-weight: 600;">Department : </span>
+    @if(isset($user->department))
+        <span style="font-size: 11px; color: #868e96;"> {{ cn($user,'department_name.name','')}}</span>
+    @else
+        <span style="font-size: 11px; color: #868e96;"> {{ $user->others_department }}</span>
+    @endif
+</div>        
+ 
+@endsection

+ 119 - 56
resources/views/teacher_profile.blade.php

@@ -872,76 +872,59 @@ tbody, td, tfoot, th, thead, tr {
                                                     <div class="single_glance_row mt-5" style="border-bottom: 1px solid #e8eef1;">
                                                         <div class="col-md-12">
                                                             <div id="demo16" class="collapse mt-2">
-                                                                <div class="panel-body" style="padding:10px; background-color: #4b4c6824; border: 1px solid #e9e5e5; border-radius: 5px;">
-                                                                    <form method="POST" action="">
-                                                                            <div class="row">
-                                                                                <div class="col-md-6">
-                                                                                    <div class="mb-2">
-                                                                                        <label class="form-label config">First Name</label>
-                                                                                        <div class="form-icon position-relative">
-                                                                                            <input type="text" class="form-control" placeholder="First Name" name="first-name" required="" style="font-size: 13px;">
-                                                                                        </div>
-                                                                                    </div>
-                                                                                </div>
-                                                                                <div class="col-md-6">
-                                                                                    <div class="mb-2">
-                                                                                        <label class="form-label config">Last Name</label>
-                                                                                        <div class="form-icon position-relative">
-                                                                                            <input type="text" class="form-control" placeholder="Last Name" name="last-name" required="" style="font-size: 13px;">
-                                                                                        </div>
-                                                                                    </div>
-                                                                                </div> 
-                                                                            </div>  
-                                                                            <div class="col-md-12">
+                                                                <div class="panel-body profile_form" style="padding:10px; background-color: #4b4c6824; border: 1px solid #e9e5e5; border-radius: 5px;">
+                                                                    <input type="hidden"  id="u_id" name="id" value="{{$user->id}}">
+                                                                        <div class="row">
+                                                                            <div class="col-md-6">
                                                                                 <div class="mb-2">
-                                                                                    <label class="form-label config">University Name</label>
+                                                                                    <label class="form-label config">First Name</label>
                                                                                     <div class="form-icon position-relative">
-                                                                                        <input type="text" class="form-control" placeholder="University Name" name="university-name" required="" style="font-size: 13px;">
+                                                                                        <input type="text" class="form-control" placeholder="First Name" id="first_name" name="first_name" value="{{$user->first_name}}" required="" style="font-size: 13px;">
                                                                                     </div>
                                                                                 </div>
-                                                                            </div> 
-                                                                            <div class="col-md-12">
+                                                                            </div>
+                                                                            <div class="col-md-6">
                                                                                 <div class="mb-2">
-                                                                                    <label class="form-label config">Department</label>
+                                                                                    <label class="form-label config">Last Name</label>
                                                                                     <div class="form-icon position-relative">
-                                                                                        <input type="text" class="form-control" placeholder="Department" name="department" required="" style="font-size: 13px;">
+                                                                                        <input type="text" class="form-control" placeholder="Last Name" id="last_name" name="last_name" value="{{$user->last_name}}" required="" style="font-size: 13px;">
                                                                                     </div>
                                                                                 </div>
                                                                             </div> 
-                                                                            <div class="col-md-12">
-                                                                                <div class="text-end">
-                                                                                    <button class="btn btn2">Update</button>                                                                                                                
+                                                                        </div>  
+                                                                        <div class="col-md-12">
+                                                                            <div class="mb-2">
+                                                                                <label class="form-label config">University Name</label>
+                                                                                <div class="form-icon position-relative">
+                                                                                    <input type="text" class="form-control" placeholder="University Name" id="university_name" name="university_name" value="{{$user->university_name}}" required="" style="font-size: 13px;">
                                                                                 </div>
-                                                                            </div> 
-                                                                    </form>
+                                                                            </div>
+                                                                        </div> 
+                                                                        <div class="col-md-12">
+                                                                            <div class="mb-2">
+                                                                                <label class="form-label config">Department</label>
+                                                                                <div class="form-icon position-relative">
+                                                                                    <select class="form-control" name="department" id="department_id">
+                                                                                        <option value="" disabled selected>Choose one..</option>
+                                                                                        @foreach($departments as $row)
+                                                                                            <option value="{{$row->id}}" @if($user->department ==$row->id) selected @endif>{{ $row->name}}</option>
+                                                                                        @endforeach
+
+                                                                                    </select>
+                                                                                </div>
+                                                                            </div>
+                                                                        </div> 
+                                                                        <div class="col-md-12">
+                                                                            <div class="text-end">
+                                                                                <button class="btn btn2 update_profile">Update</button>                                                                                                                
+                                                                            </div>
+                                                                        </div>  
                                                                 </div>
                                                             </div> 
                                                         </div> 
                                                     </div> 
                                                 <div class="left mb-2 mt-2">
-                                                    <div>
-                                                        <div class="single_glance_row mt-5">
-                                                            <span class="title" style="font-size:11px; font-weight: 600;">Name :</span>
-                                                            <span class="tbl2 mb-2">
-                                                                {{$user->first_name}} {{$user->last_name}}
-                                                            </span>
-                                                        </div>
-                                                        <div class="single_glance_row mt-1">
-                                                            <span class="title" style="font-size:11px; font-weight: 600;">Email :</span>
-                                                            <span style="font-size: 11px; color: #868e96;">{{$user->email}}</span>
-                                                        </div>
-                                                        <div class="single_glance_row mt-1" style="display: flex;">
-                                                                <span class="title" style="font-size:11px; font-weight: 600;">University Name :</span>
-                                                                <span style="font-size: 11px; color: #868e96;">{{$user->university_name }}</span>
-                                                        </div>
-                                                        <div class="single_glance_row mt-1" style="display: flex;">
-                                                                <span class="title" style="font-size:11px; font-weight: 600;">Department : </span>
-                                                                @if(isset($user->department))
-                                                                <span style="font-size: 11px; color: #868e96;">{{ cn($user,'department_name.name','')}}</span>
-                                                                @else
-                                                                <span style="font-size: 11px; color: #868e96;">{{ $user->others_department }}</span>
-                                                                @endif
-                                                        </div>                                        
+                                                    <div id="load_profile_info">       
                                                     </div>
                                                 </div> 
                                             </div>
@@ -1056,7 +1039,49 @@ tbody, td, tfoot, th, thead, tr {
         <script src="{{ asset('css/wait-me/waitMe.min.js')}}"></script> 
 
       <script>
-         function pop_up_msg(msg='No message specified', type='success', callback=null){ 
+        function fetch_sub_content(selector, url, args=null){
+
+            var config={
+            spinner: true
+            }
+
+            if(typeof args=='object'){
+            config=Object.assign(config, args);
+            }
+
+            if(config.spinner){
+
+            $(selector).waitMe({
+                effect: 'facebook',
+                text: 'Please! Wait ...'
+            });
+
+            }
+
+            $(selector).load(url, null, function(){
+            $(selector).waitMe('hide');
+            if(typeof args=='function') args();
+            });
+
+            }
+
+            function wait_me(selector, config=null){
+
+            if(config){
+
+                selector.waitMe(config);
+
+            }else{ 
+
+                selector.waitMe({
+                    effect: 'facebook',
+                    //color: '#000',
+                    text: 'Please! Wait ...'
+                }); 
+            } 
+        }
+
+        function pop_up_msg(msg='No message specified', type='success', callback=null){ 
             new Noty({
             theme:'sunset',
             text: msg,
@@ -1082,6 +1107,44 @@ tbody, td, tfoot, th, thead, tr {
 
 
         $(function(){
+
+            fetch_sub_content(
+                '#load_profile_info',
+                "{{ route('teacher.sub-content', ['name'=>'load_profile_info']) }}"
+            );
+
+            $('.update_profile').on('click', function(){  
+
+                var id =$('#u_id').val(); 
+                var first_name =$('#first_name').val(); 
+                var last_name =$('#last_name').val(); 
+                var university_name =$('#university_name').val(); 
+                var department =$('#department_id option:selected').val();  
+
+                var form_data={
+                    _token: "{{ csrf_token() }}", 
+                    id: id, 
+                    first_name: first_name, 
+                    last_name: last_name, 
+                    university_name: university_name, 
+                    department: department, 
+                }
+
+                $.post("{{ route('ajax-post', ['name'=>'update_profile']) }}", form_data, function(res){ 
+                    pop_up_msg(res.msg);
+
+                    fetch_sub_content(
+                        '#load_profile_info',
+                        "{{ route('teacher.sub-content', ['name'=>'load_profile_info']) }}"
+                    ); 
+
+                }).fail(function(err){
+
+                    pop_up_msg(err_msg(err), 'error');
+
+                });                                          
+            });
+
             $('.change_password').on('click', function(){
                 var id =$('#user_id').val();
                 var old_password =$('#old_password').val(); 

+ 9 - 2
routes/web.php

@@ -91,6 +91,7 @@ Route::post('teacher-logout', [App\Http\Controllers\TeacherAuth\LoginController:
 
 Route::group(['middleware' => ['teacher']], function() {
     Route::get('/teacher_profile', [App\Http\Controllers\TeacherHomeController::class,'teacher_profile'])->name('teacher_profile');
+    
 });
 
 
@@ -102,8 +103,8 @@ Route::group(['middleware' => ['admin']], function() {
     Route::get('/admin/dashboard', [App\Http\Controllers\Admin\AdminController::class,'dashboard']);
     Route::get('/admin/dashboard/load_country_list/{text}', [App\Http\Controllers\Admin\AdminController::class,'load_country_list']);
     Route::get(
-		'sub-content/{name}', [App\Http\Controllers\Admin\SubContentController::class, 'get']
-	)->name('admin.sub-content');
+        'sub-content/{name}', [App\Http\Controllers\Admin\SubContentController::class, 'get']
+    )->name('admin.sub-content');
 });
 
 
@@ -125,3 +126,9 @@ Route::post(
 	'ajax/{name}',
 	'AjaxController@post'
 )->name('ajax-post');
+
+Route::get(
+    'sub-content/{name}', [App\Http\Controllers\Teacher\SubContentController::class, 'get']
+)->name('teacher.sub-content');
+
+