public async Task TrimStartOfLogObject() { var wellUid = "W-5232880"; var wellboreUid = "B-5232880"; var logUid = "a58adfe9-6132-446d-bff2-631fa6885244"; var job = new TrimLogDataJob { LogObject = new LogReference { WellUid = wellUid, WellboreUid = wellboreUid, LogUid = logUid }, StartIndex = "200", EndIndex = "2000" }; await worker.Execute(job); }
public async Task <(WorkerResult, RefreshAction)> Execute(TrimLogDataJob job) { var witsmlLogQuery = LogQueries.QueryById(job.LogObject.WellUid, job.LogObject.WellboreUid, job.LogObject.LogUid); var witsmlLogs = await witsmlClient.GetFromStoreAsync(witsmlLogQuery, OptionsIn.HeaderOnly); var witsmlLog = witsmlLogs.Logs.First(); var currentStartIndex = Index.Start(witsmlLog); var newStartIndex = Index.Start(witsmlLog, job.StartIndex); var currentEndIndex = Index.End(witsmlLog); var newEndIndex = Index.End(witsmlLog, job.EndIndex); bool trimmedStartOfLog = false; if (currentStartIndex < newStartIndex && newStartIndex < currentEndIndex) { var trimLogObjectStartQuery = CreateRequest( job.LogObject.WellUid, job.LogObject.WellboreUid, job.LogObject.LogUid, witsmlLog.IndexType, deleteTo: newStartIndex); var result = await witsmlClient.DeleteFromStoreAsync(trimLogObjectStartQuery); if (result.IsSuccessful) { trimmedStartOfLog = true; } else { Log.Error($"Job failed. An error occurred when trimming logobject start: {job.PrintProperties()}"); return(new WorkerResult(witsmlClient.GetServerHostname(), false, "Failed to update start of log", result.Reason, GetDescription(witsmlLog)), null); } } bool trimmedEndOfLog = false; if (currentEndIndex > newEndIndex && newEndIndex > currentStartIndex) { var trimLogObjectEndQuery = CreateRequest( job.LogObject.WellUid, job.LogObject.WellboreUid, job.LogObject.LogUid, witsmlLog.IndexType, deleteFrom: newEndIndex); var result = await witsmlClient.DeleteFromStoreAsync(trimLogObjectEndQuery); if (result.IsSuccessful) { trimmedEndOfLog = true; } else { Log.Error($"Job failed. An error occurred when trimming logobject end: {job.PrintProperties()}"); return(new WorkerResult(witsmlClient.GetServerHostname(), false, "Failed to update end of log", result.Reason, GetDescription(witsmlLog)), null); } } var refreshAction = new RefreshLogObject(witsmlClient.GetServerHostname(), job.LogObject.WellUid, job.LogObject.WellboreUid, job.LogObject.LogUid, RefreshType.Update); if (trimmedStartOfLog && trimmedEndOfLog) { return(new WorkerResult(witsmlClient.GetServerHostname(), true, $"Updated start/end of log [{job.LogObject.LogUid}]"), refreshAction); } if (trimmedStartOfLog) { return(new WorkerResult(witsmlClient.GetServerHostname(), true, $"Updated start of log [{job.LogObject.LogUid}]"), refreshAction); } if (trimmedEndOfLog) { return(new WorkerResult(witsmlClient.GetServerHostname(), true, $"Updated end of log [{job.LogObject.LogUid}]"), refreshAction); } return(new WorkerResult(witsmlClient.GetServerHostname(), false, $"Failed to update start/end of log [{job.LogObject.LogUid}]", "Invalid index range"), null); }