public SaleItemTests() { genres = new List <Genre>(); var defaultCashback = new DefaultCashback(); var pop = new Genre(null, "Pop"); pop.AddCashbackConfigs(defaultCashback.GetDefaultCashback(pop.Id, pop.Name)); var mpb = new Genre(null, "MPB"); mpb.AddCashbackConfigs(defaultCashback.GetDefaultCashback(mpb.Id, mpb.Name)); var classic = new Genre(null, "Classical"); classic.AddCashbackConfigs(defaultCashback.GetDefaultCashback(classic.Id, classic.Name)); var rock = new Genre(null, "Rock"); rock.AddCashbackConfigs(defaultCashback.GetDefaultCashback(rock.Id, rock.Name)); genres.Add(pop); genres.Add(mpb); genres.Add(classic); genres.Add(rock); }
public async Task <CommandResult> ExecuteAsync(CashbackCommandsHandler handler) { if (handler.DbContext.Genres != null && handler.DbContext.Genres.Count() > 0) { return(await Task.FromResult(new CommandResult(ErrorCode.None))); } if (string.IsNullOrEmpty(AccessToken)) { Authorize(); } IList <GenreViewModel> result = new List <GenreViewModel>(); var defaultCashback = new DefaultCashback(); HttpClient httpClient = new HttpClient(); var genresUrls = new[] { "browse/categories/pop?country=BR", "browse/categories/mpb?country=BR", "browse/categories/classical?country=BR", "browse/categories/rock?country=BR" }; var rows = 0; HttpResponseMessage response = null; foreach (var url in genresUrls) { httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", AccessToken); response = await httpClient.GetAsync("https://api.spotify.com/v1/" + url); var json = JsonConvert.DeserializeObject <GenreViewModel>(await response.Content.ReadAsStringAsync()); if (response.IsSuccessStatusCode && !result.Any(c => c.Name == json.Name)) { result.Add(json); } } foreach (var item in result) { var id = RandomId.NewId(); var cashback = new List <CashbackCommand>(); var lst = defaultCashback.GetDefaultCashback(id, item.Name); lst.ForEach(f => cashback.Add(new CashbackCommand() { Id = f.Id, GenreId = f.GenreId, DayOfWeek = f.DayOfWeek, Percent = f.Percent })); var cmd = new CreateGenreCommand() { Id = id, Name = item.Name, Cashback = cashback }; var rs = await handler.Handle(cmd); rows += rs.Rows; } return(await Task.FromResult(new CommandResult(rows, ErrorCode.None))); }