public ActionResult Sample11() { // Check is data posted if (Request.HttpMethod == "POST") { //### Set variables and get POST data System.Collections.Hashtable result = new System.Collections.Hashtable(); String clientId = Request.Form["clientId"]; String privateKey = Request.Form["privateKey"]; String basePath = Request.Form["basePath"]; String fileId = Request.Form["fileId"]; String url = Request.Form["url"]; var file = Request.Files["file"]; String fileGuId = ""; String annotationType = Request.Form["annotationType"]; String boxX = Request.Form["boxX"]; String boxY = Request.Form["boxY"]; String boxWidth = Request.Form["boxWidth"]; String boxHeight = Request.Form["boxHeight"]; String annotationPositionX = Request.Form["annotationPositionX"]; String annotationPositionY = Request.Form["annotationPositionY"]; String rangePosition = Request.Form["rangePosition"]; String rangeLength = Request.Form["rangeLength"]; String text = Request.Form["text"]; String iframe = ""; // Set entered data to the results list result.Add("clientId", clientId); result.Add("privateKey", privateKey); result.Add("fileId", fileId); result.Add("type", annotationType); String message = null; // Check is all needed fields are entered if (clientId == null || privateKey == null || annotationType == null) { // If not all fields entered send error message message = "Please enter all parameters"; result.Add("error", message); return View("Sample11", null, result); } else { if (basePath == "") { basePath = "https://api.groupdocs.com/v2.0"; } result.Add("basePath", basePath); // Create service for Groupdocs account GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey); //Check is chosen local file if (!file.ContentLength.Equals(0)) { // Upload file with empty description. Groupdocs.Api.Contract.UploadRequestResult upload = service.UploadFile(file.FileName, String.Empty, file.InputStream); // Check is upload successful if (upload.Guid != null) { // Put uploaded file GuId to the result's list fileGuId = upload.Guid; } // If upload was failed return error else { message = "UploadFile returns error"; result.Add("error", message); return View("Sample11", null, result); } } //Check is url entered if (!url.Equals("")) { //Make request to upload file from entered Url String guid = service.UploadUrl(url); if (guid != null) { //Get all files from GroupDocs account Groupdocs.Api.Contract.ListEntitiesResult storageInfo = service.GetFileSystemEntities("My Web Documents", 0, -1, null, false, null, null, true); if (storageInfo.Files.Length > 0) { // Get file id by uploaded file GuId for (int i = 0; i < storageInfo.Files.Length; i++) { if (storageInfo.Files[i].Guid == guid) { fileGuId = storageInfo.Files[i].Guid; } } } else { message = "Get files list is failed"; result.Add("error", message); return View("Sample11", null, result); } } //If file wasn't uploaded return error else { result.Add("error", "Something wrong with entered data"); return View("Sample11", null, result); } } //Check is file guid entered if (!fileId.Equals("")) { //Get all files from GroupDocs account Groupdocs.Api.Contract.ListEntitiesResult storageInfo = service.GetFileSystemEntities("", 0, -1, null, false, null, null, true); if (storageInfo.Files.Length > 0) { // Get file id and name by entered file GuId for (int i = 0; i < storageInfo.Files.Length; i++) { if (storageInfo.Files[i].Guid == fileId) { fileGuId = storageInfo.Files[i].Guid; } } } else { message = "Get files list is failed"; result.Add("error", message); return View("Sample11", null, result); } } //###Create AnnotationType Groupdocs.Common.AnnotationType type = new Groupdocs.Common.AnnotationType(); //Create Rectangle object Groupdocs.Api.Contract.Rectangle rectangle = new Groupdocs.Api.Contract.Rectangle(); //Create Point object Groupdocs.Api.Contract.Data.Point point = new Groupdocs.Api.Contract.Data.Point(); //Create Range object Groupdocs.Api.Contract.Range range = new Groupdocs.Api.Contract.Range(); //Set annotation parameters if annotation type is point if (annotationType == "point") { type = Groupdocs.Common.AnnotationType.Point; rectangle.X = float.Parse(boxX); rectangle.Y = float.Parse(boxY); rectangle.Width = 0; rectangle.Height = 0; point.X = 0; point.Y = 0; } //Set annotation parameters if annotation type is text else if (annotationType == "text") { type = Groupdocs.Common.AnnotationType.Text; point.X = double.Parse(annotationPositionX); point.Y = double.Parse(annotationPositionY); range.Length = Int32.Parse(rangeLength); range.Position = Int32.Parse(rangePosition); } //Set annotation parameters if annotation type is area else { type = Groupdocs.Common.AnnotationType.Area; point.X = 0; point.Y = 0; rectangle.X = float.Parse(boxX); rectangle.Y = float.Parse(boxY); rectangle.Width = float.Parse(boxWidth); rectangle.Height = float.Parse(boxHeight); } //### Make request to Api to create Annotation Groupdocs.Api.Contract.Annotation.CreateAnnotationResult annotation = service.CreateAnnotation(fileGuId, type, rectangle, point, range, null, null); //Check if GuId of document with added annotation is not empty if (annotation.DocumentGuid != "") { // Generate Embed annotation url with entered file id if (basePath.Equals("https://api.groupdocs.com/v2.0")) { iframe = "https://apps.groupdocs.com/document-annotation2/embed/" + annotation.DocumentGuid; } if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0")) { iframe = "https://dev-apps-groupdocs.dynabic.com/document-annotation2/embed/" + annotation.DocumentGuid; } if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0")) { iframe = "https://stage-api-groupdocs.dynabic.com/document-annotation2/embed/" + annotation.DocumentGuid; } if (basePath.Equals("https://realtime-api.groupdocs.com/v2.0")) { iframe = "https://realtime-apps.groupdocs.com/document-annotation2/embed/" + annotation.DocumentGuid; } //Set data for template iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey); result.Add("iframe", iframe); result.Add("guid", annotation.DocumentGuid); return View("Sample11", null, result); } //If GuId is empty return error else { result.Add("error", "Annotation is fail"); return View("Sample11", null, result); } } } // If data not posted return to template for filling of necessary fields else { return View("Sample11"); } }