397 lines
13 KiB
PHP
397 lines
13 KiB
PHP
<?php
|
|
defined('BASEPATH') or exit('No direct script access allowed');
|
|
|
|
class Makanan extends REST_Controller
|
|
{
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
//$this->load->model("ModelAuth");
|
|
}
|
|
|
|
public function makanan_post()
|
|
{
|
|
$data = array(
|
|
'kategori' => $this->post("kategori"),
|
|
'bahan_makanan' => $this->post("bahan_makanan"),
|
|
'kuantitas' => $this->post("kuantitas"),
|
|
'besaran' => $this->post("besaran"),
|
|
|
|
);
|
|
|
|
if ($this->db->get_where("bahan_makanan", array('bahan_makanan' => $this->post("bahan_makanan")))->num_rows() < 1) {
|
|
if ($this->db->get_where("bahan_makanan", array('besaran' => $this->post("besaran")))->num_rows() < 1) {
|
|
if ($this->db->insert('bahan_makanan', $data)) {
|
|
$message = array(
|
|
'status' => 200,
|
|
'message' => "konten berhasil ditambahkan"
|
|
);
|
|
} else {
|
|
$message = array(
|
|
'status' => 500,
|
|
'message' => "INTERNAL_SERVER_ERROR"
|
|
);
|
|
}
|
|
} else {
|
|
$message = array(
|
|
'status' => 502,
|
|
'message' => "Penulis Sudah Digunakan"
|
|
);
|
|
}
|
|
} else {
|
|
$message = array(
|
|
'status' => 501,
|
|
'message' => "Judul Sudah Digunakan"
|
|
);
|
|
}
|
|
$this->response(array('response' => $data, 'message' => $message));
|
|
}
|
|
|
|
public function makanan_get()
|
|
{
|
|
// echo "Coba";
|
|
$this->db->select('bahan_makanan.*, kategori.nama_kategori');
|
|
$this->db->from('bahan_makanan');
|
|
$this->db->join('kategori', 'kategori.id_kategori = bahan_makanan.kategori');
|
|
$data = $this->db->get();
|
|
if ($data->num_rows() > 0) {
|
|
$message = array(
|
|
'status' => $this->config->item('http_response_ok'),
|
|
'message' => "OK"
|
|
);
|
|
$data = $data->result();
|
|
} else {
|
|
$data = array();
|
|
$message = array(
|
|
'status' => $this->config->item('http_response_ok_no_content'),
|
|
'message' => "NO_CONTENT"
|
|
);
|
|
}
|
|
$this->response(array('response' => $data, 'message' => $message));
|
|
}
|
|
|
|
public function konsumsi_get()
|
|
{
|
|
$id_user = $this->input->get("id_user");
|
|
$waktu = $this->input->get("waktu");
|
|
$keterangan = $this->input->get("keterangan");
|
|
|
|
$this->db->select('
|
|
bahan_makanan.nama_makanan,
|
|
bahan_makanan.besaran,
|
|
konsumsi_detail.kuantitas,
|
|
(bahan_makanan.energi * konsumsi_detail.kuantitas) AS kalori,
|
|
(bahan_makanan.karbohidrat * konsumsi_detail.kuantitas) AS karbohidrat,
|
|
(bahan_makanan.protein * konsumsi_detail.kuantitas) AS protein,
|
|
(bahan_makanan.lemak * konsumsi_detail.kuantitas) AS lemak,
|
|
(bahan_makanan.besi * konsumsi_detail.kuantitas) AS besi,
|
|
(bahan_makanan.vitamina * konsumsi_detail.kuantitas) AS vitamina,
|
|
(bahan_makanan.vitaminc * konsumsi_detail.kuantitas) AS vitaminc,
|
|
konsumsi.keterangan');
|
|
$this->db->from('konsumsi');
|
|
$this->db->join('konsumsi_detail', 'konsumsi_detail.id_konsumsi = konsumsi.idkonsumsi');
|
|
$this->db->join('bahan_makanan', 'bahan_makanan.id_makanan = konsumsi_detail.id_makanan');
|
|
|
|
$this->db->where('konsumsi.user_id_user', $id_user);
|
|
$this->db->where('DATE(konsumsi.waktu)', $waktu);
|
|
if ($keterangan != null && $keterangan != "") {
|
|
$this->db->where('konsumsi.keterangan', $keterangan);
|
|
}
|
|
|
|
$data = $this->db->get();
|
|
|
|
$dbUser = $this->db->get_where("user", array('id_user' => $id_user))->row();
|
|
$kalori = 0;
|
|
$umur = date_diff(date_create($dbUser->tgl_lahir), date_create('now'))->y;
|
|
$dbKalori = $this->db->from("kalori")
|
|
->where("awal <=", $umur)
|
|
->where("akhir >=", $umur)
|
|
->where("jenis_kelamin", $dbUser->jekel)
|
|
->get()->row();
|
|
if ($dbKalori != null) {
|
|
$kalori = $dbKalori->energi;
|
|
}
|
|
|
|
$dataUser = array(
|
|
"user" => $dbUser,
|
|
"umur" => $umur,
|
|
"kalori" => $kalori,
|
|
);
|
|
|
|
if ($data->num_rows() > 0) {
|
|
$message = array(
|
|
'status' => $this->config->item('http_response_ok'),
|
|
);
|
|
$data = $data->result();
|
|
} else {
|
|
$data = array();
|
|
$message = array(
|
|
'status' => $this->config->item('http_response_ok_no_content'),
|
|
'message' => "NO_CONTENT"
|
|
);
|
|
}
|
|
$this->response(array('response' => $data, 'dataUser' => $dataUser, 'message' => $message));
|
|
}
|
|
|
|
public function kalorikonsumsi_get()
|
|
{
|
|
$id_user = $this->input->get("id_user");
|
|
$waktu = $this->input->get("waktu");
|
|
$keterangan = $this->input->get("keterangan");
|
|
|
|
$this->db->select('
|
|
bahan_makanan.nama_makanan,
|
|
bahan_makanan.besaran,
|
|
konsumsi_detail.kuantitas,
|
|
(bahan_makanan.energi * konsumsi_detail.kuantitas) AS kalori,
|
|
(bahan_makanan.karbohidrat * konsumsi_detail.kuantitas) AS karbohidrat,
|
|
(bahan_makanan.protein * konsumsi_detail.kuantitas) AS protein,
|
|
(bahan_makanan.lemak * konsumsi_detail.kuantitas) AS lemak,
|
|
(bahan_makanan.besi * konsumsi_detail.kuantitas) AS besi,
|
|
(bahan_makanan.vitamina * konsumsi_detail.kuantitas) AS vitamina,
|
|
(bahan_makanan.vitaminc * konsumsi_detail.kuantitas) AS vitaminc,
|
|
konsumsi.keterangan');
|
|
$this->db->from('konsumsi');
|
|
$this->db->join('konsumsi_detail', 'konsumsi_detail.id_konsumsi = konsumsi.idkonsumsi');
|
|
$this->db->join('bahan_makanan', 'bahan_makanan.id_makanan = konsumsi_detail.id_makanan');
|
|
|
|
$this->db->where('konsumsi.user_id_user', $id_user);
|
|
$this->db->where('DATE(konsumsi.waktu)', $waktu);
|
|
if ($keterangan != null && $keterangan != "") {
|
|
$this->db->where('konsumsi.keterangan', $keterangan);
|
|
}
|
|
|
|
$data = $this->db->get();
|
|
|
|
$total_kalori = 0;
|
|
if ($data->num_rows() > 0) {
|
|
$message = array(
|
|
'status' => $this->config->item('http_response_ok'),
|
|
);
|
|
$data = $data->result();
|
|
foreach ($data as $key => $value) {
|
|
$total_kalori += $value->kalori;
|
|
}
|
|
} else {
|
|
$data = array();
|
|
$message = array(
|
|
'status' => $this->config->item('http_response_ok_no_content'),
|
|
'message' => "NO_CONTENT"
|
|
);
|
|
}
|
|
$dbUser = $this->db->get_where("user", array('id_user' => $id_user))->row();
|
|
$kalori = 0;
|
|
$umur = date_diff(date_create($dbUser->tgl_lahir), date_create('now'))->y;
|
|
$dbKalori = $this->db->from("kalori")
|
|
->where("awal <=", $umur)
|
|
->where("akhir >=", $umur)
|
|
->get()->row();
|
|
if ($dbKalori != null) {
|
|
$kalori = $dbKalori->energi;
|
|
}
|
|
// if ($umur >= 1 && $umur <= 3) {
|
|
// $kalori = 1350;
|
|
// } else if ($umur >= 4 && $umur <= 6) {
|
|
// $kalori = 1400;
|
|
// } else if ($umur >= 7 && $umur <= 9) {
|
|
// $kalori = 1650;
|
|
// } else if ($umur >= 10 && $umur <= 12) {
|
|
// $kalori = 2000;
|
|
// } else if ($umur >= 13 && $umur <= 15) {
|
|
// $kalori = 2400;
|
|
// } else if ($umur >= 16) {
|
|
// $kalori = 2650;
|
|
// }
|
|
$sarapan_kalori = $kalori * 40 / 100;
|
|
$siang_kalori = $kalori * 40 / 100;
|
|
$malam_kalori = $kalori * 10 / 100;
|
|
$dataUser = array(
|
|
"user" => $dbUser,
|
|
"umur" => $umur,
|
|
"kalori" => $kalori,
|
|
"konsumsi_kalori" => $kalori,
|
|
"karbo" => $kalori * 30 / 100,
|
|
"sayur" => $kalori * 30 / 100,
|
|
"lauk" => $kalori * 20 / 100,
|
|
"buah" => $kalori * 20 / 100,
|
|
"waktu" => strtolower($keterangan),
|
|
);
|
|
//lowercase keterangan
|
|
if (strtolower($keterangan) == "sarapan") {
|
|
$dataUser["konsumsi_kalori"] = $sarapan_kalori;
|
|
$dataUser["karbo"] = $sarapan_kalori * 30 / 100;
|
|
$dataUser["sayur"] = $sarapan_kalori * 30 / 100;
|
|
$dataUser["lauk"] = $sarapan_kalori * 20 / 100;
|
|
$dataUser["buah"] = $sarapan_kalori * 20 / 100;
|
|
} else if (strtolower($keterangan) == "makan siang") {
|
|
$dataUser["konsumsi_kalori"] = $siang_kalori;
|
|
$dataUser["karbo"] = $siang_kalori * 30 / 100;
|
|
$dataUser["sayur"] = $siang_kalori * 30 / 100;
|
|
$dataUser["lauk"] = $siang_kalori * 20 / 100;
|
|
$dataUser["buah"] = $siang_kalori * 20 / 100;
|
|
} else if (strtolower($keterangan) == "makan malam") {
|
|
$dataUser["konsumsi_kalori"] = $malam_kalori;
|
|
$dataUser["karbo"] = $malam_kalori * 30 / 100;
|
|
$dataUser["sayur"] = $malam_kalori * 30 / 100;
|
|
$dataUser["lauk"] = $malam_kalori * 20 / 100;
|
|
$dataUser["buah"] = $malam_kalori * 20 / 100;
|
|
}
|
|
|
|
$persentase_kalori = ($total_kalori / $dataUser["konsumsi_kalori"]) * 100;
|
|
$keterangan = "Keterangan Kalori Anda : ";
|
|
if ($persentase_kalori < 70) {
|
|
$keterangan = "Kalori Anda Defisit Berat";
|
|
} else if ($persentase_kalori >= 70 && $persentase_kalori < 80) {
|
|
$keterangan = "Kalori Anda Defisit Sedang";
|
|
} else if ($persentase_kalori >= 80 && $persentase_kalori < 90) {
|
|
$keterangan = "Kalori Anda Defisit Ringan";
|
|
} else if ($persentase_kalori >= 90 && $persentase_kalori < 120) {
|
|
$keterangan = "Kalori Anda Ideal";
|
|
} else if ($persentase_kalori >= 120) {
|
|
$keterangan = "Kalori Anda Berlebihan";
|
|
}
|
|
$dataUser["persentase_kalori"] = round($persentase_kalori);
|
|
$dataUser["keterangan"] = $keterangan;
|
|
|
|
$this->response(array('response' => $data, 'datauser' => $dataUser, 'message' => $message));
|
|
}
|
|
|
|
public function allKonsumsi_get()
|
|
{
|
|
$id_user = $this->input->get("id_user");
|
|
$startDate = date("Y-m-d", strtotime($this->input->get("start")));
|
|
$endDate = date("Y-m-d", strtotime($this->input->get("end")));
|
|
|
|
$resData = array();
|
|
|
|
$this->db->select('
|
|
konsumsi.waktu,
|
|
bahan_makanan.nama_makanan,
|
|
kategori.id_kategori,
|
|
kategori.nama_kategori,
|
|
bahan_makanan.besaran,
|
|
konsumsi_detail.kuantitas,
|
|
(bahan_makanan.energi * konsumsi_detail.kuantitas) AS kalori');
|
|
$this->db->from('konsumsi');
|
|
$this->db->join('konsumsi_detail', 'konsumsi_detail.id_konsumsi = konsumsi.idkonsumsi');
|
|
$this->db->join('bahan_makanan', 'bahan_makanan.id_makanan = konsumsi_detail.id_makanan');
|
|
$this->db->join('kategori', 'kategori.id_kategori = bahan_makanan.kategori');
|
|
$this->db->where('konsumsi.user_id_user', $id_user);
|
|
$this->db->where('DATE(konsumsi.waktu) >=', $startDate);
|
|
$this->db->where('DATE(konsumsi.waktu) <=', $endDate);
|
|
$data = $this->db->get();
|
|
|
|
$tempkarbo = 0;
|
|
$templauk = 0;
|
|
$tempsayur = 0;
|
|
$tempbuah = 0;
|
|
|
|
$maxval = 0;
|
|
|
|
// selisih hari
|
|
$tanggal_1 = date_create($startDate);
|
|
$tanggal_2 = date_create($endDate);
|
|
$selisih = date_diff($tanggal_1, $tanggal_2);
|
|
$selisih = $selisih->days;
|
|
$dataQuery = $data->result();
|
|
for ($i = 0; $i <= $selisih; $i++) {
|
|
$tempdate = date("Y-m-d", strtotime("+" . $i . " day", strtotime($startDate)));
|
|
foreach ($dataQuery as $value) {
|
|
if (date("Y-m-d", strtotime($value->waktu)) == $tempdate) {
|
|
if ($value->id_kategori == 1) {
|
|
$tempkarbo += $value->kalori;
|
|
} else if ($value->id_kategori == 2) {
|
|
$templauk += $value->kalori;
|
|
} else if ($value->id_kategori == 3) {
|
|
$tempsayur += $value->kalori;
|
|
} else if ($value->id_kategori == 4) {
|
|
$tempbuah += $value->kalori;
|
|
}
|
|
}
|
|
}
|
|
$resData[] = array(
|
|
"tanggal" => date("d-M-Y", strtotime($tempdate)),
|
|
"karbo" => round($tempkarbo),
|
|
"lauk" => round($templauk),
|
|
"sayur" => round($tempsayur),
|
|
"buah" => round($tempbuah),
|
|
"kalori" => round($tempkarbo + $templauk + $tempsayur + $tempbuah)
|
|
);
|
|
|
|
if ($tempkarbo > $maxval) {
|
|
$maxval = $tempkarbo;
|
|
}
|
|
if ($templauk > $maxval) {
|
|
$maxval = $templauk;
|
|
}
|
|
if ($tempsayur > $maxval) {
|
|
$maxval = $tempsayur;
|
|
}
|
|
if ($tempbuah > $maxval) {
|
|
$maxval = $tempbuah;
|
|
}
|
|
|
|
$tempdate = date("Y-m-d", strtotime($tempdate));
|
|
$tempkarbo = 0;
|
|
$templauk = 0;
|
|
$tempsayur = 0;
|
|
$tempbuah = 0;
|
|
}
|
|
|
|
$resGraf = array();
|
|
for ($i = 0; $i < sizeof($resData); $i++) {
|
|
$karbo = 0;
|
|
if ($resData[$i]["karbo"] > 0) {
|
|
$karbo = ($resData[$i]["karbo"] / $maxval) * 4;
|
|
}
|
|
$lauk = 0;
|
|
if ($resData[$i]["lauk"] > 0) {
|
|
$lauk = ($resData[$i]["lauk"] / $maxval) * 4;
|
|
}
|
|
$sayur = 0;
|
|
if ($resData[$i]["sayur"] > 0) {
|
|
$sayur = ($resData[$i]["sayur"] / $maxval) * 4;
|
|
}
|
|
$buah = 0;
|
|
if ($resData[$i]["buah"] > 0) {
|
|
$buah = ($resData[$i]["buah"] / $maxval) * 4;
|
|
}
|
|
$resGraf[] = array(
|
|
"tanggal" => $resData[$i]["tanggal"],
|
|
"karbo" => round($karbo, 2),
|
|
"lauk" => round($lauk, 2),
|
|
"sayur" => round($sayur, 2),
|
|
"buah" => round($buah, 2),
|
|
);
|
|
}
|
|
|
|
$dataMax = array(
|
|
"karbo" => round($maxval),
|
|
"lauk" => round($maxval),
|
|
"sayur" => round($maxval),
|
|
"buah" => round($maxval),
|
|
);
|
|
|
|
if ($data->num_rows() > 0) {
|
|
$message = array(
|
|
'status' => $this->config->item('http_response_ok'),
|
|
'message' => $data
|
|
);
|
|
$data = $resData;
|
|
} else {
|
|
$data = array();
|
|
$message = array(
|
|
'status' => $this->config->item('http_response_ok_no_content'),
|
|
'message' => "NO_CONTENT"
|
|
);
|
|
}
|
|
$this->response(array(
|
|
'response' => $data,
|
|
'resGraf' => $resGraf,
|
|
'dataMax' => $dataMax,
|
|
'message' => $message
|
|
));
|
|
}
|
|
}
|