package com.eugene.fithealthmaingit.UI.Recipe;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.CalSQLiteDatabase.DailyCalorieAdapter;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.CalSQLiteDatabase.DailyCalorieIntake;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.CalSQLiteDatabase.DatabaseHandler;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogFood.LogAdapterAll;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogFood.LogMeal;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogRecipes.LogRecipeHolder;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogRecipes.LogRecipeHolderAdapter;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogRecipes.LogRecipeItems;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogRecipes.LogRecipeItemsAdapter;
import com.eugene.fithealthmaingit.R;
import com.eugene.fithealthmaingit.MainActivity;
import com.eugene.fithealthmaingit.UI.ChooseAddMealActivity;
import com.eugene.fithealthmaingit.Utilities.DateCompare;
import com.eugene.fithealthmaingit.Utilities.Globals;
import com.eugene.fithealthmaingit.Utilities.OrderFormat;
import java.util.Date;
import java.util.List;
public class RecipeActivity extends AppCompatActivity {
int mId;
String mealType;
private EditText recipeName;
ListView listRecipes;
private LogRecipeHolder recipe;
LogRecipeItemsAdapter logRecipeItemsAdapter;
LogRecipeHolderAdapter logRecipeHolderAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recipe);
setAdapter(new Date());
Bundle b = new Bundle();
Intent intent = getIntent();
if (intent != null) {
mId = intent.getIntExtra(Globals.MEAL_ID, 0);
mealType = intent.getStringExtra(Globals.MEAL_TYPE);
}
recipeName = (EditText) findViewById(R.id.recipeName);
toolbar();
RecipeList();
recipeName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
recipeName.setCursorVisible(true);
}
});
recipeName.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
recipeName.setCursorVisible(false);
}
return false;
}
});
Button btnCreate = (Button) findViewById(R.id.btnCreate);
btnCreate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (recipeName.getText().toString().trim().length() != 0) {
recipe.setMealName(recipeName.getText().toString());
}
recipe.edit();
Intent i = new Intent(RecipeActivity.this, RecipeManualEntry.class);
i.putExtra(Globals.MEAL_ID, mId);
i.putExtra(Globals.MEAL_TYPE, mealType);
startActivity(i);
}
});
Button btnSearch = (Button) findViewById(R.id.btnSearch);
btnSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (recipeName.getText().toString().trim().length() != 0) {
recipe.setMealName(recipeName.getText().toString());
}
recipe.edit();
Intent i = new Intent(RecipeActivity.this, RecipeAddSearchItem.class);
i.putExtra(Globals.MEAL_ID, mId);
i.putExtra(Globals.MEAL_TYPE, mealType);
startActivity(i);
}
});
}
private void RecipeList() {
// Recipe Holder Adapter filtered by Unique ID, can only have 1 item at position 0
logRecipeHolderAdapter = new LogRecipeHolderAdapter(this, 0, LogRecipeHolder.logsById(mId));
recipe = logRecipeHolderAdapter.getItem(0);
if (!recipe.getMealName().equals("Recipe")) {
recipeName.setText(recipe.getMealName());
}
listRecipes = (ListView) findViewById(R.id.listRecipes);
logRecipeItemsAdapter = new LogRecipeItemsAdapter(this, 0, LogRecipeItems.logsById(mId));
listRecipes.setAdapter(logRecipeItemsAdapter);
}
private void toolbar() {
Toolbar toolbar_Recipe = (Toolbar) findViewById(R.id.toolbar_Recipe);
toolbar_Recipe.setTitle("Create Recipe");
toolbar_Recipe.inflateMenu(R.menu.menu_recipe);
toolbar_Recipe.setNavigationIcon(R.mipmap.ic_close_white);
toolbar_Recipe.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (logRecipeItemsAdapter.getCount() == 0) {
recipe.delete();
} else {
if (recipeName.getText().toString().trim().length() != 0) {
recipe.setMealName(recipeName.getText().toString());
recipe.edit();
}
}
Intent i = new Intent(RecipeActivity.this, ChooseAddMealActivity.class);
i.putExtra(Globals.MEAL_TYPE, mealType);
i.putExtra("PAGE", 2);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
});
toolbar_Recipe.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.action_save) {
setRecipe();
Intent i = new Intent(RecipeActivity.this, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
if (item.getItemId() == R.id.action_delete) {
recipe.delete();
Intent i = new Intent(RecipeActivity.this, ChooseAddMealActivity.class);
i.putExtra(Globals.MEAL_TYPE, mealType);
i.putExtra("PAGE", 2);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
return false;
}
});
}
int mAllCaloriesConsumed = 0;
int mAllFatConsumed = 0;
int mAllCarbsConsumed = 0;
int mAllSaturatedFatCount = 0;
int mAllCholesterolCount = 0;
int mAllSodiumCount = 0;
int mAllFiberCount = 0;
int mAllSugarCount = 0;
int mAllProteinCount = 0;
int mAllVitACount = 0;
int mAllVitCCount = 0;
int mAllCalciumCount = 0;
int mAllIronCount = 0;
private void setRecipe() {
for (LogRecipeItems logRecipe : logRecipeItemsAdapter.getLogs()) {
mAllCaloriesConsumed += logRecipe.getCalorieCount();
mAllFatConsumed += logRecipe.getFatCount();
mAllCarbsConsumed += logRecipe.getCarbCount();
mAllProteinCount += logRecipe.getProteinCount();
mAllSaturatedFatCount += logRecipe.getSaturatedFat();
mAllCholesterolCount += logRecipe.getCholesterol();
mAllSodiumCount += logRecipe.getSodium();
mAllFiberCount += logRecipe.getFiber();
mAllSugarCount += logRecipe.getSugars();
mAllVitACount += logRecipe.getVitA();
mAllVitCCount += logRecipe.getVitC();
mAllCalciumCount += logRecipe.getCalcium();
mAllIronCount += logRecipe.getIron();
}
LogMeal logMeal = new LogMeal();
if (recipeName.getText().toString().trim().length() != 0) {
recipe.setMealName(recipeName.getText().toString());
logMeal.setMealName(recipeName.getText().toString());
} else {
logMeal.setMealName("Recipe");
}
recipe.setCalorieCount(Double.valueOf(mAllCaloriesConsumed));
recipe.setFatCount(Double.valueOf(mAllFatConsumed));
recipe.setCarbCount(Double.valueOf(mAllCarbsConsumed));
recipe.setProteinCount(Double.valueOf(mAllProteinCount));
recipe.setSaturatedFat(Double.valueOf(mAllSaturatedFatCount));
recipe.setCholesterol(Double.valueOf(mAllCholesterolCount));
recipe.setSodium(Double.valueOf(mAllSodiumCount));
recipe.setFiber(Double.valueOf(mAllFiberCount));
recipe.setSugars(Double.valueOf(mAllSugarCount));
recipe.setVitA(Double.valueOf(mAllVitACount));
recipe.setVitC(Double.valueOf(mAllVitCCount));
recipe.setCalcium(Double.valueOf(mAllCalciumCount));
recipe.setIron(Double.valueOf(mAllIronCount));
recipe.edit();
logMeal.setDate(new Date());
logMeal.setReciipe("Recipe");
logMeal.setServingSize(1);
logMeal.setMealServing("Serving");
logMeal.setCalorieCount(Double.valueOf(mAllCaloriesConsumed));
logMeal.setFatCount(Double.valueOf(mAllFatConsumed));
logMeal.setCarbCount(Double.valueOf(mAllCarbsConsumed));
logMeal.setProteinCount(Double.valueOf(mAllProteinCount));
logMeal.setSaturatedFat(Double.valueOf(mAllSaturatedFatCount));
logMeal.setCholesterol(Double.valueOf(mAllCholesterolCount));
logMeal.setSodium(Double.valueOf(mAllSodiumCount));
logMeal.setFiber(Double.valueOf(mAllFiberCount));
logMeal.setSugars(Double.valueOf(mAllSugarCount));
logMeal.setVitA(Double.valueOf(mAllVitACount));
logMeal.setVitC(Double.valueOf(mAllVitCCount));
logMeal.setCalcium(Double.valueOf(mAllCalciumCount));
logMeal.setIron(Double.valueOf(mAllIronCount));
logMeal.setMealChoice(mealType);
logMeal.setRecipeId(String.valueOf(mId));
logMeal.setOrderFormat(OrderFormat.setMealFormat(mealType));
logMeal.save();
testing();
}
private DatabaseHandler db;
List<DailyCalorieIntake> dailyCalorieIntakes;
private DailyCalorieAdapter dailyCalorieAdapter;
private void testing() {
LogAdapterAll logAdapterAll = new LogAdapterAll(this, 0, LogMeal.logsByDate(new Date()));
if (dailyCalorieIntakes.size() > 0) {
double caloriesUpdate = 0;
for (LogMeal logMeal1 : logAdapterAll.getLogs()) {
caloriesUpdate += logMeal1.getCalorieCount();
}
DailyCalorieIntake c = dailyCalorieAdapter.getItem(0);
c.setCalorieIntake(caloriesUpdate);
db.updateCalories(c);
} else {
LogMeal logMeal = logAdapterAll.getItem(0);
db.addContact(new DailyCalorieIntake("", logMeal.getCalorieCount(), DateCompare.dateToString(new Date())));
}
}
private void setAdapter(Date newDate) {
db = new DatabaseHandler(this);
String date = DateCompare.dateToString(newDate); // Convert date to string
dailyCalorieIntakes = db.getContactsByDate(date); // filter by string
dailyCalorieAdapter = new DailyCalorieAdapter(this, 0, dailyCalorieIntakes);
if (dailyCalorieIntakes.size() > 0) {
DailyCalorieIntake c = dailyCalorieAdapter.getItem(0);
}
}
}