Mostafijur Rahman преди 1 година
родител
ревизия
be676df494

+ 5 - 0
app/Http/Controllers/Admin/SubContentController.php

@@ -11,6 +11,7 @@ use App\Models\Department;
 use App\Models\ResearchInterest;
 use App\Models\Requirement;
 use App\StudentProposal;
+use App\Proposal;
 use App\User;
 use Auth;
 
@@ -79,6 +80,10 @@ class SubContentController extends Controller
 			$data['requirements'] = Requirement::find($req->req_id);
 			$std_pro_id =$data['requirements'];
 			$data['proposal_details'] = StudentProposal::where('id',$std_pro_id->std_proposal_id)->first();
+		}elseif($name=="edit_proposal"){
+			$data['proposal'] =Proposal::find($req->p_id);
+			$data['departments'] =Department::where('status',1)->orderBy('name','ASC')->get();
+
 		}else $name='default';
 		//$data['page_sl']=new PageSL($data['chapter_details']);
 		return view("admin.sub_contents.{$name}", $data);

+ 37 - 0
app/Http/Controllers/AjaxController.php

@@ -12,6 +12,7 @@ use App\Models\ReferUser;
 use App\Models\ResearchInterest;
 use App\Models\Requirement;
 use App\StudentProposal;
+use App\Proposal;
 use Session;
 use Mail;
 use Auth;
@@ -577,6 +578,42 @@ class AjaxController extends Controller
                 'msg'=>'Successfully uploaded.'
             ]);
 
+        }elseif($name=="update_proposal"){
+            $user=auth_user();
+            $validator=\Validator::make($req->all(), [
+                'title'=>'required',
+                'methology'=>'required',
+                'department'=>'required',
+            ]);
+
+            if($validator->fails()){
+                $errors=$validator->errors()->all();
+                return response(['msg'=>$errors[0]], 422);
+            }
+
+            $data =Proposal::find($req->edit_id);
+            $data->title =$req->title;
+            $data->methology= $req->methology;
+            $data->department= $req->department;
+            $data->status= $req->status;
+
+            if($req->documentfile){
+                $destinationPath =   public_path('/uploads/proposal');
+                $file = $req->documentfile;
+                $ext = $file->getClientOriginalExtension();
+                $fileName = time().'documentfile_'.'.'.$ext;
+                if(file_exists($destinationPath.'/'.$fileName)){
+                    @unlink($destinationPath.'/'.$fileName);
+                }
+                $file->move($destinationPath, $fileName);
+    
+                $data->document_file = $fileName; 
+
+            }
+            $data->update();
+            return response([
+                'msg'=>'Successfully updated.'
+            ]);
         }
 	}
 }

+ 1 - 1
app/Proposal.php

@@ -9,6 +9,6 @@ class Proposal extends Model
     protected $table = 'proposal';
 
     public function department(){
-        return $this->belongsTo(Department::class,'department');
+        return $this->belongsTo('App\Models\Department','department');
     }
 }

BIN
public/uploads/proposal/1683538929documentfile_.pdf


+ 87 - 0
resources/views/admin/sub_contents/edit_proposal.blade.php

