alpha 0.0.1
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / fragments / DashboardMensa.java
diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/DashboardMensa.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/DashboardMensa.java
new file mode 100644 (file)
index 0000000..2d473a5
--- /dev/null
@@ -0,0 +1,104 @@
+package de.dhbwloe.campusapp.fragments;
+
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+import de.dhbwloe.campusapp.CampusAppContext;
+import de.dhbwloe.campusapp.CampusAppFragment;
+import de.dhbwloe.campusapp.R;
+import de.dhbwloe.campusapp.mensaplan.MensaTagesplan;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class DashboardMensa extends CampusAppFragment {
+    private View view;
+
+    public DashboardMensa() {
+        // Required empty public constructor
+    }
+
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        view = inflater.inflate(R.layout.fragment_dashboard_mensa, container, false);
+        refreshMensaMenue();
+        return view;
+    }
+
+
+    private void refreshMensaMenue() {
+        if(AppContext == null)
+            AppContext = CampusAppContext.getInstance();
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(new Date());
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.SECOND, 0);
+        cal.set(Calendar.MILLISECOND, 0);
+        long now = (new Date()).getTime() / 1000;
+        long mensaCloseTime = (3600 * 13); // 13 uhr
+        long timeFrom = cal.getTime().getTime() / 1000;
+        if(now > timeFrom + mensaCloseTime)
+            timeFrom += 86400;
+        long timeTo = timeFrom + (86400 * 3) + 86399; // +3days for weekend
+
+        MensaTagesplan[] dayplans = AppContext.getDatabaseManager().getMensaTagesplan(timeFrom, timeTo);
+        if(dayplans.length == 0) {
+
+            return;
+        }
+        MensaTagesplan dayplan = dayplans[0];
+        TextView dateTextView = (TextView) view.findViewById(R.id.menuDate);
+        dateTextView.setText(getDateText(dayplan.getPlanDate(), now));
+
+        LinearLayout menueContainer = (LinearLayout) view.findViewById(R.id.menuList);
+        menueContainer.removeAllViews();
+
+        MensaTagesplan cmenue = dayplan;
+        int i = 0;
+        LayoutInflater li = LayoutInflater.from(AppContext.getMainActivity());
+        do {
+            RelativeLayout menu = (RelativeLayout) li.inflate(R.layout.fragment_dashboard_mensa_menu, null, false);
+            menueContainer.addView(menu);
+
+            TextView menuName = (TextView) menu.findViewById(R.id.menuName);
+            TextView menuPrice = (TextView) menu.findViewById(R.id.menuPrice);
+
+            menuName.setText(cmenue.getName());
+            double price = cmenue.getStudentPrice();
+            menuPrice.setText(Double.toString(price));
+        } while(i < dayplans.length && (cmenue = dayplans[++i]) != null && cmenue.getPlanDate() == dayplan.getPlanDate());
+    }
+
+    private String getDateText(long date, long now) {
+        String datetext;
+        if(now < date+86400)
+            datetext = AppContext.getResString(R.string.dashboard_calendar_today);
+        else if(now < date + (86400*2))
+            datetext = AppContext.getResString(R.string.dashboard_calendar_tomorrow);
+        else {
+            int weekdayResIds[] = new int[] { R.string.week_sunday, R.string.week_monday, R.string.week_tuesday, R.string.week_wednesday, R.string.week_thursday, R.string.week_friday, R.string.week_saturday };
+            Calendar cal = Calendar.getInstance();
+            cal.setTime(new Date(date * 1000));
+            int dow = cal.get(Calendar.DAY_OF_WEEK);
+            SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM");
+
+            datetext = AppContext.getResString(weekdayResIds[dow]) + ", " + dateFormat.format(cal.getTime());
+        }
+        return datetext;
+    }
+
+}