private void DataControl_Load(object sender, EventArgs e) { if (DesignMode) { return; } context = DbContextFactory.GetDbContext(); RefreshData(); }
private void RefreshData() { if (context != null) { context.Dispose(); } context = DbContextFactory.GetDbContext(); dataGridView.DataSource = context.Shows.OrderBy(s => s.Title).ToArray(); }
public async static void UpdateShows(ShowrunnerDbContext context, Show[] shows, ShowApi api, CancellationToken token, IProgress <int> progress = null) { try { await InternalUpdateShows(context, shows, api, token, progress); } catch { } }
public SelectGenreDialog() { InitializeComponent(); dataGridView.AutoGenerateColumns = false; Disposed += SelectGenreDialog_Disposed; context = DbContextFactory.GetDbContext(); dataGridView.DataSource = context.Genres.ToList(); SelectedGenres = new List <Data.Models.Genre>(); }
static void Main(string[] args) { Data.DatabaseConnection.DbContextFactory.SetConnectionProvider(new SqlConnectionProvider()); Data.Helpers.ImportFileHelper.Import(@"E:\PayEx\shows.csv"); context = DbContextFactory.GetDbContext(); ShowHelper.UpdateShows(context, context.Shows.ToArray(), new TvmazeApi(), CancellationToken.None, new ProgressReport()); Console.ReadLine(); context.Dispose(); }
private void startSyncButton_Click(object sender, EventArgs e) { startSyncButton.Enabled = false; context = DbContextFactory.GetDbContext(); var progressReport = new ProgressReport(); progressReport.ProgressReported += ProgressReport_ProgressReported; source = new CancellationTokenSource(); Task.Run(() => ShowHelper.UpdateShows(context, context.Shows.ToArray(), new TvmazeApi(), source.Token, progressReport)); }
private async static Task <bool> InternalUpdateShows(ShowrunnerDbContext context, Show[] shows, ShowApi api, CancellationToken token, IProgress <int> progress = null) { if (shows == null || shows.Count() <= 0 || api == null) { return(false); } var total = shows.Count(); int current = 0; var genres = context.Genres.ToDictionary(s => s.Description); var networks = context.Networks.ToDictionary(s => s.ApiId); foreach (var show in shows) { if (token.IsCancellationRequested) { return(false); } context.Shows.Attach(show); Show apiResult = null; if (show.ApiId.HasValue) { apiResult = await api.FindShow(show.ApiId.Value); } else { apiResult = await api.SingleShowSearch(show.Title); } if (apiResult != null) { show.CopyValues(apiResult); var episodes = api.GetEpisodes(show.ApiId.Value).GetAwaiter().GetResult(); if (episodes.Any()) { context.Episodes.RemoveRange(context.Episodes.Where(s => s.ShowId == show.Oid)); } foreach (var episode in episodes) { episode.Show = show; } if (apiResult.Network != null) { var network = apiResult.Network; if (networks.ContainsKey(network.ApiId)) { network = networks[network.ApiId]; } else { networks[network.ApiId] = network; context.Set <Network>().Add(network); } show.Network = network; } if (apiResult.Genres.Count > 0) { if (show.Genres.Count > 0) { show.Genres.Clear(); } foreach (var iGenre in apiResult.Genres) { var genre = iGenre; if (genres.ContainsKey(genre.Description)) { genre = genres[genre.Description]; } else { genres[genre.Description] = genre; context.Set <Genre>().Add(genre); } show.Genres.Add(genre); } } context.Episodes.AddRange(episodes); } current++; if (progress != null) { progress.Report(current * 95 / total); } } if (token.IsCancellationRequested) { return(false); } await context.SaveChangesAsync(); if (progress != null) { progress.Report(100); } return(true); }