]> Softwares of Agnibho - dietsurvey.git/blobdiff - dietsurvey/ajax.php
Rewritten in PHP/Javascript
[dietsurvey.git] / dietsurvey / ajax.php
diff --git a/dietsurvey/ajax.php b/dietsurvey/ajax.php
new file mode 100644 (file)
index 0000000..22ff4da
--- /dev/null
@@ -0,0 +1,238 @@
+<?php
+/**********************************************************************
+ * Title: Diet-Survey
+ * Description: Application for calculating nutrient intake
+ * Author: Agnibho Mondal
+ * Website: http://code.agnibho.com
+ **********************************************************************
+   Copyright (c) 2013-2015 Agnibho Mondal
+   All rights reserved
+ **********************************************************************
+   This file is part of Diet-Survey.
+   
+   Diet-Survey is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
+   Diet-Survey is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with Diet-Survey.  If not, see <http://www.gnu.org/licenses/>.
+ **********************************************************************/
+?>
+<?php
+ini_set('session.cookie_lifetime', 60 * 60 * 24 * 30);
+ini_set('session.gc_maxlifetime', 60 * 60 * 24 * 30);
+session_start();
+session_regenerate_id(true);
+if(!isSet($_SESSION["custom_food"])){
+    $_SESSION["custom_food"]=array();
+}
+
+define("HOST", "localhost");
+define("USER", "root");
+define("PASS", "data");
+define("DTBS", "test");
+
+if(isSet($_POST["subjects"]) && isSet($_POST["foods"])){
+    $sql=new mysqli(HOST, USER, PASS, DTBS);
+    $send=array();
+    $send["rda"]=subject_stat($_POST["subjects"], $sql);
+    $send["val"]=food_stat($_POST["foods"], $sql);
+    $sql->close();
+    echo json_encode($send);
+}
+else if(isSet($_POST["name"]) && isSet($_POST["energy"]) && isSet($_POST["protein"]) && isSet($_POST["iron"]) && isSet($_POST["vitA"]) && isSet($_POST["thiamine"]) && isSet($_POST["riboflavin"]) && isSet($_POST["vitC"])){
+    $_SESSION["custom_food"][]=array("name"=>$_POST["name"], "energy"=>$_POST["energy"], "protein"=>$_POST["protein"], "iron"=>$_POST["iron"], "vitA"=>$_POST["vitA"], "thiamine"=>$_POST["thiamine"], "riboflavin"=>$_POST["riboflavin"], "vitC"=>$_POST["vitC"]);
+    echo json_encode(["flag"=>true]);
+}
+else if(isSet($_POST["delete-custom-food"])){
+    array_splice($_SESSION["custom_food"], $_POST["delete-custom-food"], 1);
+    echo json_encode(["flag"=>true]);
+}
+else if(isSet($_GET["initdata"])){
+    $data["list"]=get_food_list();
+    $data["custom"]=get_custom_food();
+    echo json_encode($data);
+}
+else{
+    exit("Error");
+}
+
+function get_food_list(){
+    $preset=array();
+    $sql=new mysqli(HOST, USER, PASS, DTBS);
+    $stmt=$sql->prepare("SELECT name FROM food");
+    $stmt->execute();
+    $stmt->bind_result($name);
+    while($stmt->fetch()){
+       $preset[]=$name;
+    }
+    $stmt->close();
+    $sql->close();
+    foreach($_SESSION["custom_food"] as $item){
+       if(!in_array($item["name"], $preset)){
+           $preset[]=$item["name"];
+       }
+    }
+    return $preset;
+}
+
+function get_custom_food(){
+    return $_SESSION["custom_food"];
+}
+
+function subject_stat($subjects, $sql){
+    $rda=array();
+    for($i=0; $i<count($subjects); $i++){
+       $stmt=$sql->prepare("SELECT energy, protein, iron, vitA, thiamine, riboflavin, vitC FROM rda WHERE subject=?");
+       $stmt->bind_param("s", make_string($subjects[$i]));
+       $stmt->execute();
+       $stmt->bind_result($energy, $protein, $iron, $vitA, $thiamine, $riboflavin, $vitC);
+       $stmt->fetch();
+       $stmt->close();
+       $rda[$i]["energy"]=(float)$energy;
+       $rda[$i]["protein"]=(float)$protein;
+       $rda[$i]["iron"]=(float)$iron;
+       $rda[$i]["vitA"]=(float)$vitA;
+       $rda[$i]["thiamine"]=(float)$thiamine;
+       $rda[$i]["riboflavin"]=(float)$riboflavin;
+       $rda[$i]["vitC"]=(float)$vitC;
+       if($subjects[$i]["age"]>=18 && $subjects[$i]["age"]<=45 && $subjects[$i]["sex"]=="Female"){
+           if($subjects[$i]["state"]!="npnl"){
+               $qs="";
+               if($subjects[$i]["state"]=="preg"){
+                   $qs="pregnant";
+               }
+               else if($subjects[$i]["state"]=="lactb6"){
+                   $qs="lactating_below6";
+               }
+               else if($subjects[$i]["state"]=="lacto6"){
+                   $qs="lactating_above6";
+               }
+               $stmt=$sql->prepare("SELECT energy, protein, iron, vitA, thiamine, riboflavin, vitC FROM rda WHERE subject=?");
+               $stmt->bind_param("s", $qs);
+               $stmt->execute();
+               $stmt->bind_result($energy, $protein, $iron, $vitA, $thiamine, $riboflavin, $vitC);
+               $stmt->fetch();
+               $stmt->close();
+               $rda[$i]["energy"]=$rda[$i]["energy"]+(float)$energy;
+               $rda[$i]["protein"]=(float)$protein;
+               $rda[$i]["iron"]=(float)$iron;
+               $rda[$i]["vitA"]=(float)$vitA;
+               $rda[$i]["thiamine"]=$rda[$i]["thiamine"]+(float)$thiamine;
+               $rda[$i]["riboflavin"]=$rda[$i]["riboflavin"]+(float)$riboflavin;
+               $rda[$i]["vitC"]=(float)$vitC;
+           }
+       }
+    }
+    return $rda;
+}
+
+function food_stat($foods, $sql){
+    $val=array();
+    if(count($foods)>0){
+       $qs="";
+       for($i=0; $i<count($foods); $i++){
+           if(has_custom($foods[$i]["name"])){
+               $val[$foods[$i]["name"]]["energy"]=(float)get_custom_by_name($foods[$i]["name"])["energy"];
+               $val[$foods[$i]["name"]]["protein"]=(float)get_custom_by_name($foods[$i]["name"])["protein"];
+               $val[$foods[$i]["name"]]["iron"]=(float)get_custom_by_name($foods[$i]["name"])["iron"];
+               $val[$foods[$i]["name"]]["vitA"]=(float)get_custom_by_name($foods[$i]["name"])["vitA"];
+               $val[$foods[$i]["name"]]["thiamine"]=(float)get_custom_by_name($foods[$i]["name"])["thiamine"];
+               $val[$foods[$i]["name"]]["riboflavin"]=(float)get_custom_by_name($foods[$i]["name"])["riboflavin"];
+               $val[$foods[$i]["name"]]["vitC"]=(float)get_custom_by_name($foods[$i]["name"])["vitC"];
+           }
+           else{
+               if($qs==""){
+                   $qs="name='".$foods[0]["name"]."'";
+               }
+               else{
+                   $qs=$qs." OR name='".$foods[$i]["name"]."'";
+               }
+           }
+       }
+       if($qs!=""){
+           $stmt=$sql->prepare("SELECT name, energy, protein, iron, vitA, thiamine, riboflavin, vitC FROM food WHERE ".$qs);
+           $stmt->execute();
+           $stmt->bind_result($name, $energy, $protein, $iron, $vitA, $thiamine, $riboflavin, $vitC);
+           while($stmt->fetch()){
+               $val[$name]["energy"]=(float)$energy;
+               $val[$name]["protein"]=(float)$protein;
+               $val[$name]["iron"]=(float)$iron;
+               $val[$name]["vitA"]=(float)$vitA;
+               $val[$name]["thiamine"]=(float)$thiamine;
+               $val[$name]["riboflavin"]=(float)$riboflavin;
+               $val[$name]["vitC"]=(float)$vitC;
+           }
+           $stmt->close();
+       }
+    }
+    return $val;
+}
+
+function make_string($sub){
+    $idx="";
+    if($sub["age"]==0){
+       $idx="infant_9m-12m";
+    }
+    else if($sub["age"]<18){
+       if($sub["sex"]=="Male"){
+           $idx="male_".$sub["age"]."y";
+       }
+       else if($sub["sex"]=="Female"){
+           $idx="female_".$sub["age"]."y";
+       }
+    }
+    else{
+       if($sub["sex"]=="Male"){
+           if($sub["work"]=="Sedentary"){
+               $idx="male_sedentary";
+           }
+           else if($sub["work"]=="Moderate"){
+               $idx="male_moderate";
+           }
+           if($sub["work"]=="Heavy"){
+               $idx="male_heavy";
+           }
+       }
+       else if($sub["sex"]=="Female"){
+           if($sub["work"]=="Sedentary"){
+               $idx="female_sedentary";
+           }
+           else if($sub["work"]=="Moderate"){
+               $idx="female_moderate";
+           }
+           if($sub["work"]=="Heavy"){
+               $idx="female_heavy";
+           }
+       }
+    }
+    return $idx;
+}
+
+function has_custom($value){
+    $flag=false;
+    foreach($_SESSION["custom_food"] as $item){
+       if($item["name"]==$value){
+           $flag=true;
+           break;
+       }
+    }
+    return $flag;
+}
+function get_custom_by_name($name){
+    $obj=false;
+    foreach($_SESSION["custom_food"] as $item){
+       if($item["name"]==$name){
+           $obj=$item;
+           break;
+       }
+    }
+    return $obj;
+}
+?>