<?php
session_start();
require('includes/header.php');

   include('connection.php');
 
?>
<meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
    <link rel="shortcut icon" type="image/x-icon" href="upload/icon.png">

    <title>Employee list</title>

<html>

<head>



 <!-- Select2 CSS --> 
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css" rel="stylesheet" /> 

<!-- jQuery --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> 

<!-- Select2 JS --> 
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/js/select2.min.js"></script>
 
    <link rel="stylesheet" type="text/css" href="assets/css/font-awesome.min.css">
  
    <link rel="stylesheet" type="text/css" href="assets/css/dataTables.bootstrap4.min.css">
    <link rel="stylesheet" type="text/css" href="assets/css/bootstrap-datetimepicker.min.css">
    <link rel="stylesheet" type="text/css" href="assets/css/style1.css">

<style>

.card-box {
    background-color: #fff;
    border-radius: 4px;
    margin-bottom: 30px;
    padding: 0px;
    position: relative;
    box-shadow: 0 1px 2px 0 rgb(0 0 0 / 10%);
}

#myTable tr:nth-child(even) td{
  background-color: #f2f2f2;
}

.page-header{

	text-align: center;
	background-color: #2780e3;
	width: 100%;
	margin-left: 0%;
	}
  .page-title {
    color: #f7f6f5;
    font-size: 50px;
    font-weight: normal;
    margin-bottom: 10px;
}
	.page {
    color: #2780e3;
    font-size: 30px;
    font-weight: normal;
    margin-bottom: 10px;
}
	
@media screen and (max-width: 800px) {
  td.hhh, th.hhh {display:none; }
  .kkk{

  width: 75%;
  margin-top: 6px;
}
  
  
  }
  
    @media screen and (max-width: 600px) {
 tbody.ggg, thead.ggg {
    font-size:2.5vw;
  }
}
@media only screen and (max-width: 575.98px)


@media screen and (max-width:600px) {
  td.kkk, th.kkk {display:none; }
  tbody.ggg, thead.ggg {
    font-size:2.5vw;
	
  }
	
	}
.content {
    padding: 0px;
}


</style>
</head>
<body>

 
 <div id="content">
<div class="table-responsive-md">
<div  id="mob" style="margin-top:80px">
                    </div>
                    
            <div style="font-weight:bold; text-align: center;"  class="alert-info">
				<?php
				if(isset($_SESSION['status']) && $_SESSION !='')
				{
					?>
					<div class="alert alert-warning" role="alert">
					<strong>Hey!</strong><?php echo $_SESSION['status'];?>
					<button type="button" class="Close" data-dismiss="alert" aria-label="Close">
					<span aria-hidden="true">x</span>
					</button>
					</div>
					<?php
					unset($_SESSION['status']);
				}
				?>

					  
				    <?php
				    if(isset($_GET['msg'])) echo $_GET['msg'];
				    ?>
				</div>
					<div class="row">
                    
                    <div class="col-sm-8 col-6 text-left m-b-20">
                        <a href="EmployeeAdd.php" class="btn btn-primary btn-rounded float-left"><i class="fa fa-plus"></i>Add Employee </br>নতুন কর্মচারী যোগ করুন</a>
               </br></br></br>
                        <a href="EmployeeJobTitles.php" class="btn btn-primary btn-rounded float-left"><i class="fa fa-plus"></i>Add Job Titles</br>পদবী যোগ করুন  </a>
                    </div>
                    <div class="col-sm-4 col-3">
                        <h2 class="page">Active Employee</br></br>কর্মরত কর্মচারী</h2>
                    </div>
					</div>


