/////////////////////////////////////////////////////////Trend Report
        public async Task <ActionResult> View_Trend_Analysis_Detail(int itemId, int?depId)
        {
            List <orders> listorders = new List <orders>();

            listorders = OrdersData.GetAllDeliveredOrders();

            int           dId         = depId ?? 0;
            List <orders> listorders1 = new List <orders>();

            if (dId != 0)
            {
                listorders1    = listorders.Where(x => x.staff_obj.department_obj.departmentId == dId).ToList();
                ViewBag.depart = DepartmentData.GetDepartmentById(dId);
            }
            else
            {
                listorders1 = listorders;
            }


            Dictionary <string, int> itemsbtrend = new Dictionary <string, int>();
            Dictionary <string, int> itemtrend   = new Dictionary <string, int>();



            Dictionary <int, Dictionary <string, int> > trendlist = (Dictionary <int, Dictionary <string, int> >)Session["trendlist"];
            item          item    = ItemData.GetItemById(itemId); // get the item by given itemId
            List <string> monlist = new List <string>();


            for (int i = 11; i >= 0; i--)
            {
                //string dt = string.Format("{0}/{1}", DateTime.Today.AddMonths(-i).Month, DateTime.Today.AddMonths(-i).Year);
                string dt = DateTime.Today.AddMonths(-i).ToString("MM/yyyy");
                monlist.Add(dt);//list of last 12 months
                /////////////////////////////////////////////////////////////////////////
                //Get stockbalance on given month, put in dictionary "itemsbtrend", key is month string, value is stockbalance of the month.
                //////////////////////////////////////////////////////////////////

                char[] separator = { '/', ' ' };



                List <stock_card> list = StockcardData.GetStockCardByItemId(itemId);//give proper value here.


                List <stock_card> mlist = list.Where(x => x.Arrival_Date.Split(separator)[0].Equals(dt.Split(separator)[0]) && x.Arrival_Date.Split(separator)[2].Equals(dt.Split(separator)[1])).ToList();
                int stockbalance        = mlist[mlist.Count - 1].stockbalance;
                itemsbtrend.Add(dt, stockbalance);
            }

            int[] cons = trendlist[itemId].Values.ToArray();


            foreach (string m in monlist)
            {
                char[]   separator   = { '/', ' ' };
                string[] dtmonthyear = m.Split(separator);
                //Get monthly consumption quant on given month
                int consumedquant = listorders1.Where(x => x.delivered_order_date.Split(separator)[0].Equals(dtmonthyear[0]) && x.delivered_order_date.Split(separator)[2].Equals(dtmonthyear[1])).Select(x => x.actual_received_quantity_by_representative).Sum();//Get correct value here
                itemtrend.Add(m, consumedquant);
            }


            // send request and get response from python server
            int[] prelist  = new int[4];
            int[] paralist = new int[13];
            paralist[0] = itemId;
            for (int i = 1; i < 13; i++)
            {
                paralist[i] = cons[i - 1];
            }
            string conshist = string.Join(", ", paralist);


            using (var client = new HttpClient())
            {
                string xValue = conshist;


                // send a GET request to the server uri with the data and get the response as HttpResponseMessage object
                HttpResponseMessage res = await client.GetAsync("http://127.0.0.1:5000/model1?x=" + xValue);

                // Return the result from the server if the status code is 200 (everything is OK)
                // should raise exception or error if it's not
                if (res.IsSuccessStatusCode)
                {
                    // pass the result to update the user preference
                    // have to read as string for the data in response.body
                    //pre = Convert.ToInt32(res.Content.ReadAsStringAsync().Result); //if only display one month prediction.
                    string arr = res.Content.ReadAsStringAsync().Result;
                    prelist = arr.Split(',').Select(str => int.Parse(str)).ToArray();
                }
                else
                {
                    prelist = new int[4] {
                        0, 0, 0, 0
                    }
                };
            }

            items_warehouse iwh = ItemWarehouseData.FindByItemId(itemId);

            ViewBag.departList    = DepartmentData.GetAllDep();
            ViewBag.cons          = itemtrend.Values.ToArray();
            ViewBag.months        = monlist.ToArray();
            ViewBag.Item          = item;
            ViewBag.sbalance      = itemsbtrend.Values.ToArray();
            ViewBag.prediction    = prelist;
            ViewBag.itemwarehouse = iwh;
            return(View());
        }
        public ActionResult View_Trend_Analysis(string searchStr, int?page, int?depId)
        {
            Dictionary <int, Dictionary <string, int> > trendlist = new Dictionary <int, Dictionary <string, int> >();


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

            for (int i = 11; i >= 0; i--)
            {
                //string dt = string.Format("{0}/{1}", DateTime.Today.AddMonths(-i).Month, DateTime.Today.AddMonths(-i).Year);
                string dt = DateTime.Today.AddMonths(-i).ToString("MM/yyyy");
                monlist.Add(dt);
            }


            List <item> listitem   = ItemData.FindAll(); //get all items
            List <item> resultlist = new List <item>();



            IPagedList <item> resultlist1;
            bool match = false;

            if (searchStr == null || searchStr == "")
            {
                searchStr   = "";
                resultlist1 = listitem.ToPagedList(page ?? 1, 7);
            }
            else
            {
                foreach (item Pro in listitem)
                {
                    bool fit = false;
                    if (Search.Found(Pro.item_description, searchStr).fit)
                    {
                        fit = true;
                        Pro.item_description = Search.Found(Pro.item_description, searchStr).str;
                    }

                    if (fit)
                    {
                        match = true; resultlist.Add(Pro);
                    }
                }
                resultlist1 = resultlist.ToPagedList(page ?? 1, 7);
            }

            ViewBag.listitem = resultlist1;

            ViewData["searchStr"] = searchStr;
            ViewData["match"]     = match;

            /////////////////////////////////////////////////////////////



            /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //get the consumed quant of last 12 months in searched list, put in a dictionary, key is month, value is quant.
            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            List <orders> listorders = new List <orders>();

            listorders = OrdersData.GetAllDeliveredOrders();

            int           dId         = depId ?? 0;
            List <orders> listorders1 = new List <orders>();

            if (dId != 0)
            {
                listorders1    = listorders.Where(x => x.staff_obj.department_obj.departmentId == dId).ToList();
                ViewBag.depart = DepartmentData.GetDepartmentById(dId);
            }
            else
            {
                listorders1 = listorders;
            }

            foreach (item item in resultlist1)
            {
                Dictionary <string, int> itemsbtrend = new Dictionary <string, int>();
                Dictionary <string, int> itemtrend   = new Dictionary <string, int>();

                foreach (string m in monlist)
                {
                    char[]   separator   = { '/', ' ' };
                    string[] dtmonthyear = m.Split(separator);
                    //Get monthly consumption quant on given month
                    int consumedquant = listorders1.Where(x => x.delivered_order_date.Split(separator)[0].Equals(dtmonthyear[0]) && x.delivered_order_date.Split(separator)[2].Equals(dtmonthyear[1])).Select(x => x.actual_received_quantity_by_representative).Sum();//Get correct value here
                    itemtrend.Add(m, consumedquant);
                }
                trendlist.Add(item.itemId, itemtrend);
            }


            ViewBag.departList   = DepartmentData.GetAllDep();
            ViewBag.trendlist    = trendlist;
            ViewBag.monthslist   = monlist;
            Session["trendlist"] = trendlist;

            return(View());
        }