<?php require_once("database.php"); require_once("accountfunc.php");

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

//haalt categorieen op en toont in lijst
function CategorieList()
{
	$returns = "";

	$category = [];

	//haalt items op uit database by rowid
	$category = database_categorys(0);
	if(count($category) > 0)
	{
		$returns .= "<ul id='categories'>";

		for($i = 0; $i < count($category); $i++)
		{	
			$returns .= "<li><a href='shopping.php?cat=".$category[$i]['ID']."'>".$category[$i]['Naam']."</a></li>";
		}

		$returns .= "</ul>";
	}else{
		$returns .= "<h3>nog geen categoriëen ingevoerd</h3>";
	}
	return $returns;
}

//haalt items op voor de homepagina
function ShoppingIndex()
{
	$returns = "";

	$items = [];

	//haalt items op uit database by rowid
	$items = database_shopping(2, 1);
	if(count($items) > 0)
	{
		for($i = 0; $i < count($items); $i++)
		{	
			$returns .= itemBlock(0, $items[$i]["ID"], $items[$i]["Naam"], $items[$i]["Plaatje"], $items[$i]["Beschrijving"], $items[$i]["Meters"], $items[$i]["Prijs"], $items[$i]["Type"], $items[$i]["Categorie"]);	
		}
	}else{
		$returns .= "<div class='tinycontent'><h3>nog geen stoffen ingevoerd</h3></div>";
	}	
	return $returns;
}

//winkelpagina
function ShoppingFunc()
{
	$returns = "";
	
	//categorie gezet?
	if(isset($_GET['cat']))
	{
		$catid = $_GET['cat'];
		
		$category = [];

		//haalt items op uit database by rowid
		$category = database_categorys(1, $catid);
		for($i = 0; $i < count($category); $i++)
		{	
			$returns .= "<div id='viewing'>U bekijkt nu stoffen in de categorie '".$category[$i]['Naam']."'</div>";
		}		
	}else{
		//geen categorie (gekozen)
		$catid = 0;
	}

	$returns .= "<div id='full'>";
	
	if(!isset($_GET['do']) && isset($_GET['item']))
	{
		//meer informatie item
		$returns .= actionShopping(0, $_GET['item']);
	}else if(isset($_GET['do']) == 'buy'){
		
		if(isLogged()) {
			//item kopen
			$returns .= actionShopping(1, $_GET['item']);
		}else{
			//inloggen om item te kopen
			header("Location: receptie.php?message=moetinloggen");
			exit;
		}
	}else{
		$items = [];

		//haalt items op uit database
		if($catid > 0)
		{
			$items = database_shopping(3, $_GET['cat']);

			if(count($items) > 0)
			{
				for($i = 0; $i < count($items); $i++)
				{
					//zet info in div
					$returns .= itemBlock(0, $items[$i]["ID"], $items[$i]["Naam"], $items[$i]["Plaatje"], $items[$i]["Beschrijving"], $items[$i]["Meters"], $items[$i]["Prijs"], $items[$i]["Type"], $items[$i]["Categorie"]);
				}
			}else{
				//is in een categorie?
				if($catid > 0)
				{
					$returns .= "<div class='tinycontent'><h3>geen beschikbare stoffen gevonden in deze categorie</h3></div>";
				}else{ //anders
					$returns .= "<div class='tinycontent'><h3>geen beschikbare stoffen gevonden</h3></div>";
				}
			}

		}else{

			//geen categorie gekozen? dan moet je categorie kiezen
			$returns .= "<div class='tinycontent'>";
			$returns .= "<h1>Selecteer een categorie</h1>";
			$returns .= CategorieList();
			$returns .= "</div>";

			//toont laatste toegevroegde items onder de categorieen-keuze
			$items = database_shopping(2, 4);
			if(count($items) > 0)
			{
				for($i = 0; $i < count($items); $i++)
				{	
					$returns .= itemBlock(0, $items[$i]["ID"], $items[$i]["Naam"], $items[$i]["Plaatje"], $items[$i]["Beschrijving"], $items[$i]["Meters"], $items[$i]["Prijs"], $items[$i]["Type"], $items[$i]["Categorie"]);	
				}
			}else{
				$returns .= "<div class='tinycontent'><h3>nog geen stoffen ingevoerd</h3></div>";
			}
		}
		
	}
	$returns .= "</div>";
	return $returns;
}

//geeft meer info en je kan bestellen
function actionShopping($type = 0, $row)
{
	$returns = "";
	if($type == 0) //more info page
	{
		$items = [];

		//haalt items op uit database by rowid
		$items = database_shopping(1, $row);
		for($i = 0; $i < count($items); $i++)
		{
			//zet info in div
			$returns .= itemBlock(1, $items[$i]["ID"], $items[$i]["Naam"], $items[$i]["Plaatje"], $items[$i]["Beschrijving"], $items[$i]["Meters"], $items[$i]["Prijs"], $items[$i]["Type"], $items[$i]["Categorie"]);	
		}
		return $returns;
	}else if($type == 1) { //item gaan reserveren
		
		//veiligheidscheck
		if(!isset($_POST['submit'])) //form niet gedrukt?
		{
			if(isset($_GET['item']))
			{
				header("Location: shopping.php?item=".$_GET['item']);
			}else{
				header("Location: shopping.php");
			}
			exit;
		}
		
		$items = [];
		
		$items = database_shopping(1, $row);
		
		for($i = 0; $i < count($items); $i++)
		{
			//var_dump($_POST);
			$metersavaible = database_getMetersAv($row);
			if($_POST['meter'] <= $metersavaible && $_POST['meter'] != 0)
			{
				database_create(2);
				$returns .= "<div class='tinycontent'>U heeft ".$_POST['meter']."m van de stof '".$items[$i]["Naam"]."' besteld</div>";
				//$returns .= prijsMeter($items[$i]["ID"], $items[$i]["Prijs"], $_POST['meter']);
				$returns .= "<a class='gobackbtn' href='shopping.php'>ga terug</a> <a class='new' href='receptie.php'>bekijk overzicht</a>";
			}
		}
	}
	return $returns;
}


//geeft alleen formulier op
function shoppingForm($id, $metersavaible)
{	
	$returns = "";

	//is meer dan 0,0 meter beschikbaar?
	if($metersavaible > 0)
	{
		$returns .= "<form id='buyform' method='post' action='shopping.php?item=".$id."&do=buy'>
		<div>
			<label for='meter'>Meters reserveren</label>
			<input type='number' name='meter' id='meter' placeholder='0.5' value='0.5' step='0.01' min='0.0' max='".$metersavaible."' required> m
		</div>
		<div>
			<input type='hidden' name='id' id='id' value='".$id."' />
			<input type='submit' name='submit' id='submit' value='Reserveren' />
		</div>
		</form>";
	}else{ //anders
		$returns .= "<form id='buyform'><p>Uitverkocht</p></form>";
	}
	return $returns;
}

//calculeert prijs item (niet gebruikt en niet klaar)
function prijsMeter($id, $prijs, $cutmeter)
{
	$calcprijs = 0.5;
	$items = [];
	$items = database_shopping(1, $id);
	for($i = 0; $i < count($items); $i++)
	{
		if($items[$i]["Prijs"] == $prijs)
		{
			$totaalmeter = $items[$i]["Meters"];
		}
	}
	$calcprijs = $prijs*$totaalmeter;
	return $calcprijs;
}

//toont de product op de pagina, omdat dezelfde opmaak bij meerdere plekken staat zit het in een functie
function itemBlock($type, $id, $naam, $imgpath, $beschrijving, $meters, $prijs, $catid, $cat)
{
	$returns = "";

	//haalt de overgebleven meters op
	$metersavaible = database_getMetersAv($id);

	//decimal 0.00 to 0,00
	$totaalmeters = number_format($meters, '2', ',', '');
	$prijs = number_format($prijs, '2', ',', '');
	$metersavaible = number_format($metersavaible, '2', ',', '');

	//maakt beschrijving kleiner (bij woorden)
	if($type == 0) //general overlook
	{
		$cuttedbeschrijving = "";
		$cuts = explode(" ", $beschrijving);
		
		//meer dan 30 woorden?
		if(count($cuts) > 30)
		{
			for($j = 0; $j <= 30; $j++)
			{
				$cuttedbeschrijving .= $cuts[$j]." ";
			}
			$cuttedbeschrijving .= $cuts[$j]."...";
		}else{ //minder dan 30 woorden
			$cuttedbeschrijving = $beschrijving;
		}
		
		$returns .= "<div class='item'>";
		$returns .= "<h2>".$naam."<div id='catname'><a href='shopping.php?cat=".$catid."'>".$cat."</a></div></h2>";
		$returns .= "<a href='shopping.php?item=".$id."'><img src='img/stoffen/".$imgpath."'/></a>";
		$returns .= "<p class='beschrijving'>".$cuttedbeschrijving." <a href='shopping.php?item=".$id."'>meer info</a></p>";
		$returns .= "<p class='meters'>".$metersavaible."m beschikbaar (".$totaalmeters."m totaal)</p>";
		$returns .= "<p class='reserveren'> <a href='shopping.php?item=".$id."'>Bekijken</a> <div class='prijs'>&euro; ".$prijs." per m</div></p>";
		$returns .= "</div>";

	}else{ //More details

		$returns .= "<div class='iteminfo'>";
		$returns .= "<h2>".$naam."<div id='catname'>uit de categorie '<a href='shopping.php?cat=".$catid."'>".$cat."</a>'</div></h2>";
		$returns .= "<div id='infoblock'><img src='img/stoffen/".$imgpath."'/>";
		$returns .= "<p class='meters'>".$metersavaible."m beschikbaar (".$totaalmeters."m totaal)</p><p class='prijs'>&euro; ".$prijs." per m</p></div>";
		$returns .= "<p class='beschrijving'>".$beschrijving."</p>";
		$returns .= "</div>";
		
		//is ingelogd om item te reserveren?
		if(isLogged()) {
			$returns .= shoppingForm($id, $metersavaible);
		}else{
			$returns .= "<form id='buyform'>U moet eerst een account aanmaken om dit te kunnen reserveren, <a href='receptie.php'>inloggen of registeren</a></form>";
		}
	}
	return $returns;
}