/// <summary> /// TODOTR: document /// </summary> /// <param name="context">TODOTR: document context</param> protected override void OnEndSendTranslationJob(ITranslationJobContext context) { GLExchange projectDirectorClient; if (context.TryGetItem <GLExchange>(CurrentClientKey, out projectDirectorClient)) { bool isAtLeastOneDocumentUploaded; if (context.TryGetItem <bool>(DocumentUploadedKey, out isAtLeastOneDocumentUploaded) && isAtLeastOneDocumentUploaded) { var submissionTicket = projectDirectorClient.getSubmissionTicket(); IStartProjectTaskEvent startProjEvent; if (context.TryGetItem <IStartProjectTaskEvent>(StartProjectEventKey, out startProjEvent)) { projectDirectorClient.startSubmission(); startProjEvent.Acknowledge(submissionTicket); } } context.Items.Remove(CurrentClientKey); } base.OnEndSendTranslationJob(context); }
/// <inheritdoc /> protected override bool ProcessSendTranslationEvent(ISendTranslationTaskEvent evnt, ITranslationJobContext context, out string translationId) { GLExchange projectDirectorClient; if (!context.TryGetItem <GLExchange>(CurrentClientKey, out projectDirectorClient)) { var submissionTicket = evnt.ProjectExternalId; projectDirectorClient = new GLExchange(this.ProjectDirectorConfig); if (!string.IsNullOrEmpty(submissionTicket)) { projectDirectorClient.getSubmission(submissionTicket); } context.Items[CurrentClientKey] = projectDirectorClient; } var translationsComDocument = new Document { fileformat = TranslationsComConnector.FileFormat, // Setting the translation id as the name of the document. name = string.Format("{0}.xlf", evnt.TranslationId), sourceLanguage = evnt.ActualSourceLanguage, targetLanguages = new string[] { evnt.TargetLanguage } }; var xliffFile = evnt.GetXliffFile(); this.ProcessXliffFile(xliffFile); var root = new XliffRoot(); root.Files.Add(xliffFile); var xliffSerializer = new XmlSerializer(typeof(XliffRoot)); using (var xliffStream = new MemoryStream()) { xliffSerializer.Serialize(xliffStream, root); xliffStream.Seek(0, SeekOrigin.Begin); translationsComDocument.setDataFromMemoryStream(xliffStream); projectDirectorClient.uploadTranslatable(translationsComDocument); } // Setting a Boolean value indicating that we successfully uploaded at least one document in the current submission. context.Items[DocumentUploadedKey] = true; translationId = translationsComDocument.name; return(false); }
/// <inheritdoc /> protected override bool OnSendTranslationError(Exception err, ISendTranslationTaskEvent evnt, ITranslationJobContext context) { return(false); }
/// <summary> /// TODOTR: document /// </summary> /// <param name="evnt">TODOTR: document event</param> /// <param name="context">TODOTR: document context</param> /// <param name="projectId">TODOTR: document projectId</param> /// <returns>TODOTR: document returns</returns> protected override bool ProcessStartProjectEvent(IStartProjectTaskEvent evnt, ITranslationJobContext context, out string projectId) { projectId = string.Empty; var projectDirectorClient = new GLExchange(this.ProjectDirectorConfig); var project = projectDirectorClient.getProject(this.TranslationsComProjectShortCode); Submission submission = new Submission(); submission.name = string.Format("{0}{1}-UCF-{2}", this.SubmissionNamePrefix, evnt.ProjectName, DateTime.Now.ToString("yyyy-MM-dd-hh-mm")); submission.project = project; submission.dueDate = evnt.DueDate; projectDirectorClient.initSubmission(submission); context.Items[CurrentClientKey] = projectDirectorClient; context.Items[StartProjectEventKey] = evnt; return(false); }