Current File : /home/users/barii/public_html/finansenl.com.pl/wodki/application/classes/Controller/Cron.php
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Cron extends Controller
{
    public function action_AllegroAPI() {
	
		$user_monitoring = ORM::Factory('user_monitoring')
							->where('status', '=', 1)
							->find_all();
		
			foreach( $user_monitoring as $monitor ) {

			try
			{

			$login = $monitor->user->login_allegro;
			$pass = $monitor->user->password_allegro;
			$webapi_key = $monitor->user->webapi_key;

			# Logowanie Webapi

			$client = new SoapClient('https://webapi.allegro.pl/uploader.php?wsdl');
			$version = $client->doQuerySysStatus(1, 1, $webapi_key);
			$session = $client->doLoginEnc($login, base64_encode( hash('sha256', $pass, true) ), 1, $webapi_key, $version['ver-key']);

			$session_id = $session['session-handle-part']; 
			$user_id = $session['user-id']; 
			$server_time = $session['server-time']; 

			$wczesniej = '-5 minutes';
			$czas_allegro = date('Y-m-j H:i:s', $server_time);
			$czas_wczesniej = date('Y-m-j H:i:s',strtotime($wczesniej,strtotime($czas_allegro)));
			$czas_wczesniej = strtotime($czas_wczesniej); // czas UNIX

			/*
			$dosearch_request = array(
			  // 'sessionHandle' => $session_id,
			  // 'searchQuery' => array(
				  'search-string' => 'Łóżeczko',
				  'search-options' =>  WebAPISoapClient::SEARCH_OPTION_ANY | WebAPISoapClient::SEARCH_OPTION_SESSIONCITY,
				  'search-order' => 2,
				  'search-order-type' => 1,
				  'search-country' => 0,
				  'search-category' => 0,
				  'search-offset' => 3,
				  'search-city' => '',
				  'search-state' => 0,
				  'search-price-from' => 0.00,
				  'search-price-to' => 3000.00,
				  'search-limit' => 0,
				  'search-order-fulfillment-time' => 0,
				  'search-user' => $user_id) ; */
				  
				$dogetmysolditems_request = array(
					  'sort-type' => 1,
					  'sort-order' => 2,
				   'filterOptions' => array(
					  'filterFormat' => 0,
					  'filterFromEnd' => 0,
					  'filterAutoListing' => 0,
					  'filterPrice' => array(
						 'filterPriceFrom' => 1,
						 'filterPriceTo' => 1000)),
				   'searchValue' => '',
				   'categoryId' => 0,
				   'itemIds' => 0,
				   'pageSize' => 25,
				   'pageNumber' => 0
				);

			$sold_list = $client->doGetMySoldItems($session_id, $dogetmysolditems_request);

				foreach ( $sold_list['sold-items-list'] as $si ) {
				
				## Nr aukcji
				$nr_aukcji = $si->{'item-id'}; // do edycji

				## ID transakcji
				$transakcje = $client->doGetTransactionsIDs($session_id, array($nr_aukcji), 'seller');

					foreach($transakcje as $item)
					{

					## Formularz pozakupowy
					$formularz_kupna = $client->doGetPostBuyFormsDataForSellers($session_id,array($item));

						foreach($formularz_kupna as $transakcja)
						{
						
						$przedmiot = $transakcja->{'post-buy-form-items'}; // tytuł przedmiotu
						
						## Tytuł aukcji
						$przedmiot = $przedmiot[0]->{'post-buy-form-it-title'};
				
						//if( strstr($przedmiot, $monitor->title) ) {
						
						## Status transakcji PayU
						$status_payu = $transakcja->{'post-buy-form-pay-status'};

						## Czas przyjęcia płatności PayU
						$czas_payu = $transakcja->{'post-buy-form-date-recv'};
						$czas_payu = strtotime($czas_payu); // czas UNIX

						## ID klientów
						$id_kupujacych = $transakcja->{'post-buy-form-buyer-id'};

						
							## Realizacja zamówień opłaconych z ostatniego określonego wcześniej czasu
							//if($status_payu == 'Zakończona' && $czas_wczesniej < $czas_payu)
							if($status_payu == 'Zakończona')
							{
							## Dane kontaktowe kupujących
							$kontakty = $client->doMyContact($session_id, array($nr_aukcji));
							$c_it = 0;
								foreach($kontakty as $item)
								{
								$c_it++;
								if( $c_it == 1 ) {
								$id = $item->{'contact-user-id'};

									if ($id == $id_kupujacych)
									{
									
									$nick = $item->{'contact-nick'}; // nick klienta
									$email_klienta = $item->{'contact-email'}; // e-mail klienta
									
									$imie = $item->{'contact-first-name'}; // imię klienta
									$nazwisko = $item->{'contact-last-name'}; 
									$company = $item->{'contact-company'}; 
									$street = $item->{'contact-street'}; 
									$postcode = $item->{'contact-postcode'}; 
									$city = $item->{'contact-city'}; 
									$country = $item->{'contact-country'}; 
									$phone = $item->{'contact-phone'}; 
									$company = $item->{'contact-company'}; 
									$price = 10;
									
									//echo $przedmiot."<br/>";
									//echo $email_klienta." ".$imie."<br/>";
									
									## TUTAJ WYKONUJEMY WSZELKIE AKCJE ZWIĄZANE Z OBSŁUGĄ POSPRZEDAŻOWĄ NP WYSYŁKA MAILA.
									$item_code = ORM::Factory('item', $monitor->item->id);
									$codes = explode("\n", $item_code->description);
									$code = $codes[count($codes)-1];
									
									unset($codes[count($codes)-1]);
									$codes = join("\n", $codes);
									$item_code->description = $codes;
									$item_code->save();
									
									if( !empty( $code ) ) {
									$password = "";
									for( $i=1; $i<=8; $i++ ) {
										$password .= rand(1, 9);
									}
									$user = ORM::Factory('user')->where('username','=', $nick)->find();
								
									$user->username = $nick;
									$user->password = Auth::instance()->hash($password);
									$user->email = $email_klienta;
									$user->company = $company;
									$user->firstname = $imie;
									$user->lastname = $nazwisko;
									$user->street = $street;
									$user->postcode = $postcode;
									$user->city = $city;
									$user->phone = $phone;
									$user->profile_id = 2;
									$user->save();
									
									try {
									$role   = ORM::factory('Role')->where('name','=','login')->find();
			
									$user->add('roles', ORM::factory('Role', array('name'=>'login')));
									$user->save();
									} catch ( Exception $e ) { }
										
									$order = ORM::Factory('Order');
									$order->date = date('Y-m-d H:i:s');
									$order->title = $przedmiot;
									$order->user_id = $user->id;
									$order->seller_id = 1;
									$order->price = $price;
									$order->auction_id = $nr_aukcji;
									$order->save();
									
									//$file_name = cms::createInvoice($order->id);
								
									$from = array();
									$from[0] = Kohana::$config->load('site.email_business');
									$from[1] = Kohana::$config->load('site.appName');
									
									//$attachment = array( 0 => $file_name);
									$attachment = null;
									
										$params = array();
										$params['user'] = $user;
										$params['auction']['id'] = $nr_aukcji;
										$params['auction']['title'] = $przedmiot;
										$params['code'] = $code;
										
										$email_template = cms::getTemplateEmail($monitor->template->id, $params);
										$email_template['text'] .= View::Factory('email/footer')
																			->bind('username', $nick)
																			->bind('password', $password);
										aurora::standardEmail("ircoo@o2.pl",  $email_template['subject'], $email_template['text'], true, $from, $attachment);
										
									}
									}
									} // if ($id == $id_kupujacych)
								} // foreach($kontakty as $item)
							} // if($status_payu == 'Zakończona' && $czas_wczesniej < $czas_payu)
							//}
						} // foreach($formularz_kupna as $transakcja)
						
					} // foreach($transakcje as $item)
				}
			} // koniec try WebApi
			catch(SoapFault $error) // wychwytywanie błędów
			{
			echo 'Błąd ', $error->faultcode, ': ', $error->faultstring, "n";
			}
		
		}

	}
}

?>