// GET: /Create
        public ActionResult Create(int id)
        {
            //Check Parent Exists
            ReasonCodeGroup reasonCodeGroup = new ReasonCodeGroup();

            reasonCodeGroup = reasonCodeGroupRepository.GetGroup(id);

            //Check Exists
            if (reasonCodeGroup == null)
            {
                ViewData["ActionMethod"] = "CreatePost";
                return(View("RecordDoesNotExistError"));
            }
            //Check Access
            RolesRepository rolesRepository = new RolesRepository();

            if (!rolesRepository.HasWriteAccessToReasonCodeGroup(id))
            {
                ViewData["Message"] = "You do not have access to this item";
                return(View("Error"));
            }

            ReasonCodeProductTypeRepository reasonCodeProductTypeRepository = new ReasonCodeProductTypeRepository();
            SelectList reasonCodeList = new SelectList(reasonCodeProductTypeRepository.GetAllReasonCodeProductTypes().ToList(), "ReasonCodeValue", "ReasonCodeValue");

            ViewData["ReasonCodes"] = reasonCodeList;

            ReasonCodeItem reasonCodeItem = new ReasonCodeItem();

            reasonCodeItem.ReasonCodeGroupName = reasonCodeGroup.ReasonCodeGroupName;
            reasonCodeItem.ReasonCodeGroupId   = id;
            reasonCodeItem.TravelerFacingFlag  = true;

            return(View(reasonCodeItem));
        }
        public JsonResult IsValidReasonCodeProductType(string reasonCode, int?productId, int?reasonCodeTypeId)
        {
            ReasonCodeProductTypeRepository reasonCodeProductTypeRepository = new ReasonCodeProductTypeRepository();
            var result = reasonCodeProductTypeRepository.GetReasonCodeProductType(reasonCode, productId, reasonCodeTypeId);

            return(Json(result));
        }
        public JsonResult GetReasonCodeProducts(string reasonCode)
        {
            ReasonCodeProductTypeRepository reasonCodeProductTypeRepository = new ReasonCodeProductTypeRepository();
            var result = reasonCodeProductTypeRepository.LookUpReasonCodeProducts(reasonCode);

            return(Json(result));
        }
        public JsonResult GetReasonCodeProductReasonCodeTypes(int?reasonCodeId, int groupId, string reasonCode, int productId)
        {
            ReasonCodeProductTypeRepository reasonCodeProductTypeRepository = new ReasonCodeProductTypeRepository();
            var result = reasonCodeProductTypeRepository.LookUpAvailableReasonCodeProductReasonCodeTypes(reasonCodeId, groupId, reasonCode, productId);

            return(Json(result));
        }
        // GET: /Edit
        public ActionResult Edit(int id)
        {
            //Get Item
            ReasonCodeItem reasonCodeItem = new ReasonCodeItem();

            reasonCodeItem = reasonCodeItemRepository.GetItem(id);

            //Check Exists
            if (reasonCodeItem == null)
            {
                ViewData["ActionMethod"] = "EditGet";
                return(View("RecordDoesNotExistError"));
            }

            //Check AccessRights
            RolesRepository rolesRepository = new RolesRepository();

            if (!rolesRepository.HasWriteAccessToReasonCodeGroup(reasonCodeItem.ReasonCodeGroupId))
            {
                ViewData["Message"] = "You do not have access to this item";
                return(View("Error"));
            }

            ReasonCodeProductTypeRepository reasonCodeProductTypeRepository = new ReasonCodeProductTypeRepository();
            SelectList reasonCodeList = new SelectList(reasonCodeProductTypeRepository.GetAllReasonCodeProductTypes().ToList(), "ReasonCodeValue", "ReasonCodeValue");

            ViewData["ReasonCodes"] = reasonCodeList;

            SelectList productList = new SelectList(reasonCodeProductTypeRepository.LookUpReasonCodeProducts(reasonCodeItem.ReasonCode).ToList(), "ProductId", "ProductName");

            ViewData["Products"] = productList;

            SelectList reasonCodeTypeList = new SelectList(reasonCodeProductTypeRepository.LookUpAvailableReasonCodeProductReasonCodeTypes(
                                                               reasonCodeItem.ReasonCodeItemId,
                                                               reasonCodeItem.ReasonCodeGroupId,
                                                               reasonCodeItem.ReasonCode,
                                                               reasonCodeItem.ProductId).ToList(), "ReasonCodeTypeId", "ReasonCodeTypeDescription");

            ViewData["ReasonCodeTypes"] = reasonCodeTypeList;

            //Parent Information
            reasonCodeItemRepository.EditItemForDisplay(reasonCodeItem);
            ViewData["ReasonCodeItem"]      = reasonCodeItem.ReasonCode + "/" + reasonCodeItem.ReasonCodeTypeDescription + "/" + reasonCodeItem.ProductName;
            ViewData["ReasonCodeItemId"]    = reasonCodeItem.ReasonCodeItemId;
            ViewData["ReasonCodeGroupId"]   = reasonCodeItem.ReasonCodeGroupId;
            ViewData["ReasonCodeGroupName"] = reasonCodeGroupRepository.GetGroup(reasonCodeItem.ReasonCodeGroupId).ReasonCodeGroupName;

            reasonCodeItemRepository.EditItemForDisplay(reasonCodeItem);
            return(View(reasonCodeItem));
        }