private static async Task <WitsmlTrajectory> GetTrajectory(IWitsmlClient client, TrajectoryReference trajectoryReference) { var trajectoryQuery = TrajectoryQueries.QueryById(trajectoryReference.WellUid, trajectoryReference.WellboreUid, trajectoryReference.TrajectoryUid); var result = await client.GetFromStoreAsync(trajectoryQuery, OptionsIn.All); return(!result.Trajectories.Any() ? null : result.Trajectories.First()); }
public override async Task <(WorkerResult, RefreshAction)> Execute(CopyTrajectoryJob job) { var(trajectory, targetWellbore) = await FetchData(job); var trajectoryToCopy = TrajectoryQueries.CopyWitsmlTrajectory(trajectory, targetWellbore); var copyLogResult = await witsmlClient.AddToStoreAsync(trajectoryToCopy); 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); }
public async Task CreateTrajectory_BasedOnExisting() { const string wellUid = ""; const string wellboreUid = ""; const string trajectoryUid = ""; var queryExisting = TrajectoryQueries.QueryById(wellUid, wellboreUid, trajectoryUid); var existingTrajectories = await client.GetFromStoreAsync(queryExisting, OptionsIn.All); var existing = existingTrajectories.Trajectories.First(); var createTrajectoryQuery = CreateTrajectoryQuery( existing.UidWell, existing.NameWell, existing.UidWellbore, existing.NameWellbore, existing.Name + " (copy)", existing.TrajectoryStations, existing.CommonData, existing.AziRef, existing.MdMin, existing.MdMax, existing.DTimTrajStart, existing.DTimTrajEnd ); var result = await client.AddToStoreAsync(createTrajectoryQuery); Assert.True(result.IsSuccessful); output.WriteLine("Created trajectory with uid: " + createTrajectoryQuery.Trajectories.First().Uid); }
public async Task <IEnumerable <Trajectory> > GetTrajectories(string wellUid, string wellboreUid) { var witsmlTrajectory = TrajectoryQueries.GetWitsmlTrajectoryByWellbore(wellUid, wellboreUid); var result = await WitsmlClient.GetFromStoreAsync(witsmlTrajectory, new OptionsIn(ReturnElements.Requested)); return(result.Trajectories.Select(trajectory => new Trajectory { Uid = trajectory.Uid, WellUid = trajectory.UidWell, WellboreUid = trajectory.UidWellbore, Name = trajectory.Name, MdMin = StringHelpers.ToDecimal(trajectory.MdMin?.Value), MdMax = StringHelpers.ToDecimal(trajectory.MdMax?.Value), AziRef = trajectory.AziRef, DTimTrajStart = StringHelpers.ToDateTime(trajectory.DTimTrajStart), DTimTrajEnd = StringHelpers.ToDateTime(trajectory.DTimTrajEnd), DateTimeCreation = StringHelpers.ToDateTime(trajectory.CommonData?.DTimCreation), DateTimeLastChange = StringHelpers.ToDateTime(trajectory.CommonData?.DTimLastChange) }).OrderBy(trajectory => trajectory.Name)); }
public override async Task <(WorkerResult, RefreshAction)> Execute(DeleteTrajectoryJob job) { var wellUid = job.TrajectoryReference.WellUid; var wellboreUid = job.TrajectoryReference.WellboreUid; var trajectoryUid = job.TrajectoryReference.TrajectoryUid; var witsmlTrajectory = TrajectoryQueries.GetWitsmlTrajectoryById(wellUid, wellboreUid, trajectoryUid); var result = await witsmlClient.DeleteFromStoreAsync(witsmlTrajectory); if (result.IsSuccessful) { Log.Information("{JobType} - Job successful", GetType().Name); var refreshAction = new RefreshWellbore(witsmlClient.GetServerHostname(), wellUid, wellboreUid, RefreshType.Update); return(new WorkerResult(witsmlClient.GetServerHostname(), true, $"Deleted trajectory: ${trajectoryUid}"), refreshAction); } Log.Error("Failed to delete trajectory. WellUid: {WellUid}, WellboreUid: {WellboreUid}, Uid: {TrajectoryUid}", wellUid, wellboreUid, trajectoryUid); witsmlTrajectory = TrajectoryQueries.GetWitsmlTrajectoryById(wellUid, wellboreUid, trajectoryUid); var queryResult = await witsmlClient.GetFromStoreAsync(witsmlTrajectory, new OptionsIn(ReturnElements.IdOnly)); var trajectory = queryResult.Trajectories.First(); EntityDescription description = null; if (trajectory != null) { description = new EntityDescription { WellName = trajectory.NameWell, WellboreName = trajectory.NameWellbore, ObjectName = trajectory.Name }; } return(new WorkerResult(witsmlClient.GetServerHostname(), false, "Failed to delete trajectory", result.Reason, description), null); }
public async Task <List <TrajectoryStation> > GetTrajectoryStations(string wellUid, string wellboreUid, string trajectoryUid) { var trajectoryToQuery = TrajectoryQueries.GetWitsmlTrajectoryById(wellUid, wellboreUid, trajectoryUid); var result = await WitsmlClient.GetFromStoreAsync(trajectoryToQuery, new OptionsIn(ReturnElements.All)); var witsmlTrajectory = result.Trajectories.FirstOrDefault(); if (witsmlTrajectory == null) { return(null); } return(witsmlTrajectory.TrajectoryStations.Select(tStation => new TrajectoryStation { Uid = tStation.Uid, DTimStn = StringHelpers.ToDateTime(tStation.DTimStn), TypeTrajStation = tStation.TypeTrajStation, Md = StringHelpers.ToDecimal(tStation.Md?.Value), Tvd = StringHelpers.ToDecimal(tStation.Tvd?.Value), Incl = StringHelpers.ToDecimal(tStation.Incl?.Value), Azi = StringHelpers.ToDecimal(tStation.Azi?.Value) }) .OrderBy(tStation => tStation.Md) .ToList()); }