public static void OnLogWarranty(this Job j, DiscoDataContext Database, string FaultDescription, string ManualProviderName, string ManualProviderReference, OrganisationAddress Address, User TechUser) { if (!j.CanLogWarranty()) throw new InvalidOperationException("Log Warranty was Denied"); j.JobMetaWarranty.ExternalLoggedDate = DateTime.Now; j.JobMetaWarranty.ExternalName = ManualProviderName; if (ManualProviderReference != null && ManualProviderReference.Length > 100) j.JobMetaWarranty.ExternalReference = ManualProviderReference.Substring(0, 100); else j.JobMetaWarranty.ExternalReference = ManualProviderReference; // Write Log JobLog jobLog = new JobLog() { JobId = j.Id, TechUserId = TechUser.UserId, Timestamp = DateTime.Now, Comments = string.Format("# Manual Warranty Claim Submitted\r\nProvider: **{0}**\r\nAddress: **{1}**\r\nReference: **{2}**\r\n___\r\n```{3}```", ManualProviderName, Address.Name, ManualProviderReference ?? "<none>", FaultDescription) }; Database.JobLogs.Add(jobLog); }
public static void OnLogWarranty(this Job j, DiscoDataContext Database, string FaultDescription, List<JobAttachment> SendAttachments, PluginFeatureManifest WarrantyProviderDefinition, OrganisationAddress Address, User TechUser, Dictionary<string, string> WarrantyProviderProperties) { if (!j.CanLogWarranty()) throw new InvalidOperationException("Log Warranty was Denied"); PublishJobResult publishJobResult = null; using (WarrantyProviderFeature WarrantyProvider = WarrantyProviderDefinition.CreateInstance<WarrantyProviderFeature>()) { if (SendAttachments != null && SendAttachments.Count > 0) { publishJobResult = DiscoServicesJobs.Publish( Database, j, TechUser, WarrantyProvider.WarrantyProviderId, null, FaultDescription, SendAttachments, AttachmentDataStoreExtensions.RepositoryFilename); if (!publishJobResult.Success) throw new Exception(string.Format("Disco ICT Online Services failed with the following message: ", publishJobResult.ErrorMessage)); if (string.IsNullOrWhiteSpace(FaultDescription)) FaultDescription = publishJobResult.PublishMessage; else FaultDescription = string.Concat(FaultDescription, Environment.NewLine, "___", Environment.NewLine, publishJobResult.PublishMessage); } string submitDescription; if (string.IsNullOrWhiteSpace(FaultDescription)) submitDescription = j.GenerateFaultDescriptionFooter(Database, WarrantyProviderDefinition); else submitDescription = string.Concat(FaultDescription, Environment.NewLine, Environment.NewLine, j.GenerateFaultDescriptionFooter(Database, WarrantyProviderDefinition)); string providerRef = WarrantyProvider.SubmitJob(Database, j, Address, TechUser, submitDescription, WarrantyProviderProperties); j.JobMetaWarranty.ExternalLoggedDate = DateTime.Now; j.JobMetaWarranty.ExternalName = WarrantyProvider.WarrantyProviderId; if (providerRef != null && providerRef.Length > 100) j.JobMetaWarranty.ExternalReference = providerRef.Substring(0, 100); else j.JobMetaWarranty.ExternalReference = providerRef; // Write Log JobLog jobLog = new JobLog() { JobId = j.Id, TechUserId = TechUser.UserId, Timestamp = DateTime.Now, Comments = string.Format("# Warranty Claim Submitted\r\nProvider: **{0}**\r\nAddress: **{1}**\r\nReference: **{2}**\r\n___\r\n```{3}```", WarrantyProvider.Manifest.Name, Address.Name, providerRef, FaultDescription) }; Database.JobLogs.Add(jobLog); if (publishJobResult != null) { try { DiscoServicesJobs.UpdateRecipientReference(Database, j, publishJobResult.Id, publishJobResult.Secret, j.JobMetaWarranty.ExternalReference); } catch (Exception ex) { ex.ToExceptionless().Submit(); } // Ignore Errors as this is not completely necessary } } }