public static GitHubApiItem GetItem(int id, string owner, string name) { var item = new GitHubApiItem(); // Busca item no banco de dados using (var context = new BaseContext()) { item = context.GitHubApiItems.Find(id); if (Equals(item, null)) { var url = string.Format("https://api.github.com/repos/{0}/{1}", owner, name); item = JsonConvert.DeserializeObject <GitHubApiItem>(Util.WebRequest(url)); UpdateData(item, context); } } return(item); }
private static void UpdateData(GitHubApiItem item, BaseContext context) { var databaseItem = context.GitHubApiItems.Find(item.id); var update = true; if (Equals(databaseItem, null)) { databaseItem = new GitHubApiItem { owner = new GitHubApiOwner() }; update = false; } databaseItem.description = item.description; databaseItem.full_name = item.full_name; databaseItem.id = item.id; databaseItem.name = item.name; databaseItem.stargazers_count = item.stargazers_count; databaseItem.clone_url = item.clone_url; databaseItem.homepage = item.homepage; databaseItem.owner_id = item.owner.id; databaseItem.owner = item.owner; if (update) { context.Entry(databaseItem).State = System.Data.Entity.EntityState.Modified; context.Entry(databaseItem.owner).State = System.Data.Entity.EntityState.Modified; } else { context.GitHubApiItems.Add(databaseItem); } context.SaveChanges(); }