private async Task <QueryParameters> LoadQueryParametersAsync(Raefftec.CatchEmAll.DAL.Priority priority) { using (var context = this.factory.GetContext()) { var entity = await context.Queries.AsTracking() .Include(x => x.Category) .Where(x => !x.IsDeleted && !x.Category.IsDeleted && !x.IsLocked && x.Priority == priority) .OrderBy(x => x.Updated) .FirstOrDefaultAsync(); if (entity == null) { return(null); } entity.IsLocked = true; await context.SaveChangesAsync(); return(new QueryParameters { Id = entity.Id, Category = entity.Category.Number, UseDescription = entity.UseDescription, WithAllTheseWords = entity.WithAllTheseWords, WithExactlyTheseWords = entity.WithExactlyTheseWords, WithNoneOfTheseWords = entity.WithNoneOfTheseWords, WithOneOfTheseWords = entity.WithOneOfTheseWords, AutoFilterDeletedDuplicates = entity.AutoFilterDeletedDuplicates }); } }
private async Task UpdateQueryAsync(Raefftec.CatchEmAll.DAL.Priority priority) { var parameters = await this.LoadQueryParametersAsync(priority); if (parameters == null) { return; } try { var query = await Load.QueryFromSourceAsync(parameters); await this.UpdateResultsAsync(parameters, query.Results); await this.UnloadQueryAsync(parameters); } catch { await this.UnloadQueryAsync(parameters); throw; } }