Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private function siustiEmailusApieKrovinius()
- {
- //NUSTATYMAI:
- $maxLaiskaiImoneiPradzioj = 5;
- //tarkim jei sitas nustatymas yra 10 (bet 10 gal per daug):
- //sitas nustato, kiek viena imone gali issiust max laisku, per kiekviena siuntimo etapa,
- //tai yra per pirmas 20 minuciu max 10, per tarpa 20-30 minuciu ir tarp 30-40 minuciu
- //reiskia isviso per pirmasias valandos 40 minuciu imone gales issiusti 30 laiksku, o jau per likusias valandos
- //minutes jau kiek vietos bebus tiek
- //cia sitie - bendrai visoms imonems sudejus
- //pagal minutes nustatom, koks maximalus issiuntimu kiekis gali tuo metu buti
- //per pirmas 20 minuciu - max kiekis 10
- //kai praejo 20 minuciu - max kiekis 20
- //kai praejo 30 minuciu - max kiekis 50
- //kai jau praejo tos valandos 40 minuciu, tai max issiuntimu kiekis galesu buti 90
- //o jau jei issiusta 90 laisku, tai likusias valandos 20 minuciu tures laiskai palaukt savo eiles iki kitos val
- $maxLaiskuiki20min = 10;
- $maxLaiskuiki30min = 20;
- $maxLaiskuiki40min = 50;
- $maxLaiskuValandai = 90;
- //imonems kurios nori issiust si kieki, arba maziau, taikoma pirmenybe, nesvarbu, kad kokia kita bus uzsidejus
- //100 laisku ir jie bus is seniau
- $laiskuKiekisMazas = 5;
- //NUSTATYMAI end
- $darbartineMinute = date('i');
- //echo $darbartineMinute; die;
- //$darbartineMinute = 41; //TESTAVIMAS
- if ($darbartineMinute >= 0 AND $darbartineMinute < 20) {
- $maxLaiskuSiamLaikui = $maxLaiskuiki20min;
- } else if ($darbartineMinute >= 20 AND $darbartineMinute < 30) {
- $maxLaiskuSiamLaikui = $maxLaiskuiki30min;
- } else if ($darbartineMinute >= 30 AND $darbartineMinute < 40) {
- $maxLaiskuSiamLaikui = $maxLaiskuiki40min;
- } else if ($darbartineMinute >= 40) {
- $maxLaiskuSiamLaikui = $maxLaiskuValandai;
- }
- //paziurim kiek emailu issiunte per sia valanda (sios dienos):
- $this->load->model('emails_model');
- $kiekisIssiustu = $this->emails_model->issiustaKrovEmailPerSiaVal();
- // $kiekisIssiustu = 50; //TESTAVIMAS
- echo $this->db->last_query();
- echo 'kiekis issiustu per sia valanda: ' . $kiekisIssiustu . '<br>';
- echo 'max issiuntimu siam laikui' . $maxLaiskuSiamLaikui . '<br>';
- $darGalimIssiust = $maxLaiskuSiamLaikui - $kiekisIssiustu;
- //echo $maxLaiskuSiamLaikui; die;
- /*
- SELECT
- `tekstas`,
- `id`,
- `gavejo_elpastas`,
- `imones_id` as id,
- (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
- FROM
- (`emailai_apie_krovinius` ek1)
- WHERE `issiuntimo_laikas` = '0000-00-00 00:00:00'
- order by kiekis asc,
- `sukurimo_laikas` ASC
- LIMIT 90 ;
- *
- *
- */
- //paimam emeilus kurios siusim, tie kurie sukurti anksciausiai, taip pat pirmenybe tiems kurie
- //deda maziau ir jei dar nera praeje 40 minuciu, tai max 10 emailu vienai imonei
- //nes gali but kad ju bus daugiau nei leidzia musu limitas
- /*
- $selectCount = "(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";
- $queryEmails = $this->db->where('issiuntimo_laikas', '0000-00-00 00:00:00')
- ->order_by('kiekis', 'ASC')
- ->order_by('sukurimo_laikas', 'ASC')->limit($darGalimIssiust)
- ->select(array('tekstas', 'id', 'gavejo_elpastas', 'imones_id', $selectCount))
- ->get('emailai_apie_krovinius ek1');
- *
- *
- */
- //paimam imones, kurios siuo metu nori issiust emailus ir kieki kuri ji noretu issiust, dvi uzklausos -
- //viena - ten kur kiekis mazas, kita kur didelis
- $selectCount = "(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";
- $queryImMaz = $this->db->where('issiuntimo_laikas', '0000-00-00 00:00:00')
- ->distinct()
- ->select(array('imones_id', $selectCount))
- ->order_by('kiekis', 'ASC')
- ->having('kiekis <= ', $laiskuKiekisMazas)
- ->get('emailai_apie_krovinius ek1');
- $imonesSuMazaiLaisku = $queryImMaz->result_array();
- //echo $this->db->last_query(); die;
- $queryImDaug = $this->db->where('issiuntimo_laikas', '0000-00-00 00:00:00')
- ->distinct()
- ->select(array('imones_id', $selectCount))
- ->order_by('kiekis', 'ASC')
- ->having('kiekis > ', $laiskuKiekisMazas)
- ->get('emailai_apie_krovinius ek1');
- $imonesSuDaugLaisku = $queryImDaug->result_array();
- echo 'paimtos imones su daug laisku <br>';
- echo $this->db->last_query() . '<br>'; //die;
- //su kiekviena imone paima laiskus, bet turi but paimama ne daugiau nei $darGalimIssiust reiksme
- //pradedam nuo seniausiu tos imones laisku
- echo 'imones su mazai laisku - siunciam:' . '<br>';
- foreach ($imonesSuMazaiLaisku as $im) {
- echo $darGalimIssiust . 'dar galima issiust pirmas<br>';
- if ($darGalimIssiust > 0) {
- $query = $this->db->where('issiuntimo_laikas', '0000-00-00 00:00:00')
- ->where('imones_id', $im['imones_id'])
- ->select(array('id', 'tekstas', 'gavejo_elpastas'))
- ->order_by('sukurimo_laikas', 'ASC')
- ->limit($darGalimIssiust)
- ->get('emailai_apie_krovinius');
- $darGalimIssiust -= $query->num_rows();
- echo 'mazu laisku uzklausa <br> ' . $this->db->last_query() . '<br>';
- //issiunciam siuos laiskus
- foreach ($query->result_array() as $laiskas) {
- if(_mail($laiskas['gavejo_elpastas'], 'antraste', $laiskas['tekstas'], 'lt',
- Array('email' => 'admin@auto-loads.com', 'name' => 'auto-loads.com'), 'html')) {
- //uzstinam issiuntimo laika
- $this->db->where('id', $laiskas['id'])->set('issiuntimo_laikas', 'NOW()', FALSE)
- ->update('emailai_apie_krovinius');
- echo $this->db->last_query() . 'paztmejom kaip isiusta <br>';
- } else {
- log_action('Emails', 'Emailo siuntimas apie krovinius nepavyko',
- array('company' => $im['imones_id']));
- }
- }
- echo 'baigem siuntima <br>';
- } else {
- //nebegalim siuo metu besiust, tai stabdom cikla
- echo 'stabdom <br>';
- break;
- }
- }
- echo 'dabar imones su daug laisku <br>';
- //issiunciam laiskus toms imonems kur daug yra laisku
- //imam tiesiog po viena laiska is kiekvienos imones ir siuntinejam, tol kol limitas bus isnaudojamas
- //su imonemis su mazai laisku nepaiminejam po viena, nes laikom, kad uzteks limito, ta prasme laisku kiekis jo neisnaudos
- //o kaip bus is tikro, pamatysim veliau
- echo $darGalimIssiust . 'dar galima issiust pries while <br>';
- while($darGalimIssiust > 0 AND count($imonesSuDaugLaisku) > 0) { //bet gali but kad imoniu masyvas yra, bet jau visi laiskai issiusti
- echo 'while ciklo pradzia <br>';
- // print_r($imonesSuDaugLaisku); die;
- foreach ($imonesSuDaugLaisku as $im) {
- echo $darGalimIssiust . ' dar galima issiust trecias<br>';
- if ($darGalimIssiust > 0) {
- $query = $this->db->where('issiuntimo_laikas', '0000-00-00 00:00:00')
- ->where('imones_id', $im['imones_id'])
- ->select(array('id', 'tekstas', 'gavejo_elpastas'))
- ->order_by('sukurimo_laikas', 'ASC')
- ->limit(1)
- ->get('emailai_apie_krovinius');
- if ($query->num_rows() > 0) { //gali but kad neber laisku su ta imone, tad tikrinam
- $darGalimIssiust--;
- echo $this->db->last_query() . '<br>';
- //issiunciam paimta laiska
- $laiskas = $query->row_array();
- if(_mail($laiskas['gavejo_elpastas'], 'antraste', $laiskas['tekstas'], 'lt',
- Array('email' => 'admin@auto-loads.com', 'name' => 'auto-loads.com'), 'html')) {
- //uzstinam issiuntimo laika
- $this->db->where('id', $laiskas['id'])->set('issiuntimo_laikas', 'NOW()', FALSE)
- ->update('emailai_apie_krovinius');
- } else {
- log_action('Emails', 'Emailo siuntimas apie krovinius nepavyko',
- array('company' => $im['imones_id']));
- }
- }
- } else {
- break;
- }
- }
- //vel isrenkam imones, kurios turi daug laisku. Gali but kad but pvz, kad su darbartiniu
- //masyvu jau visi laiskai bus issiusti, tada nebebus kam sumazint kintamojo $darGalimIssiust
- //ir while ciklas suksis be galo, jei sito masyvo neatnaujinsim
- $queryImDaug = $this->db->where('issiuntimo_laikas', '0000-00-00 00:00:00')
- ->distinct()
- ->select(array('imones_id', $selectCount))
- ->order_by('kiekis', 'ASC')
- ->having('kiekis > ', $laiskuKiekisMazas)
- ->get('emailai_apie_krovinius ek1');
- $imonesSuDaugLaisku = $queryImDaug->result_array();
- }
- echo 'pasibaige while ciklas';
- //echo $this->db->last_query() . '<br>'; die;
- //echo $darGalimIssiust . '<br>' ;
- //print_r($queryEmails->result_array()); //die;
- /*
- foreach ($queryEmails->result_array() as $laiskas) {
- if(_mail($laiskas['gavejo_elpastas'], 'antraste', $laiskas['tekstas'], 'lt',
- Array('email' => 'admin@auto-loads.com', 'name' => 'auto-loads.com'), 'html') OR 1) { //test OR 1
- //testuota, laiko uzsetinimas veikia
- //uzstinam issiuntimo laika
- $this->db->where('id', $laiskas['id'])->set('issiuntimo_laikas', 'NOW()', FALSE)
- ->update('emailai_apie_krovinius');
- } else {
- log_action('Loads', 'Emailo siuntimas apie krovinius nepavyko',
- array('company' => $laiskas['imones_id']));
- }
- }*/
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement