<?php
require_once("class/class.bbdd.php");
$bbdd = new BBDD();

//Resposta per defecte (Negativa)
$response["success"] = "0"; 

$userCode = $bbdd->checkParameter('userCode');
$reciCode = $bbdd->checkParameter('reciCode');
$reciTitl = $bbdd->checkParameter('reciTitl');
$reciText = $bbdd->checkParameter('reciText');
$reciCate = $bbdd->checkParameter('reciCate');
$reciRati = $bbdd->checkParameter('reciRati');
$reciTime = $bbdd->checkParameter('reciTime');
$ingrName = $bbdd->checkParameter('ingrName');
$ingrQuan = $bbdd->checkParameter('ingrQuan');
$stepName = $bbdd->checkParameter('stepName');

//Valida que s'haguin rebut tots els paràmetres
if ($userCode !== 0 && $reciCode !== 0 && $reciTitl !== 0 && $reciText !== 0 && $reciCate !== 0 && $reciRati !== 0 && $reciTime !== 0 && $ingrName !== 0 && $ingrQuan !== 0 && $stepName !== 0) {
	//Elimina els ingredients que no estan a la recepta	
	//Selecciona els ingredients que estan en la recepta i que no estan en una llista
	$ingrList = $bbdd->select("inreIngr as ingrIden","IngredientsRecipes","inreRece = '".$reciCode."' AND NOT inreIngr IN (SELECT inliIngredient FROM IngredientsLists)");
	//Elimina tots els ingredients eliminats de la recepta que no estan en ninguna llista
	if(mysqli_num_rows($ingrList)) {
		while($row = mysqli_fetch_object($ingrList)) {
			$ingrIden = $row->ingrIden;
			//Si l'element no esta al nou array d'ingredients passat, l'elimina
			if(!in_array($ingrIden,$_POST['ingrCode'])) $result = $bbdd->delete("Ingredients","ingrIden = '".$ingrIden."'");
		}
	}
	//Elimina la relació entre la recepta i els ingredients borrats que es troben en una llista
	$ingrList = $bbdd->select("inreIngr as ingrIden","IngredientsRecipes","inreRece = '".$reciCode."'");
	if(mysqli_num_rows($ingrList)) {
		while($row = mysqli_fetch_object($ingrList)) {
			$ingrIden = $row->ingrIden;
			//Si l'element no esta al nou array d'ingredients passat, n'elimina la relació
			if(!in_array($ingrIden,$_POST['ingrCode'])) $result = $bbdd->delete("IngredientsRecipes","inreIngr = '".$ingrIden."'");
		}
	}
	
	//Elimina els passos que no estan a la recepta	
	//Selecciona els passos que estan en la recepta
	$stepReci = $bbdd->select("stepIden","Steps","stepRecipe = '".$reciCode."'");
	
	//Elimina tots els passos eliminats de la recepta
	if(mysqli_num_rows($stepReci)) {
		while($row = mysqli_fetch_object($stepReci)) {
			$stepIden = $row->stepIden;
			//Si l'element no esta al nou array d'ingredients passat, l'elimina
			if(!in_array($stepIden,$_POST['stepCode'])) $result = $bbdd->delete("Steps","stepIden = '".$stepIden."'");
		}
	}
	
	//Categoria
	$cateCode = $bbdd->selectUnique("cateIden","RecipesCategories","cateName = '".$reciCate."'");	
	if(empty($cateCode)) {
		$cateCode = $bbdd->insertID("RecipesCategories","cateName","'".$reciCate."'");
	}
	
	//Ingredients
	ksort($_POST['ingrCode']);
	ksort($_POST['ingrName']);
	ksort($_POST['ingrQuan']);
	foreach($_POST['ingrCode'] as $key => $ingr) {		
		if(!empty($ingr) != 0) {
			//Actualitza l'ingredient
			if(!empty($_POST['ingrName'][$key])) $result = $bbdd->update("Ingredients","ingrName = '".$_POST['ingrName'][$key]."'","ingrIden = '".$ingr."'");
			$result = $bbdd->update("IngredientsRecipes","inreQuantity = '".$_POST['ingrQuan'][$key]."'","inreIngr = '".$ingr."'");
		} else {
			//Inserta un nou ingredient si el nom esta ompert
			if(!empty($_POST['ingrName'][$key])) {
				$ingrCode = $bbdd->insertID("Ingredients","ingrName","'".$_POST['ingrName'][$key]."'");
				$results = $bbdd->insert("IngredientsRecipes", "inreRece,inreIngr,inreQuantity", "'".$reciCode."','".$ingrCode."','".$_POST['ingrQuan'][$key]."'");	
			}
		}
	}
	//Passos	
	ksort($_POST['stepCode']);
	ksort($_POST['stepName']);
	foreach($_POST['stepCode'] as $key => $step) {						
		if(!empty($step) != 0) {
			//Actualitza el pas
			$stepName = addslashes(strip_tags($_POST['stepName'][$key]));
			if(!empty($stepName)) $result = $bbdd->update("Steps","stepText = '".$stepName."'","stepIden = '".$step."'");
		} else {
			//Inserta un nou pas si el nom esta ompert
			if(!empty($_POST['stepName'][$key])) {
				$stepName = addslashes(strip_tags($_POST['stepName'][$key]));
				$results = $bbdd->insert("Steps", "stepText,stepRecipe", "'". $stepName ."','".$reciCode."'");	
			}
		}	
	}
	
	//Actualitza els camps de la recepta
	$result = $bbdd->update("Recipes","reciCategory = '".$cateCode."',reciTitle = '".$reciTitl."',reciText = '".$reciText."',reciRations = '".$reciRati."',reciTime = '".$reciTime."'","reciIden = '".$reciCode."'");
	
	//Resposta: Positiva
	$response["success"] = "1"; 
	$response["message"] = "S'ha guardat la recepta correctament.";	
		
} else {	
	//Resposta: Falten paràmetres 
	$response["message"] = "No s'han especificat tots els paràmetres.";	
}

//Imatge
if(isset($_FILES["reciImag"]["name"])) {
	if(uploadImage($_FILES["reciImag"],$reciCode) == 0) $response["message"] .= " La imatge no s'ha pogut guardar.";
}
   
//Funció per pujar la nova imatge al servidor i actualitzar la BBDD
function uploadImage($file,$reciCode) {	
	$bbdd = new BBDD();
	
	$uploadOk = 1;
	
	$target_dir = "../uploads/recipes/";
	$newFile = date("U") . "_" . $file["name"];
	$target_file = $target_dir . $newFile;
	$imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);
	$check = getimagesize($file["tmp_name"]);
	if ($check !== false) {
		$uploadOk = 1;
	} else {
		$uploadOk = 0;
	}
	if (file_exists($target_file)) {
		$uploadOk = 0;
	}
	if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") {
		$uploadOk = 0;
	}
	if ($uploadOk != 0) {
		//Actualitzar la base de dades si es puja la nova imatge
		if(move_uploaded_file($file["tmp_name"], $target_file)) {
			$imagCode = $bbdd->insertID("Images","imagPath","'".$newFile."'");
			$result = $bbdd->update("Recipes","reciImage = '".$imagCode."'","reciIden = '".$reciCode."'");
		}
	} 
	
	return $uploadOk;
}

//Retorna els resultats en Json 
echo json_encode($response,JSON_UNESCAPED_UNICODE);
?>