@@ -0,0 +1,87 @@
+<div class="col-md-12 mb-4 mt-4">
+    <div  style="width: 96%; margin-left: 21px;">
+        <div class="panel-body" style="padding:10px; background-color: #16183f69;  border: 1px solid #e9e5e5; border-radius: 5px;">
+            <form method="POST" action="{{route('ajax-post', ['name'=>'update_proposal'])}}" class="edit_form"> 
+                <input type="hidden" name="_token" value="{{ csrf_token() }}" />
+                <input type="hidden" name="edit_id" value="{{$proposal->id}}">
+                <div class="col-md-12">
+                    <div class="mb-1">
+                        <label class="form-label">Title</label>
+                        <div class="form-icon position-relative">
+                            <input type="text" class="form-control" placeholder="Title" name="title" value="{{$proposal->title}}" required="">
+                        </div>
+                    </div>
+                </div>  
+                <div class="row">                                                                               
+                    <div class="col-md-4 back">
+                        <div class="mb-1">
+                            <label class="form-label">Methology</label>
+                            <select class="form-control"  name="methology">
+                                <option value="Methology" @if($proposal->methology=="Methology") selected @endif>Methology</option>
+                                <option value="Quantitative" @if($proposal->methology=="Quantitative") selected @endif>Quantitative </option>
+                                <option value="Qualitative" @if($proposal->methology=="Qualitative") selected @endif>Qualitative </option>
+                            </select>
+                        </div>
+                    </div> 
+                    <div class="col-md-4">
+                        <div class="mb-1">
+                            <label class="form-label">Department</label>
+                            <div class="form-icon position-relative">
+                                <select class="form-control" name="department" required="">
+                                    <option selected disabled>Select one</option>
+                                    @foreach($departments as $row)
+                                        <option value="{{$row->id}}" @if($row->id==$proposal->department) selected @endif>{{$row->name}}</option>
+                                    @endforeach
+                                </select>
+                            </div>
+                        </div>
+                    </div>                                                            
+                    <div class="col-md-4 back">
+                        <div class="mb-1">
+                            <label class="form-label">Funding Status</label>
+                            <select class="form-control" name="status">
+                                <option value="Funding Status" @if($proposal->status=="Funding Status") selected @endif>Funding Status</option>
+                                <option value="Self-Funded" @if($proposal->status=="Self-Funded") selected @endif>Self-Funded</option>
+                                <option value="Govt. Scholarship" @if($proposal->status=="Govt. Scholarship") selected @endif>Govt. Scholarship</option>
+                                <option value="Other Scholarship" @if($proposal->status=="Other Scholarship") selected @endif>Other Scholarship</option>
+                            </select>
+                        </div>
+                    </div>
+                </div>     
+                <div class="col-md-12">
+                    <div class="mb-3">
+                        <label class="form-label" for="proposal">Proposal File</label>
+                        <input type="file" accept="application/pdf,application/docx,application/doc" name="documentfile" id="documentfile" class="form-control">
+                    </div>
+                </div>
+                <div class="col-md-12">
+                    <div class="text-end">
+                        <button type="button" class="btn cancel_button mr-1 btn-cancel close_form" >
+                            <i aria-hidden="true" class="fa fa-refresh"></i>
+                        </button>
+                        <button class="btn btn2">Update</button>                      
+                    </div>
+                </div>
+                
+            </form>  
+        </div>
+    </div>
+</div>
+ 
+
+<script>
+    $(function(){
+        $('.edit_form').on('submit', function(event){
+            event.preventDefault();
+            var self = $(this); 
+            ajax_form(self, function(self){
+                 
+            });
+        });
+         
+
+        $('.btn-cancel').on('click', function(){ 
+            $('.open_proposal_edit_info_div').addClass('d-none')
+        });
+    });
+</script>

+ 41 - 80
resources/views/profile.blade.php

@@ -112,7 +112,7 @@
                                                         <div class="col-md-12 mb-1">
                                                             <div style="width: 96%; margin-left: 20px;">
                                                                 @foreach($proposal as $key=>$row)    
-                                                                    <div class="single_ad_pref_item2">
+                                                                    <div class="single_ad_pref_item2 single_edit_item">
                                                                         <div class="student mt-2 pt-1" style="width: 7.9%;">                                                                                                                                    
                                                                             <strong style="font-size:13px; margin-left: 20px;">{{$row->proposal_ref}}</strong>                                                               
                                                                         </div>
@@ -121,7 +121,10 @@
                                                                             <div style="margin-top: -11px; display: block;">
                                                                                 <span style="font-size:10px;">{{$row->methology}}</span>
                                                                                 <span>.</span>
-                                                                                <span style="font-size:10px;">{{$row->department}}</span> 
+                                                                                @php
+                                                                                   $department =model('Department')::where('id',$row->department)->first();
+                                                                                @endphp
+                                                                                <span style="font-size:10px;">{{$department->name ?? ''}}</span> 
                                                                                 <span>.</span>  
                                                                                 <span style="font-size:10px;">{{$row->status}}</span> 
                                                                             </div>                                             
