This simple script shows how detect a file being added and then send it to a Job Reviewer - the Job Reviewer in this case is set based on an Attribute on the parent job.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Contracts.Data; namespace ScriptExample { /// <summary> /// A script to send an email to the Job Reviewer after a file is added /// </summary> public class Script : SynergyServerScripting.ServerEventScript { /// <summary> /// Execute after a file is added - find the project reviewer and send them email /// </summary> /// <param name="file_id">the id of the new file</param> /// <param name="change_data">information about the file change</param> /// <param name="database">the database connection</param> /// <param name="user_id">the id of the user who made the change</param> /// <param name="client">the client comms channel</param> /// <param name="client_event_id">the client event</param> /// <returns>the operation response</returns> public override Contracts.Responses.OperationResponse OnAfterFileAdd(Contracts.Data.EntityID file_id, Contracts.Data.FileChangeData change_data, Contracts.Databases.IDatabase database, Contracts.Data.EntityID user_id, Contracts.ServiceContracts.IClient client, long client_event_id) { // what project did this belong to? EntityID project_id = SynergyServerScripting.Entities.File.GetFileProject(file_id, database); if (project_id == null) return Contracts.Responses.OperationResponse.Error(client_event_id, "Unable to find project!"); // find the Project Reviewer attribute AttributeValue value = SynergyServerScripting.Entities.Project.GetProjectAttributeValue(project_id, "Job Reviewer", database); if (value == null) return Contracts.Responses.OperationResponse.Error(client_event_id, "Project reviewer not set!"); object attrib_val = value.Value; ContactInfo reviewer = null; if (value is AttributeContactValue) { reviewer = attrib_val as ContactInfo; } if (reviewer == null) return Contracts.Responses.OperationResponse.Error(client_event_id, "Job reviewer not set!"); // get the user info object for our current user ContactInfo contact = SynergyServerScripting.Entities.Contact.GetContactInfo(user_id, false, database); // get the file info for the new file FileInfo file = SynergyServerScripting.Entities.File.GetFileInfo(file_id, false, database); // prepare and send an email List <ContactInfo> recipients = new List<ContactInfo>(); recipients.Add(reviewer); var email_template = new EmailTemplate(EmailTemplateCategory.Custom, "FileAdded", "A new file has been added", "A new file (" + file.path + ") has been added!"); SynergyServerScripting.Entities.Emailer.SendEmail(email_template, recipients, new List<ContactInfo>(), false); return new Contracts.Responses.OperationResponse(client_event_id); } } }
This language is not supported or no code example is available.