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