<?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>Project list</title>

<html>
 


 <!-- 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/select2.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: 1000px) {
  td.hhh, th.hhh {display:none; }
  .page-header{

	text-align: center;
	background-color: Red;
	width: 100%;
	
	}
  }
  
  @media screen and (max-width: 600px) {
 tbody.ggg, thead.ggg {
    font-size:2.5vw;
  }
}

@media screen and (max-width: 800px) {
  td.kkk, th.kkk {display:none; }
 

	
	}
	.content {
    padding: 0px;
}


</style>
</head>
<body>
 
 <div id="content">
<div class="table-responsive-md">
<div  id="mob" style="margin-top: 40px">
</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-9 text-left m-b-20">
                        <a href="AddProject.php" class="btn btn-primary btn-rounded float-left"><i class="fa fa-plus"></i>Add Project</br>নতুন প্রজেক্ট যোগ করুন</br></a>
               </br></br></br>
                        
                    </div>
                    <div class="col-sm-4 col-3">
				
                        <h4 class="page">Active Project<br>চলমান প্রজেক্ট</h4>
                    </div>
					</div>


<hr>
				<div class="row doctor-grid">
 <?php $sqli=$conn->query("Select * from project where status=1 and PUserId ='" . $_SESSION['UserId'] . "'");
        foreach ($sqli as $key => $project) {
  ?>
                   <div class="col-md-4 col-sm-4  col-lg-4">
                        <div class="profile-widget">
                            <div class="doctor-img">
                                <a class="avatar" href="displayproject1.php?Id=<?php echo $project["Id"]; ?>"><img alt="" src='upload/<?php echo $project ['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="projectedit.php?Id=<?php echo $project["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($project['status']=="1")
  
  {
                         echo '<a href="inactive_project.php?Id='.$project ['Id'].'&ope=1"> <i class="fa fa-trash-o m-r-5"> Active </i></a>';
  }
                    else
					{
                        echo '<a href="inactive_project.php?Id='.$project ['Id'].'&ope=0"><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 $project["ProjectName"]; ?></a></h4>
                            <div class="doc-prof">Name: <?php echo $project ['ContactName']; ?></div>
							<div class="doc-prof">Phone: <?php echo $project ['PhoneNo']; ?></div>
							<div class="doc-prof">SortAddress : <?php echo $project ['SortAddress']; ?></div>
							<div class="doc-prof"><a style="padding: 10px; font-weight:bold;"  href="project_tran_print.php?Id=<?php echo $project["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">Project 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>Id</th>
												<th>ProjectName</th>
												<th>ContactName</th>
												<th>PhoneNo</th>
												<th  class="kkk">Email</th>
												<th  class="kkk">FileImage</th>
												<th>Status</th>
												<th class="text-right">Action</th>
                                        </tr>
                                    </thead>
                                    <tbody id="myTable" class="ggg">
									 <?php $sqli=$conn->query("Select * from project where PUserId ='" . $_SESSION['UserId'] . "'");
        foreach ($sqli as $key => $project) {
  ?>
                                        <tr>
                                            <td><?php echo $project ['Id']; ?></td>
											<td><?php echo $project ['ProjectName']; ?></td>
                                            <td><?php echo $project ['ContactName']; ?></td>
                                            <td><?php echo $project ['PhoneNo']; ?></td>
                                            
											 <td class="kkk"><?php echo $project ['Email']; ?></td>
											 <td class="kkk"><img src='upload/<?php echo $project ['FileName']; ?>' height='75' width='75'/></td>
											 
                                            <td><?php 
                    if($project ['Status']=="1")
  
  {
                        echo '<a href="inactive_project.php?Id='.$project ['Id'].'&ope=0"> <button type="button" class="btn btn-primary btn-sm"> Active </button></a>';
  }
                    else
					{
                        echo '<a href="inactive_project.php?Id='.$project ['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="projectedit.php?Id=<?php echo $project["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-edit"></i> Edit</a>
													</li>
													<li>
													<a class="dropdown-item" href="displayproject1.php?Id=<?php echo $project["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/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>
