public RevenueModel GetIAPRevenues(string AppId, DateTime StartDate, DateTime EndDate) { // Round to nearest Monday so graph looks sane StartDate = GetNearestMonday(StartDate); // Sleep on thread so not hitting API with simulatenous requests //Thread.Sleep(1000); var appIds = GetApplicationIds(); var iapIds = GetIAPIds(appIds); var iapData = DistimoService.GetDistimoData(SupportedDistimoApis.Revenues, "from=" + StartDate.ToString("yyyy-MM-dd") + "&to=" + EndDate.ToString("yyyy-MM-dd") + "&revenue=total&metrics=in_app&view=line&breakdown=application,appstore,date&interval=week"); var reader = new JsonReader(); dynamic rawIAPData = reader.Read(iapData); List<dynamic> filteredList = new List<dynamic>(); foreach (dynamic line in rawIAPData.lines) { string app_id = line.data.application_id; if (iapIds.Contains(app_id)) filteredList.Add(line); } var revenueModel = new RevenueModel(GetWeeklyRevenues(filteredList), StartDate); return revenueModel; }
public RevenueModel GetRevenues(string AppId, DateTime StartDate, DateTime EndDate) { // Round to nearest Monday so graph looks sane // TODO - This increasingly looks like something we should do in JS in the frontend unfortunately :-( StartDate = GetNearestMonday(StartDate); var revsQueryString = BuildRevenuesQueryString(StartDate, EndDate); //TODO - Pass thru appname from frontend var filteredList = ExtractAppRevenueData("Winx Fairy School", revsQueryString); var revenueModel = new RevenueModel(GetWeeklyRevenues(filteredList), StartDate); return revenueModel; }