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); }
protected void UpdateReportInfo(GlobalMoodReportInfoModel reportInfo) { Console.WriteLine("Update report info"); if (reportInfo.Application != null) { UpdateApplication(reportInfo.Application, true); } if (reportInfo.Prompts != null) { Console.WriteLine("Update prompts"); Activity.List("ActivityType=@ActivityType", new{ ActivityType = ActivityType.MoodPrompt }).DeleteAll(); foreach (var p in reportInfo.Prompts) { var prompt = Activity.New(); prompt.Id = p.Id; prompt.ActivityType = ActivityType.MoodPrompt; prompt.Title = p.Title; prompt.TimeStamp = p.TimeStamp; prompt.Save(); } } if (reportInfo.Events != null) { Console.WriteLine("Update events"); Activity.List("ActivityType=@ActivityType", new{ ActivityType = ActivityType.Event }).DeleteAll(); foreach (var e in reportInfo.Events) { var evnt = Activity.New(); evnt.Id = e.Id; evnt.ActivityType = ActivityType.Event; evnt.Title = e.Title; evnt.TimeStamp = e.TimeStamp; evnt.Save(); } } if (reportInfo.HasNewData) { MoodReport report = MoodReport.New(); var reportId = System.Guid.NewGuid().ToString(); report.Id = reportId; report.RequestedOn = reportInfo.RequestTimeStamp; report.StartsOn = reportInfo.ReportStartDate; report.EndsOn = reportInfo.ReportEndDate; report.RequestCompleted = 0; report.DayStartsOn = reportInfo.DayStartsOn; report.DayEndsOn = reportInfo.DayEndsOn; report.RequestCompleted = 1; report.Save(); } }