// GET: /EditSequence
        public ActionResult EditSequence(int groupid, int productId, int?page)
        {
            //Get Group
            OptionalFieldGroup optionalFieldGroup = new OptionalFieldGroup();

            optionalFieldGroup = optionalFieldGroupRepository.GetGroup(groupid);

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

            //Check Access Rights
            RolesRepository rolesRepository = new RolesRepository();

            if (!rolesRepository.HasWriteAccessToOptionalFieldGroup(groupid))
            {
                ViewData["Message"] = "You do not have access to this item";
                return(View("Error"));
            }
            OptionalFieldItemSequenceRepository optionalFieldItemSequenceRepository = new OptionalFieldItemSequenceRepository();
            OptionalFieldRepository             optionalFieldRepository             = new OptionalFieldRepository();

            //Only show products where more than one item is present
            OptionalFieldItemSequencesVM optionalFieldItemSequencesVM = new OptionalFieldItemSequencesVM();

            optionalFieldItemSequencesVM.OptionalFieldItemSequences = optionalFieldItemSequenceRepository.GetOptionalFieldItemSequences(groupid, productId, page ?? 1);
            optionalFieldItemSequencesVM.OptionalFieldGroup         = optionalFieldGroup;
            //optionalFieldItemSequencesVM.OptionalField = optionalFieldRepository.GetItem(id);
            //optionalFieldItemSequencesVM.OptionalFieldId = id;

            ViewData["Page"] = page ?? 1;


            return(View(optionalFieldItemSequencesVM));
        }
        public ActionResult EditSequence(int groupid, int page, FormCollection collection)
        {
            //Get Group
            OptionalFieldGroup optionalFieldGroup = new OptionalFieldGroup();

            optionalFieldGroup = optionalFieldGroupRepository.GetGroup(groupid);

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

            ////Check Exists
            //OptionalField optionalField = new OptionalField();
            //OptionalFieldRepository optionalFieldRepository = new OptionalFieldRepository();
            //optionalField = optionalFieldRepository.GetItem(id);
            //if (optionalField == null)
            //{
            //	ViewData["ActionMethod"] = "EditSequencePost";
            //	return View("RecordDoesNotExistError");
            //}

            //Check Access Rights
            RolesRepository rolesRepository = new RolesRepository();

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

            string[] sequences = collection["Sequence"].Split(new char[] { ',' });

            int sequence = (page - 1 * 5) - 2;

            if (sequence < 0)
            {
                sequence = 1;
            }

            XmlDocument    doc = new XmlDocument();// Create the XML Declaration, and append it to XML document
            XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", null, null);

            doc.AppendChild(dec);
            XmlElement root = doc.CreateElement("SequenceXML");

            doc.AppendChild(root);

            foreach (string s in sequences)
            {
                string[] primaryKey = s.Split(new char[] { '_' });

                int servicingOptionItemId = Convert.ToInt32(primaryKey[0]);
                int versionNumber         = Convert.ToInt32(primaryKey[1]);

                XmlElement xmlItem = doc.CreateElement("Item");
                root.AppendChild(xmlItem);

                XmlElement xmlSequence = doc.CreateElement("Sequence");
                xmlSequence.InnerText = sequence.ToString();
                xmlItem.AppendChild(xmlSequence);

                XmlElement xmlServicingOptionItemId = doc.CreateElement("OptionalFieldItemId");
                xmlServicingOptionItemId.InnerText = servicingOptionItemId.ToString();
                xmlItem.AppendChild(xmlServicingOptionItemId);

                XmlElement xmlVersionNumber = doc.CreateElement("VersionNumber");
                xmlVersionNumber.InnerText = versionNumber.ToString();
                xmlItem.AppendChild(xmlVersionNumber);

                sequence = sequence + 1;
            }

            try
            {
                OptionalFieldItemSequenceRepository optionalFieldItemSequenceRepository = new OptionalFieldItemSequenceRepository();
                optionalFieldItemSequenceRepository.UpdateOptionalFieldItemSequences(System.Xml.Linq.XElement.Parse(doc.OuterXml));
            }
            catch (SqlException ex)
            {
                //Versioning Error
                if (ex.Message == "SQLVersioningError")
                {
                    ViewData["ReturnURL"] = "/servicingOptionItem.mvc/EditSequence?page=" + page + "&groupid=" + groupid;
                    return(View("VersionError"));
                }
                LogRepository logRepository = new LogRepository();
                logRepository.LogError(ex.Message);

                ViewData["Message"] = "There was a problem with your request, please see the log file or contact an administrator for details";
                return(View("Error"));
            }

            return(RedirectToAction("List", new { id = groupid }));
        }