// GET: ST_Surplus_Month
        public ActionResult Index()
        {
            #region 檢查是否有未製作的月報表
            List <ST_SurplusDay> dataList_day = mST_SurplusDayDAO.GetDataLessThanThisMonth(true);

            List <DateTime> month_List_day = GetMonthList(dataList_day);

            foreach (DateTime month in month_List_day)
            {
                if (mST_SurplusMonthDAO.FetchByMonth(month) == null)
                {
                    ST_Surplus_Month data = CreateNewMonthData(month);

                    data.guid = Guid.NewGuid();

                    mST_SurplusMonthDAO.Insert(data);
                }
            }
            #endregion

            #region
            List <ST_Surplus_Month> dataList_Month = mST_SurplusMonthDAO.GetDataListNotDel();

            /*依照月份排序*/
            dataList_Month.OrderBy(o => o.rec_month).ToList();
            #endregion

            #region DropDown List資料

            List <string> queryItems = new List <string>();

            foreach (ST_Surplus_Month data in dataList_Month)
            {
                string strMonth = data.rec_month.ToString("yyyy-MM");

                queryItems.Add(strMonth);
            }

            ViewData["query_Item"] = queryItems;
            #endregion

            List <string> select_Draw = new List <string>();

            select_Draw.Add("支出比重");
            select_Draw.Add("日收入與支出");


            ViewData["draw_item"] = select_Draw;

            ViewData["user"] = Session["user"];

            return(View(dataList_Month[0]));
        }
        public ActionResult Index(string selMonth)
        {
            ViewData["user"] = Session["user"];

            #region
            List <ST_Surplus_Month> dataList_Month = mST_SurplusMonthDAO.GetDataListNotDel();

            /*依照月份排序*/
            dataList_Month.OrderBy(o => o.rec_month).ToList();
            #endregion

            #region DropDown List資料

            List <string> queryItems = new List <string>();

            foreach (ST_Surplus_Month data in dataList_Month)
            {
                string strMonth = data.rec_month.ToString("yyyy-MM");

                queryItems.Add(strMonth);
            }

            ViewData["query_Item"] = queryItems;
            #endregion

            List <string> select_Draw = new List <string>();

            select_Draw.Add("支出比重");
            select_Draw.Add("日收入與支出");


            ViewData["draw_item"] = select_Draw;

            if (selMonth != "")
            {
                string year  = selMonth.Substring(0, 4);
                string month = selMonth.Substring(5, 2);

                string rec_Month = year + "-" + month + "-01";

                DateTime recMonth = DateTime.Parse(rec_Month);

                ST_Surplus_Month data = mST_SurplusMonthDAO.FetchByMonth(recMonth);

                return(View(data));
            }



            return(View(dataList_Month[0]));
        }
        // GET: ST_Surplus_Month/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            ST_Surplus_Month data = mST_SurplusMonthDAO.FetchBySerno(id);

            if (data == null)
            {
                return(HttpNotFound());
            }
            return(View(data));
        }
        public ST_Surplus_Month CreateNewMonthData(DateTime rec_Month)
        {
            DateTime firstDay = new DateTime(rec_Month.Year, rec_Month.Month, 1);
            DateTime lastDay  = new DateTime(rec_Month.AddMonths(1).Year, rec_Month.AddMonths(1).Month, 1).AddDays(-1);

            List <ST_SurplusDay> dataList = mST_SurplusDayDAO.GetDataByDateRange(firstDay, lastDay);

            #region 將資料寫入月報表
            ST_Surplus_Month newData = new ST_Surplus_Month();

            newData.rec_month = rec_Month;

            newData.work_days = dataList.Count;

            /*計算月收入累計&月支出累計前要先依照日期排序*/
            dataList = dataList.OrderBy(o => o.rec_date).ToList();

            /*計算累計支出*/
            newData.expenditure_month = GetExpenditure_Month(dataList);

            /*計算累計收入*/
            newData.turnover_month = GetTurnover_Month(dataList);

            /*計算累計盈餘*/
            newData.surplus_month = newData.turnover_month - newData.expenditure_month;

            /*計算飯桶數*/
            newData.rice_month = GetRice_month(dataList);

            /*計算羹桶數*/
            newData.soup_month = GetSoup_month(dataList);

            /*計算魚數量*/
            newData.fish_month = GetFish_month(dataList);

            /*計算早班850cc數量*/
            newData.month_850_am = GetMonth_850(dataList, "am");

            /*計算晚班850cc數量*/
            newData.month_850_pm = GetMonth_850(dataList, "pm");

            /*計算早班700cc數量*/
            newData.month_700_am = GetMonth_700(dataList, "am");

            /*計算晚班700cc數量*/
            newData.month_700_pm = GetMonth_700(dataList, "pm");

            /*計算早班點心盒數量*/
            newData.month_meal_am = GetMonth_Meal(dataList, "am");

            /*計算晚班點心盒數量*/
            newData.month_meal_pm = GetMonth_Meal(dataList, "pm");

            /*計算早班便當盒數量*/
            newData.month_box_am = GetMonth_Box(dataList, "am");

            /*計算晚班便當盒數量*/
            newData.month_box_pm = GetMonth_Box(dataList, "pm");

            /*計算早班內用大大碗*/
            newData.month_inner_xl_am = GetInner_XL(dataList, "am");

            /*計算晚班內用大大碗*/
            newData.month_inner_xl_pm = GetInner_XL(dataList, "pm");

            /*計算早班內用大碗*/
            newData.month_inner_l_am = GetInner_L(dataList, "am");

            /*計算晚班內用大碗*/
            newData.month_inner_l_pm = GetInner_L(dataList, "pm");

            /*計算早班內用小碗*/
            newData.month_inner_s_am = GetInner_S(dataList, "am");

            /*計算晚班內用小碗*/
            newData.month_inner_s_pm = GetInner_S(dataList, "pm");

            /*計算支出食材費用*/
            newData.food_month = GetPurchase_Month(firstDay, lastDay, "食材");

            /*計算支出耗材費用*/
            newData.supplie_month = GetPurchase_Month(firstDay, lastDay, "耗材");

            /*計算支出其他費用*/
            newData.other_month = GetPurchase_Month(firstDay, lastDay, "其他");
            #endregion

            int month_other = newData.other_month;

            return(newData);
        }
        public JsonResult Draw(string selMonth, string method)
        {
            /*取得查看的年月份&要畫的圖表 =>使用引數*/
            //string selMonth

            List <int> rslt = new List <int>();

            if (selMonth != "---查看月份---")
            {
                string year  = selMonth.Substring(0, 4);
                string month = selMonth.Substring(5, 2);

                string rec_Month = year + "-" + month + "-01";

                DateTime recMonth = DateTime.Parse(rec_Month);

                ST_Surplus_Month currData = mST_SurplusMonthDAO.FetchByMonth(recMonth);

                switch (method)
                {
                case "支出比重":
                    List <int> expenditure_List = new List <int>();

                    /*食材*/
                    rslt.Add(currData.food_month);

                    /*耗材*/
                    rslt.Add(currData.supplie_month);

                    /*其他*/
                    rslt.Add(currData.other_month);
                    break;

                case "日收入與支出":
                    #region 取得整月每天的資料
                    DateTime firstDay = new DateTime(recMonth.Year, recMonth.Month, 1);
                    DateTime lastDay  = new DateTime(recMonth.AddMonths(1).Year, recMonth.AddMonths(1).Month, 1).AddDays(-1);

                    List <ST_SurplusDay> day_List = mST_SurplusDayDAO.GetDataByDateRange(firstDay, lastDay);

                    #region 計算每日支出
                    foreach (ST_SurplusDay data in day_List)
                    {
                        List <ST_Purchase> purrchase_List = mST_PurcahseDAO.GetDataByDate(data.rec_date);

                        data.expenditure = 0;

                        foreach (ST_Purchase currPurchase in purrchase_List)
                        {
                            data.expenditure += currPurchase.purchase_price;
                        }
                    }
                    #endregion
                    #endregion
                    return(Json(day_List, JsonRequestBehavior.AllowGet));
                }
            }


            return(Json(rslt, JsonRequestBehavior.AllowGet));
        }