/// <summary> /// Updates a collaborator display color /// </summary> /// <param name="fileId">The document path to update the collaborator display color for</param> /// <param name="userName">The collaborator name</param> /// <param name="color">The display color</param> /// <returns>An instance of an object containing the collaborator's details</returns> public ReviewerInfo SetCollaboratorColor(string fileId, string userName, uint color) { var document = _documentSvc.GetDocument(fileId); var collaborator = _annotator.GetDocumentCollaborator(document.Id, userName); collaborator.Color = color; var result = _annotator.UpdateCollaborator(document.Id, collaborator); var reviewer = result.Collaborators.FirstOrDefault(c => c.PrimaryEmail == userName); _annotationBroadcaster.SetReviewersColors(result.Collaborators.Select(c => c.Guid).ToList(), null, _mapper.Map <ReviewerInfo[]>(result.Collaborators)); return(_mapper.Map <ReviewerInfo>(reviewer)); }
/// <summary> /// Manages collaborator rights /// </summary> public static void ManageCollaboratorRights() { try { //ExStart:ManageCollaboratorRights // Create instance of annotator. AnnotationConfig cfg = CommonUtilities.GetConfiguration(); //Create annotation handler AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); IUserDataHandler userRepository = annotator.GetUserDataHandler(); IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); if (!Directory.Exists(cfg.StoragePath)) { Directory.CreateDirectory(cfg.StoragePath); } // Create owner. var johnOwner = userRepository.GetUserByEmail("*****@*****.**"); if (johnOwner == null) { userRepository.Add(new User { FirstName = "John", LastName = "Doe", Email = "*****@*****.**" }); johnOwner = userRepository.GetUserByEmail("*****@*****.**"); } // Create document data object in storage var document = documentRepository.GetDocument("Document.pdf"); long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf", DocumentType.Pdf, johnOwner.Id); // Create reviewer. var reviewerInfo = new ReviewerInfo { PrimaryEmail = "*****@*****.**", FirstName = "Judy", LastName = "Doe", // Can only get view annotations AccessRights = AnnotationReviewerRights.CanView }; // Add collaboorator to the document. If user with Email equals to reviewers PrimaryEmail is absent it will be created. var addCollaboratorResult = annotator.AddCollaborator(documentId, reviewerInfo); // Get document collaborators var getCollaboratorsResult = annotator.GetCollaborators(documentId); var judy = userRepository.GetUserByEmail("*****@*****.**"); // Create annotation object AnnotationInfo pointAnnotation = new AnnotationInfo { AnnotationPosition = new Point(852.0, 81.0), Box = new Rectangle(212f, 81f, 142f, 0.0f), Type = AnnotationType.Point, PageNumber = 0, CreatorName = "Anonym A." }; // John try to add annotations. User is owner of the document. var johnResult = annotator.CreateAnnotation(pointAnnotation, documentId, johnOwner.Id); // Judy try to add annotations try { var judyResult = annotator.CreateAnnotation(pointAnnotation, documentId, judy.Id); } //Get exceptions, because user can only view annotations catch (AnnotatorException e) { Console.Write(e.Message); Console.ReadKey(); } // Allow Judy create annotations. reviewerInfo.AccessRights = AnnotationReviewerRights.CanAnnotate; var updateCollaboratorResult = annotator.UpdateCollaborator(documentId, reviewerInfo); // Now user can add annotations var judyResultCanAnnotate = annotator.CreateAnnotation(pointAnnotation, documentId, judy.Id); //ExEnd:ManageCollaboratorRights } catch (System.Exception exp) { Console.WriteLine(exp.Message); } }
/// <summary> /// Updates document collaborator /// </summary> public static void UpdateCollaborator() { try { //ExStart:UpdateCollaborator // Create instance of annotator. AnnotationConfig cfg = CommonUtilities.GetConfiguration(); //Create annotation handler AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); IUserDataHandler userRepository = annotator.GetUserDataHandler(); IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); if (!Directory.Exists(cfg.StoragePath)) { Directory.CreateDirectory(cfg.StoragePath); } // Create a user that will be an owner. // Get user from the storage var owner = userRepository.GetUserByEmail("*****@*****.**"); // If user doesn’t exist in the storage then create it. if (owner == null) { userRepository.Add(new User { FirstName = "John", LastName = "Doe", Email = "*****@*****.**" }); owner = userRepository.GetUserByEmail("*****@*****.**"); } // Get document data object in the storage var document = documentRepository.GetDocument("Document.pdf"); // If document already created or it hasn’t owner then delete document if (document != null && document.OwnerId != owner.Id) { documentRepository.Remove(document); document = null; } // Get document id if document already created or create new document long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf", DocumentType.Pdf, owner.Id); // Create reviewer. var reviewerInfo = new ReviewerInfo { PrimaryEmail = "*****@*****.**", //user email, unique identifier FirstName = "Judy", LastName = "Doe", AccessRights = AnnotationReviewerRights.All }; // Update collaborator. Only color and access rights will be updated. reviewerInfo.Color = 3355443; var updateCollaboratorResult = annotator.UpdateCollaborator(documentId, reviewerInfo); //ExEnd:UpdateCollaborator } catch (System.Exception exp) { Console.WriteLine(exp.Message); } }