@@ -132,8 +135,8 @@
                                                                         </div>
                                                                         <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 class="edit_proposal" data-id="{{$row->id}}">
+                                                                                <i class="fa fa-edit change_pass_btn" style="font-size: 13px !important; padding: 4px;"></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])}}">
@@ -155,74 +158,7 @@
                                                             </div> 
                                                             @endif
                                                         </div>  
-                                                            <!-- proposal Edit -->
-                                                        <div class="col-md-12 mb-4 mt-4">
-                                                            <div id="demo14" class="collapse" style="width: 96%; margin-left: 21px;">
-                                                                <div class="panel-body" style="padding:10px; background-color: #16183f69;  border: 1px solid #e9e5e5; border-radius: 5px;">
-                                                                    <form method="POST" action="" id="edit-proposal">
-                                                                        @csrf
-                                                                            <div class="col-md-12">
-                                                                                <div class="mb-1">
-                                                                                    <label class="form-label">Title</label>
-                                                                                    <div class="form-icon position-relative">
-                                                                                        <input type="text" class="form-control" placeholder="Title" name="title" required="">
-                                                                                    </div>
-                                                                                </div>
-                                                                            </div>  
-                                                                            <div class="row">                                                                               
-                                                                                <div class="col-md-4 back">
-                                                                                    <div class="mb-1">
-                                                                                            <label class="form-label">Methology</label>
-                                                                                        <select class="form-control" id="" name="methology">
-                                                                                            <option>Methology</option>
-                                                                                            <option>Quantitative </option>
-                                                                                            <option>Qualitative </option>
-                                                                                        </select>
-                                                                                    </div>
-                                                                                </div> 
-                                                                                <div class="col-md-4">
-                                                                                    <div class="mb-1">
-                                                                                        <label class="form-label">Department</label>
-                                                                                        <div class="form-icon position-relative">
-                                                                                            <select class="form-control" name="department" required="">
-                                                                                                <option selected disabled>Select one</option>
-                                                                                                @foreach($departments as $row)
-                                                                                                    <option value="{{$row->id}}">{{$row->name}}</option>
-                                                                                                @endforeach
-                                                                                            </select>
-                                                                                        </div>
-                                                                                    </div>
-                                                                                </div>                                                            
-                                                                                <div class="col-md-4 back">
-                                                                                    <div class="mb-1">
-                                                                                        <label class="form-label">Funding Status</label>
-                                                                                        <select class="form-control" id="" name="status">
-                                                                                            <option>Funding Status</option>
-                                                                                            <option>Self-Funded</option>
-                                                                                            <option>Govt. Scholarship</option>
-                                                                                            <option>Other Scholarship</option>
-                                                                                        </select>
-                                                                                    </div>
-                                                                                </div>
-                                                                            </div>
-                                                                        <div class="row">
-                                                                            <div class="col-md-10 mb-3">
-                                                                                <label class="form-label" for="proposal">Proposal</label>
-                                                                                <input type="file" accept="application/pdf,application/docx,application/doc" name="documentfile" id="documentfile" class="form-control">
-                                                                            </div>  
-                                                                            <div class="col-md-2">
-                                                                                <div class="mt-4 pt-3">
-                                                                                    <div class="text-end">
-                                                                                        <a href="{{url()->current()}}" class="btn btncl"><i class="fa fa-refresh"></i></a>  
-                                                                                        <button class="btn btn2">Update</button>                                                                                                                
-                                                                                    </div>
-                                                                                </div>
-                                                                            </div> 
-                                                                        </div>                                                                                                                                             
-                                                                    </form>
-                                                                </div>
-                                                            </div>                                                                                                                    
-                                                        </div> 
+                                                          
                                                     </div>
                                                 </div>      
                                             </div>
