public async Task <(WorkerResult, RefreshAction)> Execute(CopyTrajectoryJob job) { var(trajectory, targetWellbore) = await FetchData(job); var copyTrajectoryQuery = CreateCopyTrajectoryQuery(trajectory, targetWellbore); var copyLogResult = await witsmlClient.AddToStoreAsync(copyTrajectoryQuery); if (!copyLogResult.IsSuccessful) { var errorMessage = "Failed to copy trajectory."; Log.Error( "{ErrorMessage} Source: UidWell: {SourceWellUid}, UidWellbore: {SourceWellboreUid}, Uid: {SourceTrajectoryUid}. " + "Target: UidWell: {TargetWellUid}, UidWellbore: {TargetWellboreUid}.", errorMessage, job.Source.WellUid, job.Source.WellboreUid, job.Source.TrajectoryUid, job.Target.WellUid, job.Target.WellboreUid); return(new WorkerResult(witsmlClient.GetServerHostname(), false, errorMessage, copyLogResult.Reason), null); } Log.Information("{JobType} - Job successful. Trajectory copied", GetType().Name); var refreshAction = new RefreshWellbore(witsmlClient.GetServerHostname(), job.Target.WellUid, job.Target.WellboreUid, RefreshType.Update); var workerResult = new WorkerResult(witsmlClient.GetServerHostname(), true, $"Trajectory {trajectory.Name} copied to: {targetWellbore.Name}"); return(workerResult, refreshAction); }
private async Task <Tuple <WitsmlTrajectory, WitsmlWellbore> > FetchData(CopyTrajectoryJob job) { var trajectoryQuery = GetTrajectory(witsmlSourceClient, job.Source); var wellboreQuery = GetWellbore(witsmlClient, job.Target); await Task.WhenAll(trajectoryQuery, wellboreQuery); var log = await trajectoryQuery; var targetWellbore = await wellboreQuery; return(Tuple.Create(log, targetWellbore)); }
public async Task CopyTrajectory() { var job = new CopyTrajectoryJob { Source = new TrajectoryReference { WellUid = "4d287b3e-9d9c-472a-9b82-d667d9ea1bec", WellboreUid = "a2d2854b-3880-4058-876b-29b14ed7c917", TrajectoryUid = "1YJFL7" }, Target = new WellboreReference { WellUid = "fa53698b-0a19-4f02-bca5-001f5c31c0ca", WellboreUid = "70507fdf-4b01-4d62-a642-5f154c57440d" } }; await worker.Execute(job); }