public ActionResult Edit(int structureId, string documentData, string documentName) { // update or create document // get review doc _document = _documentRepository.LoadDocumentByStructure(structureId, _document.StatusToString(Status.Review)); // no review doc so get live if (_document == null) _document = _documentRepository.LoadDocumentByStructure(structureId); if (_document == null) { // no live or review doc, create a new one _document = new Document { DocumentData = documentData, DocumentName = documentName, Status = Status.Review}; _document = _document.Add(_document); } else { Document newDocument = new Document { DocumentID = null, DocumentRootID = _document.DocumentRootID, DocumentData = documentData, DocumentName = documentName, Status = Status.Review }; _document = _document.Update(newDocument); } // update structure Structure structure = _structureRepository.LoadStructure(structureId); structure.StructureDocumentID = _document.DocumentRootID; _structureRepository.UpdateStructure(structure); return RedirectToAction("Index", new { StructureID = structureId }); }