<hr>

				<div class="row doctor-grid">
				<?php $sqli=$conn->query("Select * from employee JOIN jobtitles on employee.JobTitle=jobtitles.JId WHERE EUserId ='" . $_SESSION['UserId'] . "' AND status=1");
        foreach ($sqli as $key => $employee) {
  ?>
                   <div class="col-md-4 col-sm-4  col-lg-3">
                        <div class="profile-widget">
                            <div class="doctor-img">
                                <a class="avatar" href="Employeedisplay1.php?Id=<?php echo $employee["Id"]; ?>"><img alt="" src='EmployeeImage/<?php echo $employee ['FileName']; ?>'></a>
                            </div>
                            <div class="dropdown profile-action">
                                <a href="#" class="action-icon dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><i class="fa fa-ellipsis-v"></i></a>
                                <div class="dropdown-menu dropdown-menu-right">
								<li>
                                     <a class="dropdown-item" href="EmployeeEdit.php?Id=<?php echo $employee["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-edit"></i> Edit/সংশোধন </a>
									 </li>
									 <li>
                                    <a class="dropdown-item" href="#" data-toggle="modal" data-target="#delete_doctor"><?php 
                    if($employee ['Status']=="1")
  
  {
                        echo '<a href="inactive_employee.php?Id='.$employee ['Id'].'&ope=0"> <i class="fa fa-trash-o m-r-5"> Active/কর্মরত নয় </i></a>';
  }
                    else
					{
                        echo '<a href="inactive_employee.php?Id='.$employee ['Id'].'&ope=1"><button type="button" class="btn btn-warning btn-sm">Ina-ve</button></a>';
					}
                    ?></a></li>
                                </div>
                            </div>
                            <h4 style="padding: 10px; font-weight:bold;" class="doctor-name text-ellipsis"><a href="profile.html"><?php echo $employee["EmployeeName"]; ?></a></h4>
                            <div class="doc-prof"><?php echo $employee ['JobTitle']; ?></div>
							<div class="doc-prof"><?php echo $employee ['PhoneNo']; ?></div>
							<div class="doc-prof">Salary/বেতন : <?php echo $employee ['Salary']; ?></div>
							<div class="doc-prof"><a style="padding: 10px;  font-weight:bold;"  href="Employee_Tran_Print.php?Id=<?php echo $employee["Id"]; ?>" target="_blank"  class="btn btn-primary btn-rounded glyphicon glyphicon-print"> Invice Print</a></div>
                            
                        </div>
                    </div>
					<?php } ?>
				</div>
				
				


        <div class="">
            <div class="content">
			<div class="page-header">
                <div class="row">
                    <div class="col-sm-4 col-3">
                        <h4 class="page-title">Employee List</h4>
                    </div>
					
                    <div class="col-sm-5 col-9 text-right m-b-20">
                       <label class="page-title"><h3>search</h3></label>
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names.." title="Type in a name">
</div>
                    </div>
                </div>
				<div class="row">
					<div class="col-md-12">
						<div class="table-responsive">

						
									<table  class="table table-border table-striped custom-table datatable mb-0">
                                    <thead class="ggg">
                                        <tr>
                                            <th>Employee Name</br>কর্মচারী নাম</th>
											<th class="kkk">Id</br>নম্বর  </th>
                                            <th>JobTitle</br>পদবী </th>
                                            <th>Phone No</br>মোবাইল নাম্বার</th>
                                             <th>Salary</br>বেতন</th>
                                            <th class="kkk">Status</br>অবস্থা</th>
                                           
											<th class="text-right">Action</br>সংশোধন </th>
                                        </tr>
                                    </thead>
                                    <tbody id="myTable" class="ggg">
									 <?php $sqli=$conn->query("Select * from employee JOIN jobtitles on employee.JobTitle=jobtitles.JId WHERE EUserId ='" . $_SESSION['UserId'] . "' ");
        foreach ($sqli as $key => $employee) {
  ?>
                                        <tr>
                                            <td><?php echo $employee ['EmployeeName']; ?></td>
											<td class="kkk"><?php echo $employee ['Id']; ?></td>
                                            <td><?php echo $employee ['JobTitle']; ?></td>
                                            <td><?php echo $employee ['PhoneNo']; ?></td>
                                            
											 <td><?php echo $employee ['Salary']; ?></td>
                                            <td class="kkk"><?php 
                    if($employee ['Status']=="1")
  
  {
                        echo '<a href="inactive_employee.php?Id='.$employee ['Id'].'&ope=0"> <button type="button" class="btn btn-primary btn-sm"> Active </button></a>';
  }
                    else
					{
                        echo '<a href="inactive_employee.php?Id='.$employee ['Id'].'&ope=1"><button type="button" class="btn btn-warning btn-sm">Ina-ve</button></a>';
					}
                    ?></td>
                                           
											<td class="text-right">
											<div class="dropdown dropdown-action">
												<a href="#" class="action-icon dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><i class="fa fa-ellipsis-v"></i></a>
												<div class="dropdown-menu dropdown-menu-right">
													<li>
													<a class="dropdown-item" href="EmployeeEdit.php?Id=<?php echo $employee["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-edit"></i> Edit</a>
													</li>
													<li>
													<a class="dropdown-item" href="Employeedisplay1.php?Id=<?php echo $employee["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-eye-open"></i> view</a>
													</li>
													<li>
													<a class="dropdown-item" href="#" data-toggle="modal" data-target="#delete_patient"><i class="fa fa-trash-o m-r-5"></i> Delete</a>
													</li>
												</div>
											</div>
										</td>
                                        </tr>
                                <?php } ?>        
                                    </tbody>
                                </table>
								</div>
                            </div>
                        </div>
                    </div>
				</div>		
           
--
</div>
</div>
    <div class="sidebar-overlay" data-reff=""></div>
    <script src="assets/js/jquery-3.2.1.min.js"></script>
	<script src="assets/js/popper.min.js"></script>
    <script src="assets/js/bootstrap.min.js"></script>
    <script src="assets/js/jquery.dataTables.min.js"></script>
    <script src="assets/js/dataTables.bootstrap4.min.js"></script>
    <script src="assets/js/jquery.slimscroll.js"></script>
    <script src="assets/js/app.js"></script>



</body>
</html>
<script>
$(document).ready(function(){
  $("#myInput").on("keyup", function() {
    var value = $(this).val().toLowerCase();
    $("#myTable tr").filter(function() {
      $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
    });
  });
});
</script>




