public ActionResult GetImageByte(int id)
        {
            tRestaurant imgRestaurant = db.tRestaurant.Find(id);

            byte[] img = imgRestaurant.fRe_Image;
            return(File(img, "image/jpeg"));
        }
        //POST修改
        public ActionResult editordetailB(string rd2, HttpPostedFileBase updateImg, tRestaurant introduction)
        {
            tRestaurant newRestaurant = db.tRestaurant.Find(Convert.ToInt32(Request.Form["RestaurantID"]));

            newRestaurant.fRe_Name = Request.Form["RestaurantName"];
            newRestaurant.fR_Price = Convert.ToDecimal(Request.Form["RestaurantPrice"]);
            newRestaurant.fRe_Tel  = Request.Form["RestaurantTel"];
            if (rd2 == "Yes")
            {
                newRestaurant.fRe_Delivery = true;
            }
            else
            {
                newRestaurant.fRe_Delivery = false;
            }
            newRestaurant.fRe_Content      = Request.Form["RestaurantContent"];
            newRestaurant.fRe_Addr         = Request.Form["RestaurantAddr"];
            newRestaurant.fRe_introduction = introduction.fRe_introduction;
            //修改相片
            if (updateImg != null && updateImg.ContentLength > 0)
            {
                var    imgSize = updateImg.ContentLength;
                byte[] imgByte = new byte[imgSize];
                updateImg.InputStream.Read(imgByte, 0, imgSize);
                newRestaurant.fRe_Image = imgByte;
            }
            string account = Request.Cookies["account"].Value;
            int    id      = db.tEmployee.Where(e => e.fEp_Code == account).Single().fEp_ID;

            newRestaurant.fEp_ID = id;

            //修改座標
            var requestUri = string.Format("http://maps.googleapis.com/maps/api/geocode/xml?address={0}", Uri.EscapeDataString(Request.Form["RestaurantAddr"]));
            var request    = WebRequest.Create(requestUri);
            var response   = request.GetResponse();
            var xdoc       = XDocument.Load(response.GetResponseStream());

            var result          = xdoc.Element("GeocodeResponse").Element("result");
            var locationElement = result.Element("geometry").Element("location");
            var lat             = locationElement.Element("lat");
            var lng             = locationElement.Element("lng");

            double latitude = Double.Parse(lat.Value);
            double lngitude = Double.Parse(lng.Value);

            newRestaurant.fRe_site = String.Format("{0},{1}", Convert.ToString(latitude), Convert.ToString(lngitude));


            db.Entry(newRestaurant).State = System.Data.Entity.EntityState.Modified;
            db.SaveChanges();

            return(RedirectToAction("editorRestaurant"));
        }
        public ActionResult AddRestaurant(tRestaurant restaurant, HttpPostedFileBase RestaurantImg, List <string> chkfoodclass, string rd1, int fEp_ID = 2)
        {
            if (ModelState.IsValid)
            {
                if (RestaurantImg != null && RestaurantImg.ContentLength > 0)
                {
                    //先在messageCode建立一個流水號
                    tMessageCode newCode = new tMessageCode();
                    db.tMessageCode.Add(newCode);
                    db.SaveChanges();

                    restaurant.fMC_ID = db.tMessageCode.ToList().Last().fMC_ID;
                    //將上傳的圖轉成二進位

                    var    imgSize = RestaurantImg.ContentLength;
                    byte[] imgByte = new byte[imgSize];
                    RestaurantImg.InputStream.Read(imgByte, 0, imgSize);
                    restaurant.fRe_Image = imgByte;

                    //將tRe_site地址轉座標
                    var requestUri = string.Format("http://maps.googleapis.com/maps/api/geocode/xml?address={0}", Uri.EscapeDataString(restaurant.fRe_Addr));
                    var request    = WebRequest.Create(requestUri);
                    var response   = request.GetResponse();
                    var xdoc       = XDocument.Load(response.GetResponseStream());

                    var result          = xdoc.Element("GeocodeResponse").Element("result");
                    var locationElement = result.Element("geometry").Element("location");
                    var lat             = locationElement.Element("lat");
                    var lng             = locationElement.Element("lng");

                    double latitude = Double.Parse(lat.Value);
                    double lngitude = Double.Parse(lng.Value);
                    restaurant.fRe_site = String.Format("{0},{1}", Convert.ToString(latitude), Convert.ToString(lngitude));

                    //後來要看使用者是誰 先給EPID預設值2
                    restaurant.fEp_ID = fEp_ID;

                    if (rd1 == "Yes")
                    {
                        restaurant.fRe_Delivery = true;
                    }
                    else
                    {
                        restaurant.fRe_Delivery = false;
                    }

                    db.tRestaurant.Add(restaurant);
                    db.SaveChanges();

                    //meal篩選
                    tMealClass newMealC = new tMealClass();

                    int RestaurantLastID = db.tRestaurant.AsEnumerable().Last().fRe_ID;

                    foreach (string mealidnum in chkfoodclass)
                    {
                        newMealC.fML_ID = Convert.ToInt32(mealidnum);
                        newMealC.fRe_ID = RestaurantLastID;
                        db.tMealClass.Add(newMealC);
                        db.SaveChanges();
                    }


                    return(RedirectToAction("Index", "FoodHome"));
                }
                else
                {
                    ViewBag.message = "請選擇圖檔!!";
                }
            }
            ViewBag.datas = db.tRestaurant.ToList();
            return(RedirectToAction("Index", "FoodHome"));
        }
        public ActionResult RestaurantSelect(int[] id, string distancemap, string price)
        {
            List <tRestaurant> newRestaurant = new List <tRestaurant>();
            List <tMealClass>  newR          = db.tMealClass.ToList();

            int maxPrice = (int)db.tRestaurant.Select(p => p.fR_Price).Max();

            //id 距離 價錢皆無
            if ((id == null) && (distancemap == "" || distancemap == null) && (price == null || price == ("0~" + maxPrice.ToString())))
            {
                return(PartialView(db.tRestaurant.ToList()));
            }
            if ((id == null) && (distancemap == "" || distancemap == null) && (price != null))
            {
                newRestaurant = db.tRestaurant.ToList();
                List <tRestaurant> allneedtoRemoverestaurant = new List <tRestaurant>();
                string[]           splitPrice = price.Split('~');

                foreach (tRestaurant r in newRestaurant)
                {
                    if (Convert.ToInt32(r.fR_Price) < Convert.ToInt32(splitPrice[0]) || (Convert.ToInt32(r.fR_Price) > Convert.ToInt32(splitPrice[1])))
                    {
                        allneedtoRemoverestaurant.Add(r);
                    }
                }
                foreach (tRestaurant rr in allneedtoRemoverestaurant)
                {
                    newRestaurant.Remove(rr);
                }
                return(PartialView(newRestaurant));
            }

            //id無 距離有
            if ((id == null) && (distancemap != "" || distancemap != null))
            {
                if (id == null)
                {
                    newRestaurant = db.tRestaurant.ToList();
                }

                List <tRestaurant> allneedtoRemoverestaurant = new List <tRestaurant>();
                foreach (string site in newRestaurant.Select(r => r.fRe_site))
                {
                    List <string[]> xy = new List <string[]>();
                    xy.Add(site.Split(','));
                    double aa = Convert.ToDouble(xy[0][0].ToString());
                    double bb = Convert.ToDouble(xy[0][1].ToString());
                    if (distance(aa, bb, distancemap))
                    {
                    }
                    else
                    {
                        tRestaurant r = new tRestaurant();
                        r = newRestaurant.Where(d => d.fRe_site == site).Single();
                        allneedtoRemoverestaurant.Add(r);
                    }
                }

                foreach (tRestaurant rr in allneedtoRemoverestaurant)
                {
                    newRestaurant.Remove(rr);
                }

                allneedtoRemoverestaurant = new List <tRestaurant>();

                string[] splitPrice = price.Split('~');

                foreach (tRestaurant r in newRestaurant)
                {
                    if (Convert.ToInt32(r.fR_Price) < Convert.ToInt32(splitPrice[0]) || (Convert.ToInt32(r.fR_Price) > Convert.ToInt32(splitPrice[1])))
                    {
                        allneedtoRemoverestaurant.Add(r);
                    }
                }
                foreach (tRestaurant rr in allneedtoRemoverestaurant)
                {
                    newRestaurant.Remove(rr);
                }

                return(PartialView(newRestaurant));
            }
            //id有 距離無
            else if (id != null && distancemap == "" || distancemap == null)
            {
                foreach (int number in id)
                {
                    List <int> mcnum = new List <int>();
                    mcnum.AddRange(newR.Where(mc => mc.fML_ID == number).Select(mc => mc.fRe_ID));    //找出符合MealListID的REID

                    List <tMealClass> newM = new List <tMealClass>();

                    foreach (int a in mcnum)
                    {
                        newM.AddRange(newR.Where(mc => mc.fRe_ID == a));
                    }
                    newR = newM;
                }
                foreach (int newRnum in newR.Select(a => a.fRe_ID).Distinct())
                {
                    newRestaurant.Add(db.tRestaurant.Where(r => r.fRe_ID == newRnum).Single());
                }

                List <tRestaurant> allneedtoRemoverestaurant = new List <tRestaurant>();
                string[]           splitPrice = price.Split('~');

                foreach (tRestaurant r in newRestaurant)
                {
                    if (Convert.ToInt32(r.fR_Price) < Convert.ToInt32(splitPrice[0]) || (Convert.ToInt32(r.fR_Price) > Convert.ToInt32(splitPrice[1])))
                    {
                        allneedtoRemoverestaurant.Add(r);
                    }
                }
                foreach (tRestaurant rr in allneedtoRemoverestaurant)
                {
                    newRestaurant.Remove(rr);
                }


                return(PartialView(newRestaurant));
            }
            //id有 距離有
            else if (Convert.ToDouble(distancemap) > 0)
            {
                if (id == null)
                {
                    return(PartialView(db.tRestaurant.ToList()));
                }

                foreach (int number in id)
                {
                    List <int> mcnum = new List <int>();
                    mcnum.AddRange(newR.Where(mc => mc.fML_ID == number).Select(mc => mc.fRe_ID));    //找出符合MealListID的REID

                    List <tMealClass> newM = new List <tMealClass>();

                    foreach (int a in mcnum)
                    {
                        newM.AddRange(newR.Where(mc => mc.fRe_ID == a));
                    }
                    newR = newM;
                }
                foreach (int newRnum in newR.Select(a => a.fRe_ID).Distinct())
                {
                    newRestaurant.Add(db.tRestaurant.Where(r => r.fRe_ID == newRnum).Single());
                }

                List <tRestaurant> allneedtoRemoverestaurant = new List <tRestaurant>();
                foreach (string site in newRestaurant.Select(r => r.fRe_site))
                {
                    List <string[]> xy = new List <string[]>();
                    xy.Add(site.Split(','));
                    double aa = Convert.ToDouble(xy[0][0].ToString());
                    double bb = Convert.ToDouble(xy[0][1].ToString());
                    if (distance(aa, bb, distancemap))
                    {
                    }
                    else
                    {
                        tRestaurant r = new tRestaurant();
                        r = newRestaurant.Where(d => d.fRe_site == site).Single();
                        allneedtoRemoverestaurant.Add(r);
                    }
                }
                foreach (tRestaurant rr in allneedtoRemoverestaurant)
                {
                    newRestaurant.Remove(rr);
                }
                allneedtoRemoverestaurant = new List <tRestaurant>();
                string[] splitPrice = price.Split('~');
                foreach (tRestaurant r in newRestaurant)
                {
                    if (Convert.ToInt32(r.fR_Price) < Convert.ToInt32(splitPrice[0]) || (Convert.ToInt32(r.fR_Price) > Convert.ToInt32(splitPrice[1])))
                    {
                        allneedtoRemoverestaurant.Add(r);
                    }
                }
                foreach (tRestaurant rr in allneedtoRemoverestaurant)
                {
                    newRestaurant.Remove(rr);
                }
                return(PartialView(newRestaurant));
            }
            return(PartialView(db.tRestaurant.ToList()));
        }