public ActionResult Sample35()
        {
            // 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"];

                // Set entered data to the results list
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);
                String message = null;
                // Check is all needed fields are entered
                if (String.IsNullOrEmpty(clientId) || String.IsNullOrEmpty(privateKey))
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample35", null, result);
                }
                else
                {
                    String basePath = Request.Form["basePath"];
                    //Check is base path entered
                    if (basePath.Equals(""))
                    {
                        //If base path empty set base path to the dev server
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    //Make propper URL for basePath
                    if (!basePath.Substring(basePath.Length - 3, 3).Equals("2.0"))
                    {
                        if (!basePath.Substring(basePath.Length - 1, 1).Equals("/"))
                        {
                            basePath = basePath + "/v2.0";
                        }
                        else
                        {
                            basePath = basePath + "v2.0";
                        }
                    }
                    result.Add("basePath", basePath);
                    // Create service for Groupdocs account
                    GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey);
                    //Check which form is used (if Request.Form["guid"] that meens that this is second form with merge data)
                    if (String.IsNullOrEmpty(Request.Form["guid"]))
                    {
                        //Get data from first form
                        String fileId = Request.Form["guidField"];
                        String url = Request.Form["url"];
                        String fileGuId = "";
                        var file = Request.Files["file"];
                        //if URL to web file was provided - upload the file from Web and get it's GUID
                        if (url != "")
                        {
                            //Make request to upload file from entered Url
                            String guid = service.UploadUrl(url);
                            if (guid != null)
                            {
                                //If file uploaded return his GuId
                                fileGuId = guid;

                            }
                            //If file wasn't uploaded return error
                            else
                            {
                                result.Add("error", "Something wrong with entered data");
                                return View("Sample35", null, result);
                            }
                        }
                        //if file was uploaded locally - upload the file and get it's GUID
                        if (file.FileName != "")
                        {
                            //Upload local file
                            Groupdocs.Api.Contract.UploadRequestResult upload = service.UploadFile(file.FileName, "uploaded", file.InputStream);
                            if (upload.Guid != null)
                            {
                                //If file uploaded return his guid
                                fileGuId = upload.Guid;
                            }
                            else
                            {
                                //If file wasn't uploaded return error
                                result.Add("error", "Something wrong with entered data");
                                return View("Sample35", null, result);
                            }
                        }
                        //If user choose file guid
                        if (!fileId.Equals(""))
                        {
                            //Set file guid as entered by user file guid
                            fileGuId = fileId;
                        }
                        //Get all fields from selected document
                        Groupdocs.Assembly.Contract.TemplateFieldsResult getFields = service.GetTemplateFields(fileGuId);
                        if (getFields.Fields.Length != 0)
                        {
                            //Create support variables and counters
                            String element = "";
                            Int32 countRadio = 0;
                            Int32 countCheckBox = 0;
                            String fieldName = "";
                            Groupdocs.Assembly.Data.TemplateField[] fields = getFields.Fields;
                            //Create second form for entering data for merge
                            for (Int32 i = 0; i < fields.Length; i++)
                            {
                                fieldName = fields[i].Name;
                                if (fields[i].Type == "Text")
                                {
                                    element += "<br /><label for=\"" + fieldName + "\">" + fields[i].Name + "</label>" +
                                        "<br /><input type=\"text\" name=\"" + fieldName + "\" value=\"\" /><br />";
                                }
                                else if (fields[i].Type == "Checkbox")
                                {
                                    element += "<br /><input type=\"checkbox\" name=\"" + fieldName + "\" value=\"" + countCheckBox + "\" >" + fields[i].Name + "</input><br />";
                                    countCheckBox = countCheckBox + 1;
                                }
                                else if (fields[i].Type == "RadioButton")
                                {
                                    element += "<br /><input type=\"radio\" name=\"" + fieldName + "\" value=\"" + countRadio + "\" >" + fields[i].Name + "</input><br />";
                                    countRadio = countRadio + 1;
                                }
                                else if (fields[i].Type == "MultiLineText")
                                {
                                    element += "<br /><label for=\"" + fieldName + "\">" + fields[i].Name + "</label>" +
                                        "<br /><input type=\"textarea\" name=\"" + fieldName + "\" value=\"\" >" + fields[i].Name + "</input><br />";
                                    countCheckBox = countCheckBox + 1;
                                }
                            }
                            result.Add("newForm", element);
                            result.Add("fileId", fileGuId);
                            return View("Sample35", null, result);
                        }
                        else
                        {
                            //If get fields failed
                            result.Add("error", "Something wrong with get fields from template");
                            return View("Sample35", null, result);
                        }
                    }
                    //If second form with merge data
                    else
                    {
                        //Get file GUID from hidden input
                        String fileGuId = Request.Form["guid"];
                        string iframe = "";
                        //Create empty Value collection
                        System.Collections.Specialized.NameValueCollection postData = new System.Collections.Specialized.NameValueCollection();
                        //Get all POST data
                        postData = Request.Form;
                        //Create empty HashTable
                        System.Collections.Hashtable enteredData = new System.Collections.Hashtable();
                        //Select data from POST
                        foreach (String elementName in postData)
                        {
                            if (elementName == "clientId")
                            {
                                clientId = postData[elementName];
                            }
                            else if (elementName == "privateKey")
                            {
                                privateKey = postData[elementName];
                            }
                            else if (elementName == "basePath")
                            {
                                basePath = postData[elementName];
                            }
                            else if (elementName == "guid")
                            {
                                fileGuId = postData[elementName];
                            }
                            else
                            {
                                enteredData.Add(elementName, postData[elementName]);
                            }
                        }
                        //Get all fields from document
                        Groupdocs.Assembly.Contract.TemplateFieldsResult templateFields = service.GetTemplateFields(fileGuId);
                        if (templateFields.Fields.Length != 0)
                        {
                            //Set fileds counter
                            Int32 count = enteredData.Count;
                            //Create Datasource object
                            Groupdocs.Assembly.Data.Datasource dataSource = new Groupdocs.Assembly.Data.Datasource();
                            //Create array of DatasourceField objects
                            Groupdocs.Assembly.Data.DatasourceField[] fieldArray = new Groupdocs.Assembly.Data.DatasourceField[count];
                            Int32 counter = 0;
                            //Create DataSourceFieldType object
                            Groupdocs.Assembly.Data.DatasourceFieldType type = new Groupdocs.Assembly.Data.DatasourceFieldType();
                            //Create counters for RadioButtons and CheckBoxes
                            Int32 counteRadio = -1;
                            Int32 counteCheckBox = -1;
                            //Create DataSourceField
                            for (Int32 n = 0; n < templateFields.Fields.Length; n++)
                            {
                                foreach (System.Collections.DictionaryEntry fields in enteredData)
                                {
                                    string[] values = new string[1];
                                    //Check is field name from document equal to field name from merge data
                                    if (fields.Key.ToString().Equals(templateFields.Fields[n].Name))
                                    {
                                        //Set field type and value
                                        if (templateFields.Fields[n].Type.Equals("RadioButton"))
                                        {
                                            counteRadio = counteRadio + 1;
                                            Int32 value;
                                            int.TryParse(fields.Value.ToString(), out value);
                                            if (counteRadio == value)
                                            {
                                                values.SetValue(System.Convert.ToString(fields.Value), 0);
                                                type = Groupdocs.Assembly.Data.DatasourceFieldType.Text;
                                            }
                                            else
                                            {
                                                continue;
                                            }
                                        }
                                        else if (templateFields.Fields[n].Type.Equals("MultiLineText"))
                                        {
                                            //Set object array content
                                            values.SetValue(System.Convert.ToString(fields.Value), 0);
                                            type = Groupdocs.Assembly.Data.DatasourceFieldType.Text;
                                        }
                                        else if (templateFields.Fields[n].Type.Equals("Checkbox"))
                                        {
                                            counteCheckBox = counteCheckBox + 1;
                                            Int32 value;
                                            int.TryParse(fields.Value.ToString(), out value);
                                            if (counteCheckBox == value)
                                            {
                                                values.SetValue(System.Convert.ToString("true"), 0);
                                                type = Groupdocs.Assembly.Data.DatasourceFieldType.Text;
                                            }
                                            else
                                            {
                                                continue;
                                            }
                                        }
                                        else
                                        {
                                            values.SetValue(System.Convert.ToString(fields.Value), 0);
                                            type = Groupdocs.Assembly.Data.DatasourceFieldType.Text;
                                        }
                                        //Add merge data to field object
                                        Groupdocs.Assembly.Data.DatasourceField field = new Groupdocs.Assembly.Data.DatasourceField();
                                        field.Name = System.Convert.ToString(fields.Key);
                                        field.Type = type;
                                        field.Values = values;
                                        //Push DatasourceField to array of DatasourceField objects
                                        fieldArray.SetValue(field, counter);
                                        counter++;
                                    }
                                }
                            }
                            //Set feilds array to the Datasource
                            dataSource.Fields = fieldArray;
                            //Add new Datasource to GroupDocs
                            decimal addDataSource = service.AddDataSource(dataSource);
                            //Check is not empty addDataSource
                            if (!addDataSource.Equals(""))
                            {
                                //If status ok merge Datasource to new pdf file
                                decimal job = service.MergeTemplate(fileGuId, addDataSource, "pdf", false);
                                if (!job.Equals(""))
                                {
                                    Groupdocs.Api.Contract.GetJobDocumentsResult jobInfo = new Groupdocs.Api.Contract.GetJobDocumentsResult();
                                    //### Check job status
                                    for (int n = 0; n <= 5; n++)
                                    {
                                        //Delay necessary that the inquiry would manage to be processed
                                        System.Threading.Thread.Sleep(5000);
                                        //Make request to api for get document info by job id
                                        jobInfo = service.GetJobDocuments(job);
                                        //Check job status, if status is Completed or Archived exit from cycle
                                        if (jobInfo.JobStatus.ToString().Equals("Completed") || jobInfo.JobStatus.ToString().Equals("Archived"))
                                        {
                                            break;
                                        }
                                        else if (jobInfo.JobStatus.ToString().Equals("Postponed"))
                                        {
                                            result.Add("error", "Job is fail");
                                            return View("Sample35", null, result);

                                        }
                                    }
                                    //Get guid
                                    String guid = jobInfo.Inputs[0].Outputs[0].Guid;
                                    // Generate Embed viewer url with entered file id
                                    if (basePath.Equals("https://api.groupdocs.com/v2.0"))
                                    {
                                        iframe = "https://apps.groupdocs.com/document-viewer/embed/" + guid;
                                    }
                                    if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0"))
                                    {
                                        iframe = "https://dev-apps-groupdocs.dynabic.com/document-viewer/embed/" + guid;
                                    }
                                    if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0"))
                                    {
                                        iframe = "https://stage-apps-groupdocs.dynabic.com/document-viewer/embed/" + guid;
                                    }
                                    if (basePath.Equals("https://realtime-api.groupdocs.com/v2.0"))
                                    {
                                        iframe = "https://realtime-apps-groupdocs.dynabic.com/document-viewer/embed/" + guid;
                                    }
                                    iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                                    result.Add("iframe", iframe);
                                    // Return to the template
                                    return View("Sample35", null, result);
                                }
                                else
                                {
                                    result.Add("error", "MargeTemplate is fail");
                                    return View("Sample35", null, result);
                                }
                            }
                            else
                            {
                                result.Add("error", "AddDataSource returned empty job id");
                                return View("Sample35", null, result);
                            }
                        }
                        else
                        {
                            result.Add("error", "Get template fields is failed");
                            return View("Sample35", null, result);
                        }

                    }

                }
            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample35");
            }
        }
        public ActionResult Sample37()
        {
            // 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 email = Request.Form["email"];
                String name = Request.Form["name"];
                String lastName = Request.Form["lastName"];
                String callbackUrl = Request.Form["callbackUrl"];
                String fileId = Request.Form["fileId"];
                String url = Request.Form["url"];
                var file = Request.Files["file"];
                String fileName = "";
                String guid = "";
                String basePath = Request.Form["basePath"];
                String iframe = "";
                // Set entered data to the results list
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);
                result.Add("email", email);
                result.Add("firstName", name);
                result.Add("lastName", lastName);
                // Check if callbackUrl is not empty
                if (!String.IsNullOrEmpty(callbackUrl))
                {
                    result.Add("callbackUrl", callbackUrl);
                }
                String message = null;
                // Check is all needed fields are entered
                if (String.IsNullOrEmpty(clientId) || String.IsNullOrEmpty(privateKey) || String.IsNullOrEmpty(email)
                    || String.IsNullOrEmpty(lastName) || String.IsNullOrEmpty(name))
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample37", null, result);
                }
                else
                {
                    //path to settings file - temporary save clientId and apiKey like to property file
                    create_info_file(clientId, privateKey, "");
                    if (basePath.Equals(""))
                    {
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    result.Add("basePath", basePath);
                    // Create service for Groupdocs account
                    GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey);
                    //if URL to web file was provided - upload the file from Web and get it's GUID
                    if (!url.Equals(""))
                    {
                        //Make request to upload file from entered Url
                        String uploadWeb = service.UploadUrl(url);
                        if (uploadWeb != null)
                        {
                            //If file uploaded return his GuId
                            guid = uploadWeb;
                            //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)
                                    {
                                        fileName = storageInfo.Files[i].Name;
                                    }
                                }
                            }
                            else
                            {
                                message = "Get files list is failed";
                                result.Add("error", message);
                                return View("Sample37", null, result);
                            }
                        }
                        //If file wasn't uploaded return error
                        else
                        {
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample37", null, result);
                        }
                    }
                    //if file was uploaded locally - upload the file and get it's GUID
                    if (!file.FileName.Equals(""))
                    {
                        //Upload local file
                        Groupdocs.Api.Contract.UploadRequestResult upload = service.UploadFile(file.FileName, String.Empty, file.InputStream);
                        if (upload.Guid != null)
                        {
                            //If file uploaded return his guid
                            guid = upload.Guid;
                            fileName = upload.AdjustedName;
                        }
                        else
                        {
                            //If file wasn't uploaded return error
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample37", null, result);
                        }
                    }
                    if (!fileId.Equals(""))
                    {
                        guid = fileId;
                        //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 by uploaded file GuId
                            for (int i = 0; i < storageInfo.Files.Length; i++)
                            {
                                if (storageInfo.Files[i].Guid == guid)
                                {
                                    fileName = storageInfo.Files[i].Name;
                                }

                            }
                        }
                        else
                        {
                            message = "Get files list is failed";
                            result.Add("error", message);
                            return View("Sample37", null, result);
                        }

                    }
                    //Check is file uploaded
                    if (!guid.Equals("") && !fileName.Equals(""))
                    {
                        //Create envilope using user id and entered by user name
                        Groupdocs.Api.Contract.Signature.SignatureEnvelopeResponse envelop = service.CreateEnvelope("", "", fileName, guid, false);
                        if (envelop.Status.Equals("Ok"))
                        {
                            decimal order = new decimal();
                            Groupdocs.Api.Contract.Signature.SignatureEnvelopeDocumentResponse addDocument = service.AddEnvelopeDocument(envelop.Result.Envelope.Id, guid, order, true);
                            if (addDocument.Status.Equals("Ok"))
                            {
                                decimal dec = new decimal();
                                //Get role list for curent user
                                Groupdocs.Api.Contract.Signature.SignatureRolesResponse roles = service.GetSignatureRoles("");
                                String roleId = "";
                                //Get id of role which can sign
                                for (int i = 0; i < roles.Result.Roles.Length; i++)
                                {
                                    if (roles.Result.Roles[i].Name.Equals("Signer"))
                                    {
                                        roleId = roles.Result.Roles[i].Id;
                                        break;
                                    }
                                }
                                //Add recipient to envelope
                                Groupdocs.Api.Contract.Signature.SignatureEnvelopeRecipientResponse addRecipient = service.AddEnvelopeRecipient(envelop.Result.Envelope.Id, email, name, lastName, roleId, dec);
                                if (addRecipient.Status.Equals("Ok"))
                                {
                                    Groupdocs.Api.Contract.Signature.SignatureEnvelopeDocumentsResponse getDocuments = service.GetEnvelopeDocuments(envelop.Result.Envelope.Id);
                                    if (getDocuments.Status.Equals("Ok"))
                                    {
                                        System.Random rand = new System.Random();
                                        String fieldName = "singlSample" + rand.Next(0, 1000);
                                        //Create envelop field settings object (LocationsX,Y max value can bee 1.0)
                                        Groupdocs.Api.Contract.Signature.SignatureEnvelopeFieldSettingsInfo envelopFieldSettings = new Groupdocs.Api.Contract.Signature.SignatureEnvelopeFieldSettingsInfo();
                                        envelopFieldSettings.LocationX = new decimal(0.15);
                                        envelopFieldSettings.LocationY = new decimal(0.73);
                                        envelopFieldSettings.LocationWidth = 150;
                                        envelopFieldSettings.LocationHeight = 50;
                                        envelopFieldSettings.Name = fieldName;
                                        envelopFieldSettings.ForceNewField = true;
                                        envelopFieldSettings.Page = 1;
                                        Groupdocs.Api.Contract.Signature.SignatureEnvelopeFieldResponse addFields = service.AddEnvelopeField(envelop.Result.Envelope.Id, getDocuments.Result.Documents[0].DocumentId, addRecipient.Result.Recipient.Id, "0545e589fb3e27c9bb7a1f59d0e3fcb9", envelopFieldSettings);
                                        //Send envelop with callbackUrl url
                                        Groupdocs.Api.Contract.Signature.SignatureEnvelopeSendResponse send = service.SendEnvelope(envelop.Result.Envelope.Id, callbackUrl);
                                        //Check is envelope send status
                                        if (send.Status.Equals("Ok"))
                                        {
                                            // Generate Embed viewer url with entered file id
                                            if (basePath.Equals("https://api.groupdocs.com/v2.0"))
                                            {
                                                iframe = "https://apps.groupdocs.com/signature2/signembed/" + envelop.Result.Envelope.Id + "/" + addRecipient.Result.Recipient.Id;
                                            }
                                            if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0"))
                                            {
                                                iframe = "https://dev-apps-groupdocs.dynabic.com/signature/signembed/" + envelop.Result.Envelope.Id + "/" + addRecipient.Result.Recipient.Id;
                                            }
                                            if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0"))
                                            {
                                                iframe = "https://stage-apps-groupdocs.dynabic.com/signature/signembed/" + envelop.Result.Envelope.Id + "/" + addRecipient.Result.Recipient.Id;
                                            }
                                            if (basePath.Equals("https://realtime-api.groupdocs.com/v2.0"))
                                            {
                                                iframe = "https://realtime-apps.groupdocs.com/signature/signembed/" + envelop.Result.Envelope.Id + "/" + addRecipient.Result.Recipient.Id;
                                            }
                                            iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                                            result.Add("iframe", iframe);
                                            //Set data for template
                                            result.Add("envelop", envelop.Result.Envelope.Id);
                                            result.Add("recipient", addRecipient.Result.Recipient.Id);
                                            return View("Sample37", null, result);
                                        }
                                        //If status failed set error for template
                                        else
                                        {
                                            result.Add("error", send.ErrorMessage);
                                            return View("Sample37", null, result);
                                        }
                                    }
                                    else
                                    {
                                        result.Add("error", getDocuments.ErrorMessage);
                                        return View("Sample37", null, result);
                                    }
                                }
                                else
                                {
                                    result.Add("error", addRecipient.ErrorMessage);
                                    return View("Sample37", null, result);
                                }
                            }
                            else
                            {
                                result.Add("error", addDocument.ErrorMessage);
                                return View("Sample37", null, result);
                            }
                        }
                        //If envelope wasn't created send error
                        else
                        {
                            result.Add("error", envelop.ErrorMessage);
                            return View("Sample37", null, result);
                        }
                    }
                    // If request return's null return error to the template
                    else
                    {
                        result.Add("error", "Upload is failed");
                        return View("Sample37", null, result);
                    }

                }

            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample37");
            }
        }
        public ActionResult Sample03()
        {
            // 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 url = Request.Form["url"];
                String fileGuid = "";
                String iframe = "";
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);
                result.Add("url", url);
                Groupdocs.Api.Contract.UploadRequestResult upload = null;
                String message = null;
                // Check is all needed fields are entered
                if (clientId == null || privateKey == null)
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    // Transfer error message to template
                    return View("Sample03", null, result);
                }
                else
                {
                    if (basePath == "")
                    {
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    // Create service for Groupdocs account
                    GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey);
                    result.Add("basePath", basePath);
                    if (url == "")
                    {
                        //### Upload file
                        // Get tag's names from form
                        foreach (string inputTagName in Request.Files)
                        {
                            var file = Request.Files[inputTagName];
                            // Check that file is not fake.
                            if (file.ContentLength > 0)
                            {
                                // Upload file with empty description.
                                upload = service.UploadFile(file.FileName, String.Empty, file.InputStream);
                                // Check is upload successful
                                if (upload.Guid != null)
                                {
                                    fileGuid = upload.Guid;
                                    // Put uploaded file GuId to the result's list
                                    result.Add("guid", upload.Guid);

                                }
                                // If upload was failed return error
                                else
                                {
                                    message = "UploadFile returns error";
                                    result.Add("error", message);
                                    return View("Sample03", null, result);
                                }
                            }
                        }
                    }
                    else
                    {
                        //Make request to upload file from entered Url
                        String guid = service.UploadUrl(url);
                        if (guid != null)
                        {
                            fileGuid = guid;
                            //If file uploaded return his GuId to template
                            result.Add("guid", guid);
                        }
                        //If file wasn't uploaded return error
                        else
                        {
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample03", null, result);
                        }
                    }
                    if (!fileGuid.Equals(""))
                    {
                        // Generate Embed viewer url with entered file id
                        if (basePath.Equals("https://api.groupdocs.com/v2.0"))
                        {
                            iframe = "https://apps.groupdocs.com/document-viewer/embed/" + fileGuid;
                        }
                        if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0"))
                        {
                            iframe = "https://dev-apps-groupdocs.dynabic.com/document-viewer/embed/" + fileGuid;
                        }
                        if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0"))
                        {
                            iframe = "https://stage-api-groupdocs.dynabic.com/document-viewer/embed/" + fileGuid;
                        }
                        if (basePath.Equals("https://realtime-api.groupdocs.com/v2.0"))
                        {
                            iframe = "https://realtime-apps.groupdocs.com/document-viewer/embed/" + fileGuid;
                        }
                        iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                        result.Add("iframe", iframe);
                    }

                    // Redirect to viewer with received GUID.
                    return View("Sample03", null, result);
                }
            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample03");
            }
        }
        public ActionResult Sample33()
        {
            // 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 url1 = Request.Form["url1"];
                String url2 = Request.Form["url3"];
                String url3 = Request.Form["url3"];
                String basePath = Request.Form["basePath"];
                String guid = "";
                String message = null;
                String iframe = "";
                if (clientId == null || privateKey == null)
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample33", null, result);
                }
                else
                {
                    if (basePath == "")
                    {
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    //Add data to template
                    result.Add("basePath", basePath);
                    result.Add("clientId", clientId);
                    result.Add("privateKey", privateKey);
                    result.Add("url1", url1);
                    result.Add("url2", url2);
                    result.Add("url3", url3);
                    // Create service for Groupdocs account
                    GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey);
                    //Create list with URL's
                    System.Collections.Generic.List<String> urlList = new System.Collections.Generic.List<String>();
                    //Put URL's to list
                    urlList.Add(url1);
                    urlList.Add(url2);
                    urlList.Add(url3);
                    //Create empty list for guid's of uploaded files
                    System.Collections.Generic.List<String> guidsList = new System.Collections.Generic.List<String>();
                    //Loop for upload document from URL
                    for (int i = 0; i < urlList.Count; i++)
                    {
                        String uploadedGuid = service.UploadUrl(urlList[i]);
                        if (uploadedGuid != null)
                        {
                            //Put uploaded file GUID to list
                            guidsList.Add(uploadedGuid);
                        }
                        else
                        {
                            message = "Upload is failed";
                            result.Add("error", message);
                            return View("Sample33", null, result);
                        }
                    }
                    //Create list of file types for converting
                    System.Collections.Generic.List<Groupdocs.Common.FileType> fileType = new System.Collections.Generic.List<Groupdocs.Common.FileType>();
                    //Add PDF to list of file types
                    fileType.Add(Groupdocs.Common.FileType.Pdf);
                    System.Random rand = new System.Random();
                    //Create job.
                    //First job action is Convert
                    Groupdocs.Api.Contract.CreateJobResult createJob = service.CreateJob(Groupdocs.Common.JobActions.Combine | Groupdocs.Common.JobActions.Convert, fileType.ToArray(), false, false, "test" + rand.Next());
                    if (!createJob.JobGuid.Equals(""))
                    {
                        //Add uploaded documents to job
                        for (int n = 0; n < guidsList.Count; n++)
                        {
                            Boolean addJobDocument = service.AddJobDocument(createJob.JobGuid, guidsList[n], "", false);
                            if (addJobDocument.Equals(false))
                            {
                                message = "Add document to job is failed";
                                result.Add("error", message);
                                return View("Sample33", null, result);
                            }
                        }
                        //Get job for update
                        Groupdocs.Api.Contract.JobInfo jobInfo = new Groupdocs.Api.Contract.JobInfo();
                        //Update job parameters and action from Convert to Combine
                        jobInfo.EmailResults = true;
                        jobInfo.Status = Groupdocs.Common.JobStatus.Pending;
                        jobInfo.Id = createJob.JobId;
                        jobInfo.Guid = createJob.JobGuid;
                        //Update job
                        Boolean updateJob = service.UpdateJob(jobInfo);
                        if (updateJob.Equals(true))
                        {
                            System.Threading.Thread.Sleep(5000);
                            //Get documents from job
                            Groupdocs.Api.Contract.GetJobDocumentsResult getDocument = service.GetJobDocuments(createJob.JobGuid);
                            if (String.IsNullOrEmpty(getDocument.Outputs[0].Guid))
                            {
                                message = "Get document from job is failed or job is Draft";
                                result.Add("error", message);
                                return View("Sample33", null, result);
                            }
                            else
                            {
                                guid = getDocument.Outputs[0].Guid;
                                // Generate Embed viewer url with entered file id
                                if (basePath.Equals("https://api.groupdocs.com/v2.0"))
                                {
                                    iframe = "https://apps.groupdocs.com/document-viewer/embed/" + guid;
                                }
                                if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0"))
                                {
                                    iframe = "https://dev-apps-groupdocs.dynabic.com/document-viewer/embed/" + guid;
                                }
                                if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0"))
                                {
                                    iframe = "https://stage-api-groupdocs.dynabic.com/document-viewer/embed/" + guid;
                                }
                                if (basePath.Equals("https://realtime-api.groupdocs.com/v2.0"))
                                {
                                    iframe = "https://realtime-apps.groupdocs.com/document-viewer/embed/" + guid;
                                }
                                iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                                result.Add("iframe", iframe);
                                result.Add("guid", guid);
                                return View("Sample33", null, result);

                            }
                        }
                        else
                        {
                            message = "Update job is failed";
                            result.Add("error", message);
                            return View("Sample33", null, result);
                        }
                    }
                    else
                    {
                        message = "Create job is failed";
                        result.Add("error", message);
                        return View("Sample33", null, result);
                    }
                }
            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample33");
            }
        }
        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");
            }
        }
        public ActionResult Sample27()
        {
            // 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 fileId = Request.Form["fileId"];
                String url = Request.Form["url"];
                String name = Request.Form["name"];
                String sex = Request.Form["sex"];
                String age = Request.Form["age"];
                String sunrise = Request.Form["sunrise"];
                String resultType = Request.Form["type"];
                String fileGuId = "";
                var file = Request.Files["file"];
                // Set entered data to the results list
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);
                result.Add("name", name);
                result.Add("sex", sex);
                result.Add("age", age);
                result.Add("sunrise", sunrise);
                result.Add("type", resultType);
                String iframe = "";
                String message = null;
                // Check is all needed fields are entered
                if (String.IsNullOrEmpty(clientId) || String.IsNullOrEmpty(privateKey))
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample27", null, result);
                }
                else
                {
                    String basePath = Request.Form["basePath"];
                    //Check is base path entered
                    if (basePath.Equals(""))
                    {
                        //If base path empty set base path to the dev server
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    result.Add("basePath", basePath);
                    // Create service for Groupdocs account
                    GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey);
                    //Make request to get document pages as images
                    //if URL to web file was provided - upload the file from Web and get it's GUID
                    if (url != "")
                    {
                        //Make request to upload file from entered Url
                        String guid = service.UploadUrl(url);
                        if (guid != null)
                        {
                            //If file uploaded return his GuId
                            fileGuId = guid;

                        }
                        //If file wasn't uploaded return error
                        else
                        {
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample27", null, result);
                        }
                    }

                    //if file was uploaded locally - upload the file and get it's GUID
                    if (file.FileName != "")
                    {
                        //Upload local file
                        Groupdocs.Api.Contract.UploadRequestResult upload = service.UploadFile(file.FileName, "uploaded", file.InputStream);
                        if (upload.Guid != null)
                        {
                            //If file uploaded return his guid
                            fileGuId = upload.Guid;
                        }
                        else
                        {
                            //If file wasn't uploaded return error
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample27", null, result);
                        }
                    }
                    //If user choose file guid
                    if (!fileId.Equals(""))
                    {
                        //Set file guid as entered by user file guid
                        fileGuId = fileId;
                    }
                    System.Collections.Hashtable enteredData = new System.Collections.Hashtable();
                    enteredData.Add("sex", sex);
                    enteredData.Add("age", age);
                    enteredData.Add("sunrise", sunrise);
                    enteredData.Add("name", name);
                    //Set fileds counter
                    Int32 count = enteredData.Count;
                    //Create Datasource object
                    Groupdocs.Assembly.Data.Datasource dataSource = new Groupdocs.Assembly.Data.Datasource();
                    //Create array of DatasourceField objects
                    Groupdocs.Assembly.Data.DatasourceField[] fieldArray = new Groupdocs.Assembly.Data.DatasourceField[count];
                    //Create array od objects with
                    string[] values = new string[1];
                    //Set DatasourceFiled data
                    Int32 counter = 0;
                    foreach (System.Collections.DictionaryEntry fields in enteredData)
                    {
                        //Set object array content
                        values.SetValue(System.Convert.ToString(fields.Value), 0);
                        Groupdocs.Assembly.Data.DatasourceField field = new Groupdocs.Assembly.Data.DatasourceField();
                        Groupdocs.Assembly.Data.DatasourceFieldType type = new Groupdocs.Assembly.Data.DatasourceFieldType();
                        type = 0;
                        field.Name = System.Convert.ToString(fields.Key);
                        field.Type = type;
                        field.Values = values;
                        //Push DatasourceField to array of DatasourceField objects
                        fieldArray.SetValue(field, counter);
                        counter++;
                    }
                    //Set feilds array to the Datasource
                    dataSource.Fields = fieldArray;
                    //Add new Datasource to GroupDocs
                    decimal addDataSource = service.AddDataSource(dataSource);
                    //Check is not empty addDataSource
                    if (!addDataSource.Equals(""))
                    {
                        //If status ok merge Datasource to new pdf file
                        decimal job = service.MergeTemplate(fileGuId, addDataSource, resultType, false);
                        if (!job.Equals(""))
                        {
                            Groupdocs.Api.Contract.GetJobDocumentsResult jobInfo = new Groupdocs.Api.Contract.GetJobDocumentsResult();
                            //### Check job status
                            for (int n = 0; n <= 5; n++)
                            {
                                //Delay necessary that the inquiry would manage to be processed
                                System.Threading.Thread.Sleep(5000);
                                //Make request to api for get document info by job id
                                jobInfo = service.GetJobDocuments(job);
                                //Check job status, if status is Completed or Archived exit from cycle
                                if (jobInfo.JobStatus.Equals("Completed") || jobInfo.JobStatus.Equals("Archived"))
                                {
                                    break;
                                    //If job status Postponed throw exception with error
                                }
                                else if (jobInfo.JobStatus.Equals("Postponed"))
                                {
                                    result.Add("error", "Job is fail");
                                    return View("Sample27", null, result);

                                }
                            }
                            //Get guid
                            String guid = jobInfo.Inputs[0].Outputs[0].Guid;
                            //Get name
                            String fileName = jobInfo.Inputs[0].Outputs[0].Name;
                            // Definition of folder where to download file
                            String LocalPath = AppDomain.CurrentDomain.BaseDirectory + "downloads/";
                            if (!Directory.Exists(LocalPath))
                            {
                                DirectoryInfo di = Directory.CreateDirectory(LocalPath);
                            }
                            //### Make a request to Storage Api for dowloading file
                            // Download file
                            bool download = service.DownloadFile(guid, LocalPath + fileName);
                            // If file downloaded successful
                            if (download != false)
                            {
                                // Generate Embed viewer url with entered file id
                                if (basePath.Equals("https://api.groupdocs.com/v2.0"))
                                {
                                    iframe = "https://apps.groupdocs.com/document-viewer/embed/" + guid;
                                }
                                if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0"))
                                {
                                    iframe = "https://dev-apps-groupdocs.dynabic.com/document-viewer/embed/" + guid;
                                }
                                if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0"))
                                {
                                    iframe = "https://stage-api-groupdocs.dynabic.com/document-viewer/embed/" + guid;
                                }
                                if (basePath.Equals("https://realtime-api.groupdocs.com/v2.0"))
                                {
                                    iframe = "https://realtime-apps.groupdocs.com/document-viewer/embed/" + guid;
                                }
                                iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                                result.Add("iframe", iframe);
                                // Put file info to the result's list
                                result.Add("message", "File was converted and downloaded to the " + LocalPath + "/" + fileName);
                                result.Add("fileId", guid);
                                // Return to the template
                                return View("Sample27", null, result);
                            }

                        }
                        else
                        {
                            result.Add("error", "MargeTemplate is fail");
                            return View("Sample27", null, result);
                        }
                    }
                    else
                    {
                        result.Add("error", "AddDataSource returned empty job id");
                        return View("Sample27", null, result);
                    }
                    return View("Sample27", null, result);
                }

            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample27");
            }
        }
        public ActionResult Sample22()
        {
            // 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 email = Request.Form["email"];
                String firstName = Request.Form["firstName"];
                String lastName = Request.Form["lastName"];
                String fileId = Request.Form["fileId"];
                String url = Request.Form["url"];
                var file = Request.Files["file"];
                String guid = "";
                String basePath = Request.Form["basePath"];
                // Set entered data to the results list
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);
                result.Add("email", email);
                result.Add("firstName", firstName);
                result.Add("lastName", lastName);
                String message = null;
                // Check is all needed fields are entered
                if (String.IsNullOrEmpty(clientId) || String.IsNullOrEmpty(privateKey) || String.IsNullOrEmpty(email)
                    || String.IsNullOrEmpty(lastName) || String.IsNullOrEmpty(firstName))
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample22", null, result);
                }
                else
                {

                    if (basePath.Equals(""))
                    {
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    result.Add("basePath", basePath);
                    // Create service for Groupdocs account
                    GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey);

                    //if URL to web file was provided - upload the file from Web and get it's GUID
                    if (!url.Equals(""))
                    {

                        //Make request to upload file from entered Url
                        String uploadWeb = service.UploadUrl(url);
                        if (uploadWeb != null)
                        {
                            //If file uploaded return his GuId
                            guid = uploadWeb;

                        }
                        //If file wasn't uploaded return error
                        else
                        {
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample22", null, result);
                        }

                    }
                    //if file was uploaded locally - upload the file and get it's GUID
                    if (!file.FileName.Equals(""))
                    {

                        //Upload local file
                        Groupdocs.Api.Contract.UploadRequestResult upload = service.UploadFile(file.FileName, String.Empty, file.InputStream);
                        if (upload.Guid != null)
                        {
                            //If file uploaded return his guid
                            guid = upload.Guid;

                        }
                        else
                        {
                            //If file wasn't uploaded return error
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample22", null, result);
                        }

                    }
                    if (!fileId.Equals(""))
                    {
                        guid = fileId;

                    }
                    result.Add("fileId", guid);
                    //Create User info object
                    Groupdocs.Api.Contract.UserInfo user = new Groupdocs.Api.Contract.UserInfo();
                    //Create Role info object
                    Groupdocs.Api.Contract.RoleInfo roleInfo = new Groupdocs.Api.Contract.RoleInfo();
                    //Create array of roles.
                    Groupdocs.Api.Contract.RoleInfo[] roleList = new Groupdocs.Api.Contract.RoleInfo[1];
                    //Set user role Id. Can be: 1 -  SysAdmin, 2 - Admin, 3 - User, 4 - Guest
                    roleInfo.Id = 3;
                    //Set user role name. Can be: SysAdmin, Admin, User, Guest
                    roleInfo.Name = "User";
                    roleList[0] = roleInfo;
                    //Set nick name as entered first name
                    user.NickName = firstName;
                    //Set first name as entered first name
                    user.FirstName = firstName;
                    //Set last name as entered last name
                    user.LastName = lastName;
                    user.Roles = roleList;
                    //Set email as entered email
                    user.PrimaryEmail = email;
                    //Creating of new User user - object with new user info
                    Groupdocs.Api.Contract.UserIdentity newUser = service.UpdateAccountUser(user);
                    // If request return's null return error to the template
                    if (newUser.Guid != null)
                    {
                        //Create array with entered email for SetAnnotationCollaborators method
                        String[] emails = new String[1];
                        emails[0] = email;
                        //Make request to Ant api for set new user as annotation collaborator
                        Groupdocs.Api.Contract.Annotation.SetCollaboratorsResult addCollaborator = service.SetAnnotationCollaborators(guid, emails, "2.0");
                        if (addCollaborator.Collaborators != null)
                        {
                            //Set reviewers rights for new user.
                            Groupdocs.Api.Contract.Annotation.SetReviewerRightsResult setReviewer = service.SetReviewerRights(guid, addCollaborator.Collaborators);
                            String iframe = "";
                            if (basePath.Equals("https://api.groupdocs.com/v2.0"))
                            {
                                iframe = "https://apps.groupdocs.com//document-annotation2/embed/" + guid + "?&uid=" + newUser.Guid + "&download=true";
                            }
                            else if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0"))
                            {
                                iframe = "https://dev-apps-groupdocs.dynabic.com//document-annotation2/embed/" + guid + "?&uid=" + newUser.Guid + "&download=true";
                            }
                            else if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0"))
                            {
                                iframe = "https://stage-api-groupdocs.dynabic.com//document-annotation2/embed/" + guid + "?&uid=" + newUser.Guid + "&download=true";
                            }
                            else if (basePath.Equals("https://realtime-api-groupdocs.dynabic.com/v2.0"))
                            {
                                iframe = "https://realtime-apps-groupdocs.dynabic.com//document-annotation2/embed/" + guid + "?&uid=" + newUser.Guid + "&download=true";
                            }
                            //Sign iframe URL with private key
                            iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                            //Return GuId of new User to the template
                            result.Add("url", iframe);
                            return View("Sample22", null, result);
                        }
                        //If Collaborators is empty return error
                        else
                        {
                            result.Add("error", "Collaborators is empty");
                            return View("Sample22", null, result);
                        }
                    }
                    //If upload file returns faile, return error to the template
                    else
                    {
                        result.Add("error", "Upload is failed");
                        return View("Sample22", null, result);
                    }

                }

            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample22");
            }
        }
        public ActionResult Sample05()
        {
            // 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["srcPath"];
                String url = Request.Form["url"];
                var file = Request.Files["file"];
                String destPath = Request.Form["destPath"];
                String action = Request.Form["copy"];
                // Set entered data to the results list
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);
                result.Add("fileId", fileId);
                result.Add("destPath", destPath);
                String message = null;
                // Check is all needed fields are entered
                if (clientId == "" || privateKey == "" || destPath == "")
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample05", null, result);
                }
                else
                {
                    if (basePath == "")
                    {
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    // Create service for Groupdocs account
                    GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey);
                    // Create empty variable for file name and id
                    String name = null;
                    decimal id = new decimal();
                    //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
                            id = upload.Id;
                            name = upload.AdjustedName;

                        }
                        // If upload was failed return error
                        else
                        {
                            message = "UploadFile returns error";
                            result.Add("error", message);
                            return View("Sample05", 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)
                                    {
                                        id = storageInfo.Files[i].Id;
                                        name = storageInfo.Files[i].Name;
                                    }

                                }
                            }
                            else
                            {
                                message = "Get files list is failed";
                                result.Add("error", message);
                                return View("Sample05", null, result);
                            }
                        }
                        //If file wasn't uploaded return error
                        else
                        {
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample05", 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)
                                {
                                    id = storageInfo.Files[i].Id;
                                    name = storageInfo.Files[i].Name;
                                }

                            }
                        }
                        else
                        {
                            message = "Get files list is failed";
                            result.Add("error", message);
                            return View("Sample05", null, result);
                        }
                    }
                    // Check is entered file GuId exists
                    if (name == null || id == 0)
                    {
                        result.Add("error", "File was not found");
                        return View("Sample05", null, result);
                    }
                    // Create path to where copy/move file
                    String path = destPath + "/" + name;
                    Groupdocs.Api.Contract.FileMoveResponse transfer = new Groupdocs.Api.Contract.FileMoveResponse();
                    // Copy file if user choose copy
                    if (action == "Copy")
                    {
                        // Create empty Overide mode
                        Groupdocs.Common.OverrideMode overide = new Groupdocs.Common.OverrideMode();
                        // Make request to the Api to copy file
                        transfer = service.CopyFile(id, path, overide);
                        // Put message to result's list
                        result.Add("button", "Copied");

                    }
                    // If user choose Move file
                    else
                    {
                        Groupdocs.Common.OverrideMode overide = new Groupdocs.Common.OverrideMode();
                        transfer = service.MoveFile(id, path, overide);
                        result.Add("button", "Moved");
                    }
                    // Check is copy/move is successful
                    if (transfer.Status.Equals("Ok"))
                    {
                        // If successful put path to the copy/moved file to the results list
                        result.Add("path", path);
                    }
                    else
                    {
                        // If failed put error message
                        result.Add("error", transfer.ErrorMessage);
                    }

                }
                // Return results to the template
                return View("Sample05", null, result);

            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample05");
            }
        }
        public ActionResult Sample18()
        {
            // 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 fileId = Request.Form["fileId"];
                String convertType = Request.Form["convertType"];
                String url = Request.Form["url"];
                var file = Request.Files["file"];
                String callbackUrl = Request.Form["callbackUrl"];
                String iframe = "";
                // Set entered data to the results list
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);
                result.Add("fileId", fileId);
                result.Add("type", convertType);

                if (!String.IsNullOrEmpty(callbackUrl))
                {
                    result.Add("callbackUrl", callbackUrl);
                }

                String message = null;
                // Check is all required fields were provided
                if (String.IsNullOrEmpty(clientId) || String.IsNullOrEmpty(privateKey) || String.IsNullOrEmpty(convertType)
                    || (String.IsNullOrEmpty(fileId) && (String.IsNullOrEmpty(url)) && (file.ContentLength == 0)))
                {
                    // If not all required fields were provided - send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample18", null, result);
                }
                else
                {

                    //path to settings file - temporary save clientId and apiKey like to property file
                    create_info_file(clientId, privateKey, "");

                    String basePath = Request.Form["basePath"];
                    //Check is base path entered
                    if (basePath.Equals(""))
                    {
                        //If base path empty set base path to the dev server
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    result.Add("basePath", basePath);
                    // Create service for Groupdocs account
                    GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey);

                    //if URL to web file was provided - upload the file from Web and get it's GUID
                    if (url != "")
                    {
                        //Make request to upload file from entered Url
                        String guid = service.UploadUrl(url);
                        if (guid != null)
                        {
                            //If file uploaded return his GuId
                            fileId = guid;

                        }
                        //If file wasn't uploaded return error
                        else
                        {
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample18", null, result);
                        }
                    }

                    //if file was uploaded locally - upload the file and get it's GUID
                    if (file.FileName != "")
                    {
                        //Upload local file
                        Groupdocs.Api.Contract.UploadRequestResult upload = service.UploadFile(file.FileName, String.Empty, file.InputStream);
                        if (upload.Guid != null)
                        {
                            //If file uploaded return his guid
                            fileId = upload.Guid;
                        }
                        else
                        {
                            //If file wasn't uploaded return error
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample18", null, result);
                        }
                    }

                    decimal jobId = 0;
                    try
                    {
                        //Make request to api for convert file.
                        //@fileId - GUID. Represents the provided file - via guid, web url or local file.
                        //@type - File type of the result file
                        //@callbackUrl - callbackUrl URL
                        jobId = service.ConvertFile(fileId, convertType, "", false, false, callbackUrl);
                    }
                    catch (Exception e)
                    {

                        result.Add("error", e.ToString());
                        return View("Sample18", null, result);
                    }

                    /*
                     * The approack bellow is not good one to get Job Results directly in the code after ConvertFile method.
                     * We use this approach to show the result file in embedded iframe on the same sample page.
                     * In production it's better to use callbackUrl approach - this approach allso implemented in this sample.
                     */

                    //Delay is required to be shure that the file was processed
                    System.Threading.Thread.Sleep(5000);
                    //Make request to api to get document info by job id
                    Groupdocs.Api.Contract.GetJobDocumentsResult job = service.GetJobDocuments(jobId);

                    if (job.Inputs[0].Outputs[0].Guid != "")
                    {
                        // Generate Embed viewer url with entered file id
                        if (basePath.Equals("https://api.groupdocs.com/v2.0"))
                        {
                            iframe = "https://apps.groupdocs.com/document-viewer/embed/" + job.Inputs[0].Outputs[0].Guid;
                        }
                        if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0"))
                        {
                            iframe = "https://dev-apps-groupdocs.dynabic.com/document-viewer/embed/" + job.Inputs[0].Outputs[0].Guid;
                        }
                        if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0"))
                        {
                            iframe = "https://stage-api-groupdocs.dynabic.com/document-viewer/embed/" + job.Inputs[0].Outputs[0].Guid;
                        }
                        if (basePath.Equals("https://realtime-api.groupdocs.com/v2.0"))
                        {
                            iframe = "https://realtime-apps.groupdocs.com/document-viewer/embed/" + job.Inputs[0].Outputs[0].Guid;
                        }
                        iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                        result.Add("iframe", iframe);
                        //Return file guid to the template
                        result.Add("guid", job.Inputs[0].Outputs[0].Guid);
                        return View("Sample18", null, result);
                    }
                    else
                    {
                        //If file GuId is empty return error
                        result.Add("error", "File GuId is empty");
                        return View("Sample18", null, result);
                    }

                }

            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample18");
            }
        }
        public ActionResult Sample19()
        {
            // 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 sourceFileId = "";
                String targetFileId = "";
                String callbackUrl = Request.Form["callbackUrl"];
                String basePath = Request.Form["basePath"];
                String sourceId = Request.Form["sourceFileId"];
                String targetId = Request.Form["targetFileId"];
                String url = Request.Form["url"];
                String targetUrl = Request.Form["targetUrl"];
                String iframe = "";
                var targetFile = Request.Files["targetFile"];
                var file = Request.Files["file"];
                // Set entered data to the results list
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);

                // Check if callbackUrl is not empty
                if (!String.IsNullOrEmpty(callbackUrl))
                {
                    result.Add("callbackUrl", callbackUrl);
                }

                String message = null;
                // Check is all needed fields are entered
                if (String.IsNullOrEmpty(clientId) || String.IsNullOrEmpty(privateKey))
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample19", null, result);
                }
                else
                {

                    //path to settings file - temporary save clientId and apiKey like to property file
                    create_info_file(clientId, privateKey, "");
                    if (basePath.Equals(""))
                    {
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    // Create service for Groupdocs account
                    GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey);
                    //if URL to web file was provided - upload the file from Web and get it's GUID
                    if (!url.Equals("") || !targetUrl.Equals(""))
                    {
                        if (!url.Equals(""))
                        {
                            //Make request to upload file from entered Url
                            String guid = service.UploadUrl(url);
                            if (guid != null)
                            {
                                //If file uploaded return his GuId
                                sourceFileId = guid;

                            }
                            //If file wasn't uploaded return error
                            else
                            {
                                result.Add("error", "Something wrong with entered data");
                                return View("Sample19", null, result);
                            }
                        }
                        if (!targetUrl.Equals(""))
                        {
                            //Make request to upload file from entered Url
                            String targetGuid = service.UploadUrl(targetUrl);
                            if (targetGuid != null)
                            {
                                //If file uploaded return his GuId
                                targetFileId = targetGuid;

                            }
                            //If file wasn't uploaded return error
                            else
                            {
                                result.Add("error", "Something wrong with entered data");
                                return View("Sample19", null, result);
                            }
                        }
                    }

                    //if file was uploaded locally - upload the file and get it's GUID
                    if (!file.FileName.Equals("") || !targetFile.FileName.Equals(""))
                    {
                        if (!file.FileName.Equals(""))
                        {
                            //Upload local file
                            Groupdocs.Api.Contract.UploadRequestResult upload = service.UploadFile(file.FileName, String.Empty, file.InputStream);
                            if (upload.Guid != null)
                            {
                                //If file uploaded return his guid
                                sourceFileId = upload.Guid;
                            }
                            else
                            {
                                //If file wasn't uploaded return error
                                result.Add("error", "Something wrong with entered data");
                                return View("Sample19", null, result);
                            }
                        }
                        if (!targetFile.FileName.Equals(""))
                        {
                            //Upload local file
                            Groupdocs.Api.Contract.UploadRequestResult targetUpload = service.UploadFile(targetFile.FileName, String.Empty, targetFile.InputStream);
                            if (targetUpload.Guid != null)
                            {
                                //If file uploaded return his guid
                                targetFileId = targetUpload.Guid;
                            }
                            else
                            {
                                //If file wasn't uploaded return error
                                result.Add("error", "Something wrong with entered data");
                                return View("Sample19", null, result);
                            }
                        }
                    }
                    if (!sourceId.Equals("") || !targetId.Equals(""))
                    {
                        if (!sourceId.Equals(""))
                        {
                            sourceFileId = sourceId;
                        }
                        if (!targetId.Equals(""))
                        {
                            targetFileId = targetId;
                        }
                    }
                    result.Add("sourceFileId", sourceFileId);
                    result.Add("targetFileId", targetFileId);
                    result.Add("basePath", basePath);
                    //Compare two documents and setting collback Url
                    Groupdocs.Api.Comparison.Contract.CompareResponse compare = service.Compare(sourceFileId, targetFileId, callbackUrl);

                    if (compare.Status.Equals("Ok"))
                    {
                        //Delay necessary that the inquiry would manage to be processed
                        System.Threading.Thread.Sleep(5000);
                        //Make request to api for get document info by job id
                        Groupdocs.Api.Contract.GetJobDocumentsResult job = service.GetJobDocuments(compare.Result.JobId);

                        if (job.Outputs[0].Guid != null)
                        {
                            // Generate Embed viewer url with entered file id
                            if (basePath.Equals("https://api.groupdocs.com/v2.0"))
                            {
                                iframe = "https://apps.groupdocs.com/document-viewer/embed/" + job.Outputs[0].Guid;
                            }
                            if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0"))
                            {
                                iframe = "https://dev-apps-groupdocs.dynabic.com/document-viewer/embed/" + job.Outputs[0].Guid;
                            }
                            if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0"))
                            {
                                iframe = "https://stage-api-groupdocs.dynabic.com/document-viewer/embed/" + job.Outputs[0].Guid;
                            }
                            if (basePath.Equals("https://realtime-api.groupdocs.com/v2.0"))
                            {
                                iframe = "https://realtime-apps.groupdocs.com/document-viewer/embed/" + job.Outputs[0].Guid;
                            }
                            iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                            result.Add("iframe", iframe);
                            //Return file guid to the template
                            result.Add("guid", job.Outputs[0].Guid);
                            return View("Sample19", null, result);
                        }
                        else
                        {
                            //If file GuId is empty return error
                            result.Add("error", "File GuId is empty");
                            return View("Sample19", null, result);
                        }
                    }
                    // If request return's null return error to the template
                    else
                    {
                        result.Add("error", compare.ErrorMessage);
                        return View("Sample19", null, result);
                    }

                }

            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample19");
            }
        }
        public ActionResult Sample17()
        {
            // 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 url = Request.Form["url"];
                decimal Id = new decimal();
                String name = "";
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);
                Groupdocs.Api.Contract.UploadRequestResult upload = null;
                String message = null;
                // Check is all needed fields are entered
                if (clientId == null || privateKey == null)
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    // Transfer error message to template
                    return View("Sample17", null, result);
                }
                else
                {
                    if (basePath == "")
                    {
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    // Create service for Groupdocs account
                    GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey);
                    result.Add("basePath", basePath);
                    if (url.Equals(""))
                    {
                        //### Upload file
                        // Get tag's names from form
                        foreach (string inputTagName in Request.Files)
                        {
                            var file = Request.Files[inputTagName];
                            // Check that file is not fake.
                            if (file.ContentLength > 0)
                            {
                                // Upload file with empty description.
                                upload = service.UploadFile(file.FileName, String.Empty, file.InputStream);
                                // Check is upload successful
                                if (upload.Guid != null)
                                {
                                    Id = upload.Id;
                                    name = upload.AdjustedName;

                                }
                                // If upload was failed return error
                                else
                                {
                                    message = "UploadFile returns error";
                                    result.Add("error", message);
                                    return View("Sample17", null, result);
                                }
                            }
                        }
                    }
                    if (!url.Equals(""))
                    {
                        //Make request to upload file from entered Url
                        String uploadUrl = service.UploadUrl(url);
                        if (!uploadUrl.Equals(""))
                        {
                            //Get all files from account
                            Groupdocs.Api.Contract.ListEntitiesResult files = service.GetFileSystemEntities("My Web Documents", 0, -1, null, true, null, null);

                            //Check if request return data
                            if (files.Files.Length != 0)
                            {
                                //Get Name and Id of compresed file
                                for (int i = 0; i < files.Files.Length; i++)
                                {
                                    if (files.Files[i].Guid == uploadUrl)
                                    {
                                        Id = files.Files[i].Id;
                                        name = files.Files[i].Name;
                                    }
                                }

                            }
                            else
                            {
                                //If file GuId is empty return error
                                result.Add("error", "File Name is empty");
                                return View("Sample17", null, result);
                            }
                        }

                    }
                    //Compress uploaded file into "zip" archive
                    decimal convertId = service.CompressFile(Id, Groupdocs.Common.ArchiveType.Zip);
                    //Get all files from account
                    Groupdocs.Api.Contract.ListEntitiesResult filesList = service.GetFileSystemEntities("", 0, -1, null, true, null, null);

                    //Check if request return data
                    if (filesList.Files.Length != 0)
                    {
                        //Get Name and Id of compresed file
                        for (int i = 0; i < filesList.Files.Length; i++)
                        {
                            if (filesList.Files[i].Id == convertId)
                            {
                                name = filesList.Files[i].Name;
                            }
                        }
                        //If file uploaded and compresed return message with file name to the template
                        result.Add("message", "Archive created and saved successfully as " + name);
                        return View("Sample17", null, result);
                    }
                    else
                    {
                        //If file GuId is empty return error
                        result.Add("error", "File Name is empty");

                    }

                }
                return View("Sample17", null, result);
            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample17");
            }
        }
        public ActionResult Sample16()
        {
            // Check is data posted
            if (Request.HttpMethod == "POST")
            {
                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 message = null;
                String iframe = "";
                //### Set variables and get POST data
                System.Collections.Hashtable result = new System.Collections.Hashtable();
                if (clientId == null || privateKey == null)
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample16", 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("Sample16", 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("Sample16", null, result);
                            }
                        }
                        //If file wasn't uploaded return error
                        else
                        {
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample16", null, result);
                        }
                    }
                    //Check is file guid entered
                    if (!fileId.Equals(""))
                    {
                        fileGuId = fileId;
                    }
                    if (basePath.Equals("https://api.groupdocs.com/v2.0"))
                    {
                        iframe = "https://apps.groupdocs.com/assembly2/questionnaire-assembly/" + fileGuId;
                    }
                    if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0"))
                    {
                        iframe = "https://dev-apps-groupdocs.dynabic.com/assembly2/questionnaire-assembly/" + fileGuId;
                    }
                    if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0"))
                    {
                        iframe = "https://stage-api-groupdocs.dynabic.com/assembly2/questionnaire-assembly/" + fileGuId;
                    }
                    if (basePath.Equals("https://realtime-api.groupdocs.com/v2.0"))
                    {
                        iframe = "https://realtime-apps.groupdocs.com/assembly2/questionnaire-assembly/" + fileGuId;
                    }
                    //Set data for template
                    iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                    result.Add("iframe", iframe);
                    //Set data for template
                    result.Add("guid", fileGuId);
                }
                return View("Sample16", null, result);
            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample16");
            }
        }
        public ActionResult Sample13()
        {
            // 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 email = Request.Form["email"];
                String basePath = Request.Form["basePath"];
                String fileId = Request.Form["fileId"];
                String url = Request.Form["url"];
                var file = Request.Files["file"];
                String fileGuId = "";
                // Set entered data to the results list
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);

                result.Add("email", email);
                String message = null;
                // Check is all needed fields are entered
                if (clientId == null || privateKey == null || email == null)
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample13", null, result);
                }
                else
                {
                    // Create string array with emails
                    String[] collaborators = new String[1];
                    collaborators[0] = email;
                    if (basePath == "")
                    {
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    // 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("Sample13", 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("Sample13", null, result);
                            }
                        }
                        //If file wasn't uploaded return error
                        else
                        {
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample13", null, result);
                        }
                    }
                    //Check is file guid entered
                    if (!fileId.Equals(""))
                    {
                        fileGuId = fileId;
                    }
                    // Make request to set annotation collaborators
                    Groupdocs.Api.Contract.Annotation.SetCollaboratorsResult collaborate = service.SetAnnotationCollaborators(fileGuId, collaborators);
                    // Check is request return data
                    if (collaborate != null)
                    {
                        // Return primary email to the template
                        result.Add("collaborator", collaborate.Collaborators[0].PrimaryEmail);
                        result.Add("fileId", fileGuId);
                        return View("Sample13", null, result);
                    }
                    // If request return's null return error to the template
                    else
                    {
                        message = "Something is wrong with your data";
                        result.Add("error", message);
                        return View("Sample13", null, result);
                    }

                }

            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample13");
            }
        }
        public ActionResult Sample38()
        {
            // 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 email = Request.Form["email"];
                String firstName = Request.Form["firstName"];
                String lastName = Request.Form["lastName"];
                String basePath = Request.Form["basePath"];
                String fileId = Request.Form["fileId"];
                String url = Request.Form["url"];
                var file = Request.Files["file"];
                String fileGuId = "";
                // Set entered data to the results list
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);
                result.Add("email", email);
                result.Add("firstName", firstName);
                result.Add("lastName", lastName);
                String message = null;
                // Check is all needed fields are entered
                if (clientId == null || privateKey == null || email == null || firstName == null || lastName == null)
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample38", null, result);
                }
                else
                {
                    // Create string array with emails
                    String[] collaborators = new String[1];
                    collaborators[0] = email;
                    //Set base path for API if it's not entered by user
                    if (basePath == "")
                    {
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    // 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("Sample38", 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("Sample38", null, result);
                            }
                        }
                        //If file wasn't uploaded return error
                        else
                        {
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample38", null, result);
                        }
                    }
                    //Check is file guid entered
                    if (!fileId.Equals(""))
                    {
                        fileGuId = fileId;
                    }
                    result.Add("fileId", fileGuId);
                    // Generate Embed Annotation url with file GUID
                    string iframe = null;
                    if (basePath.Equals("https://api.groupdocs.com/v2.0"))
                    {
                        iframe = "https://apps.groupdocs.com/document-annotation2/embed/" + fileGuId;
                    }
                    if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0"))
                    {
                        iframe = "https://dev-apps-groupdocs.dynabic.com/document-annotation2/embed/" + fileGuId;
                    }
                    if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0"))
                    {
                        iframe = "https://stage-apps-groupdocs.dynabic.com/document-annotation2/embed/" + fileGuId;
                    }
                    if (basePath.Equals("https://realtime-api.groupdocs.com/v2.0"))
                    {
                        iframe = "https://realtime-apps.groupdocs.com/document-annotation2/embed/" + fileGuId;
                    }
                    string userGuid = null;
                    //Get all users from GroupDocs account
                    Groupdocs.Api.Contract.GetAccountUsersResult allUsers = service.GetAccountUsers();
                    if (allUsers != null)
                    {
                        //Check is user allready exist in GroupDocs Account
                        for (int i = 0; i < allUsers.Users.Length; i++)
                        {
                            if (email.Equals(allUsers.Users[i].PrimaryEmail))
                            {
                                //If user exist take his GUID
                                userGuid = allUsers.Users[i].Guid;
                                break;
                            }
                        }
                        //If user not exist create him
                        if (userGuid == null)
                        {
                            //Create User info object
                            Groupdocs.Api.Contract.UserInfo user = new Groupdocs.Api.Contract.UserInfo();
                            //Create Role info object
                            Groupdocs.Api.Contract.RoleInfo roleInfo = new Groupdocs.Api.Contract.RoleInfo();
                            //Create array of roles.
                            Groupdocs.Api.Contract.RoleInfo[] roleList = new Groupdocs.Api.Contract.RoleInfo[1];
                            //Set user role Id. Can be: 1 -  SysAdmin, 2 - Admin, 3 - User, 4 - Guest
                            roleInfo.Id = 3;
                            //Set user role name. Can be: SysAdmin, Admin, User, Guest
                            roleInfo.Name = "User";
                            roleList[0] = roleInfo;
                            //Set nick name as entered first name
                            user.NickName = firstName;
                            //Set first name as entered first name
                            user.FirstName = firstName;
                            //Set last name as entered last name
                            user.LastName = lastName;
                            user.Roles = roleList;
                            //Set email as entered email
                            user.PrimaryEmail = email;
                            //Creating of new User user - object with new user info
                            Groupdocs.Api.Contract.UserIdentity newUser = service.UpdateAccountUser(user);

                            // If request return's null return error to the template
                            if (newUser.Guid != null)
                            {
                                //Get GUID of new user
                                userGuid = newUser.Guid;
                            }
                            else
                            {
                                message = "Failed to create new user";
                                result.Add("error", message);
                                return View("Sample38", null, result);
                            }
                        }
                        //Get all collaborators for document
                        Groupdocs.Api.Contract.Annotation.GetCollaboratorsResult getCollaborators = service.GetAnnotationCollaborators(fileGuId);
                        if (getCollaborators != null)
                        {
                            //Check is user allready in collaborators
                            for (int n = 0; n < getCollaborators.Collaborators.Length; n++)
                            {
                                //If user allready in collaborators sign iframe URL with his Client ID
                                if (getCollaborators.Collaborators[n].FirstName.Equals(firstName))
                                {
                                    iframe = iframe + "?uid=" + userGuid;
                                    iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                                    break;
                                }
                            }
                            //If user is not in collaborators add him as collaborator
                            if (iframe.Contains("?uid="))
                            {
                                result.Add("iframe", iframe);
                                return View("Sample38", null, result);
                            }
                            else
                            {
                                // Make request to set annotation collaborators
                                Groupdocs.Api.Contract.Annotation.SetCollaboratorsResult collaborate = service.SetAnnotationCollaborators(fileGuId, collaborators);
                                // Check is request return data
                                if (collaborate != null)
                                {
                                    //Sign iframe URL
                                    iframe = iframe + "?uid=" + userGuid;
                                    iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                                    // Return primary email to the template
                                    result.Add("collaborator", collaborate.Collaborators[0].PrimaryEmail);
                                    //Return iframe URl to the template
                                    result.Add("iframe", iframe);
                                    return View("Sample38", null, result);
                                }
                                // If request return's null return error to the template
                                else
                                {
                                    message = "Failed to add new collaborator";
                                    result.Add("error", message);
                                    return View("Sample38", null, result);
                                }
                            }
                        }
                        else
                        {
                            message = "Faild to get all collaborators for document";
                            result.Add("error", message);
                            return View("Sample38", null, result);
                        }
                    }
                    else
                    {
                        message = "Faild to get all users from account";
                        result.Add("error", message);
                        return View("Sample38", null, result);
                    }

                }
            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample38");
            }
        }
        public ActionResult Sample23()
        {
            // 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 fileId = Request.Form["fileId"];
                String url = Request.Form["url"];
                var file = Request.Files["file"];
                String guid = "";
                String basePath = Request.Form["basePath"];
                // Set entered data to the results list
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);
                result.Add("basePath", basePath);
                String message = null;
                String iframe = "";
                // Check is all needed fields are entered
                if (clientId == null || privateKey == null)
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample23", null, result);
                }
                else
                {

                    if (basePath.Equals(""))
                    {
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    // Create service for Groupdocs account
                    GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey);

                    //if URL to web file was provided - upload the file from Web and get it's GUID
                    if (!url.Equals(""))
                    {

                        //Make request to upload file from entered Url
                        String uploadWeb = service.UploadUrl(url);
                        if (uploadWeb != null)
                        {
                            //If file uploaded return his GuId
                            guid = uploadWeb;

                        }
                        //If file wasn't uploaded return error
                        else
                        {
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample23", null, result);
                        }

                    }
                    //if file was uploaded locally - upload the file and get it's GUID
                    if (!file.FileName.Equals(""))
                    {

                        //Upload local file
                        Groupdocs.Api.Contract.UploadRequestResult upload = service.UploadFile(file.FileName, String.Empty, file.InputStream);
                        if (upload.Guid != null)
                        {
                            //If file uploaded return his guid
                            guid = upload.Guid;

                        }
                        else
                        {
                            //If file wasn't uploaded return error
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample23", null, result);
                        }

                    }
                    if (!fileId.Equals(""))
                    {
                        guid = fileId;

                    }
                    //Make request to get document pages as images
                    Groupdocs.Api.Contract.ViewDocumentResult pageImage = service.ViewDocument(guid, 0, null, null, 100, false);
                    if (pageImage.Guid != null)
                    {
                        // Generate Embed viewer url with entered file id
                        if (basePath.Equals("https://api.groupdocs.com/v2.0"))
                        {
                            iframe = "https://apps.groupdocs.com/document-viewer/embed/" + pageImage.Guid;
                        }
                        if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0"))
                        {
                            iframe = "https://dev-apps-groupdocs.dynabic.com/document-viewer/embed/" + pageImage.Guid;
                        }
                        if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0"))
                        {
                            iframe = "https://stage-api-groupdocs.dynabic.com/document-viewer/embed/" + pageImage.Guid;
                        }
                        if (basePath.Equals("https://realtime-api.groupdocs.com/v2.0"))
                        {
                            iframe = "https://realtime-apps.groupdocs.com/document-viewer/embed/" + pageImage.Guid;
                        }
                        iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                        result.Add("iframe", iframe);
                        //Return page images GuId to the template
                        result.Add("fileId", pageImage.Guid);
                        return View("Sample23", null, result);
                    }
                    //If request return empty GuId set error for template
                    else
                    {
                        result.Add("error", "Something wrong with entered data");
                        return View("Sample23", null, result);
                    }

                }

            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample23");
            }
        }
        public ActionResult Sample41()
        {
            // 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[] emailsArray = Request.Form["email[]"].Split(',');
                String[] emails = new String[emailsArray.Length - 1];
                String basePath = Request.Form["basePath"];
                String fileId = Request.Form["fileId"];
                String url = Request.Form["url"];
                var file = Request.Files["file"];
                String callback = Request.Form["callbackUrl"];
                String fileGuId = "";
                // Set entered data to the results list
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);
                String message = null;
                // Check is all needed fields are entered
                if (clientId == null || privateKey == null || emails == null)
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample41", null, result);
                }
                else
                {
                    //Add all emails to array
                    if (emailsArray[emailsArray.Length - 1].Equals(""))
                    {
                        for (int n = 0; n < emailsArray.Length - 1; n++)
                        {
                            emails[n] = emailsArray[n];
                        }
                    }
                    else
                    {
                        emails = new String[emailsArray.Length];
                        for (int n = 0; n < emailsArray.Length; n++)
                        {
                            emails[n] = emailsArray[n];
                        }
                    }
                    //path to settings file - temporary save clientId and apiKey like to property file
                    create_info_file(clientId, privateKey, "");
                    //remove temporary file with callback info
                    String callbackInfo = AppDomain.CurrentDomain.BaseDirectory + "callback_info.txt";
                    if (System.IO.File.Exists(callbackInfo))
                    {
                        System.IO.File.Delete(callbackInfo);
                    }
                    //Set base path for API if it's not entered by user
                    if (basePath == "")
                    {
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    // 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("Sample41", 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("Sample41", null, result);
                            }
                        }
                        //If file wasn't uploaded return error
                        else
                        {
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample41", null, result);
                        }
                    }
                    //Check is file guid entered
                    if (!fileId.Equals(""))
                    {
                        fileGuId = fileId;
                    }
                    result.Add("fileId", fileGuId);
                    // Generate Embed Annotation url with file GUID
                    string iframe = null;
                    if (callback == null)
                    {
                        callback = "";
                    }
                    result.Add("callbackUrl", callback);
                    //Set file sesion callback - will be trigered when user add, remove or edit commit for annotation
                    Groupdocs.Api.Contract.Annotation.SetSessionCallbackUrlResult setCallback = service.SetSessionCallbackUrl(fileGuId, callback);
                    //Generate iframe URL for iframe
                    if (basePath.Equals("https://api.groupdocs.com/v2.0"))
                    {
                        iframe = "https://apps.groupdocs.com/document-annotation2/embed/" + fileGuId;
                    }
                    if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0"))
                    {
                        iframe = "https://dev-apps-groupdocs.dynabic.com/document-annotation2/embed/" + fileGuId;
                    }
                    if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0"))
                    {
                        iframe = "https://stage-apps-groupdocs.dynabic.com/document-annotation2/embed/" + fileGuId;
                    }
                    if (basePath.Equals("https://realtime-api.groupdocs.com/v2.0"))
                    {
                        iframe = "https://realtime-apps.groupdocs.com/document-annotation2/embed/" + fileGuId;
                    }
                    //Prepare variables
                    string userGuid = null;
                    String email = String.Empty;
                    String[] Email = new String[emails.Length];
                    int counter = 0;
                    //Get all users from account
                    Groupdocs.Api.Contract.GetAccountUsersResult allUsers = service.GetAccountUsers();
                    if (allUsers != null)
                    {
                        //Loop for all users
                        foreach (var item in emails)
                        {
                            //Get current user email
                            email = item;
                            //Add all entered by user emails to emails array to collaborators
                            for (int m = 0; m < emails.Length; m++)
                            {
                                Email[m] = emails[m];
                            }
                            //Loop to get user GUID if user with same email already exist
                            for (int i = 0; i < allUsers.Users.Length; i++)
                            {
                                userGuid = string.Empty;
                                if (email.Equals(allUsers.Users[i].PrimaryEmail))
                                {
                                    userGuid = allUsers.Users[i].Guid;
                                    break;
                                }
                            }
                            //If user not exist create it
                            if (userGuid == null || userGuid == string.Empty)
                            {
                                //Create new user
                                Groupdocs.Api.Contract.UserInfo user = new Groupdocs.Api.Contract.UserInfo();
                                Groupdocs.Api.Contract.RoleInfo roleInfo = new Groupdocs.Api.Contract.RoleInfo();
                                Groupdocs.Api.Contract.RoleInfo[] roleList = new Groupdocs.Api.Contract.RoleInfo[1];
                                roleInfo.Id = 3;
                                roleInfo.Name = "User";
                                roleList[0] = roleInfo;
                                user.FirstName = email;
                                user.LastName = email;
                                user.Roles = roleList;
                                user.PrimaryEmail = email;
                                //Add new user to account
                                Groupdocs.Api.Contract.UserIdentity newUser = service.UpdateAccountUser(user);
                                if (newUser.Guid != null)
                                {
                                    userGuid = newUser.Guid;
                                }
                                else
                                {
                                    message = "Update account user is failed";
                                    result.Add("error", message);
                                    return View("Sample41", null, result);
                                }
                            }
                            System.Threading.Thread.Sleep(2000);
                            //Get all collaborators for selected document
                            Groupdocs.Api.Contract.Annotation.GetCollaboratorsResult getCollaborators = service.GetAnnotationCollaborators(fileGuId);
                            if (getCollaborators != null)
                            {
                                //Check if user already collaborator of the document
                                String urlParameter = null;
                                for (int n = 0; n < getCollaborators.Collaborators.Length; n++)
                                {
                                    //If user is collaborator add his GUID to the URl
                                    if (getCollaborators.Collaborators[n].PrimaryEmail.Equals(email))
                                    {
                                        iframe = iframe + "?uid=" + userGuid;
                                        urlParameter = userGuid;
                                        iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);

                                        break;
                                    }

                                }
                                //If this parameters is null that means that user not a collaborator
                                if (iframe.Contains("?uid=") && urlParameter != null)
                                {
                                    if (counter == 0)
                                    {
                                        counter = 1;
                                        result.Add("iframe", iframe);
                                    }
                                }
                                else
                                {
                                    if (counter == 0)
                                    {
                                        //Add user to collaborators of the document
                                        Groupdocs.Api.Contract.Annotation.SetCollaboratorsResult collaborate = service.SetAnnotationCollaborators(fileGuId, Email);
                                        if (collaborate != null)
                                        {
                                            counter = 1;
                                            iframe = iframe + "?uid=" + userGuid;
                                            iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                                            result.Add("iframe", iframe);
                                        }
                                        else
                                        {
                                            result.Add("error", "Set annotation colaborator is failed");
                                            return View("Sample41", null, result);
                                        }
                                    }
                                }

                            }
                            else
                            {
                                result.Add("error", "Get annotation colaborators is failed");
                                return View("Sample41", null, result);
                            }
                        }
                        return View("Sample41", null, result);
                    }
                    else
                    {
                        result.Add("error", "Faild to get all users from account");
                        return View("Sample41", null, result);
                    }
                }
            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample41");
            }
        }
        public ActionResult Sample24()
        {
            // 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 url = Request.Form["url"];
                // Set entered data to the results list
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);
                result.Add("url", url);
                String message = null;
                String iframe = "";
                // Check is all needed fields are entered
                if (clientId == null || privateKey == null || url == null)
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample24", null, result);
                }
                else
                {

                    String basePath = Request.Form["basePath"];
                    //Check is base path entered
                    if (basePath.Equals(""))
                    {
                        //If base path empty set base path to the dev server
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    result.Add("basePath", basePath);
                    // Create service for Groupdocs account
                    GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey);
                    //Make request to upload file from entered Url
                    String guid = service.UploadUrl(url);
                    if (guid != null)
                    {
                        // Generate Embed viewer url with entered file id
                        if (basePath.Equals("https://api.groupdocs.com/v2.0"))
                        {
                            iframe = "https://apps.groupdocs.com/document-viewer/embed/" + guid;
                        }
                        if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0"))
                        {
                            iframe = "https://dev-apps-groupdocs.dynabic.com/document-viewer/embed/" + guid;
                        }
                        if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0"))
                        {
                            iframe = "https://stage-api-groupdocs.dynabic.com/document-viewer/embed/" + guid;
                        }
                        if (basePath.Equals("https://realtime-api.groupdocs.com/v2.0"))
                        {
                            iframe = "https://realtime-apps.groupdocs.com/document-viewer/embed/" + guid;
                        }
                        iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                        result.Add("iframe", iframe);
                        //If file uploaded return his GuId to template
                        result.Add("fileId", guid);
                        return View("Sample24", null, result);
                    }
                    //If file wasn't uploaded return error
                    else
                    {
                        result.Add("error", "Something wrong with entered data");
                        return View("Sample24", null, result);
                    }

                }

            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample24");
            }
        }
        public ActionResult Sample43()
        {
            // 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 fileId = Request.Form["fileId"];
                String url = Request.Form["url"];
                var file = Request.Files["file"];
                String guid = "";
                String basePath = Request.Form["basePath"];
                // Set entered data to the results list
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);
                result.Add("basePath", basePath);
                String message = null;
                String iframe = "";
                // Check is all needed fields are entered
                if (clientId == null || privateKey == null)
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample43", null, result);
                }
                else
                {

                    if (basePath.Equals(""))
                    {
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    // Create service for Groupdocs account
                    GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey);

                    //if URL to web file was provided - upload the file from Web and get it's GUID
                    if (!url.Equals(""))
                    {

                        //Make request to upload file from entered Url
                        String uploadWeb = service.UploadUrl(url);
                        if (uploadWeb != null)
                        {
                            //If file uploaded return his GuId
                            guid = uploadWeb;

                        }
                        //If file wasn't uploaded return error
                        else
                        {
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample43", null, result);
                        }

                    }
                    //if file was uploaded locally - upload the file and get it's GUID
                    if (!file.FileName.Equals(""))
                    {

                        //Upload local file
                        Groupdocs.Api.Contract.UploadRequestResult upload = service.UploadFile(file.FileName, String.Empty, file.InputStream);
                        if (upload.Guid != null)
                        {
                            //If file uploaded return his guid
                            guid = upload.Guid;

                        }
                        else
                        {
                            //If file wasn't uploaded return error
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample43", null, result);
                        }

                    }
                    if (fileId != null)
                    {
                        guid = fileId;

                    }
                    //Create list of file types for converting
                    System.Collections.Generic.List<Groupdocs.Common.FileType> fileType = new System.Collections.Generic.List<Groupdocs.Common.FileType>();
                    //Add PDF to list of file types
                    fileType.Add(Groupdocs.Common.FileType.Doc);
                    Random rand = new Random();
                    //Create job which will add line numeration to the document
                    Groupdocs.Api.Contract.CreateJobResult createJob = service.CreateJob(Groupdocs.Common.JobActions.NumberLines | Groupdocs.Common.JobActions.Convert, fileType.ToArray(), false, false, "test" + rand.Next());
                    if (!createJob.JobGuid.Equals(""))
                    {

                        //Add document to the new job
                        Boolean addJobDocument = service.AddJobDocument(createJob.JobGuid, guid, "", false);
                        if (addJobDocument.Equals(false))
                        {
                            message = "Add document to job is failed";
                            result.Add("error", message);
                            return View("Sample43", null, result);
                        }
                        else
                        {

                            //Run job
                            Boolean schedule = service.ScheduleJob(createJob.JobId);
                            System.Threading.Thread.Sleep(5000);
                            //Get documents from job
                            int counter = 5;
                            for (int i = 0; i < counter; i++)
                            {
                                Groupdocs.Api.Contract.GetJobDocumentsResult getDocument = service.GetJobDocuments(createJob.JobId);
                                if (!getDocument.JobStatus.ToString().Equals("Archived"))
                                {
                                    System.Threading.Thread.Sleep(5000);
                                }
                                else
                                {
                                    guid = getDocument.Inputs[0].Outputs[0].Guid;
                                    break;
                                }
                            }
                            if (String.IsNullOrEmpty(guid))
                            {
                                message = "Get document from job is failed or job is Draft";
                                result.Add("error", message);
                                return View("Sample43", null, result);
                            }
                            else
                            {
                                // Generate Embed viewer url with entered file id
                                if (basePath.Equals("https://api.groupdocs.com/v2.0"))
                                {
                                    iframe = "https://apps.groupdocs.com/document-viewer/embed/" + guid;
                                }
                                if (basePath.Equals("https://dev-api-groupdocs.dynabic.com/v2.0"))
                                {
                                    iframe = "https://dev-apps-groupdocs.dynabic.com/document-viewer/embed/" + guid;
                                }
                                if (basePath.Equals("https://stage-api-groupdocs.dynabic.com/v2.0"))
                                {
                                    iframe = "https://stage-apps-groupdocs.dynabic.com/document-viewer/embed/" + guid;
                                }
                                if (basePath.Equals("https://realtime-api-groupdocs.dynabic.com/v2.0"))
                                {
                                    iframe = "https://realtime-apps-groupdocs.dynabic.com/document-viewer/embed/" + guid;
                                }
                                iframe = Groupdocs.Security.UrlSignature.Sign(iframe, privateKey);
                                result.Add("iframe", iframe);
                                result.Add("fileId", guid);
                                return View("Sample43", null, result);
                            }
                        }
                    }
                    else
                    {
                        result.Add("error", "Create job is failed");
                        return View("Sample43", null, result);
                    }
                }
            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample43");
            }
        }
        public ActionResult Sample08()
        {
            // 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 pageNumber = Request.Form["pageNumber"];
                result.Add("clientId", clientId);
                result.Add("privateKey", privateKey);
                result.Add("pageNumber", pageNumber);
                String message = null;
                // Check is all needed fields are entered
                if (clientId == null || privateKey == null || fileId == null)
                {
                    // If not all fields entered send error message
                    message = "Please enter all parameters";
                    result.Add("error", message);
                    return View("Sample08", null, result);
                }
                else
                {
                    if (basePath == "")
                    {
                        basePath = "https://api.groupdocs.com/v2.0";
                    }
                    // 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("Sample08", 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("Sample08", null, result);
                            }
                        }
                        //If file wasn't uploaded return error
                        else
                        {
                            result.Add("error", "Something wrong with entered data");
                            return View("Sample08", 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("Sample08", null, result);
                        }
                    }
                    // Make request to get page image url
                    String[] pageUrl = service.GetDocumentPagesImageUrls(fileGuId, "600x750", String.Empty, Int32.Parse(pageNumber), 1, 100, false);
                    // Check if url is not null
                    if (pageUrl != null)
                    {
                        // Redirect to template with receive URL
                        result.Add("url", pageUrl[0]);
                        return View("Sample08", null, result);
                    }
                    // Else return error to the template
                    else
                    {
                        message = "Something is wrong with your data";
                        result.Add("error", message);
                        return View("Sample08", null, result);
                    }

                }

            }
            // If data not posted return to template for filling of necessary fields
            else
            {
                return View("Sample08");
            }
        }