<?php

/**
 * Simpla CMS
 *
 * @copyright	2011 Denis Pikusov
 * @link		http://simplacms.ru
 * @author		Denis Pikusov
 *
 * @editor	2014 Vitaly Raevsky
 * @link	http://bwdesign.ru
 * @email	vitaly.raevsky@gmail.com
 *
 */

require_once('Simpla.php');

class Cart extends Simpla
{

	/*
	*
	* Функция возвращает корзину
	*
	*/
	public function get_cart()
	{
		$cart = new stdClass();
		$cart->purchases = array();
		$cart->total_price = 0;
		$cart->total_weight = 0;
		$cart->total_products = 0;
		$cart->coupon = null;
		$cart->discount = 0;
		$cart->coupon_discount = 0;

		// Берем из сессии список variant_id=>amount
		if(!empty($_SESSION['shopping_cart']))
		{
			$session_items = $_SESSION['shopping_cart'];

			$variants = $this->variants->get_variants(array('id'=>array_keys($session_items)));
			if(!empty($variants))
			{

				foreach($variants as $variant)
				{
					$items[$variant->id] = new stdClass();
					$items[$variant->id]->variant = $variant;
					$items[$variant->id]->amount = $session_items[$variant->id]['amount'];
					$items[$variant->id]->options = $session_items[$variant->id]['options'];
					$products_ids[] = $variant->product_id;
				}

				$products = array();
				foreach($this->products->get_products(array('id'=>$products_ids)) as $p)
					$products[$p->id]=$p;

				$images = $this->products->get_images(array('product_id'=>$products_ids));
				foreach($images as $image)
					$products[$image->product_id]->images[$image->id] = $image;


				foreach($items as $variant_id=>$item)
				{
					$purchase = null;
					if(!empty($products[$item->variant->product_id]))
					{
						$purchase = new stdClass();
						$purchase->product = $products[$item->variant->product_id];
						$purchase->variant = $item->variant;
						$purchase->amount = $item->amount;
						$purchase->options = unserialize($item->options);
						//$feat = $this->features->get_product_options($item->variant->product_id);
						$feat = $this->features->get_features(array('category_id'=>$cat->id,'in_variant'=>1));
						foreach($feat AS $fe){
							$purchase->features[$fe->id] = $fe;
						}

						$cart->purchases[] = $purchase;
						$cart->total_price += $item->variant->price*$item->amount;
						$cart->total_weight += $item->variant->weight*$item->amount;
						$cart->total_products += $item->amount;
					}
				}

				// Пользовательская скидка
				$cart->discount = 0;
				if(isset($_SESSION['user_id']) && $user = $this->users->get_user(intval($_SESSION['user_id'])))
					$cart->discount = $user->discount;

				$cart->total_price *= (100-$cart->discount)/100;

				// Скидка по купону
				if(isset($_SESSION['coupon_code']))
				{
					$cart->coupon = $this->coupons->get_coupon($_SESSION['coupon_code']);
					if($cart->coupon && $cart->coupon->valid && $cart->total_price>=$cart->coupon->min_order_price)
					{
						if($cart->coupon->type=='absolute')
						{
							// Абсолютная скидка не более суммы заказа
							$cart->coupon_discount = $cart->total_price>$cart->coupon->value?$cart->coupon->value:$cart->total_price;
							$cart->total_price = max(0, $cart->total_price-$cart->coupon->value);
						}
						else
						{
							$cart->coupon_discount = $cart->total_price * ($cart->coupon->value)/100;
							$cart->total_price = $cart->total_price-$cart->coupon_discount;
						}
					}
					else
					{
						unset($_SESSION['coupon_code']);
					}
				}

			}
		}

		return $cart;
	}

	/*
	*
	* Добавление варианта товара в корзину
	*
	*/
	public function add_item($variant_id, $amount = 1,$options = array())
	{
		$amount = max(1, $amount);

		if(isset($_SESSION['shopping_cart'][$variant_id]['amount']))
      		$amount = max(1, $amount+$_SESSION['shopping_cart'][$variant_id]['amount']);

		// Выберем товар из базы, заодно убедившись в его существовании
		$variant = $this->variants->get_variant($variant_id);

		// Если товар существует, добавим его в корзину
		if(!empty($variant) && ($variant->stock>0) )
		{
			// Не дадим больше чем на складе
			$amount = min($amount, $variant->stock);
			$options = serialize($options);
			$_SESSION['shopping_cart'][$variant_id] = intval($amount);
			$_SESSION['shopping_cart'][$variant_id] = array('amount'=>intval($amount),'options'=>$options);

		}
	}

	/*
	*
	* Обновление количества товара
	*
	*/
	public function update_item($variant_id, $amount = 1,$options = array())
	{
		$amount = max(1, $amount);

		// Выберем товар из базы, заодно убедившись в его существовании
		$variant = $this->variants->get_variant($variant_id);

		// Если товар существует, добавим его в корзину
		if(!empty($variant) && $variant->stock>0)
		{
			// Не дадим больше чем на складе
			$amount = min($amount, $variant->stock);
			$options = serialize($options);
			$_SESSION['shopping_cart'][$variant_id] = array('amount'=>intval($amount),'options'=>$options);

			//$_SESSION['shopping_cart'][$variant_id] = intval($amount);
		}

	}


	/*
	*
	* Удаление товара из корзины
	*
	*/
	public function delete_item($variant_id)
	{
		unset($_SESSION['shopping_cart'][$variant_id]);
	}

	/*
	*
	* Очистка корзины
	*
	*/
	public function empty_cart()
	{
		unset($_SESSION['shopping_cart']);
		unset($_SESSION['coupon_code']);
	}

	/*
	*
	* Применить купон
	*
	*/
	public function apply_coupon($coupon_code)
	{
		$coupon = $this->coupons->get_coupon((string)$coupon_code);
		if($coupon && $coupon->valid)
		{
			$_SESSION['coupon_code'] = $coupon->code;
		}
		else
		{
			unset($_SESSION['coupon_code']);
		}
	}
	public function getCity2(){
		$city = array(
			"city--moskva"=>"Москва",
			"city--sankt-peterburg"=>"Санкт-Петербург",
			"city--abakan"=>"Абакан",
			"city--anadyr"=>"Анадырь",
			"city--anapa"=>"Анапа",
			"city--arhangelsk"=>"Архангельск",
			"city--astrahan"=>"Астрахань",
			"city--barnaul"=>"Барнаул",
			"city--belgorod"=>"Белгород",
			"city--birobidzhan"=>"Биробиджан",
			"city--blagoveshhensk"=>"Благовещенск",
			"city--brjansk"=>"Брянск",
			"city--velikij-novgorod"=>"Великий Новгород ",
			"city--vladivostok"=>"Владивосток",
			"city--vladikavkaz"=>"Владикавказ",
			"city--vladimir"=>"Владимир",
			"city--volgograd"=>"Волгоград",
			"city--vologda"=>"Вологда",
			"city--vorkuta"=>"Воркута",
			"city--voronezh"=>"Воронеж",
			"city--gorno-altajsk"=>"Горно-Алтайск",
			"city--groznyj"=>"Грозный",
			"city--dudinka"=>"Дудинка",
			"city--ekaterinburg"=>"Екатеринбург",
			"city--elizovo"=>"Елизово",
			"city--ivanovo"=>"Иваново",
			"city--izhevsk"=>"Ижевск",
			"city--irkutsk"=>"Иркутск",
			"city--ioshkar-ola"=>"Йошкар-Ола",
			"city--kazan"=>"Казань",
			"city--kaliningrad"=>"Калининград",
			"city--kaluga"=>"Калуга",
			"city--kemerovo"=>"Кемерово",
			"city--kirov"=>"Киров",
			"city--kostomuksha"=>"Костомукша",
			"city--kostroma"=>"Кострома",
			"city--krasnodar"=>"Краснодар",
			"city--krasnojarsk"=>"Красноярск",
			"city--kurgan"=>"Курган",
			"city--kursk"=>"Курск",
			"city--kyzyl"=>"Кызыл",
			"city--lipeck"=>"Липецк",
			"city--magadan"=>"Магадан",
			"city--magnitogorsk"=>"Магнитогорск",
			"city--majkop"=>"Майкоп",
			"city--mahachkala"=>"Махачкала",
			"city--mirnyj"=>"Мирный",
			"city--murmansk"=>"Мурманск",
			"city--mytishhi"=>"Мытищи",
			"city--naberezhnye-chelny"=>"Набережные Челны",
			"city--nadym"=>"Надым",
			"city--nazran"=>"Назрань",
			"city--nalchik"=>"Нальчик",
			"city--narjan-mar"=>"Нарьян-Мар",
			"city--nerjungri"=>"Нерюнгри",
			"city--neftejugansk"=>"Нефтеюганск",
			"city--nizhnevartovsk"=>"Нижневартовск",
			"city--nizhnij-novgorod"=>"Нижний Новгород",
			"city--novokuzneck"=>"Новокузнецк",
			"city--novorossijsk"=>"Новороссийск",
			"city--novosibirsk"=>"Новосибирск",
			"city--novyj-urengoj"=>"Новый Уренгой",
			"city--norilsk"=>"Норильск",
			"city--nojabrsk"=>"Ноябрьск",
			"city--omsk"=>"Омск",
			"city--orel"=>"Орел",
			"city--orenburg"=>"Оренбург",
			"city--penza"=>"Пенза",
			"city--perm"=>"Пермь",
			"city--petrozavodsk"=>"Петрозаводск",
			"city--petropavlovsk-kamchatskij"=>"Петропавловск-Камчатский",
			"city--pskov"=>"Псков",
			"city--rostov-na-donu"=>"Ростов-на-Дону",
			"city--rjazan"=>"Рязань",
			"city--salehard"=>"Салехард",
			"city--samara"=>"Самара",
			"city--saransk"=>"Саранск",
			"city--saratov"=>"Саратов",
			"city--smolensk"=>"Смоленск",
			"city--sochi"=>"Сочи",
			"city--stavropol"=>"Ставрополь",
			"city--strezhevoj"=>"Стрежевой",
			"city--surgut"=>"Сургут",
			"city--syktyvkar"=>"Сыктывкар",
			"city--tambov"=>"Тамбов",
			"city--tver"=>"Тверь",
			"city--toljatti"=>"Тольятти",
			"city--tomsk"=>"Томск",
			"city--tula"=>"Тула",
			"city--tynda"=>"Тында",
			"city--tjumen"=>"Тюмень",
			"city--ulan-udje"=>"Улан-Удэ",
			"city--uljanovsk"=>"Ульяновск",
			"city--usinsk"=>"Усинск",
			"city--ufa"=>"Уфа",
			"city--khabarovsk"=>"Хабаровск",
			"city--khanty-mansijsk"=>"Ханты-Мансийск",
			"city--kholmsk"=>"Холмск",
			"city--cheboksary"=>"Чебоксары",
			"city--cheljabinsk"=>"Челябинск",
			"city--cherepovec"=>"Череповец",
			"city--cherkessk"=>"Черкесск",
			"city--chita"=>"Чита",
			"city--elista"=>"Элиста",
			"city--yuzhno-sahalinsk"=>"Южно-Сахалинск",
			"city--yakutsk"=>"Якутск",
			"city--yaroslavl"=>"Ярославль",
			"region--respublika-adygeja"=>"Адыгея респ.",
			"region--respublika-altaj"=>"Алтай респ.",
			"region--altajskij-kraj"=>"Алтайский край",
			"region--amurskaja-oblast"=>"Амурская обл.",
			"region--arhangelskaja-oblast"=>"Архангельская обл.",
			"region--astrahanskaja-oblast"=>"Астраханская обл.",
			"region--respublika-bashkortostan"=>"Башкортостан респ.",
			"region--belgorodskaja-oblast"=>"Белгородская обл.",
			"region--brjanskaja-oblast"=>"Брянская обл.",
			"region--respublika-burjatija"=>"Бурятия респ.",
			"region--vladimirskaja-oblast"=>"Владимирская обл.",
			"region--volgogradskaja-oblast"=>"Волгоградская обл.",
			"region--vologodskaja-oblast"=>"Вологодская обл.",
			"region--voronezhskaja-oblast"=>"Воронежская обл.",
			"region--respublika-dagestan"=>"Дагестан респ.",
			"region--evrejskaja-ao"=>"Еврейская авт.обл.",
			"region--zabajkalskij-kraj"=>"Забайкальский край",
			"region--ivanovskaja-oblast"=>"Ивановская обл.",
			"region--respublika-ingushetija"=>"Ингушетия респ.",
			"region--irkutskaja-oblast"=>"Иркутская обл.",
			"region--kabardino-balkarskaja-respublika"=>"Кабардино-Балкарская респ.",
			"region--kaliningradskaja-oblast"=>"Калининградская обл.",
			"region--respublika-kalmykija"=>"Калмыкия респ.",
			"region--kaluzhskaja-oblast"=>"Калужская обл.",
			"region--kamchatskij-kraj"=>"Камчатский край",
			"region--karachaevo-cherkesskaja-respublika"=>"Карачаево-Черкесская респ.",
			"region--respublika-karelija"=>"Карелия респ.",
			"region--kemerovskaja-oblast"=>"Кемеровская обл.",
			"region--kirovskaja-oblast"=>"Кировская обл.",
			"region--respublika-komi"=>"Коми респ.",
			"region--kostromskaja-oblast"=>"Костромская обл.",
			"region--krasnodarskij-kraj"=>"Краснодарский край",
			"region--krasnojarskij-kraj"=>"Красноярский край",
			"region--kurganskaja-oblast"=>"Курганская обл.",
			"region--kurskaja-oblast"=>"Курская обл.",
			"region--leningradskaja-oblast"=>"Ленинградская обл.",
			"region--lipeckaja-oblast"=>"Липецкая обл.",
			"region--magadanskaja-oblast"=>"Магаданская обл.",
			"region--respublika-marij-el"=>"Марий Эл респ.",
			"region--respublika-mordovija"=>"Мордовия респ.",
			"region--moskovskaja-oblast"=>"Московская обл.",
			"region--murmanskaja-oblast"=>"Мурманская обл.",
			"region--neneckij-ao"=>"Ненецкий АО",
			"region--nizhegorodskaja-oblast"=>"Нижегородская обл.",
			"region--novgorodskaja-oblast"=>"Новгородская обл.",
			"region--novosibirskaja-oblast"=>"Новосибирская обл.",
			"region--omskaja-oblast"=>"Омская обл.",
			"region--orenburgskaja-oblast"=>"Оренбургская обл.",
			"region--orlovskaja-oblast"=>"Орловская обл.",
			"region--penzenskaja-oblast"=>"Пензенская обл.",
			"region--permskij-kraj"=>"Пермский край",
			"region--primorskij-kraj"=>"Приморский край",
			"region--pskovskaja-oblast"=>"Псковская обл.",
			"region--rostovskaja-oblast"=>"Ростовская обл.",
			"region--rjazanskaja-oblast"=>"Рязанская обл.",
			"region--samarskaja-oblast"=>"Самарская обл.",
			"region--saratovskaja-oblast"=>"Саратовская обл.",
			"region--respublika-saha-yakutija"=>"Саха (Якутия) респ.",
			"region--sahalinskaja-oblast"=>"Сахалинская обл.",
			"region--sverdlovskaja-oblast"=>"Свердловская обл.",
			"region--respublika-sev.osetija-alanija"=>"Северная Осетия - Алания респ.",
			"region--smolenskaja-oblast"=>"Смоленская обл.",
			"region--stavropolskij-kraj"=>"Ставропольский край",
			"region--tambovskaja-oblast"=>"Тамбовская обл.",
			"region--respublika-tatarstan"=>"Татарстан респ.",
			"region--tverskaja-oblast"=>"Тверская обл.",
			"region--tomskaja-oblast"=>"Томская обл.",
			"region--tulskaja-oblast"=>"Тульская обл.",
			"region--respublika-tyva"=>"Тыва респ.",
			"region--tjumenskaja-oblast"=>"Тюменская обл.",
			"region--udmurtskaja-respublika"=>"Удмуртская респ.",
			"region--uljanovskaja-oblast"=>"Ульяновская обл.",
			"region--khabarovskij-kraj"=>"Хабаровский край",
			"region--respublika-khakasija"=>"Хакасия респ.",
			"region--khanty-mansijskij-ao"=>"Ханты-Мансийский АО - Югра",
			"region--cheljabinskaja-oblast"=>"Челябинская обл.",
			"region--chechenskaja-respublika"=>"Чеченская респ.",
			"region--chuvashskaja-respublika"=>"Чувашия респ.",
			"region--chukotskij-ao"=>"Чукотский АО",
			"region--yamalo-neneckij-ao"=>"Ямало-Ненецкий АО",
			"region--yaroslavskaja-oblast"=>"Ярославская обл."
		);
		return $city;
	}

}