
<?php
require('includes/header.php');

   include('connection.php');
 
?>


<?php 
$json_smsdata = [];

// প্রথমে আপনার সুবিধে মত করে loop এ ডেটাবেজ হতে ডেটা নিন অথবা অ্যাপ্লিকেশনের ইনপুট থেকে ডেটা নিন । ডেটাটি এরপর loop ব্যবহার করে ফরম্যাট করুন: এখানে while loop দেখানো হয়েছে আপনারা foreach loop ব্যবহার করতে পারেন । 

$dblink = mysqli_connect("localhost", "powerlin_demo", "kaisar@91#", "powerlin_demo");
/* If connection fails throw an error */
if (mysqli_connect_errno()) {
    echo "Could  not connect to database: Error: ".mysqli_connect_error();
    exit();
}

//চাইলে LIMIT দিয়ে  ৫০০ এসএমএস একসাথে ডেটাবেজ থেকে যাবে এমন লিমিট করে নিতে পারেন ।
$sqlquery = "SELECT * from project_transations JOIN project on project_transations.ProjectName=project.Id JOIN user on project_transations.PTUserId=user.UserId WHERE project_transations.Id  ='" . $_GET['Id'] . "'";
if ($result = mysqli_query($dblink, $sqlquery)) {
    /* fetch associative array */
    while ($row = mysqli_fetch_assoc($result)) {
       $name = $row["ProjectName"];
       $number = $row["PhoneNo"];
       $Amount = $row["Amount"];
    $PaymentDate = $row["PaymentDate"];
    $CompanyName = $row["CompanyName"];
$PhoneNumber = $row["PhoneNumber"];
$Id = $_GET['Id'];	 
	
// আমরা উপরে loop করে ডেটাবেজ থেকে name এবং number কলামের ডেটা নিলাম, এখন dynamic ম্যাসেজ লিখুন rawurlencode() funtion must use করতে হবে
$message = rawurlencode("Thanks For Payment $Amount TK,  
Project: $name,
Date: $PaymentDate,TrxID:$Id, 
Regards
$CompanyName,
$PhoneNumber
");

 

$json_smsdata[]= ['to'=>$number,'message'=>$message];
	  }
	  
}

$smsdata = json_encode($json_smsdata);

// $smsdata হলো আমাদের কাংখিত format করা ডেটা যা এখন সেন্ড করা হবে । 

			
			//এবার এসএমএস প্রেরন করুন নিচে শুধু টোকেন বদল করবেন
$token = "946719344416838120842078be09388c2e5087494f449fe31229";
$smsdata = $smsdata;

$url = "https://api.greenweb.com.bd/api.php";


$data= array(
'smsdata'=>"$smsdata",
'token'=>"$token"
); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$smsresult = curl_exec($ch);

//Result
echo $smsresult;

//Error Display
echo curl_error($ch);
?>

<?php $sqli=$conn->query("Select * from user WHERE Status=1 and UserId='" . $_SESSION['UserId'] . "'");
        foreach ($sqli as $key => $user) {
  ?>

	 <?php echo $user["CompanyName"]; ?>
	
		<?php } ?>