示例#1
0
 public ReportData (ReportData other)
 {
     TotalGrand = other.TotalGrand;
     TotalBillable = other.TotalBillable;
     TotalCost = other.TotalCost;
     Activity = other.Activity;
     Projects = other.Projects;
 }
        private static ReportData ImportJson (ReportData data, ReportJson json)
        {
            data.TotalGrand = json.TotalGrand;
            data.TotalBillable = json.TotalBillable;
            data.Activity = MakeActivityList (json.ActivityContainer);
            data.Projects = MakeProjectList (json.Projects);
            data.TotalCost = new List<string> ();

            if (json.TotalCurrencies != null) {
                json.TotalCurrencies.Sort ((x, y) => y.Amount.CompareTo (x.Amount));
                foreach (var row in json.TotalCurrencies) {
                    data.TotalCost.Add (String.Format ("{0} {1}", row.Amount, row.Currency));
                }
            }
            return data;
        }
        private async Task FetchData (DateTime startDate, DateTime endDate)
        {
            dataObject = CreateEmptyReport (startDate);

            try {
                _isError = false;
                var json = await reportClient.GetReports (startDate, endDate, (long)workspaceId);
                dataObject = json.Import ();
            } catch ( Exception exc) {
                var log = ServiceContainer.Resolve<ILogger> ();
                if (exc.IsNetworkFailure () || exc is TaskCanceledException) {
                    var msg = (reportClient.IsCancellationRequested) ? "Fetch reports cancelation requested by user" : "Failed to fetch reports. Network failure.";
                    log.Info (Tag, exc, msg);
                } else {
                    log.Warning (Tag, exc, "Failed to fetch reports.");
                }
                _isError = ! (exc is TaskCanceledException);
            } finally {
                CalculateReportData ();
            }
        }