Advertisement
Guest User

Untitled

a guest
Oct 25th, 2011
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 12.58 KB | None | 0 0
  1. private function siustiEmailusApieKrovinius()
  2.     {
  3.        
  4.         //NUSTATYMAI:
  5.        
  6.         $maxLaiskaiImoneiPradzioj = 5;
  7.         //tarkim jei sitas nustatymas yra 10 (bet 10 gal per daug):
  8.         //sitas nustato, kiek viena imone gali issiust max laisku, per kiekviena siuntimo etapa,
  9.         //tai yra per pirmas 20 minuciu max 10, per tarpa 20-30 minuciu ir tarp 30-40 minuciu
  10.         //reiskia isviso per pirmasias valandos 40 minuciu imone gales issiusti 30 laiksku, o jau per likusias valandos
  11.         //minutes jau kiek vietos bebus tiek
  12.        
  13.         //cia sitie - bendrai visoms imonems sudejus
  14.        
  15.         //pagal minutes nustatom, koks maximalus issiuntimu kiekis gali tuo metu buti
  16.         //per pirmas 20 minuciu - max kiekis 10
  17.         //kai praejo 20 minuciu - max kiekis 20
  18.         //kai praejo 30 minuciu - max kiekis 50
  19.         //kai jau praejo tos valandos 40 minuciu, tai max issiuntimu kiekis galesu buti 90
  20.         //o jau jei issiusta 90 laisku, tai likusias valandos 20 minuciu tures laiskai palaukt savo eiles iki kitos val
  21.        
  22.        
  23.         $maxLaiskuiki20min = 10;  
  24.         $maxLaiskuiki30min = 20;
  25.         $maxLaiskuiki40min = 50;
  26.         $maxLaiskuValandai = 90;
  27.        
  28.        
  29.         //imonems kurios nori issiust si kieki, arba maziau, taikoma pirmenybe, nesvarbu, kad kokia kita bus uzsidejus
  30.         //100 laisku ir jie bus is seniau
  31.         $laiskuKiekisMazas = 5;
  32.        
  33.         //NUSTATYMAI end
  34.        
  35.         $darbartineMinute = date('i');
  36.         //echo $darbartineMinute; die;
  37.        
  38.         //$darbartineMinute = 41; //TESTAVIMAS
  39.        
  40.         if ($darbartineMinute >= 0 AND $darbartineMinute < 20) {
  41.             $maxLaiskuSiamLaikui = $maxLaiskuiki20min;
  42.         } else if ($darbartineMinute >= 20 AND $darbartineMinute < 30) {
  43.             $maxLaiskuSiamLaikui = $maxLaiskuiki30min;
  44.         } else if ($darbartineMinute >= 30 AND $darbartineMinute < 40) {
  45.             $maxLaiskuSiamLaikui = $maxLaiskuiki40min;
  46.         } else if ($darbartineMinute >= 40) {
  47.             $maxLaiskuSiamLaikui = $maxLaiskuValandai;
  48.         }
  49.        
  50.         //paziurim kiek emailu issiunte per sia valanda (sios dienos):
  51.        
  52.         $this->load->model('emails_model');
  53.        
  54.         $kiekisIssiustu = $this->emails_model->issiustaKrovEmailPerSiaVal();
  55.        
  56.        // $kiekisIssiustu = 50; //TESTAVIMAS
  57.        
  58.         echo $this->db->last_query();
  59.        
  60.         echo 'kiekis issiustu per sia valanda: ' . $kiekisIssiustu . '<br>';
  61.        
  62.         echo 'max issiuntimu siam laikui' . $maxLaiskuSiamLaikui . '<br>';
  63.        
  64.         $darGalimIssiust = $maxLaiskuSiamLaikui - $kiekisIssiustu;
  65.        
  66.         //echo $maxLaiskuSiamLaikui; die;
  67.        
  68.         /*
  69.        
  70.         SELECT
  71.           `tekstas`,
  72.           `id`,
  73.           `gavejo_elpastas`,
  74.           `imones_id` as id,
  75.          
  76.           (select count(*) from emailai_apie_krovinius ek where ek.imones_id = ek1.imones_id and ek.`issiuntimo_laikas` = '0000-00-00 00:00:00' ) as kiekis
  77.         FROM
  78.           (`emailai_apie_krovinius` ek1)
  79.         WHERE `issiuntimo_laikas` = '0000-00-00 00:00:00'
  80.         order by kiekis asc,
  81.          `sukurimo_laikas` ASC
  82.        
  83.         LIMIT 90 ;
  84.          
  85.          *
  86.          *
  87.         */
  88.        
  89.         //paimam emeilus kurios siusim, tie kurie sukurti anksciausiai, taip pat pirmenybe tiems kurie
  90.         //deda maziau ir jei dar nera praeje 40 minuciu, tai max 10 emailu vienai imonei
  91.         //nes gali but kad ju bus daugiau nei leidzia musu limitas
  92.        
  93.         /*
  94.         $selectCount = "(SELECT COUNT(*) FROM emailai_apie_krovinius ek
  95.                         WHERE ek.imones_id = ek1.imones_id AND ek.`issiuntimo_laikas` = '0000-00-00 00:00:00' ) AS kiekis";
  96.                        
  97.         $queryEmails = $this->db->where('issiuntimo_laikas', '0000-00-00 00:00:00')
  98.                             ->order_by('kiekis', 'ASC')
  99.                             ->order_by('sukurimo_laikas', 'ASC')->limit($darGalimIssiust)
  100.                             ->select(array('tekstas', 'id', 'gavejo_elpastas', 'imones_id', $selectCount))
  101.                             ->get('emailai_apie_krovinius ek1');
  102.        
  103.          *
  104.          *
  105.          */
  106.        
  107.         //paimam imones, kurios siuo metu nori issiust emailus ir kieki kuri ji noretu issiust, dvi uzklausos -
  108.         //viena - ten kur kiekis mazas, kita kur didelis
  109.        
  110.         $selectCount = "(SELECT COUNT(*) FROM emailai_apie_krovinius ek
  111.                        WHERE ek.imones_id = ek1.imones_id AND ek.`issiuntimo_laikas` = '0000-00-00 00:00:00' ) AS kiekis";
  112.        
  113.         $queryImMaz = $this->db->where('issiuntimo_laikas', '0000-00-00 00:00:00')
  114.                  ->distinct()
  115.                  ->select(array('imones_id', $selectCount))
  116.                  ->order_by('kiekis', 'ASC')
  117.                  ->having('kiekis <= ', $laiskuKiekisMazas)
  118.                  ->get('emailai_apie_krovinius ek1');
  119.        
  120.         $imonesSuMazaiLaisku = $queryImMaz->result_array();
  121.        
  122.         //echo $this->db->last_query(); die;
  123.        
  124.         $queryImDaug = $this->db->where('issiuntimo_laikas', '0000-00-00 00:00:00')
  125.                  ->distinct()
  126.                  ->select(array('imones_id', $selectCount))
  127.                  ->order_by('kiekis', 'ASC')
  128.                  ->having('kiekis > ', $laiskuKiekisMazas)
  129.                  ->get('emailai_apie_krovinius ek1');
  130.                  
  131.        
  132.         $imonesSuDaugLaisku = $queryImDaug->result_array();
  133.        
  134.         echo 'paimtos imones su daug laisku <br>';
  135.         echo $this->db->last_query() . '<br>'; //die;
  136.        
  137.         //su kiekviena imone paima laiskus, bet turi but paimama ne daugiau nei $darGalimIssiust reiksme
  138.         //pradedam nuo seniausiu tos imones laisku
  139.        
  140.         echo 'imones su mazai laisku - siunciam:' . '<br>';
  141.        
  142.         foreach ($imonesSuMazaiLaisku as $im) {
  143.              
  144.             echo $darGalimIssiust . 'dar galima issiust pirmas<br>';
  145.                    
  146.             if ($darGalimIssiust > 0) {
  147.                 $query = $this->db->where('issiuntimo_laikas', '0000-00-00 00:00:00')
  148.                               ->where('imones_id', $im['imones_id'])
  149.                               ->select(array('id', 'tekstas', 'gavejo_elpastas'))
  150.                               ->order_by('sukurimo_laikas', 'ASC')
  151.                               ->limit($darGalimIssiust)
  152.                               ->get('emailai_apie_krovinius');
  153.                              
  154.                
  155.                 $darGalimIssiust -= $query->num_rows();
  156.                
  157.                 echo 'mazu laisku uzklausa <br> ' . $this->db->last_query() . '<br>';
  158.                
  159.                 //issiunciam siuos laiskus
  160.                 foreach ($query->result_array() as $laiskas) {
  161.                    
  162.                     if(_mail($laiskas['gavejo_elpastas'], 'antraste', $laiskas['tekstas'], 'lt',
  163.                           Array('email' => 'admin@auto-loads.com', 'name' => 'auto-loads.com'), 'html')) {
  164.                          
  165.                          //uzstinam issiuntimo laika
  166.                          $this->db->where('id', $laiskas['id'])->set('issiuntimo_laikas', 'NOW()', FALSE)
  167.                                   ->update('emailai_apie_krovinius');
  168.                                  
  169.                          echo $this->db->last_query() . 'paztmejom kaip isiusta <br>';
  170.                                  
  171.                     } else {
  172.                         log_action('Emails', 'Emailo siuntimas apie krovinius nepavyko',
  173.                                    array('company' => $im['imones_id']));
  174.                     }
  175.                      
  176.                 }
  177.  
  178.                 echo 'baigem siuntima <br>';
  179.  
  180.             } else {
  181.                 //nebegalim siuo metu besiust, tai stabdom cikla
  182.                
  183.                 echo 'stabdom <br>';
  184.                 break;
  185.             }              
  186.         }
  187.        
  188.        
  189.         echo 'dabar imones su daug laisku <br>';
  190.        
  191.        
  192.         //issiunciam laiskus toms imonems kur daug yra laisku
  193.         //imam tiesiog po viena laiska is kiekvienos imones ir siuntinejam, tol kol limitas bus isnaudojamas
  194.         //su imonemis su mazai laisku nepaiminejam po viena, nes laikom, kad uzteks limito, ta prasme laisku kiekis jo neisnaudos
  195.         //o kaip bus is tikro, pamatysim veliau
  196.        
  197.         echo $darGalimIssiust . 'dar galima issiust pries while <br>';
  198.        
  199.         while($darGalimIssiust > 0 AND count($imonesSuDaugLaisku) > 0) {    //bet gali but kad imoniu masyvas yra, bet jau visi laiskai issiusti
  200.            
  201.             echo 'while ciklo pradzia <br>';
  202.            
  203.            // print_r($imonesSuDaugLaisku); die;
  204.            
  205.              foreach ($imonesSuDaugLaisku as $im) {
  206.            
  207.                  echo $darGalimIssiust . ' dar galima issiust trecias<br>';
  208.                
  209.                  if ($darGalimIssiust > 0) {
  210.                      
  211.                       $query = $this->db->where('issiuntimo_laikas', '0000-00-00 00:00:00')
  212.                                   ->where('imones_id', $im['imones_id'])
  213.                                   ->select(array('id', 'tekstas', 'gavejo_elpastas'))
  214.                                   ->order_by('sukurimo_laikas', 'ASC')
  215.                                   ->limit(1)
  216.                                   ->get('emailai_apie_krovinius');
  217.                      
  218.                       if ($query->num_rows() > 0) { //gali but kad neber laisku su ta imone, tad tikrinam
  219.                           $darGalimIssiust--;                              
  220.                      
  221.                           echo $this->db->last_query() . '<br>';
  222.                          
  223.                           //issiunciam paimta laiska
  224.                          
  225.                           $laiskas = $query->row_array();
  226.                          
  227.                           if(_mail($laiskas['gavejo_elpastas'], 'antraste', $laiskas['tekstas'], 'lt',
  228.                                   Array('email' => 'admin@auto-loads.com', 'name' => 'auto-loads.com'), 'html')) {
  229.                                  
  230.                                  //uzstinam issiuntimo laika
  231.                                  $this->db->where('id', $laiskas['id'])->set('issiuntimo_laikas', 'NOW()', FALSE)
  232.                                           ->update('emailai_apie_krovinius');
  233.                           } else {
  234.                                 log_action('Emails', 'Emailo siuntimas apie krovinius nepavyko',
  235.                                            array('company' => $im['imones_id']));
  236.                           }
  237.                       }
  238.                          
  239.                  } else {
  240.                      break;
  241.                      
  242.                  }
  243.             }
  244.  
  245.             //vel isrenkam imones, kurios turi daug laisku. Gali but kad but pvz, kad su darbartiniu
  246.             //masyvu jau visi laiskai bus issiusti, tada nebebus kam sumazint kintamojo $darGalimIssiust
  247.             //ir while ciklas suksis be galo, jei sito masyvo neatnaujinsim
  248.            
  249.            
  250.             $queryImDaug = $this->db->where('issiuntimo_laikas', '0000-00-00 00:00:00')
  251.                  ->distinct()
  252.                  ->select(array('imones_id', $selectCount))
  253.                  ->order_by('kiekis', 'ASC')
  254.                  ->having('kiekis > ', $laiskuKiekisMazas)
  255.                  ->get('emailai_apie_krovinius ek1');
  256.        
  257.             $imonesSuDaugLaisku = $queryImDaug->result_array();
  258.  
  259.         }
  260.        
  261.         echo 'pasibaige while ciklas';
  262.        
  263.        
  264.                                      
  265.         //echo $this->db->last_query() . '<br>';  die;
  266.        
  267.         //echo $darGalimIssiust . '<br>' ;      
  268.         //print_r($queryEmails->result_array()); //die;
  269.        
  270.         /*
  271.         foreach ($queryEmails->result_array() as $laiskas) {
  272.             if(_mail($laiskas['gavejo_elpastas'], 'antraste', $laiskas['tekstas'], 'lt',
  273.                   Array('email' => 'admin@auto-loads.com', 'name' => 'auto-loads.com'), 'html') OR 1) { //test OR 1
  274.                      
  275.                  //testuota, laiko uzsetinimas veikia
  276.                  
  277.                  //uzstinam issiuntimo laika
  278.                  $this->db->where('id', $laiskas['id'])->set('issiuntimo_laikas', 'NOW()', FALSE)
  279.                           ->update('emailai_apie_krovinius');
  280.             } else {
  281.                 log_action('Loads', 'Emailo siuntimas apie krovinius nepavyko',
  282.                            array('company' => $laiskas['imones_id']));
  283.             }
  284.         }*/
  285.     }
  286.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement