<?
/*
	SHIPMENTFEE-HEZ RENDELT ID-TÍPUSOK:
	===================================
	g = csoport (város/csoport) alap
	x = város extra (kézzel beírt utca)
	i = egyed (utca/város)
*/

class geo_shipmentfee {

function geo_shipmentfee() {
	global $geo;
	if(is_object($geo)) {
		$this->item=$geo->item;
		$this->group=$geo->group;
	}
}

function getShipmentfeeList($exclude='') {
	global $dbi;
	if($exclude) $where="where id not in ($exclude)";
	$sql="select id,value as name from geo_shipmentfee $where";
	$res=sql_query($sql,$dbi);
	while($a=sql_fetch_assoc($res,$dbi)) {
		$data[]=$a;
	}
	return $data;
}

function saveShipmentfee($post) {
	global $dbi;
	$sql="replace into geo_shipmentfee (id,value) values ('$post[id]','$post[name]')";
	sql_query($sql,$dbi);
}

function getGroupShipmentfee($group,$extra=false) {
	global $dbi;
	$id_type=$extra?'x':'g';

	$sql="select fee_id from geo_shipmentfee_conn g where id_type='$id_type' and g.id='$group'";
	$res=sql_query($sql,$dbi);
	list($v)=sql_fetch_row($res,$dbi);
	return $v;
}

function saveGroupShipmentfee($group,$value,$extra=false) {
	global $dbi;
	$id_type=$extra?'x':'g';
	
	$sql="delete from geo_shipmentfee_conn where id_type='$id_type' and id='$group'";
	sql_query($sql,$dbi);
	$sql="insert into geo_shipmentfee_conn (id_type,id,fee_id) values ('$id_type','$group',$value)";
	sql_query($sql,$dbi);

	if(!$extra) {
		//új alapdíj letörlése a városokról
		$sql_ids="select id from geo_$this->item where group_id='$group'";
		$sql="delete from geo_shipmentfee_conn where id_type='i' and id in ($sql_ids) and fee_id='$value'";
		sql_query($sql,$dbi);
	}
}

function getItemsInGroupByShipmentfees($group) {
	// utcák a városhoz díjanként(nem null) csoportosítva
	global $dbi;

	$data=$this->getShipmentfeeList($this->getGroupShipmentfee($group));
	
	foreach($data as &$fee)
		$fee[items]=$this->getItemsInGroupInShipmentfee($group,$fee[id]);

	return $data;
}

function getItemsInGroupInShipmentfee($group,$fee) {
	// utcák a városhoz és egy adott díjhoz
	global $dbi;
	$sql_fee = $fee ? "='$fee'" : ' is null';
	$sql="select g.id,g.name from geo_$this->item g ".
		"left outer join geo_shipmentfee_conn f on g.id=f.id and f.id_type='i' ".
		"where g.group_id='$group' and f.fee_id$sql_fee order by g.name";
	$res=sql_query($sql,$dbi);
	while($a=sql_fetch_assoc($res,$dbi)) {
		$data[]=$a;
	}
	return $data;
}

function getItemShipmentfee($item,$geo_x_id='') {
	global $dbi,$geo;
	if($geo_x_id) {
		$sql="select value from geo_shipmentfee f ".
			"inner join geo_shipmentfee_conn g on f.id=fee_id and g.id_type='x' and g.id='$geo_x_id'";
		$res=sql_query($sql,$dbi);
		list($v)=sql_fetch_row($res,$dbi);
	}
	else{
		$sql="select value from geo_shipmentfee f ".
			"inner join geo_shipmentfee_conn g on f.id=fee_id and g.id_type='i' and g.id='$item'";
		$res=sql_query($sql,$dbi);
		list($v)=sql_fetch_row($res,$dbi);
	
		if(!$v) {
			$sql="select value from geo_shipmentfee f ".
				"inner join geo_shipmentfee_conn g on f.id=fee_id and g.id_type='g' and g.id=(select group_id from geo_$this->item where id='$item')";
			$res=sql_query($sql,$dbi);
			list($v)=sql_fetch_row($res,$dbi);
		}
	}
	return $v;
}

function saveItemShipmentfees($post) {
	if(!$post[items]) return false;
	global $dbi;
	foreach($post[items] as $v) {
		$sql="insert into geo_shipmentfee_conn (id_type,id,fee_id) values ('i','$v','$post[add]')";
		$res=sql_query($sql,$dbi);
	}
}

function deleteItemShipmentfees($post) {
	if(!$post[items]) return false;
	global $dbi;
	foreach($post[items] as $v) {
		$sql="delete from geo_shipmentfee_conn where id_type='i' and id='$v' and fee_id='$post[del]'";
		$res=sql_query($sql,$dbi);
	}
}

}
?>