@@ -1276,6 +1212,31 @@
     $( function() {
         datepicker('.date');
         datepicker('.date1');
+
+        var form_row_added=false;
+
+        $('.edit_proposal').on('click', function(){ 
+            if(form_row_added){ 
+                $('.open_proposal_info_div').remove();
+                form_row_added=false;
+            } 
+            var self=$(this);  
+            var self_tr=self.closest('.single_edit_item');
+
+            var p_id=self.data('id');
+
+            form_row_added=true;
+
+            self_tr.after( 
+             "<div class='open_proposal_info_div'><div class='open_proposal_edit_info_div'></div></div>"
+            );
+
+            fetch_sub_content(
+                '.open_proposal_edit_info_div',
+                "{{ route('sub-content', ['name'=>'edit_proposal']) }}?p_id="+p_id
+            ); 
+             
+        });
     });    
     $('.delete_education').on('click', function(e) {
         e.preventDefault();  
@@ -1415,13 +1376,13 @@
         $('#edit-score').find('input[name="reading"]').val(row.reading);
         $('#edit-score').find('input[name="speaking"]').val(row.speaking);
     }
-      function editProposal(row){   
-        // console.log(row); 
-        $('#edit-proposal').attr("action","{{ url('proposal-update') }}/"+row.id); 
-        $('#edit-proposal').find('input[name="title"]').val(row.title);
-        $('#edit-proposal').find('select[name="methology"]').val(row.methology).trigger('change');
-        $('#edit-proposal').find('input[name="department"]').val(row.department.name).trigger('change');
-        $('#edit-proposal').find('select[name="status"]').val(row.status).trigger('change');
-     }
+    //   function editProposal(row){   
+    //     // console.log(row); 
+    //     $('#edit-proposal').attr("action","{{ url('proposal-update') }}/"+row.id); 
+    //     $('#edit-proposal').find('input[name="title"]').val(row.title);
+    //     $('#edit-proposal').find('select[name="methology"]').val(row.methology).trigger('change');
+    //     $('#edit-proposal').find('input[name="department"]').val(row.department.name).trigger('change');
+    //     $('#edit-proposal').find('select[name="status"]').val(row.status).trigger('change');
+    //  }
 </script>
 @endpush

+ 107 - 0
resources/views/web/layouts/bottom.blade.php

@@ -26,6 +26,48 @@
         <script src="{{ asset('css/flatpickr/dist/flatpickr.min.js') }}"></script>
         <script src="{{ asset('css/wait-me/waitMe.min.js')}}"></script> 
       <script>
+        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',
@@ -38,6 +80,18 @@
                 }).show(); 
             }
 
+            function err_msg(err){
+
+                var msg="Request failed to process, try again later.";
+
+                if(err.responseJSON && err.responseJSON.msg){
+                msg=err.responseJSON.msg;
+                }
+
+                return msg;
+
+            }
+
             function pop_up_error_msg(msg='No message specified', type='error', callback=null){ 
                 new Noty({
                 theme:'sunset',
@@ -50,6 +104,59 @@
                 }).show(); 
             }
 
+            function ajax_form(form, cllback=null, config={spinner: true}){
+
+        $('.btn-submit').prop('disabled', true);
+            var redirect=$(form).data('redirect');
+
+            if(typeof config=='object'){
+
+             if(config.spinner) wait_me($(form));
+
+            }
+
+        $(form).ajaxSubmit({
+        success:function(res){
+
+            wait_me($(form), 'hide');
+
+            if(res.msg){
+
+            pop_up_msg(res.msg, 'success', function(){
+
+                $('.btn-submit').prop('disabled', false);
+
+                if(redirect) window.location.replace(redirect);
+                else if(typeof cllback=='function'){
+                cllback(form, res);
+                }
+
+            });
+
+            }
+
+            //$.notify(res.msg, 'success');
+        },
+        error:function(res){
+
+            wait_me($(form), 'hide');
+
+            var msg="Request failed to process, try again later.";
+
+            if(res.responseJSON && res.responseJSON.msg){
+            msg=res.responseJSON.msg;
+            }
+
+            pop_up_msg(msg, 'error');
+            $('.btn-submit').prop('disabled', false);
+
+        }
+
+        });
+
+        } //End of ajax form definition
+
+
             @if(Auth::user()->is_work_experience == 1)
                 $(document).ready(function(){
                     $('#add_div').show();