cachePackages();
}
// Dobimo array narocil (vseh oz. za dolocenega uporabnika)
private function getNarocila($usr_id=0){
global $admin_type;
$narocila = array();
// Vsa narocila lahko pregledujejo samo admini
if($admin_type == 0 && $usr_id == 0){
// Loop po vseh narocilih v sistemu
$sqlNarocilo = sisplet_query("SELECT un.*, u.name, u.surname, u.email, up.name AS package_name, up.description AS package_description, up.price AS package_price
FROM user_access_narocilo un, users u, user_access_paket up
WHERE un.usr_id=u.id AND un.package_id=up.id
ORDER BY un.id DESC
");
while($rowNarocilo = mysqli_fetch_array($sqlNarocilo)){
$narocila[] = $rowNarocilo;
}
}
elseif($usr_id > 0){
// Loop po vseh narocilih uporabnika
$sqlNarocilo = sisplet_query("SELECT un.*, u.name, u.surname, u.email, up.name AS package_name, up.description AS package_description, up.price AS package_price
FROM user_access_narocilo un, users u, user_access_paket up
WHERE un.usr_id='".$usr_id."' AND un.usr_id=u.id AND un.package_id=up.id
ORDER BY un.id DESC
");
while($rowNarocilo = mysqli_fetch_array($sqlNarocilo)){
$narocila[] = $rowNarocilo;
}
}
return $narocila;
}
// Izracunamo koncno ceno glede na paket, trajanje in popust (v eur)
public function getPrice($package_name, $trajanje, $discount=0){
$cena = array();
// Mesecna cena paketa
$package_price = $this->packages[$package_name]['price'];
// Mesecno ceno zmanjsamo glede na trajanje
if((int)$trajanje >= 12){
$cena['monthly'] = number_format($package_price - 2, 2, '.', '');
}
elseif((int)$trajanje >= 3){
$cena['monthly'] = number_format($package_price - 1, 2, '.', '');
}
else{
$cena['monthly'] = number_format($package_price, 2, '.', '');
}
// Se brez davka za monthly
$cena['monthly_without_tax'] = number_format(floatval($cena['monthly']) / 1.22, 2, '.', '');
// Cena za celotno obdobje
$cena['full'] = number_format((int)$trajanje * floatval($cena['monthly']), 2, '.', '');
// Se brez davka za full
$cena['full_without_tax'] = number_format(floatval($cena['full']) / 1.22, 2, '.', '');
// Cena s popustom
$cena['full_discount'] = $cena['full'];
$cena['discount'] = $discount;
// Odstejemo se popust ce je posebej nastavljen
if($discount != 0){
// Ce je popust vecji od celotnega zneska, je cena 0 (cena ne more biti negativna)
if($discount > $cena['full']){
$cena['full_discount'] = 0;
$cena['discount'] = $cena['full'];
}
else{
//$cena['full_discount'] = number_format(floatval($cena['full_discount']) - (floatval($discount) * floatval($cena['full']) / 100), 2, '.', '');
$cena['full_discount'] = number_format(floatval($cena['full_discount']) - floatval($discount), 2, '.', '');
}
}
// Dodatno se izracunamo popust v %
if($cena['full'] > 0)
$cena['discount_percentage'] = round(floatval($cena['discount']) / floatval($cena['full']) * 100);
else
$cena['discount_percentage'] = 0;
// Se davek
$cena['final_without_tax'] = number_format(floatval($cena['full_discount']) / 1.22, 2, '.', '');
$cena['tax'] = number_format($cena['full_discount'] - $cena['final_without_tax'], 2, '.', '');
$cena['final'] = $cena['full_discount'];
return $cena;
}
// Izracunamo popust glede na uporabnika (pri upgradu / downgradu paketa)
public function getDiscount($usr_id, $package_name, $trajanje){
// Dobimo trenuten dostop userja
$ua = UserAccess::getInstance($usr_id);
$user_access = $ua->getAccess();
// Dobimo polno ceno za paket
$price = $this->getPrice($package_name, $trajanje);
// UPGRADE oz. DOWNGRADE - iz 2ka na 3ka ali iz 3ka na 2ka
if( isset($user_access['package_name']) && (($user_access['package_name'] == '2ka' && $package_name == '3ka') || ($user_access['package_name'] == '3ka' && $package_name == '2ka')) ){
// Mesecna cena obstojecega paketa
$package_price = (int)$this->packages[$user_access['package_name']]['price'];
// Stevilo dni dokler je obstojeci paket se veljaven
$now = time();
$expire = strtotime($user_access['time_expire']);
$expire_in_days = floor(($expire - $now) / (60 * 60 * 24));
// Popravimo ceno, ce ima veljaven paket se za 3 mesece ali vec (pomeni, da je imel popust pri nakupu kar upostevamo)
if($expire_in_days > 92){
$package_price = number_format($package_price - 2, 2, '.', '');
}
elseif($expire_in_days > 31){
$package_price = number_format($package_price - 1, 2, '.', '');
}
// Popust izracunamo kot delez cene paketa in
$dayly_discount = number_format($package_price / 31, 2, '.', '');
$discount = number_format($dayly_discount * $expire_in_days, 2, '.', '');
return $discount;
}
// Drugace nimamo nobenega popusta
else{
return 0;
}
}
// Preverimo, ce narocilo slucajno nima ddv-ja (zavezanec za ddv iz tujine)
public function isWithoutDDV($narocilo_id){
$sqlNarocilo = sisplet_query("SELECT podjetje_drzava, podjetje_zavezanec
FROM user_access_narocilo
WHERE id='".$narocilo_id."'
");
if(mysqli_num_rows($sqlNarocilo) == 1){
$rowNarocilo = mysqli_fetch_array($sqlNarocilo);
if($rowNarocilo['podjetje_drzava'] != 'Slovenija' && $rowNarocilo['podjetje_drzava'] != 'Slovenia' && $rowNarocilo['podjetje_zavezanec'] == '1'){
return true;
}
}
return false;
}
// Dobimo jezik narocila - v istem jeziku so potem emaili in racun/predracun
public function getNarociloLanguage($narocilo_id){
$sqlNarocilo = sisplet_query("SELECT language
FROM user_access_narocilo
WHERE id='".$narocilo_id."'
");
if(mysqli_num_rows($sqlNarocilo) == 1){
$rowNarocilo = mysqli_fetch_array($sqlNarocilo);
if($rowNarocilo['language'] == 'sl'){
return 'si';
}
else{
return 'en';
}
}
return 'en';
}
// Izpisemo podatke o narocilih uporabnika
public function displayNarocila(){
global $lang, $global_user_id;
// Podatki o trenutnem paketu uporabnika
echo '
';
echo ''.$lang['srv_narocila_current'].' ';
$ua = UserAccess::getInstance($global_user_id);
$user_access = $ua->getAccess();
// Ce ni polja v bazi oz je nastavljen paket na 1 ima osnovni paket
if(!$user_access || $user_access['package_id'] == '1'){
echo ''.$lang['srv_narocila_no_package'].'.
';
}
// Imamo aktiviran paket - izpisemo podatke
else{
echo ''.$lang['srv_narocila_current_package'].': '.$user_access['package_name'],'
';
echo ''.$lang['srv_narocila_current_start'].': '.date( 'd.m.Y', strtotime($user_access['time_activate'])).'
';
echo ''.$lang['srv_narocila_current_expire'].': '.date( 'd.m.Y', strtotime($user_access['time_expire'])),'
';
}
echo ' ';
// Tabela vseh narocil uporabnika
echo '';
echo ''.$lang['srv_narocila_list'].' ';
$this->displayNarocilaTable();
echo ' ';
}
// Izpisemo seznam vseh narocil uporabnika
public function displayNarocilaTable(){
global $lang, $global_user_id;
// Dobimo vsa narocila uporabnika
$data = $this->getNarocila($global_user_id);
echo '';
// Glava tabele
echo ' ';
echo ' ';
echo ' '.$lang['srv_narocilo_paket'].' ';
echo ' '.$lang['srv_narocilo_trajanje'].' ('.$lang['srv_narocilo_trajanje_mesecev'].') ';
echo ' '.$lang['srv_narocilo_cas'].' ';
echo ' '.$lang['srv_narocilo_nacin_placila'].' ';
echo ' '.$lang['srv_narocilo_cena'].' ';
echo ' '.$lang['srv_narocilo_status'].' ';
echo ' '.$lang['srv_narocilo_pdf'].' ';
echo ' ';
echo ' ';
// Vsebina tabele
echo ' ';
foreach($data as $usr_id => $data_row){
echo '';
echo ''.$data_row['package_name'].' ';
echo ''.$data_row['trajanje'].' ';
echo ''.date("j.n.Y H:i", strtotime($data_row['time'])).' ';
echo ''.$data_row['payment_method'].' ';
// Cena
$cena = $this->getPrice($data_row['package_name'], $data_row['trajanje'], $data_row['discount']);
// Zavezanec iz tujine nima ddv-ja
if($this->isWithoutDDV($data_row['id']))
echo ''.$cena['final_without_tax'].' ';
else
echo ''.$cena['final'].' ';
if($data_row['status'] == '0')
$status_color = 'red';
elseif($data_row['status'] == '1')
$status_color = 'green';
else
$status_color = 'black';
echo ''.$lang['srv_narocilo_status_'.$data_row['status']].' ';
// PDF
echo '';
echo ''.$lang['srv_narocilo_pdf_predracun'].' ';
if($data_row['status'] == '1'){
echo ' | '.$lang['srv_narocilo_pdf_racun'].' ';
}
echo ' ';
echo ' ';
}
echo ' ';
echo '
';
}
// Izpisemo seznam vseh narocil - admin
public function displayNarocilaTableAdmin(){
global $lang, $global_user_id, $app_settings;
// Admini vidijo vsa narocila
$data = $this->getNarocila();
echo '';
// Glava tabele
echo ' ';
echo ' ';
echo ' '.$lang['srv_narocilo_ime'].' ';
echo ' '.$lang['email'].' ';
echo ' '.$lang['srv_narocilo_paket'].' ';
echo ' '.$lang['srv_narocilo_trajanje'].' ('.$lang['srv_narocilo_trajanje_mesecev'].') ';
echo ' '.$lang['srv_narocilo_cas'].' ';
echo ' '.$lang['srv_narocilo_nacin_placila'].' ';
echo ' '.$lang['srv_narocilo_ddv'].' ';
echo ' '.$lang['srv_narocilo_cena'].' ';
echo ' '.$lang['srv_narocilo_status'].' ';
echo ' '.$lang['srv_narocilo_podjetje_eracun'].' ';
echo ' '.$lang['srv_narocilo_pdf'].' ';
echo ' '.$lang['edit2'].' ';
echo ' ';
echo ' ';
// Vsebina tabele
echo ' ';
foreach($data as $usr_id => $data_row){
if($data_row['status'] == '0')
$status_color = 'red';
elseif($data_row['status'] == '1')
$status_color = 'green';
else
$status_color = 'black';
echo '';
echo ''.$data_row['name'].' '.$data_row['surname'].' '.($data_row['podjetje_ime'] != '' ? '('.$data_row['podjetje_ime'].')' : '').' ';
echo ''.$data_row['email'].' ';
echo ''.$data_row['package_name'].' ';
echo ''.$data_row['trajanje'].' ';
echo ''.date("j.n.Y H:i", strtotime($data_row['time'])).' ';
echo ''.$lang['srv_narocilo_nacin_placila_'.$data_row['payment_method']].' ';
// Ali placa ddv (podjetje - zavezanec iz tujine ga ne)
echo ''.($this->isWithoutDDV($data_row['id']) ? $lang['no'] : $lang['yes']).' ';
// Cena
$cena = $this->getPrice($data_row['package_name'], $data_row['trajanje'], $data_row['discount']);
// Zavezanec iz tujine nima ddv-ja
if($this->isWithoutDDV($data_row['id']))
echo ''.$cena['final_without_tax'].' ';
else
echo ''.$cena['final'].' ';
echo '';
echo $lang['srv_narocilo_status_'.$data_row['status']];
// Na www.1ka.si lahko narocilo placa samo Goran
if($data_row['status'] != '1' && $data_row['status'] != '2' && ($app_settings['app_name'] != 'www.1ka.si' || $global_user_id == '112696'))
echo ' | '.$lang['srv_narocilo_placaj'].' ';
echo ' ';
// Eračun
echo ''.($data_row['podjetje_eracun'] == '1' ? $lang['yes'] : $lang['no']).' ';
echo '';
// Ce je bila cena 0 je bil avtomatsko "placan" in nima racuna oz. predracuna
if($cena['final'] == 0){
echo '/';
}
else{
echo ''.$lang['srv_narocilo_pdf_predracun'].' ';
if($data_row['status'] == '1'){
echo ' | '.$lang['srv_narocilo_pdf_racun'].' ';
}
}
echo ' ';
echo '';
echo ' ';
// Narocilo se lahko pobrise samo ce se ni placano
if($data_row['status'] != '1')
echo ' | ';
echo ' ';
echo ' ';
}
echo ' ';
echo '
';
// Se inicializiramo dataTable jquery
echo '';
}
// Prikazemo popup za pregled in urejanje narocilo
private function displayNarociloEdit($narocilo_id){
global $lang;
// Loop po vseh narocilih uporabnika
$sqlNarocilo = sisplet_query("SELECT un.*, u.name, u.surname, u.email, up.name AS package_name, up.description AS package_description, up.price AS package_price
FROM user_access_narocilo un, users u, user_access_paket up
WHERE un.id='".$narocilo_id."' AND un.usr_id=u.id AND un.package_id=up.id
");
if(mysqli_num_rows($sqlNarocilo) == 0){
echo 'Naročilo ne obstaja!';
return;
}
$rowNarocilo = mysqli_fetch_array($sqlNarocilo);
echo ''.$lang['srv_narocilo_number'].' '.$narocilo_id.' ';
echo '';
echo '
';
// Gumbi na dnu
echo '
';
echo '
';
}
// Ustvari novo narocilo za uporabnika
public function createNarocilo($narocilo_data){
global $global_user_id;
global $lang;
$response = array();
if(isset($narocilo_data['email'])){
$uporabnik = sisplet_query("SELECT id, email FROM users WHERE email='".$narocilo_data['email']."'", "obj");
$usr_id = $uporabnik->id;
}
$status = isset($narocilo_data['status']) ? $narocilo_data['status'] : 0;
$package_id = isset($narocilo_data['package_id']) ? $narocilo_data['package_id'] : 1;
$payment_method = isset($narocilo_data['payment_method']) ? $narocilo_data['payment_method'] : 0;
//$discount = isset($narocilo_data['discount']) ? $narocilo_data['discount'] : 0;
$trajanje = isset($narocilo_data['trajanje']) ? $narocilo_data['trajanje'] : 0;
$ime_na_racunu = isset($narocilo_data['ime']) ? $narocilo_data['ime'] : '';
$phone = isset($narocilo_data['phone']) ? $narocilo_data['phone'] : '';
$podjetje_ime = isset($narocilo_data['podjetje_ime']) ? $narocilo_data['podjetje_ime'] : '';
$podjetje_naslov = isset($narocilo_data['podjetje_naslov']) ? $narocilo_data['podjetje_naslov'] : '';
$podjetje_postna = isset($narocilo_data['podjetje_postna']) ? $narocilo_data['podjetje_postna'] : '';
$podjetje_posta = isset($narocilo_data['podjetje_posta']) ? $narocilo_data['podjetje_posta'] : '';
$podjetje_drzava = isset($narocilo_data['podjetje_drzava']) ? $narocilo_data['podjetje_drzava'] : '';
$podjetje_davcna = isset($narocilo_data['podjetje_davcna']) ? $narocilo_data['podjetje_davcna'] : '';
$podjetje_zavezanec = isset($narocilo_data['podjetje_ddv']) ? $narocilo_data['podjetje_ddv'] : '';
$podjetje_eracun = isset($narocilo_data['podjetje_eracun']) ? '1' : '0';
$language = isset($narocilo_data['lang']) ? $narocilo_data['lang'] : 'sl';
if($usr_id <= 0){
$response['error'] = 'ERROR! Missing user ID.';
$response['success'] = false;
return $response;
}
$brezplacen_preklop = false;
// Preverimo, ce ima uporabnik ze aktiven paket - po novem lahko to predhodno preklaplja, ker se to preracuna v popust
$sqlAccess = sisplet_query("SELECT * FROM user_access WHERE usr_id='".$usr_id."' AND package_id != '1' AND time_expire > NOW()");
if(mysqli_num_rows($sqlAccess) > 0){
$rowAccess = mysqli_fetch_array($sqlAccess);
// Ce zeli uporabnik kupiti drug placljiv paket kot ga ima trenutno, preracunamo obstojec paket v popust
if($rowAccess['package_id'] != $package_id){
$sqlPackage = sisplet_query("SELECT name FROM user_access_paket WHERE id='".$package_id."'");
$rowPackage = mysqli_fetch_array($sqlPackage);
$discount = $this->getDiscount($usr_id, $rowPackage['name'], $trajanje);
// Preverimo, ce je cena slucajno 0 - oznacimo, da gre za brezplacen preklop
$cena = $this->getPrice($rowPackage['name'], $trajanje, $discount);
if($cena['final'] == 0){
$brezplacen_preklop = true;
// Dodamo piškotek, če gre za brezplačni nakup
global $cookie_domain;
setcookie('brezplacen_preklop', 1, time()+1800, '/', $cookie_domain);
}
}
}
$sqlNarocilo = sisplet_query("INSERT INTO user_access_narocilo
(usr_id, status, time, package_id, ime, payment_method, discount, trajanje, phone, podjetje_ime, podjetje_naslov, podjetje_postna, podjetje_posta, podjetje_drzava, podjetje_davcna, podjetje_zavezanec, podjetje_eracun, language)
VALUES
('".$usr_id."', '".$status."', NOW(), '".$package_id."', '".$ime_na_racunu."', '".$payment_method."', '".$discount."', '".$trajanje."', '".$phone."', '".$podjetje_ime."', '".$podjetje_naslov."', '".$podjetje_postna."', '".$podjetje_posta."', '".$podjetje_drzava."', '".$podjetje_davcna."', '".$podjetje_zavezanec."', '".$podjetje_eracun."', '".$language."')
");
if (!$sqlNarocilo){
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
$response['success'] = false;
return $response;
}
$narocilo_id = mysqli_insert_id($GLOBALS['connect_db']);
// Ce gre za brezplacen preklop izvedemo placilo (aktivacijo paketa) brez izdaje racuna, maila...
if($brezplacen_preklop){
$response = $this->payNarocilo($narocilo_id, $brezplacen_preklop);
}
// Drugace izdamo predracun oz. placamo s kartico/paypalom
else{
// Glede na tip plačila dobmo ustrezen url (predracun, paypal, kartica)
// Paypal
if($payment_method == '2'){
$response = $this->finishNarociloPaypal($narocilo_id, $narocilo_data);
}
// Kartica
elseif($payment_method == '3'){
$response = $this->finishNarociloStripe($narocilo_id, $narocilo_data);
}
// Predracun
else{
$response = $this->finishNarociloPredracun($narocilo_id, $narocilo_data);
}
}
return $response;
}
// Dokoncaj narocilo s placilom preko predracuna
private function finishNarociloPredracun($narocilo_id, $narocilo_data){
global $lang;
$response = array();
$response['narocilo_id'] = $narocilo_id;
$cebelica = new UserNarocilaCebelica($narocilo_id);
$response['payment_link'] = $cebelica->getNarociloPredracun();
// Posljemo mail s predracunom
$subject = $lang['srv_narocilo_email_predracun_subject'].' '.$narocilo_id;
$content = $lang['srv_narocilo_email_predracun_content1'];
$content .= ' '.$lang['srv_narocilo_email_predracun_content2'];
$content .= ''.$lang['srv_narocilo_email_predracun_file'].' ';
// Podpis
$signature = Common::getEmailSignature();
$content .= $signature;
try{
$MA = new MailAdapter($anketa=null, $type='payments');
$MA->addRecipients($narocilo_data['email']);
// Dodamo predracun v attachment
$MA->addAttachment(file_get_contents($response['payment_link']), $file_name='1ka_narocilo_'.$narocilo_id.'_predracun.pdf');
// Posljemo mail
$resultX = $MA->sendMail($content, $subject);
$response['success'] = true;
}
catch (Exception $e){
$response['error'] = 'ERROR! Sending email with invoice failed.';
$response['success'] = false;
return $response;
}
return $response;
}
// Dokoncaj narocilo s placilom preko predracuna
private function finishNarociloStripe($narocilo_id, $narocilo_data){
global $lang;
$response = array();
$token = isset($narocilo_data['stripe_id']) ? $narocilo_data['stripe_id'] : '';
if($token == ''){
$response['error'] = 'ERROR! Missing token.';
$response['success'] = false;
return $response;
}
// Inicializiramo stripe
$stripe = new UserNarocilaStripe($narocilo_id);
$stripe_response = $stripe->stripePayment($token);
// Ce je bilo placilo preko stripa uspesno zgeneriramo racun in uporabniku aktiviramo paket
if($stripe_response['success'] == true){
$response['stripe_note'] = $stripe_response['stripe_note'];
$payment_response = $this->payNarocilo($narocilo_id);
if($payment_response['success'] == true){
$response['racun'] = $payment_response['racun'];
$response['success'] = true;
}
else{
$response['error'] = $payment_response['error'];
$response['success'] = false;
}
}
else{
$response['error'] = $stripe_response['error'];
$response['success'] = false;
}
$response['narocilo_id'] = $narocilo_id;
return $response;
}
// Dokoncaj narocilo s placilom preko predracuna
private function finishNarociloPaypal($narocilo_id, $narocilo_data){
global $lang;
$response = array();
// Inicializiramo paypal
$paypal = new UserNarocilaPaypal($narocilo_id);
// Ustvarimo paypal placilo in vrnemo url, da se uporabnik prijavi v paypal in potrdi placilo
$paypal_response = $paypal->paypalCreatePayment();
// Ce je bilo placilo preko stripa uspesno zgeneriramo racun in uporabniku aktiviramo paket
if($paypal_response['success'] == true){
$response['paypal_link'] = $paypal_response['paypal_link'];
$response['success'] = true;
}
else{
$response['error'] = $paypal_response['error'];
$response['success'] = false;
}
return $response;
}
// Posodobi obstojece narocilo za uporabnika
public function updateNarocilo($narocilo_data){
global $global_user_id;
$response = array();
// ce nimamo id-ja narocila vrnemo error
if(!isset($narocilo_data['narocilo_id']) || $narocilo_data['narocilo_id'] == '0'){
$response['error'] = 'Napaka! Manjka ID narocila!';
$response['success'] = false;
return $response;
}
$update = '';
$update .= isset($narocilo_data['status']) ? ', status='.$narocilo_data['status'] : '';
$update .= isset($narocilo_data['package_id']) ? ', package_id='.$narocilo_data['package_id'] : '';
$update .= isset($narocilo_data['payment_method']) ? ', payment_method='.$narocilo_data['payment_method'] : '';
$update .= isset($narocilo_data['discount']) ? ', discount='.$narocilo_data['discount'] : '';
$update .= isset($narocilo_data['ime']) ? ', ime='.$narocilo_data['ime'] : '';
$update .= isset($narocilo_data['trajanje']) ? ', trajanje='.$narocilo_data['trajanje'] : '';
$update .= isset($narocilo_data['phone']) ? ', phone='.$narocilo_data['phone'] : '';
$update .= isset($narocilo_data['podjetje_ime']) ? ', podjetje_ime='.$narocilo_data['podjetje_ime'] : '';
$update .= isset($narocilo_data['podjetje_naslov']) ? ', podjetje_naslov='.$narocilo_data['podjetje_naslov'] : '';
$update .= isset($narocilo_data['podjetje_postna']) ? ', podjetje_postna='.$narocilo_data['podjetje_postna'] : '';
$update .= isset($narocilo_data['podjetje_posta']) ? ', podjetje_posta='.$narocilo_data['podjetje_posta'] : '';
$update .= isset($narocilo_data['podjetje_drzava']) ? ', podjetje_drzava='.$narocilo_data['podjetje_drzava'] : '';
$update .= isset($narocilo_data['podjetje_davcna']) ? ', podjetje_davcna='.$narocilo_data['podjetje_davcna'] : '';
$update .= isset($narocilo_data['podjetje_ddv']) ? ', podjetje_zavezanec='.$narocilo_data['podjetje_ddv'] : '';
$update .= isset($narocilo_data['podjetje_eracun']) ? ', podjetje_eracun='.$narocilo_data['podjetje_eracun'] : '';
$update = substr($update, 1);
// Update narocila in pobrisemo id racuna in predracuna, ker ga moramo generirati na novo
$sqlNarocilo = sisplet_query("UPDATE user_access_narocilo SET ".$update.", cebelica_id_racun='0', cebelica_id_predracun='0' WHERE id='".$narocilo_data['narocilo_id']."'");
if (!$sqlNarocilo){
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
$response['success'] = false;
return $response;
}
$response['success'] = true;
return $response;
}
// Placa obstojece narocilo, uporabniku aktivira paket, zgenerira racun in ga poslje po mailu
public function payNarocilo($narocilo_id, $brezplacen_preklop=false){
global $global_user_id;
global $lang;
$response = array();
// Ce nimamo id-ja narocila vrnemo error
if($narocilo_id == 0){
$response['error'] = 'Napaka! Manjka ID narocila!';
$response['success'] = false;
return $response;
}
// Dobimo podatke narocila
$sqlNarocilo = sisplet_query("SELECT n.*, u.email FROM user_access_narocilo n, users u WHERE n.id='".$narocilo_id."' AND u.id=n.usr_id");
$rowNarocilo = mysqli_fetch_array($sqlNarocilo);
// Ce je bil racun ze placan ne naredimo nicesar
if($rowNarocilo['status'] == 1){
$response['error'] = 'Napaka! Račun je že plačan!';
$response['success'] = false;
return $response;
}
// Nastavimo ustrezen jezik - mail mora biti v istem jeziku kot je bilo narocilo
if($rowNarocilo['language'] == 'en'){
include('../../lang/2.php');
}
// Preverimo, ce ima uporabnik ze aktiven paket in ce je ta paket isti kot ta, ki ga je kupil
$sqlAccessCheck = sisplet_query("SELECT * FROM user_access WHERE usr_id='".$rowNarocilo['usr_id']."' AND package_id != '1' AND time_expire > NOW()");
if(mysqli_num_rows($sqlAccessCheck) > 0){
$rowAccessCheck = mysqli_fetch_array($sqlAccessCheck);
// Ce zeli uporabnik kupiti drug placljiv paket kot ga ima trenutno, ga zavrnemo - po novem normalno izvedemo ker preracunamo v popust
if($rowAccessCheck['package_id'] != $rowNarocilo['package_id']){
// Nastavimo dostop uporabniku
$sqlAccess = sisplet_query("INSERT INTO user_access
(usr_id, time_activate, time_expire, package_id)
VALUES
('".$rowNarocilo['usr_id']."', NOW(), NOW() + INTERVAL '".$rowNarocilo['trajanje']."' MONTH, '".$rowNarocilo['package_id']."')
ON DUPLICATE KEY UPDATE
time_activate=NOW(), time_expire=NOW() + INTERVAL '".$rowNarocilo['trajanje']."' MONTH, package_id='".$rowNarocilo['package_id']."'
");
if (!$sqlAccess){
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
$response['success'] = false;
return $response;
}
}
// Uporabnik kupuje isti paket kot ga ze ima - mu ga samo podaljsamo
else{
$sqlAccess = sisplet_query("UPDATE user_access SET time_expire = time_expire + INTERVAL '".$rowNarocilo['trajanje']."' MONTH WHERE usr_id='".$rowNarocilo['usr_id']."'");
if (!$sqlAccess){
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
$response['success'] = false;
return $response;
}
}
}
else{
// Nastavimo dostop uporabniku
$sqlAccess = sisplet_query("INSERT INTO user_access
(usr_id, time_activate, time_expire, package_id)
VALUES
('".$rowNarocilo['usr_id']."', NOW(), NOW() + INTERVAL '".$rowNarocilo['trajanje']."' MONTH, '".$rowNarocilo['package_id']."')
ON DUPLICATE KEY UPDATE
time_activate=NOW(), time_expire=NOW() + INTERVAL '".$rowNarocilo['trajanje']."' MONTH, package_id='".$rowNarocilo['package_id']."'
");
if (!$sqlAccess){
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
$response['success'] = false;
return $response;
}
}
// Nastavimo status narocila na placan
$sqlNarociloStatus = sisplet_query("UPDATE user_access_narocilo SET status='1' WHERE id='".$narocilo_id."'");
if (!$sqlNarociloStatus){
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
$response['success'] = false;
return $response;
}
// Brezplacen preklop - samo posljemo mail z obvestilom o vklopu paketa
if($brezplacen_preklop){
// Posljemo mail z obvestilom
$subject = $lang['srv_narocilo_free_email_subject'].' '.$rowNarocilo['id'];
$content = $lang['srv_narocilo_free_email_content1'];
$content .= ' '.$lang['srv_narocilo_free_email_content2'];
// Podpis
$signature = Common::getEmailSignature();
$content .= $signature;
try{
$MA = new MailAdapter($anketa=null, $type='payments');
$MA->addRecipients($rowNarocilo['email']);
$resultX = $MA->sendMail($content, $subject);
}
catch (Exception $e){
$response['false'] = true;
}
}
// Ce ne gre za brezplacen preklop zapisemo v placila, izdamo racun in posljemo mail
else{
// Ustvarimo placilo v tabeli placil
$up = new UserPlacila();
$up->createPlacilo($rowNarocilo);
// Ustvarimo racun
$cebelica = new UserNarocilaCebelica($narocilo_id);
$response['racun'] = $cebelica->getNarociloRacun();
// Posljemo mail z racunom
$subject = $lang['srv_narocilo_email_subject'].' '.$rowNarocilo['id'];
$content = $lang['srv_narocilo_email_content1'];
$content .= ''.$lang['srv_narocilo_email_file'].' ';
$content .= ' '.$lang['srv_narocilo_email_content2'];
// Podpis
$signature = Common::getEmailSignature();
$content .= $signature;
try{
$MA = new MailAdapter($anketa=null, $type='payments');
$MA->addRecipients($rowNarocilo['email']);
// Dodamo predracun v attachment
$MA->addAttachment(file_get_contents($response['racun']), $file_name='1ka_narocilo_'.$rowNarocilo['id'].'_racun.pdf');
$resultX = $MA->sendMail($content, $subject);
}
catch (Exception $e){
$response['false'] = true;
}
}
$response['success'] = true;
return $response;
}
// Poslje mail z povprasevanjem za poslovne uporabnike (virtualna domena ali lastna instalacija)
public function sendPoslovniUporabniki($narocilo_data){
global $lang;
global $global_user_id;
$response = array();
$ime = isset($narocilo_data['ime']) ? $narocilo_data['ime'] : '';
$organizacija = isset($narocilo_data['organizacija']) ? $narocilo_data['organizacija'] : '';
$naslov = isset($narocilo_data['naslov']) ? $narocilo_data['naslov'] : '';
$telefon = isset($narocilo_data['telefon']) ? $narocilo_data['telefon'] : '';
$email = isset($narocilo_data['email']) ? $narocilo_data['email'] : '';
$paket = isset($narocilo_data['paket']) ? $narocilo_data['paket'] : '';
// Virtualna domena ali instalacija na 1ka strezniku
$vrsta_domene = isset($narocilo_data['vrsta_domene']) ? $narocilo_data['vrsta_domene'] : '';
$domena = isset($narocilo_data['domena']) ? $narocilo_data['domena'] : '';
// Lastna instalacija - paket
$strinjanje_s_pogoji = isset($narocilo_data['strinjanje_s_pogoji']) ? $narocilo_data['strinjanje_s_pogoji'] : '';
// Posljemo mail s podatki povprasevanja
$subject = $lang['srv_narocilo_poslovni_email_1ka_subject'];
$content = $lang['srv_narocilo_poslovni_email_1ka_text'];
$content .= ' '.$lang['srv_narocilo_poslovni_email_1ka_text2'];
$content .= ' '.$lang['srv_narocilo_poslovni_email_1ka_ime'].' '.$ime.' ';
$content .= ' '.$lang['srv_narocilo_poslovni_email_1ka_organizacija'].' '.$organizacija.' ';
$content .= ' '.$lang['srv_narocilo_poslovni_email_1ka_naslov'].' '.$naslov.' ';
$content .= ' '.$lang['srv_narocilo_poslovni_email_1ka_telefon'].' '.$telefon.' ';
$content .= ' '.$lang['srv_narocilo_poslovni_email_1ka_email'].' '.$email.' ';
// lastna instalacija na 1ka streziku
if($paket == 2){
$content .= ' '.$lang['srv_narocilo_poslovni_email_1ka_paket'].' '.$lang['srv_narocilo_poslovni_email_1ka_paket2'].' ';
$content .= ' '.$lang['srv_narocilo_poslovni_email_1ka_paket1_1'].' '.($vrsta_domene == '2' ? 'xxx.yyy.zz' : 'xxx.1ka.si').' ';
$content .= ' '.$lang['srv_narocilo_poslovni_email_1ka_paket1_2'].' '.$domena.' ';
}
// lastna instalacija - paket
elseif($paket == 3){
$content .= ' '.$lang['srv_narocilo_poslovni_email_1ka_paket'].' '.$lang['srv_narocilo_poslovni_email_1ka_paket3'].' ';
}
// Virtualna domena
else{
$content .= ' '.$lang['srv_narocilo_poslovni_email_1ka_paket'].' '.$lang['srv_narocilo_poslovni_email_1ka_paket1'].' ';
$content .= ' '.$lang['srv_narocilo_poslovni_email_1ka_paket1_1'].' '.($vrsta_domene == '2' ? 'xxx.yyy.zz' : 'xxx.1ka.si').' ';
$content .= ' '.$lang['srv_narocilo_poslovni_email_1ka_paket1_2'].' '.$domena.' ';
}
// Podpis
$signature = Common::getEmailSignature();
$content .= $signature;
try{
$MA = new MailAdapter();
$MA->addRecipients('info@1ka.si');
$resultX = $MA->sendMail($content, $subject);
}
catch (Exception $e){
$response['false'] = true;
}
// Posljemo mail stranki o uspesnem prejemu
// lastna instalacija na 1ka strezniku
if($paket == 2){
$subject = $lang['srv_narocilo_poslovni_email_stranka_subject_2'];
$content = $lang['srv_narocilo_poslovni_email_stranka_text_1_2'];
$content .= ' '.$domena.' ';
$content .= $lang['srv_narocilo_poslovni_email_stranka_text_2'];
}
// lastna instalacija - paket
elseif($paket == 3){
$subject = $lang['srv_narocilo_poslovni_email_stranka_subject_3'];
$content = $lang['srv_narocilo_poslovni_email_stranka_text_1_3'];
$content .= ' ';
$content .= $lang['srv_narocilo_poslovni_email_stranka_text_2'];
}
// Virtualna domena
else{
$subject = $lang['srv_narocilo_poslovni_email_stranka_subject_1'];
$content = $lang['srv_narocilo_poslovni_email_stranka_text_1_1'];
$content .= ' '.$domena.' ';
$content .= $lang['srv_narocilo_poslovni_email_stranka_text_2'];
}
// Podpis
$signature = Common::getEmailSignature();
$content .= $signature;
try{
$MA = new MailAdapter();
$MA->addRecipients($email);
$resultX = $MA->sendMail($content, $subject);
}
catch (Exception $e){
$response['false'] = true;
}
$response['success'] = true;
return $response;
}
// Dobimo podatke o vseh paketih
private function cachePackages(){
$sqlPackages = sisplet_query("SELECT * FROM user_access_paket");
while($row = mysqli_fetch_array($sqlPackages)){
$this->packages[$row['name']] = $row;
}
}
// Ajax klici
public function ajax(){
$narocilo_id = (isset($_POST['narocilo_id'])) ? $_POST['narocilo_id'] : 0;
// Prikazemo popup z urejanjem posameznega narocila
if($_GET['a'] == 'displayNarociloPopup') {
if($narocilo_id > 0)
$this->displayNarociloEdit($narocilo_id);
}
// Urejamo narocilo
if($_GET['a'] == 'editNarocilo') {
if($narocilo_id > 0){
$update = '';
$update .= (isset($_POST['status'])) ? " status='".$_POST['status']."'," : "";
$update .= (isset($_POST['package_id'])) ? " package_id='".$_POST['package_id']."'," : "";
$update .= (isset($_POST['payment_method'])) ? " payment_method='".$_POST['payment_method']."'," : "";
$update .= (isset($_POST['discount'])) ? " discount='".$_POST['discount']."'," : "";
$update .= (isset($_POST['trajanje'])) ? " trajanje='".$_POST['trajanje']."'," : "";
$update .= (isset($_POST['phone'])) ? " phone='".$_POST['phone']."'," : "";
$update .= (isset($_POST['podjetje_ime'])) ? " podjetje_ime='".$_POST['podjetje_ime']."'," : "";
$update .= (isset($_POST['podjetje_naslov'])) ? " podjetje_naslov='".$_POST['podjetje_naslov']."'," : "";
$update .= (isset($_POST['podjetje_postna'])) ? " podjetje_postna='".$_POST['podjetje_postna']."'," : "";
$update .= (isset($_POST['podjetje_posta'])) ? " podjetje_posta='".$_POST['podjetje_posta']."'," : "";
$update .= (isset($_POST['podjetje_drzava'])) ? " podjetje_drzava='".$_POST['podjetje_drzava']."'," : "";
$update .= (isset($_POST['podjetje_davcna'])) ? " podjetje_davcna='".$_POST['podjetje_davcna']."'," : "";
$update .= (isset($_POST['podjetje_zavezanec'])) ? " podjetje_zavezanec='".$_POST['podjetje_zavezanec']."'," : "";
$update .= (isset($_POST['podjetje_eracun'])) ? " podjetje_eracun='".$_POST['podjetje_eracun']."'," : "";
if($update != ''){
$update = substr($update, 0, -1);
$sqlNarocilo = sisplet_query("UPDATE user_access_narocilo SET ".$update.", cebelica_id_racun='0', cebelica_id_predracun='0' WHERE id='".$narocilo_id."'");
if (!$sqlNarocilo)
echo mysqli_error($GLOBALS['connect_db']);
}
}
// Na novo izrisemo tabelo z narocili
$this->displayNarocilaTableAdmin();
}
// Urejamo narocilo
if($_GET['a'] == 'payNarocilo') {
if($narocilo_id > 0){
// Ce imamo nastavljen payment_method na 1 pomeni da gre za klik na "placano" v tabeli (Goran) in potem popravimo narocilu, da ima vedno nacin placila preko trr
$payment_method = (isset($_POST['payment_method'])) ? $_POST['payment_method'] : 0;
if($payment_method == '1'){
$sqlNarociloNacin = sisplet_query("UPDATE user_access_narocilo SET payment_method='1' WHERE id='".$narocilo_id."'");
}
$this->payNarocilo($narocilo_id);
}
// Na novo izrisemo tabelo z narocili
$this->displayNarocilaTableAdmin();
}
// Brisemo narocilo
if($_GET['a'] == 'deleteNarocilo') {
if($narocilo_id > 0){
$sqlNarocilo = sisplet_query("DELETE FROM user_access_narocilo WHERE id='".$narocilo_id."'");
}
}
}
}