File "services.php"

Full Path: /home/cananyalcin/public_html/core/module/admin/services.php
File size: 50.3 KB
MIME-type: text/x-php
Charset: utf-8

<?php
header("content-type:text/html;charset=utf8");

$titleAdmin = "Servisler";

  if( $user["access"]["services"] != 1  ):
    header("Location:".site_url("admin"));
    exit();
  endif;

  if( $_SESSION["client"]["data"] ):
    $data = $_SESSION["client"]["data"];
    foreach ($data as $key => $value) {
      $$key = $value;
    }
    unset($_SESSION["client"]);
  endif;
   
  if( !route(2) ):
    $page   = 1;
  elseif( is_numeric(route(2)) ):
    $page   = route(2);
  elseif( !is_numeric(route(2)) ):
    $action = route(2);
  endif;

  if( empty($action) ):

		$query = $conn->query("SELECT * FROM settings", PDO::FETCH_ASSOC);
		if ( $query->rowCount() ):
			 foreach( $query as $row ):
				  $siraal = $row['servis_siralama'];
			 endforeach;
		endif;
		
		
    $services       = $conn->prepare("SELECT * FROM services RIGHT JOIN categories ON categories.category_id = services.category_id LEFT JOIN service_api ON service_api.id = services.service_api ORDER BY categories.category_line,services.service_line ");
    $services       -> execute(array());
    $services       = $services->fetchAll(PDO::FETCH_ASSOC);
    $serviceList    = array_group_by($services, 'category_name');
    require admin_view('services');
  elseif( $action == "new-service" ):
      if( $_POST ):
        $language   = $conn->prepare("SELECT * FROM languages WHERE default_language=:default");
        $language->execute(array("default"=>1));
        $language   = $language->fetch(PDO::FETCH_ASSOC);
        foreach ($_POST as $key => $value) {
          $$key = $value;
        }
          $cat = intval(@$_POST["category"]);

        if (!$cat) $cat = $category;
          $name      = mb_convert_encoding($_POST["name"][$language["language_code"]],"UTF-8","UTF-8");
        $multiName = json_encode($_POST["name"]);
        if( $package == 2 ): $max = $min; endif;
        if( empty($name) ):
          $error    = 1;
          $errorText= "Ürün adı boş olamaz";
          $icon     = "error";
        elseif( empty($package) ):
          $error    = 1;
          $errorText= "Ürün paketi boş olamaz";
          $icon     = "error";
        elseif( empty($category) ):
          $error    = 1;
          $errorText= "Ürün kategori boş olamaz";
          $icon     = "error";
        elseif( !is_numeric($min) ):
          $error    = 1;
          $errorText= "Minimum sipariş miktarı boş olamaz";
          $icon     = "error";
        elseif( $package != 2 && !is_numeric($max) ):
          $error    = 1;
          $errorText= "Maksimum sipariş miktarı boş olamaz";
          $icon     = "error";
        elseif( $min > $max ):
          $error    = 1;
          $errorText= "Minimum sipariş miktarı maksimum sipariş miktarından fazla olamaz";
          $icon     = "error";
        elseif( $mode != 1 && empty($provider) ):
          $error    = 1;
          $errorText= "Servis sağlayıcı boş olamaz";
          $icon     = "error";
        elseif( $mode != 1 && empty($service) ):
          $error    = 1;
          $errorText= "Servis sağlayıcı servis bilgisi boş olamaz";
          $icon     = "error";
        elseif( empty($secret) ):
          $error    = 1;
          $errorText= "Servis gizliliği boş olamaz";
          $icon     = "error";
        elseif( empty($want_username) ):
          $error    = 1;
          $errorText= "Sipariş bağlantısı boş olamaz";
          $icon     = "error";
        elseif( !is_numeric($price) ):
          $error    = 1;
          $errorText= "Ürün fiyatı rakamlardan oluşmalı";
          $icon     = "error";
        else:
              $api=$conn->prepare("SELECT * FROM service_api WHERE id=:id "); $api->execute(array("id"=>$provider)); $api=$api->fetch(PDO::FETCH_ASSOC);
              if( $mode == 1 ): $provider = 0; $service = 0; endif;
              if( $mode == 2 && $api["api_type"] == 1 ):
                $smmapi   = new SMMApi(); $services = $smmapi->action(array('key' =>$api["api_key"],'action' =>'services'),$api["api_url"]); $balance = $smmapi->action(array('key' =>$api["api_key"],'action' =>'balance'),$api["api_url"]);
                  foreach ($services as $apiService):
                    if( $service == $apiService->service ):
                      $detail["min"]=$apiService->min;
                      $detail["max"]=$apiService->max;
                      $detail["rate"]=$apiService->rate;
                      $detail["currency"]=$balance->currency;
                      $detail=json_encode($detail);
                    endif;
                  endforeach;
              else:
                $detail="";
              endif;
            $row = $conn->query("SELECT * FROM services WHERE category_id='$category' ORDER BY service_line DESC LIMIT 1 ")->fetch(PDO::FETCH_ASSOC);
            $conn->beginTransaction();
            $insert = $conn->prepare("INSERT INTO services SET name_lang=:multiName, service_secret=:secret, service_api=:api, service_dripfeed=:dripfeed, api_service=:api_service, api_detail=:detail, category_id=:category, service_line=:line, service_type=:type, service_package=:package, service_name=:name, service_price=:price, service_min=:min, service_max=:max, want_username=:want_username, service_speed=:speed, cancel_type=:cancel_type, refill_type=:refill_type, refill_time=:refill_time ");
            $insert = $insert-> execute(array("secret"=>$secret,"multiName"=>$multiName,"dripfeed"=>$dripfeed,"api"=>$provider,"api_service"=>$service,"detail"=>$detail,"category"=>$category,"line"=>$row["service_line"]+1,"type"=>2,"package"=>$package,"name"=>$name,"price"=>$price,"min"=>$min,"max"=>$max,"want_username"=>$want_username,"speed"=>$speed,"cancel_type"=>$cancel_type,"refill_type"=>$refill_type,"refill_time"=>$refill_time ));
            if( $insert ):
              $conn->commit();
              $referrer = site_url("admin/services");
              $error    = 1;
              $errorText= "İşlem başarılı";
              $icon     = "success";
            else:
              $conn->rollBack();
              $error    = 1;
              $errorText= "İşlem başarısız";
              $icon     = "error";
            endif;
        endif;
        echo json_encode(["t"=>"error","m"=>$errorText,"s"=>$icon,"r"=>$referrer]);
      endif;
  elseif( $action == "edit-service" ):
    $service_id  = route(3);
    if( !countRow(["table"=>"services","where"=>["service_id"=>$service_id]]) ): header("Location:".site_url("admin/services")); exit(); endif;
      if( $_POST ):
        $language   = $conn->prepare("SELECT * FROM languages WHERE default_language=:default");
        $language->execute(array("default"=>1));
        $language   = $language->fetch(PDO::FETCH_ASSOC);
          foreach ($_POST as $key => $value) {
            $$key = $value;
          }
          $cat = intval(@$_POST["category"]);
          $name      = mb_convert_encoding($_POST["name"][$language["language_code"]], 'UTF-8', 'UTF-8');
          $multiName = json_encode($_POST["name"]);

         

          if( $package == 2 ): $max = $min; endif;
          $serviceInfo  = $conn->prepare("SELECT * FROM services INNER JOIN service_api ON service_api.id = services.service_api WHERE service_id=:id ");
          $serviceInfo -> execute(array("id"=>route(3) ));
          $serviceInfo  = $serviceInfo->fetch(PDO::FETCH_ASSOC);
        if( empty($name) ):
          $error    = 1;
          $errorText= "Ürün adı boş olamaz";
          $icon     = "error";
        elseif( empty($package) ):
          $error    = 1;
          $errorText= "Ürün paketi boş olamaz";
          $icon     = "error";
        elseif( empty($category) ):
          $error    = 1;
          $errorText= "Ürün kategori boş olamaz";
          $icon     = "error";
        elseif( !is_numeric($min) ):
          $error    = 1;
          $errorText= "Minimum sipariş miktarı boş olamaz";
          $icon     = "error";
        elseif( $package != 2 && !is_numeric($max) ):
          $error    = 1;
          $errorText= "Maksimum sipariş miktarı boş olamaz";
          $icon     = "error";
        elseif( $min > $max ):
          $error    = 1;
          $errorText= "Minimum sipariş miktarı maksimum sipariş miktarından fazla olamaz";
          $icon     = "error";
        elseif( $mode != 1 && empty($provider) ):
          $error    = 1;
          $errorText= "Servis sağlayıcı boş olamaz";
          $icon     = "error";
        elseif( $mode != 1 && empty($service) ):
          $error    = 1;
          $errorText= "Servis sağlayıcı servis bilgisi boş olamaz";
          $icon     = "error";
        elseif( !is_numeric($price) ):
          $error    = 1;
          $errorText= "Ürün fiyatı rakamlardan oluşmalı";
          $icon     = "error";
        else:
            $api=$conn->prepare("SELECT * FROM service_api WHERE id=:id "); $api->execute(array("id"=>$provider)); $api=$api->fetch(PDO::FETCH_ASSOC);
            if( $mode == 1 ): $provider = 0; $service = 0; endif;
            if( $mode == 2 && $api["api_type"] == 1 ):
              $smmapi   = new SMMApi(); $services = $smmapi->action(array('key' =>$api["api_key"],'action' =>'services'),$api["api_url"]); $balance = $smmapi->action(array('key' =>$api["api_key"],'action' =>'balance'),$api["api_url"]);
                foreach ($services as $apiService):
                  if( $service == $apiService->service ):
                    $detail["min"]=$apiService->min;
                    $detail["max"]=$apiService->max;
                    $detail["rate"]=$apiService->rate;
                    $detail["currency"]=$balance->currency;
                    $detail=json_encode($detail);
                  endif;
                endforeach;
            else:
              $detail="";
            endif;
            if( $serviceInfo["category_id"] != $category ): $row = $conn->query("SELECT * FROM services WHERE category_id='$category' ORDER BY service_line DESC LIMIT 1 ")->fetch(PDO::FETCH_ASSOC); $last_category=$serviceInfo["category_id"]; $last_line=$serviceInfo["service_line"]; $line= $row["service_line"] + 1; else: $line= $serviceInfo["service_line"]; endif;
            if(isset($auto_min)){ $auto_min = 1; }else{ $auto_min = 0; }
            
            if(isset($auto_max)){ $auto_max = 1; }else{ $auto_max = 0; }
            
            if(isset($auto_price)){
              $auto_price = 1; 
              $yuzde = rateSync($sync_rate,$price_api);
              $topla = $yuzde+$price_api;
              $price = round($topla,2);
            }else{
               $auto_price = 0; 
               $price = $price; 
            }
            
            $conn->beginTransaction();
            $update = $conn->prepare("UPDATE services SET api_detail=:detail, name_lang=:multiName, service_dripfeed=:dripfeed, api_servicetype=:type, service_api=:api, api_service=:api_service, category_id=:category, service_package=:package, service_name=:name, service_price=:price, service_min=:min,service_secret=:secret, service_max=:max, want_username=:want_username, service_speed=:speed , sync_min=:sync_min, sync_max=:sync_max, sync_rate=:sync_rate, sync_price=:auto_price, cancel_type=:cancel_type, refill_type=:refill_type, refill_time=:refill_time WHERE service_id=:id ");
            $update = $update-> execute(array("id"=>route(3),"multiName"=>$multiName,"secret"=>$secret,"type"=>2,"detail"=>$detail,"dripfeed"=>$dripfeed,"api"=>$provider,"api_service"=>$service,"category"=>$category,"package"=>$package,"name"=>$name,"price"=>$price,"min"=>$min,"max"=>$max,"want_username"=>$want_username,"speed"=>$speed,"sync_min" => $auto_min,"sync_max" => $auto_max,"sync_rate"=>$sync_rate,"auto_price"=>$auto_price,"cancel_type"=>$cancel_type,"refill_type"=>$refill_type,"refill_time"=>$refill_time));
            if( $update ):
              $conn->commit();
              $rows = $conn->prepare("SELECT * FROM services WHERE category_id=:c_id && service_line>=:line ");
              $rows->execute(array("c_id"=>$last_category,"line"=>$last_line ));
              $rows = $rows->fetchAll(PDO::FETCH_ASSOC);
                foreach( $rows as $row ):
                  $update = $conn->prepare("UPDATE services SET service_line=:line WHERE service_id=:id ");
                  $update->execute(array("line"=>$row["service_line"]-1,"id"=>$row["service_id"] ));
                endforeach;
              $error    = 1;
              $errorText= "İşlem başarılı";
              $icon     = "success";
              $referrer = site_url("admin/services");
            else:
              $conn->rollBack();
              $error    = 1;
              $errorText= "İşlem başarısız";
              $icon     = "error";
            endif;
        endif;
        echo json_encode(["t"=>"error","m"=>$errorText,"s"=>$icon,"r"=>$referrer]);
      endif;
      
  elseif( $action == "edit-description" ):
    $service_id  = route(3);
    if( !countRow(["table"=>"services","where"=>["service_id"=>$service_id]]) ): header("Location:".site_url("admin/services")); exit(); endif;
      if( $_POST ):
        $language   = $conn->prepare("SELECT * FROM languages WHERE default_language=:default");
        $language->execute(array("default"=>1));
        $language   = $language->fetch(PDO::FETCH_ASSOC);
          foreach ($_POST as $key => $value) {
            $$key = $value;
          }
          $description  = $_POST["description"][$language["language_code"]];
          $multiDesc    = json_encode($_POST["description"]);

            $conn->beginTransaction();
            $update = $conn->prepare("UPDATE services SET service_description=:description, description_lang=:multi WHERE service_id=:id ");
            $update = $update-> execute(array("id"=>route(3),"multi"=>$multiDesc,"description"=>$description ));
            if( $update ):
              $conn->commit();
              $error    = 1;
              $errorText= "İşlem başarılı";
              $icon     = "success";
            else:
              $conn->rollBack();
              $error    = 1;
              $errorText= "İşlem başarısız";
              $icon     = "error";
            endif;
        echo json_encode(["t"=>"error","m"=>$errorText,"s"=>$icon]);
      endif;
  elseif( $action == "new-category" ):
      if( $_POST ):
        $name   = $_POST["name"];
        $secret = $_POST["secret"];
        $icon   = $_POST["icon"];

        if( empty($name) ):
          $error    = 1;
          $errorText= "Kategori adı boş olamaz";
          $icon     = "error";
        else:
          $row = $conn->query("SELECT * FROM categories ORDER BY category_line DESC LIMIT 1 ")->fetch(PDO::FETCH_ASSOC);
            $conn->beginTransaction();
            $insert = $conn->prepare("INSERT INTO categories SET category_name=:name, category_line=:line, category_secret=:secret  ");
            $insert = $insert-> execute(array("name"=>$name,"secret"=>$secret,"line"=>$row["category_line"]+1 ));
            if( $insert ):
              $conn->commit();
              unset($_SESSION["data"]);
              $error    = 1;
              $errorText= "İşlem başarılı";
              $icon     = "success";
              $referrer = site_url("admin/services");
            else:
              $conn->rollBack();
              $error    = 1;
              $errorText= "İşlem başarısız";
              $icon     = "error";
            endif;
        endif;
        echo json_encode(["t"=>"error","m"=>$errorText,"s"=>$icon,"r"=>$referrer]);
      endif;
  elseif( $action == "edit-category" ):
    $category_id  = route(3);
    if( !countRow(["table"=>"categories","where"=>["category_id"=>$category_id]]) ): header("Location:".site_url("admin/services")); exit(); endif;
    $row  = getRow(["table"=>"categories","where"=>["category_id"=>$category_id]]);
      if( $_POST ):
        $name   = $_POST["name"];
        $secret = $_POST["secret"];
        $icon   = $_POST["icon"];

        if( empty($name) ):
          $error    = 1;
          $errorText= "Kategori adı boş olamaz";
          $icon     = "error";
        else:
            $conn->beginTransaction();
            $update = $conn->prepare("UPDATE categories SET category_name=:name, category_secret=:secret WHERE category_id=:id  ");
            $update = $update-> execute(array("name"=>$name,"secret"=>$secret,"id"=>$category_id ));
            if( $update ):
              $conn->commit();
              $referrer = site_url("admin/services");
              $error    = 1;
              $errorText= "İşlem başarılı";
              $icon     = "success";
            else:
              $conn->rollBack();
              $error    = 1;
              $errorText= "İşlem başarısız";
              $icon     = "error";
            endif;
        endif;
        echo json_encode(["t"=>"error","m"=>$errorText,"s"=>$icon,"r"=>$referrer]);
      endif;
  elseif( $action == "new-subscription" ):
      if( $_POST ):
        $language   = $conn->prepare("SELECT * FROM languages WHERE default_language=:default");
        $language->execute(array("default"=>1));
        $language   = $language->fetch(PDO::FETCH_ASSOC);
        foreach ($_POST as $key => $value) {
          $$key = $value;
        }
          $cat = intval(@$_POST["category"]);
        if (!$cat) $cat = $category;
        $name      = mb_convert_encoding($_POST["name"][$language["language_code"]],"UTF-8","UTF-8");
        $multiName = json_encode($_POST["name"]);

        if( empty($name) ):
          $error    = 1;
          $errorText= "Ürün adı boş olamaz";
          $icon     = "error";
        elseif( empty($package) ):
          $error    = 1;
          $errorText= "Ürün paketi boş olamaz";
          $icon     = "error";
        elseif( empty($category) ):
          $error    = 1;
          $errorText= "Ürün kategori boş olamaz";
          $icon     = "error";
        elseif( empty($provider) ):
          $error    = 1;
          $errorText= "Servis sağlayıcı boş olamaz";
          $icon     = "error";
        elseif( empty($service) ):
          $error    = 1;
          $errorText= "Servis sağlayıcı servis bilgisi boş olamaz";
          $icon     = "error";
        elseif( empty($secret) ):
          $error    = 1;
          $errorText= "Servis gizliliği boş olamaz";
          $icon     = "error";
        elseif(  ( $package == 11 || $package == 12 ) && !is_numeric($price) ):
          $error    = 1;
          $errorText= "Ürün fiyatı rakamlardan oluşmalı";
          $icon     = "error";
        elseif( ( $package == 11 || $package == 12 ) && !is_numeric($min) ):
          $error    = 1;
          $errorText= "Minimum sipariş miktarı boş olamaz";
          $icon     = "error";
        elseif( ( $package == 11 || $package == 12 ) && !is_numeric($max) ):
          $error    = 1;
          $errorText= "Maksimum sipariş miktarı boş olamaz";
          $icon     = "error";
        elseif( ( $package == 11 || $package == 12 ) && $min > $max ):
          $error    = 1;
          $errorText= "Minimum sipariş miktarı maksimum sipariş miktarından fazla olamaz";
          $icon     = "error";
        elseif(  ( $package == 14 || $package == 15 ) && !is_numeric($autopost) ):
          $error    = 1;
          $errorText= "Gönderi miktarı boş olamaz";
          $icon     = "error";
        elseif(  ( $package == 14 || $package == 15 ) && !is_numeric($limited_min) ):
          $error    = 1;
          $errorText= "Sipariş miktarı boş olamaz";
          $icon     = "error";
        elseif(  ( $package == 14 || $package == 15 ) && !is_numeric($autotime) ):
          $error    = 1;
          $errorText= "Paket Süresi boş olamaz";
          $icon     = "error";
        else:
            $api=$conn->prepare("SELECT * FROM service_api WHERE id=:id "); $api->execute(array("id"=>$provider)); $api=$api->fetch(PDO::FETCH_ASSOC);
            if( $mode == 1 ): $provider = 0; $service = 0; endif;
            if( $mode == 2 && $api["api_type"] == 1 ):
              $smmapi   = new SMMApi(); $services = $smmapi->action(array('key' =>$api["api_key"],'action' =>'services'),$api["api_url"]); $balance = $smmapi->action(array('key' =>$api["api_key"],'action' =>'balance'),$api["api_url"]);
                foreach ($services as $apiService):
                  if( $service == $apiService->service ):
                    $detail["min"]=$apiService->min;
                    $detail["max"]=$apiService->max;
                    $detail["rate"]=$apiService->rate;
                    $detail["currency"]=$balance->currency;
                    $detail=json_encode($detail);
                  endif;
                endforeach;
            else:
              $detail="";
            endif;
            if( $package == 14 || $package == 15 ): $min = $limited_min; $max = $min; $price = $limited_price; endif;
            $row = $conn->query("SELECT * FROM services WHERE category_id='$category' ORDER BY service_line DESC LIMIT 1 ")->fetch(PDO::FETCH_ASSOC);
            $conn->beginTransaction();
            $insert = $conn->prepare("INSERT INTO services SET name_lang=:multiName, service_speed=:speed, service_api=:api, api_service=:api_service, api_detail=:detail, category_id=:category, service_line=:line, service_type=:type, service_package=:package, service_name=:name, service_price=:price, service_min=:min, service_max=:max, service_autotime=:autotime, service_autopost=:autopost, service_secret=:secret ");
            $insert = $insert-> execute(array("api"=>$provider,"multiName"=>$multiName,"speed"=>$speed,"detail"=>$detail,"api_service"=>$service,"category"=>$cat,"line"=>$row["service_line"]+1,"type"=>2,"package"=>$package,"name"=>$name,"price"=>$price,"min"=>$min,"max"=>$max,"autotime"=>$autotime,"autopost"=>$autopost,"secret"=>$secret ));
            if( $insert ):
              $conn->commit();
              $error    = 1;
              $errorText= "İşlem başarılı";
              $referrer = site_url("admin/services");
              $icon     = "success";
            else:
              $conn->rollBack();
              $error    = 1;
              $errorText= "İşlem başarısız";
              $icon     = "error";
            endif;
        endif;
        echo json_encode(["t"=>"error","m"=>$errorText,"s"=>$icon,"r"=>$referrer]);
      endif;
  elseif( $action == "edit-subscription" ):
      if( $_POST ):
        $language   = $conn->prepare("SELECT * FROM languages WHERE default_language=:default");
        $language->execute(array("default"=>1));
        $language   = $language->fetch(PDO::FETCH_ASSOC);
        foreach ($_POST as $key => $value) {
          $$key = $value;
        }
        // ismi değiştirdiği alan servicslerden
         $cat = intval(@$_POST["category"]);
          $name      = $_POST["name"][$language["language_code"]];
          $multiName = json_encode($_POST["name"]);
        $serviceInfo  = $conn->prepare("SELECT * FROM services INNER JOIN service_api ON service_api.id = services.service_api WHERE service_id=:id ");
        $serviceInfo -> execute(array("id"=>route(3) ));
        $serviceInfo  = $serviceInfo->fetch(PDO::FETCH_ASSOC);
        if( empty($name) ):
          $error    = 1;
          $errorText= "Ürün adı boş olamaz";
          $icon     = "error";
        elseif( empty($category) ):
          $error    = 1;
          $errorText= "Ürün kategori boş olamaz";
          $icon     = "error";
        elseif( empty($provider) ):
          $error    = 1;
          $errorText= "Servis sağlayıcı boş olamaz";
          $icon     = "error";
        elseif( empty($service) ):
          $error    = 1;
          $errorText= "Servis sağlayıcı servis bilgisi boş olamaz";
          $icon     = "error";
        elseif( empty($secret) ):
          $error    = 1;
          $errorText= "Servis gizliliği boş olamaz";
        elseif(  ( $serviceInfo["service_package"] == 11 || $serviceInfo["service_package"] == 12 ) && !is_numeric($price) ):
          $error    = 1;
          $errorText= "Ürün fiyatı rakamlardan oluşmalı";
          $icon     = "error";
        elseif( ( $serviceInfo["service_package"] == 11 || $serviceInfo["service_package"] == 12 ) && !is_numeric($min) ):
          $error    = 1;
          $errorText= "Minimum sipariş miktarı boş olamaz";
          $icon     = "error";
        elseif( ( $serviceInfo["service_package"] == 11 || $serviceInfo["service_package"] == 12 ) && !is_numeric($max) ):
          $error    = 1;
          $errorText= "Maksimum sipariş miktarı boş olamaz";
          $icon     = "error";
        elseif( ( $serviceInfo["service_package"] == 11 || $serviceInfo["service_package"] == 12 ) && $min > $max ):
          $error    = 1;
          $errorText= "Minimum sipariş miktarı maksimum sipariş miktarından fazla olamaz";
          $icon     = "error";
        elseif(  ( $serviceInfo["service_package"] == 14 || $serviceInfo["service_package"] == 15 ) && !is_numeric($autopost) ):
          $error    = 1;
          $errorText= "Gönderi miktarı boş olamaz";
          $icon     = "error";
        elseif(  ( $serviceInfo["service_package"] == 14 || $serviceInfo["service_package"] == 15 ) && !is_numeric($limited_min) ):
          $error    = 1;
          $errorText= "Sipariş miktarı boş olamaz";
          $icon     = "error";
        elseif(  ( $serviceInfo["service_package"] == 14 || $serviceInfo["service_package"] == 15 ) && !is_numeric($autotime) ):
          $error    = 1;
          $errorText= "Paket Süresi boş olamaz";
          $icon     = "error";
        else:
            $api=$conn->prepare("SELECT * FROM service_api WHERE id=:id "); $api->execute(array("id"=>$provider)); $api=$api->fetch(PDO::FETCH_ASSOC);
            if( $mode == 1 ): $provider = 0; $service = 0; endif;
            if( $mode == 2 && $api["api_type"] == 1 ):
              $smmapi   = new SMMApi(); $services = $smmapi->action(array('key' =>$api["api_key"],'action' =>'services'),$api["api_url"]); $balance = $smmapi->action(array('key' =>$api["api_key"],'action' =>'balance'),$api["api_url"]);
                foreach ($services as $apiService):
                  if( $service == $apiService->service ):
                    $detail["min"]=$apiService->min;
                    $detail["max"]=$apiService->max;
                    $detail["rate"]=$apiService->rate;
                    $detail["currency"]=$balance->currency;
                    $detail=json_encode($detail);
                  endif;
                endforeach;
            else:
              $detail="";
            endif;
            if( $serviceInfo["service_package"] == 14 || $serviceInfo["service_package"] == 15 ): $min = $limited_min; $max = $min; $price = $limited_price; endif;
            if( $serviceInfo["category_id"] != $category ): $row = $conn->query("SELECT * FROM services WHERE category_id='$category' ORDER BY service_line DESC LIMIT 1 ")->fetch(PDO::FETCH_ASSOC); $last_category=$serviceInfo["category_id"]; $last_line=$serviceInfo["service_line"]; $line= $row["service_line"] + 1; else: $line= $serviceInfo["service_line"]; endif;
            $conn->beginTransaction();
			// abone update işlem yeri
            $update = $conn->prepare("UPDATE services SET 
			service_speed=:speed, 
			service_api=:api,
			api_servicetype=:type, 
			api_service=:api_service, 
			api_detail=:detail,
			category_id=:category, 
			service_name=:name, 
			service_price=:price, 
			service_min=:min, 
			service_max=:max, 
			service_autotime=:autotime, 
			service_autopost=:autopost,
            name_lang=:name_lang,
			service_secret=:secret 
			WHERE service_id=:id ");
            $update = $update-> execute(array("id"=>route(3),"type"=>2,"speed"=>$speed,"detail"=>$detail,"api"=>$provider,"api_service"=>$service,"category"=>$category,"name"=>$name,"price"=>$price,"min"=>$min,"max"=>$max,"autotime"=>$autotime,"autopost"=>$autopost,"name_lang"=>$multiName,"secret"=>$secret ));
            if( $update ):
              $conn->commit();
              $rows = $conn->prepare("SELECT * FROM services WHERE category_id=:c_id && service_line>=:line ");
              $rows->execute(array("c_id"=>$last_category,"line"=>$last_line ));
              $rows = $rows->fetchAll(PDO::FETCH_ASSOC);
                foreach( $rows as $row ):
                  $update = $conn->prepare("UPDATE services SET service_line=:line WHERE service_id=:id ");
                  $update->execute(array("line"=>$row["service_line"]-1,"id"=>$row["service_id"] ));
                endforeach;
              $error    = 1;
              $errorText= "İşlem başarılı";
              $referrer = site_url("admin/services");
              $icon     = "success";
            else:
              $conn->rollBack();
              $error    = 1;
              $errorText= "İşlem başarısız";
              $icon     = "error";
            endif;
        endif;
        echo json_encode(["t"=>"error","m"=>$errorText,"s"=>$icon,"r"=>$referrer]);
      endif;
  elseif( $action == "service-active" ):
    $service_id  = route(3);
    if( countRow(["table"=>"services","where"=>["service_id"=>$service_id,"service_type"=>2]]) ): header("Location:".site_url("admin/services")); exit(); endif;
    $update = $conn->prepare("UPDATE services SET service_type=:type WHERE service_id=:id ");
    $update->execute(array("type"=>2,"id"=>$service_id));
      if( $update ):
        $_SESSION["client"]["data"]["success"]    = 1;
        $_SESSION["client"]["data"]["successText"]= "İşlem başarılı";
      else:
        $_SESSION["client"]["data"]["error"]    = 1;
        $_SESSION["client"]["data"]["errorText"]= "İşlem başarısız";
      endif;
      header("Location:".site_url("admin/services"));
  elseif( $action == "service-deactive" ):
    $service_id  = route(3);
    if( countRow(["table"=>"services","where"=>["service_id"=>$service_id,"service_type"=>1]]) ): header("Location:".site_url("admin/services")); exit(); endif;
    $update = $conn->prepare("UPDATE services SET service_type=:type WHERE service_id=:id ");
    $update->execute(array("type"=>1,"id"=>$service_id));
      if( $update ):
        $_SESSION["client"]["data"]["success"]    = 1;
        $_SESSION["client"]["data"]["successText"]= "İşlem başarılı";
      else:
        $_SESSION["client"]["data"]["error"]    = 1;
        $_SESSION["client"]["data"]["errorText"]= "İşlem başarısız";
      endif;
      header("Location:".site_url("admin/services"));
  elseif( $action == "del_price" ):
    $service_id  = route(3);
    if( !countRow(["table"=>"clients_price","where"=>["service_id"=>$service_id]]) ): $_SESSION["client"]["data"]["error"]    = 1; $_SESSION["client"]["data"]["errorText"]= "Servise ait fiyatlandırma bulunamadı."; header("Location:".site_url("admin/services")); exit(); endif;
    $delete = $conn->prepare("DELETE FROM clients_price  WHERE service_id=:id ");
    $delete->execute(array("id"=>$service_id));
      if( $delete ):
        $_SESSION["client"]["data"]["success"]    = 1;
        $_SESSION["client"]["data"]["successText"]= "İşlem başarılı";
      else:
        $_SESSION["client"]["data"]["error"]    = 1;
        $_SESSION["client"]["data"]["errorText"]= "İşlem başarısız";
      endif;
    header("Location:".site_url("admin/services"));
  elseif( $action == "category-active" ):
    $category_id  = route(3);
    $update = $conn->prepare("UPDATE categories SET category_type=:type WHERE category_id=:id ");
    $update->execute(array("type"=>2,"id"=>$category_id));
      if( $update ):
        $_SESSION["client"]["data"]["success"]    = 1;
        $_SESSION["client"]["data"]["successText"]= "İşlem başarılı";
      else:
        $_SESSION["client"]["data"]["error"]    = 1;
        $_SESSION["client"]["data"]["errorText"]= "İşlem başarısız";
      endif;
    header("Location:".site_url("admin/services"));
  elseif( $action == "category-deactive" ):
    $category_id  = route(3);
    $update = $conn->prepare("UPDATE categories SET category_type=:type WHERE category_id=:id ");
    $update->execute(array("type"=>1,"id"=>$category_id));
      if( $update ):
        $_SESSION["client"]["data"]["success"]    = 1;
        $_SESSION["client"]["data"]["successText"]= "İşlem başarılı";
      else:
        $_SESSION["client"]["data"]["error"]    = 1;
        $_SESSION["client"]["data"]["errorText"]= "İşlem başarısız";
      endif;
      header("Location:".site_url("admin/services"));
         header("Location:".site_url("admin/services"));
  elseif( $action == "multi-action" ):
    $services = $_POST["service"];
    $action   = $_POST["bulkStatus"];
      if( $action ==  "active" ):
        foreach ($services as $id => $value):
          $update = $conn->prepare("UPDATE services SET service_type=:type WHERE service_id=:id ");
          $update->execute(array("type"=>2,"id"=>$id));
        endforeach;
      elseif( $action ==  "deactive" ):
        foreach ($services as $id => $value):
          $update = $conn->prepare("UPDATE services SET service_type=:type WHERE service_id=:id ");
          $update->execute(array("type"=>1,"id"=>$id));
        endforeach;
      elseif( $action ==  "secret" ):
        foreach ($services as $id => $value):
          $update = $conn->prepare("UPDATE services SET service_secret=:secret WHERE service_id=:id ");
          $update->execute(array("secret"=>1,"id"=>$id));
        endforeach;
      elseif( $action ==  "desecret" ):
        foreach ($services as $id => $value):
          $update = $conn->prepare("UPDATE services SET service_secret=:secret WHERE service_id=:id ");
          $update->execute(array("secret"=>2,"id"=>$id));
        endforeach;
      elseif( $action ==  "del_price" ):
        foreach ($services as $id => $value):
          $delete = $conn->prepare("DELETE FROM clients_price  WHERE service_id=:id ");
          $delete->execute(array("id"=>$id));
        endforeach;
                elseif( $action == "del_service" ):
                          if($settings["guard_services_status"] == 2 && $settings["guard_system_status"] == 2){

             if($settings["guard_services_type"] == 2 ){
                 guardDeleteAllRoles();
                    $insert = $conn->prepare("INSERT INTO guard_log SET client_id=:c_id, action=:action, date=:date, ip=:ip ");
        $insert->execute(array("c_id"=>$user["client_id"],"action"=>"<strong>Servis silme</strong> İşlemi yapıldığı için tüm yetkileri alındı.","date"=>date("Y-m-d H:i:s"),"ip"=>GetIP() ));

                 
             }elseif($settings["guard_services_type"] == 1){
                 guardLogout();
                 
                    $insert = $conn->prepare("INSERT INTO guard_log SET client_id=:c_id, action=:action, date=:date, ip=:ip ");
        $insert->execute(array("c_id"=>$user["client_id"],"action"=>"<strong>Servis silme</strong> İşlemi yapıldığı için oturumu sonlandırıldı.","date"=>date("Y-m-d H:i:s"),"ip"=>GetIP() ));

             }
             
         }else{

foreach ($services as $id => $value):
      $delete = $conn->prepare("DELETE FROM services WHERE service_id=:id ");
      $delete->execute(array("id"=>$id));
    endforeach;

         }
                    
               
      endif;
    header("Location:".site_url("admin/services"));
    
    elseif( $action == "get_service_add" ):
        
      
    $format = $general["currency_format"];
    $services     = $_POST["servicesList"];
    $provider_id  = $_POST["provider"];
    $percentage_increase = $_POST["percent"];
 

    $currency     = $conn->prepare("SELECT * FROM settings WHERE id=:id");
    $currency     ->execute(array("id"=>"1"));
    $currency     = $currency->fetch(PDO::FETCH_ASSOC);
    $smmapi       = new SMMApi();
    $provider     = $conn->prepare("SELECT * FROM service_api WHERE id=:id");
    $provider     ->execute(array("id"=>$provider_id));
    $provider     = $provider->fetch(PDO::FETCH_ASSOC);
    $language   = $conn->prepare("SELECT * FROM languages WHERE default_language=:default");
    $language->execute(array("default"=>1));
    $language   = $language->fetch(PDO::FETCH_ASSOC);

    $apiServices  = $smmapi->action(array('key'=>$provider["api_key"],'action'=>'services'),$provider["api_url"]);
    $balance      = $smmapi->action(array('key'=>$provider["api_key"],'action'=>'balance'),$provider["api_url"]);
    
     function serviceTypeGetList2($type)
{
    switch ($type) {
        case "Default":
            $service_type = 1;
            break;
        case "Package":
            $service_type = 2;
            break;
        case "Custom Comments":
            $service_type = 3;
            break;
        case "Custom Comments Package":
            $service_type = 4;
            break;
        case "Mentions":
            $service_type = 5;
            break;
        case "Mentions with hashtags":
            $service_type = 6;
            break;
        case "Mentions custom list":
            $service_type = 7;
            break;
        case "Mentions custom list":
            $service_type = "8";
            break;
        case "Mentions user followers":
            $service_type = 9;
            break;
        case "Mentions media likers":
            $service_type = 10;
            break;
        case "Subscriptions":
            $service_type = 11;
            break;
        default:
            $service_type = 1;
            return $service_type;
    }
    return $service_type;
}

      if( count($services) ):
        foreach ($services as $service => $price):
            
             
            
          foreach ($apiServices as $apiService):
            

 
            // die();
            if( $service == $apiService->service && $service != 0 ):
                
                $check_category = $conn->prepare("SELECT * FROM categories WHERE category_name=:name");
                $check_category->execute(array("name"=>$apiService->category));
                $check_category = $check_category->fetch(PDO::FETCH_ASSOC);
                
             
                if(!empty($check_category)){
                    $cat = $check_category["category_id"];
                }else{
                    $check_category = $conn->prepare("SELECT * FROM categories ORDER BY category_line DESC LIMIT 1");
                    $check_category->execute();
                    $check_category = $check_category->fetch(PDO::FETCH_ASSOC);
                    $insertcat = $conn->prepare("INSERT INTO categories SET category_name=:name, category_line=:line, category_type=:type, category_secret=:secret");
                    
             
                        $insertcat = $insertcat->execute(array("name"=>$apiService->category,"line"=>$check_category["category_line"]+1,"type"=>"2","secret"=>"2" ));
                    
                    $cat = $conn->lastInsertId();
                    
                    
                }    
         

                        
                  $detail["min"]=$apiService->min;
              $detail["max"]=$apiService->max;
              $detail["rate"]=$apiService->rate;
              $detail["currency"]=$balance->currency;
        $apiService->refill = ($apiService->refill) ? "2" : "1";
$apiService->cancel= ($apiService->cancel) ? "2" : "1";

        $language   = $conn->prepare("SELECT * FROM languages WHERE default_language=:default");
        $language->execute(array("default"=>1));
        $language   = $language->fetch(PDO::FETCH_ASSOC);
        $siteLang = $language['language_code'];
        
              $package= serviceTypeGetList2($apiService->type);
              $name2 = mb_convert_encoding($apiService->name,"UTF-8","auto");
              $desc = mb_convert_encoding($apiService->desc ?? "","UTF-8","auto");
              $name3 = json_encode([$siteLang => $name2]);
              $desc_lang = json_encode([$siteLang => $desc]);
             
            
                
               if($detail["currency"] == abcus("id",$currency["site_currency"],"name")){
                  $price = $price;  
              }else{
                      $price = $price*abcus("name",$detail["currency"],"inverse_value");
    
   
              }
  
              
             
             
             
                if( $package == 11 ):
                  $insert = $conn->prepare("INSERT INTO services SET 
                  service_api=:api,
                  api_service=:api_service,
                  category_id=:category,
                  service_line=:line,
                  service_type=:type,
                  service_package=:package,
                  service_name=:name,
                  name_lang=:lang,
                  service_description=:desc,
                  description_lang=:lang2,
                  service_price=:price,
                  service_min=:min,
                  service_max=:max,
                  refill_type=:refill_type,
                                    cancel_type=:cancel_type");
                  $insert = $insert-> execute(array(
                      "api"=>$provider_id,
                      "api_service"=>$service,
                      "detail"=>json_encode($detail),
                      "category"=>$cat,
                      "line"=>1,
                      "type"=>2,
                      "package"=>$package,
                      "name"=>$name2,
                      "lang"=>$name3,
                      "lang2"=>$desc_lang,
                      "desc"=> $desc,
                      "price"=>$price,
                      "min"=>$apiService->min,
                      "max"=>$apiService->max,
                                            "refill_type"=>$apiService->refill,
                                                                                        "cancel_type"=>$apiService->cancel
));
                else:
                  $insert = $conn->prepare("INSERT INTO services SET 
                  service_api=:api,
                  api_service=:api_service,
                  api_detail=:detail,
                  category_id=:category,
                  service_line=:line,
                  service_type=:type,
                  service_package=:package,
                  service_name=:name,
                  name_lang=:lang,
                  service_description=:desc,
                  description_lang=:lang2,
                  service_price=:price,
                  service_min=:min,
                  service_max=:max,
                   refill_type=:refill_type,
                                    cancel_type=:cancel_type");
                  $insert = $insert-> execute(array(
                      "api"=>$provider_id,
                      "api_service"=>$service,
                      "detail"=>json_encode($detail),
                      "category"=>$cat,
                      "line"=>1,
                      "type"=>2,
                      "package"=>$package,
                      "name"=>$apiService->name,
                      "desc"=>$apiService->desc ?? "",
                      "lang"=>$name3,
                      "lang2"=>$desc_lang,
                      "price"=>$price,
                      "min"=>$apiService->min,
                      "max"=>$apiService->max,
                      "refill_type"=>$apiService->refill,
                                                                                        "cancel_type"=>$apiService->cancel));
                endif;
            
          
            endif;
          endforeach;
        endforeach;
        echo json_encode(["t"=>"error","m"=>"Success","s"=>"success","r"=>site_url("admin/services"),"time"=>0]);
      else:
        echo json_encode(["t"=>"error","m"=>"Lütfen eklemek istediğiniz en az 1 servisi seçin","s"=>"error"]);
      endif;
      
  elseif( $action == "get_services_add" ):
    $services     = $_POST["servicesList"];
    $provider_id  = $_POST["provider"];
    $smmapi       = new SMMApi();
    $provider     = $conn->prepare("SELECT * FROM service_api WHERE id=:id");
    $provider     ->execute(array("id"=>$provider_id));
    $cat = intval(@$_POST["category"]);
    $provider     = $provider->fetch(PDO::FETCH_ASSOC);
    $apiServices  = $smmapi->action(array('key'=>$provider["api_key"],'action'=>'services'),$provider["api_url"]);
    $balance      = $smmapi->action(array('key'=>$provider["api_key"],'action'=>'balance'),$provider["api_url"]);
    function serviceTypeGetList2($type)
{
    switch ($type) {
        case "Default":
            $service_type = 1;
            break;
        case "Package":
            $service_type = 2;
            break;
        case "Custom Comments":
            $service_type = 3;
            break;
        case "Custom Comments Package":
            $service_type = 4;
            break;
        case "Mentions":
            $service_type = 5;
            break;
        case "Mentions with hashtags":
            $service_type = 6;
            break;
        case "Mentions custom list":
            $service_type = 7;
            break;
        case "Mentions custom list":
            $service_type = "8";
            break;
        case "Mentions user followers":
            $service_type = 9;
            break;
        case "Mentions media likers":
            $service_type = 10;
            break;
        case "Subscriptions":
            $service_type = 11;
            break;
        default:
            $service_type = 1;
            return $service_type;
    }
    return $service_type;
}

      if( count($services) ):
        foreach ($services as $service => $price):
          foreach ($apiServices as $apiService):
            if( $service == $apiService->service && $service != 0 ):
              $detail["min"]=$apiService->min;
              $detail["max"]=$apiService->max;
              $detail["rate"]=$apiService->rate;
              $detail["currency"]=$balance->currency;
               $language   = $conn->prepare("SELECT * FROM languages WHERE default_language=:default");
        $language->execute(array("default"=>1));
        $language   = $language->fetch(PDO::FETCH_ASSOC);
        $siteLang = $language['language_code'];
  $apiService->refill = ($apiService->refill) ? "2" : "1";
$apiService->cancel= ($apiService->cancel) ? "2" : "1";

              $package= serviceTypeGetList2($apiService->type);
              $name2 = mb_convert_encoding($apiService->name,"UTF-8","auto");
              $desc = mb_convert_encoding($apiService->desc ?? "","UTF-8","auto");
              $name3 = json_encode([$siteLang => $name2]);
              $desc_lang = json_encode([$siteLang => $desc]);
             
                         
                       
            
    if($detail["currency"] == abcus("id",$currency["site_currency"],"name")){
                  $price = $price;  
              }else{
                      $price = $price*abcus("name",$detail["currency"],"inverse_value");
    
   
              }
     
         
             
             
             
                if( $package == 11 ):
                  $insert = $conn->prepare("INSERT INTO services SET 
                  service_api=:api,
                  api_service=:api_service,
                  category_id=:category,
                  service_line=:line,
                  service_type=:type,
                  service_package=:package,
                  service_name=:name,
                  name_lang=:lang,
                  service_description=:desc,
                  description_lang=:lang2,
                  service_price=:price,
                  service_min=:min,
                  service_max=:max,
                   refill_type=:refill_type,
                                    cancel_type=:cancel_type");
                  $insert = $insert-> execute(array(
                      "api"=>$provider_id,
                      "api_service"=>$service,
                      "detail"=>json_encode($detail),
                      "category"=>$cat,
                      "line"=>1,
                      "type"=>2,
                      "package"=>$package,
                      "name"=>$name2,
                      "lang"=>$name3,
                      "lang2"=>$desc_lang,
                      "desc"=> $desc,
                      "price"=>$price,
                      "min"=>$apiService->min,
                      "max"=>$apiService->max,
                      "refill_type"=>$apiService->refill,
                                                                                        "cancel_type"=>$apiService->cancel
                      ));
                else:
                  $insert = $conn->prepare("INSERT INTO services SET 
                  service_api=:api,
                  api_service=:api_service,
                  api_detail=:detail,
                  category_id=:category,
                  service_line=:line,
                  service_type=:type,
                  service_package=:package,
                  service_name=:name,
                  name_lang=:lang,
                  service_description=:desc,
                  description_lang=:lang2,
                  service_price=:price,
                  service_min=:min,
                  service_max=:max,
                   refill_type=:refill_type,
                                    cancel_type=:cancel_type");
                  $insert = $insert-> execute(array(
                      "api"=>$provider_id,
                      "api_service"=>$service,
                      "detail"=>json_encode($detail),
                      "category"=>$cat,
                      "line"=>1,
                      "type"=>2,
                      "package"=>$package,
                      "name"=>$apiService->name,
                      "desc"=>$apiService->desc ?? "",
                      "lang"=>$name3,
                      "lang2"=>$desc_lang,
                      "price"=>$price,
                      "min"=>$apiService->min,
                      "max"=>$apiService->max,
                      "refill_type"=>$apiService->refill,
                                                                                        "cancel_type"=>$apiService->cancel));
                endif;
            endif;
          endforeach;
        endforeach;
        echo json_encode(["t"=>"error","m"=>"İşlem başarılı","s"=>"success","r"=>site_url("admin/services"),"time"=>0]);
      else:
        echo json_encode(["t"=>"error","m"=>"Lütfen eklemek istediğiniz en az 1 servisi seçin","s"=>"error"]);
      endif;
  endif;
  
     if( route(2) == "delete" ):
         if($settings["guard_services_status"] == 2 && $settings["guard_system_status"] == 2){
             if($settings["guard_services_type"] == 2 ){
                 guardDeleteAllRoles();
             }elseif($settings["guard_services_type"] == 1){
                 guardLogout();
             }
             
         }else{
    $id     = route(3);
    $delete = $conn->prepare("DELETE FROM services WHERE service_id=:id ");
    $delete->execute(array("id"=>$id));
    header("Location:".site_url("admin/services"));
         }
  endif;
  
  
  if( route(2) == "del_cate" ):
    $id     = route(3);
    $delete = $conn->prepare("DELETE FROM categories WHERE category_id=:id ");
    $delete->execute(array("id"=>$id));
    header("Location:".site_url("admin/services"));
  endif;