public async Task <IActionResult> OptionDetailCreate(bool isPop, OptionMasterDetail optionmasterDetail)
        {
            if (!CheckSystemUserAsync())
            {
                return(RedirectToAction("Error", "Home", new { errormessage = "UserauthError" }));
            }

            if (ModelState.IsValid)
            {
                optionmasterDetail.Createdate = DateTime.Now;
                optionmasterDetail.Createuser = HttpContext.Session.GetString("userId");
                optionmasterDetail.Modifydate = DateTime.Now;
                optionmasterDetail.Modifyuser = HttpContext.Session.GetString("userId");

                optionmasterDetail.Optionid = optionmasterDetail.Masterid + "-" + (_context.OptionMasterDetail.Where(x => x.Masterid == optionmasterDetail.Masterid).Count() + 1);

                _context.Add(optionmasterDetail);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Close", "Home"));
            }
            ViewBag.isPop = isPop;
            return(View(optionmasterDetail));
        }
        /// <summary>
        /// 옵션 세부 내용 삭제
        /// </summary>
        /// <param name="Masterid"></param>
        /// <param name="IsPop"></param>
        /// <param name="optionMaster"></param>
        /// <returns></returns>
        public async Task <IActionResult> OptiondetailDelete(string Optionid, bool IsPop, OptionMasterDetail optionmasterDetail)
        {
            if (!CheckSystemUserAsync())
            {
                return(RedirectToAction("Error", "Home", new { errormessage = "UserauthError" }));
            }

            var ss = _context.OptionMasterDetail.SingleOrDefault(m => m.Optionid == Optionid);

            _context.OptionMasterDetail.Remove(ss);

            await _context.SaveChangesAsync();

            return(RedirectToAction("Close", "Home"));
        }
        public async Task <IActionResult> OptionDetailEdit(string Optionid, bool IsPop, OptionMasterDetail optionmasterDetail)
        {
            if (!CheckSystemUserAsync())
            {
                return(RedirectToAction("Error", "Home", new { errormessage = "UserauthError" }));
            }

            if (Optionid != optionmasterDetail.Optionid)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    optionmasterDetail.Modifydate = DateTime.Now;
                    optionmasterDetail.Modifyuser = HttpContext.Session.GetString("userId");

                    // 세부 옵션
                    var sub
                        = _context.OptionMasterDetail
                          .AsNoTracking()
                          .Where(x => x.Masterid == optionmasterDetail.Masterid);

                    // 기존 순서
                    long oldOrder = sub.SingleOrDefault(x => x.Optionid == optionmasterDetail.Optionid).Order;

                    // 기존 순서 존재 시
                    if (sub.Any(e => e.Order == optionmasterDetail.Order) && oldOrder != optionmasterDetail.Order)
                    {
                        // 수정하고 있는 세부메뉴창에서 입력한 Order가 이미 존재한다면 교체
                        OptionMasterDetail exist = sub.SingleOrDefault(x => x.Order == optionmasterDetail.Order);
                        exist.Order = oldOrder;     // 기존 순서를 새로 입력한 Order로 교체
                        _context.Update(exist);     // 기존 순서를 업데이트
                        _context.Update(optionmasterDetail);
                        await _context.SaveChangesAsync();
                    }
                    else
                    {
                        // 존재하지 않으면 넣은 값으로 그대로 업데이트
                        if (optionmasterDetail.Order > sub.Count())
                        {
                            optionmasterDetail.Order = sub.Count() + 1;
                        }

                        _context.Update(optionmasterDetail);
                        await _context.SaveChangesAsync();
                    }
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!OptionDetailExists(optionmasterDetail.Optionid))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction("Close", "Home"));
            }

            ViewBag.isPop = true;
            return(View(optionmasterDetail));
        }