Ejemplo n.º 1
0
        public ReportRequestStatus RequestGlobalMoodReport()
        {
            var app = ApplicationState.Current;
            ReportRequestStatus rtnStatus = new ReportRequestStatus();

            lock (_lock) {
                this.Log("Service request for global report", "", 3);

                WebServiceJsonRequestStatus status = ServerJsonRequest("RequestGlobalReportInfo",
                                                                       new RequestGlobalReportInfoModel()
                {
                    LastReportRequested = app.LastSuccessfulGlobalReportRequest
                });
                if (status.Success)
                {
                    GlobalMoodReportInfoModel reportInfo = status.Response.ToObject <GlobalMoodReportInfoModel> ();
                    app.LastSuccessfulGlobalReportRequest = reportInfo.RequestTimeStamp;
                    app.Save();


                    if (reportInfo.HasNewData)
                    {
                        UpdateReportInfo(reportInfo);
                        rtnStatus.NewReportAvailable = true;
                    }

                    rtnStatus.Success = true;
                }
            }

            return(rtnStatus);
        }
Ejemplo n.º 2
0
        public ReportRequestStatus RequestGlobalMoodReportData(MoodReport report)
        {
            ReportRequestStatus rtnStatus = new ReportRequestStatus();

            try {
                var app = ApplicationState.Current;


                var startDate = report.StartsOn;
                List <GlobalMoodReportModel> days = new List <GlobalMoodReportModel> ();
                var fail = 3;
                while (fail > 0 && startDate < report.EndsOn)
                {
                    var          endDate  = startDate.Date.AddDays(1).AddMinutes(-10);
                    NSString     key      = new NSString("Status");
                    NSDictionary userInfo = NSDictionary.FromObjectAndKey(NSObject.FromObject(string.Format("Requesting day data for {0:ddd dd MMM}", startDate)), key);
                    NSNotificationCenter.DefaultCenter.PostNotificationName("RequestingReportStatus", null, userInfo);

                    var dataReqStatus = RequestGlobalMoodReportData(report.Id, startDate, endDate);
                    if (dataReqStatus.Success)
                    {
                        //report = MoodReport.List ().FirstOrDefault (r => r.Id == reportId);
                        //report.LastRequestedDay = startDate;
                        //report.Save ();
                        days.Add(dataReqStatus.ReportData);
                        startDate = startDate.Date.AddDays(1);
                        fail      = 3;
                    }
                    else
                    {
                        fail--;
                    }
                }
                if (fail > 0)
                {
                    UpdateReportDays(report, days);

                    rtnStatus.Success            = true;
                    rtnStatus.NewReportAvailable = true;
                }
                else
                {
                    MyMoodLogger.Current.Log("Report download failed", "", 1);
                    rtnStatus.Success = false;
                }
            } catch (Exception ex) {
                MyMoodLogger.Current.Error("Error downloading day data", ex, 1);
            }
            return(rtnStatus);
        }