//報名頁面
        public ActionResult Sign_up(int id)
        {
            string    Ep_Code = Request.Cookies["account"].Value;
            tEmployee Ep      = db.tEmployee.Where(a => a.fEp_Code == Ep_Code).Single();

            if (db.tRegistrationDetail.Where(a => a.fEp_ID == Ep.fEp_ID && a.fSt_ID != 5).ToList().Select(a => a.tTravelCase.tDayTravel.Last().fDT_Date.Year).Where(a => a == DateTime.Now.Year).Any())
            {
                return(RedirectToAction("CaseDetail", "TraveCase", new { area = "EmployeeTrave", id = id, had = true }));
            }

            tTravelCase TC = db.tTravelCase.Find(id);

            int grantyear = 4500;
            int gotday    = (((DateTime.Now) - (db.tEmployee.Where(a => a.fEp_ID == Ep.fEp_ID).Single().fEp_Seniority)).Days);
            int grant     = gotday > 365 ? grantyear : (gotday / 30 * (grantyear / 12));

            List <tRegistrationDetail> Case1 = db.tRegistrationDetail.Where(a => a.fTC_ID == id).ToList();
            int Sum = 0;

            Sum += Case1.Where(a => a.fSt_ID != 5).Count();
            foreach (int rdID in Case1.Where(a => a.fSt_ID != 5).Select(a => a.fRD_ID))
            {
                Sum += db.tFamily.Where(a => a.fRD_ID == rdID && a.fFa_Car == true).Count();
                Sum += db.tDependentsTravel.Where(a => a.fRD_ID == rdID && a.fDT_Car == true).Count();
            }

            ViewBag.SumNow     = Sum;
            ViewBag.RD_Grant   = grant;
            ViewBag.Ep_De      = db.tDependents.Where(a => a.fEp_ID == Ep.fEp_ID).ToList();
            ViewBag.Employee   = Ep;
            ViewBag.TravelCase = TC;


            return(View());
        }
        //讀取二進為圖檔
        public ActionResult GetImage(int id)
        {
            tTravelCase photo = db.tTravelCase.Find(id);

            byte[] file = photo.fTC_Picture;

            return(File(file, "image/jpeg"));
        }
        //出團
        public ActionResult GOGO(int id)
        {
            tTravelCase GO = db.tTravelCase.Find(id);

            GO.fTC_LorD        = db.tTravelCase.Where(a => a.fTC_LorD > 0).Count() + 1;
            db.Entry(GO).State = System.Data.Entity.EntityState.Modified;
            db.SaveChanges();
            return(new EmptyResult());
        }
        //流團
        public ActionResult GameOver(int id)
        {
            tTravelCase Over = db.tTravelCase.Find(id);

            Over.fTC_LorD        = -1;
            db.Entry(Over).State = System.Data.Entity.EntityState.Modified;
            db.SaveChanges();
            return(new EmptyResult());
        }
        public ActionResult CreateCase()
        {
            tTravelCase newtrave = new tTravelCase();

            newtrave.fTC_Title   = "新方案";
            newtrave.fTC_Top     = 0;
            newtrave.fTC_Gate    = 0;
            newtrave.fTC_Cost    = 0;
            newtrave.fTC_TDate   = "(無行程)";
            newtrave.fTC_Content = "";
            newtrave.fTC_Notes   = "";
            newtrave.fTC_LorD    = 0;
            newtrave.fCC_ID      = 2;
            newtrave.fTC_PerL    = 2;
            newtrave.fTC_Car     = 0;
            newtrave.fTC_Eat     = 0;
            newtrave.fTC_hotel   = 0;
            db.tTravelCase.Add(newtrave);
            db.SaveChanges();
            return(new EmptyResult());
        }
        public ActionResult TravelEditEnd(tTravelCase TCback, HttpPostedFileBase Image)
        {
            int TC_ID = TCback.fTC_ID;

            if (ModelState.IsValid)
            {
                if (Image != null && Image.ContentLength > 0)
                {
                    //將上傳的圖轉成二進位
                    var    imgSize = Image.ContentLength;
                    byte[] imgByte = new byte[imgSize];
                    Image.InputStream.Read(imgByte, 0, imgSize);
                    TCback.fTC_Picture = imgByte;
                }

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

            return(RedirectToAction("TravelEdit", "TraveCase", new { area = "EmployeeTrave", id = TC_ID }));
        }
        //旅遊詳細
        public ActionResult CaseDetail(int id, bool had = false)
        {
            ViewBag.had = had;
            tTravelCase Status = db.tTravelCase.Find(id);

            if (Status.fTC_LorD != 0 | !Status.tRegistrationOpen.Any())
            {
                ViewBag.end = true;
            }
            else
            {
                if (Status.tRegistrationOpen.OrderByDescending(a => a.fRO_ID).First().fRO_CDate < DateTime.Now)
                {
                    ViewBag.end = true;
                }
                else
                {
                    ViewBag.end = false;
                }
            }


            return(View(db.tTravelCase.Find(id)));
        }
        public ActionResult DeleteCase(int id)
        {
            foreach (tRegistrationDetail ep in db.tRegistrationDetail.Where(a => a.fTC_ID == id))
            {
                int RD_ID = ep.fRD_ID;
                foreach (tFamily fa in db.tFamily.Where(a => a.fRD_ID == RD_ID))
                {
                    db.tFamily.Remove(fa);
                }
                foreach (tDependentsTravel dt in db.tDependentsTravel.Where(a => a.fRD_ID == RD_ID))
                {
                    db.tDependentsTravel.Remove(dt);
                }
                db.SaveChanges();
                db.tRegistrationDetail.Remove(ep);
            }
            foreach (tDayTravel DT in db.tDayTravel.Where(a => a.fTC_ID == id))
            {
                db.tDayTravel.Remove(DT);
            }
            foreach (tRegistrationOpen RO in db.tRegistrationOpen.Where(a => a.fTC_ID == id))
            {
                db.tRegistrationOpen.Remove(RO);
            }
            foreach (tPenalty Pe in db.tPenalty.Where(a => a.fTC_ID == id))
            {
                db.tPenalty.Remove(Pe);
            }
            db.SaveChanges();

            tTravelCase delete = db.tTravelCase.Find(id);

            db.tTravelCase.Remove(delete);
            db.SaveChanges();
            return(new EmptyResult());
        }
        public ActionResult SignSave(tTravelCase TraveCase)
        {
            int TC_ID = TraveCase.fTC_ID;

            return(RedirectToAction("SignStatus", "TraveCase", new { area = "EmployeeTrave", id = TC_ID }));
        }