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); }
public override async Task <(WorkerResult, RefreshAction)> Execute(CreateWellJob job) { var well = job.Well; Verify(well); var wellToCreate = WellQueries.CreateWitsmlWell(well); var result = await witsmlClient.AddToStoreAsync(wellToCreate); if (result.IsSuccessful) { Log.Information("{JobType} - Job successful", GetType().Name); await WaitUntilWellHasBeenCreated(well); var workerResult = new WorkerResult(witsmlClient.GetServerHostname(), true, $"Well created ({well.Name} [{well.Uid}])"); var refreshAction = new RefreshWell(witsmlClient.GetServerHostname(), well.Uid, RefreshType.Add); return(workerResult, refreshAction); } var description = new EntityDescription { WellName = well.Name }; Log.Error("Job failed. An error occurred when creating well: {Well}", job.Well.PrintProperties()); return(new WorkerResult(witsmlClient.GetServerHostname(), false, "Failed to create well", result.Reason, description), null); }
public async Task <(WorkerResult, RefreshAction)> Execute(CopyLogJob job) { var(log, targetWellbore) = await FetchData(job); var copyLogQuery = CreateCopyLogQuery(log, targetWellbore); var copyLogResult = await witsmlClient.AddToStoreAsync(copyLogQuery); if (!copyLogResult.IsSuccessful) { var errorMessage = "Failed to copy log."; LogError(job, errorMessage); return(new WorkerResult(witsmlClient.GetServerHostname(), false, errorMessage, copyLogResult.Reason), null); } var copyLogDataJob = CreateCopyLogDataJob(job, log); var copyLogDataResult = await copyLogDataWorker.Execute(copyLogDataJob); if (!copyLogDataResult.Item1.IsSuccess) { var errorMessage = "Failed to copy log data."; LogError(job, errorMessage); return(new WorkerResult(witsmlClient.GetServerHostname(), false, errorMessage, copyLogResult.Reason), null); } Log.Information("{JobType} - Job successful. Log object copied", GetType().Name); var refreshAction = new RefreshWellbore(witsmlClient.GetServerHostname(), job.Target.WellUid, job.Target.WellboreUid, RefreshType.Update); var workerResult = new WorkerResult(witsmlClient.GetServerHostname(), true, $"Log object {log.Name} copied to: {targetWellbore.Name}"); return(workerResult, refreshAction); }
public override async Task <(WorkerResult, RefreshAction)> Execute(CreateRiskJob job) { var risk = job.Risk; Verify(risk); var riskToCreate = SetupRiskToCreate(risk); var result = await witsmlClient.AddToStoreAsync(riskToCreate); if (result.IsSuccessful) { await WaitUntilRiskHasBeenCreated(risk); Log.Information("{JobType} - Job successful", GetType().Name); var workerResult = new WorkerResult(witsmlClient.GetServerHostname(), true, $"Risk created ({risk.Name} [{risk.Uid}])"); var refreshAction = new RefreshWellbore(witsmlClient.GetServerHostname(), risk.UidWell, risk.Uid, RefreshType.Add); return(workerResult, refreshAction); } var description = new EntityDescription { WellboreName = risk.NameWellbore }; Log.Error($"Job failed. An error occurred when creating Risk: {job.Risk.PrintProperties()}"); return(new WorkerResult(witsmlClient.GetServerHostname(), false, "Failed to create Risk", result.Reason, description), null); }
public async Task <(WorkerResult, RefreshAction)> Execute(CreateWellboreJob job) { var wellbore = job.Wellbore; Verify(wellbore); var wellboreToCreate = SetupWellboreToCreate(wellbore); var result = await witsmlClient.AddToStoreAsync(wellboreToCreate); if (result.IsSuccessful) { await WaitUntilWellboreHasBeenCreated(wellbore); Log.Information("{JobType} - Job successful", GetType().Name); var workerResult = new WorkerResult(witsmlClient.GetServerHostname(), true, $"Wellbore created ({wellbore.Name} [{wellbore.Uid}])"); var refreshAction = new RefreshWellbore(witsmlClient.GetServerHostname(), wellbore.WellUid, wellbore.Uid, RefreshType.Add); return(workerResult, refreshAction); } var description = new EntityDescription { WellboreName = wellbore.Name }; Log.Error($"Job failed. An error occurred when creating wellbore: {job.Wellbore.PrintProperties()}"); return(new WorkerResult(witsmlClient.GetServerHostname(), false, "Failed to create wellbore", result.Reason, description), null); }
public override async Task <(WorkerResult, RefreshAction)> Execute(CreateMudLogJob job) { var mudLog = job.MudLog; Verify(mudLog); var mudLogToCreate = SetupMudLogToCreate(mudLog); var result = await witsmlClient.AddToStoreAsync(mudLogToCreate); if (result.IsSuccessful) { await WaitUntilMudLogHasBeenCreated(mudLog); Log.Information("{JobType} - Job successful", GetType().Name); var workerResult = new WorkerResult(witsmlClient.GetServerHostname(), true, $"MudLog created ({mudLog.Name} [{mudLog.Uid}])"); var refreshAction = new RefreshWellbore(witsmlClient.GetServerHostname(), mudLog.WellUid, mudLog.Uid, RefreshType.Add); return(workerResult, refreshAction); } var description = new EntityDescription { WellboreName = mudLog.WellboreName }; Log.Error($"Job failed. An error occurred when creating MudLog: {job.MudLog.PrintProperties()}"); return(new WorkerResult(witsmlClient.GetServerHostname(), false, "Failed to create MudLog", result.Reason, description), null); }
public async Task <(WorkerResult, RefreshAction)> Execute(CreateLogJob job) { var targetWellbore = await GetWellbore(witsmlClient, job.LogObject); var copyLogQuery = CreateLogQuery(job, targetWellbore); var createLogResult = await witsmlClient.AddToStoreAsync(copyLogQuery); if (!createLogResult.IsSuccessful) { var errorMessage = "Failed to create log."; Log.Error("{ErrorMessage}. Target: UidWell: {TargetWellUid}, UidWellbore: {TargetWellboreUid}.", errorMessage, job.LogObject.WellUid, job.LogObject.WellboreUid); return(new WorkerResult(witsmlClient.GetServerHostname(), false, errorMessage, createLogResult.Reason), null); } Log.Information("{JobType} - Job successful. Log object created", GetType().Name); var refreshAction = new RefreshWellbore(witsmlClient.GetServerHostname(), job.LogObject.WellUid, job.LogObject.WellboreUid, RefreshType.Update); var workerResult = new WorkerResult(witsmlClient.GetServerHostname(), true, $"Log object {job.LogObject.Name} created for {targetWellbore.Name}"); return(workerResult, refreshAction); }
public override async Task <(WorkerResult, RefreshAction)> Execute(CopyLogJob job) { var(sourceLogs, targetWellbore) = await FetchSourceLogsAndTargetWellbore(job); var copyLogsQuery = sourceLogs.Select(log => CreateCopyLogQuery(log, targetWellbore)); var copyLogTasks = copyLogsQuery.Select(logToCopy => witsmlClient.AddToStoreAsync(logToCopy)); Task copyLogTasksResult = Task.WhenAll(copyLogTasks); await copyLogTasksResult; if (copyLogTasksResult.Status == TaskStatus.Faulted) { var errorMessage = "Failed to copy log."; LogError(job, errorMessage); return(new WorkerResult(witsmlClient.GetServerHostname(), false, errorMessage), null); } var copyLogDataJobs = sourceLogs.Select(log => CreateCopyLogDataJob(job, log)); var copyLogDataTasks = copyLogDataJobs.Select(copyLogDataJob => copyLogDataWorker.Execute(copyLogDataJob)); Task copyLogDataResultTask = Task.WhenAll(copyLogDataTasks); await copyLogDataResultTask; if (copyLogDataResultTask.Status == TaskStatus.Faulted) { var errorMessage = "Failed to copy log data."; LogError(job, errorMessage); return(new WorkerResult(witsmlClient.GetServerHostname(), false, errorMessage), null); } Log.Information("{JobType} - Job successful. Log object copied", GetType().Name); var refreshAction = new RefreshWellbore(witsmlClient.GetServerHostname(), job.Target.WellUid, job.Target.WellboreUid, RefreshType.Update); var copiedLogsMessage = sourceLogs.Length == 1 ? $"Log object {sourceLogs[0].Name}" : $"{sourceLogs.Length} logs" + $" copied to: {targetWellbore.Name}"; var workerResult = new WorkerResult(witsmlClient.GetServerHostname(), true, copiedLogsMessage); return(workerResult, refreshAction); }