Beispiel #1
0
        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
                });
            }
        }
Beispiel #2
0
        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;
            }
        }