public async Task <bool> SyncExams() { var examinations = await UserExamination.DB.RowsAsync.Where(c => c.IsSynced == null || c.IsSynced == false).ToListAsync(); if (examinations.Any()) { var fInvoices = new List <FUserExamination>(); foreach (var item in examinations.ToList()) { await item.LoadUserExaminationDetails(); if (item.UserExaminationDetails.Count == 0) { UserExamination.DB.Conn.Delete <UserExamination>(item.ID); examinations.Remove(item); continue; } var fExaminations = new FUserExamination { Examination = item.IUserExamination, Details = item.UserExaminationDetails.Select(i => i.IUserExaminationDetail).ToList() }; var(success, rExaminations) = await Upload(fExaminations, "userExaminations", 22); if (success) { item.IsSynced = true; } else { break; } } await UserExamination.DB.AsyncConn.UpdateAllAsync(examinations); } SessionManager.SyncInvoices = false; return(true); }
public FUserExamination Post(FUserExamination fUserExamination) { var Items = fUserExamination.Details; var Invoice = fUserExamination.Examination; var inv = DB.UserExaminations.FirstOrDefault(c => c.ID == fUserExamination.Examination.ID); if (inv != null) { return(inv.FUserExamination); } inv = new UserExamination { CreationDate = Invoice.CreationDate, EndTime = Invoice.EndTime, Latitude = Invoice.Latitude, Longitude = Invoice.Longitude, StartTime = Invoice.StartTime, UserID = Invoice.UserID, ExaminationID = Invoice.ExaminationID, ID = Invoice.ID, }; DB.UserExaminations.Add(inv); foreach (var item in Items) { inv.UserExaminationDetails.Add(new UserExaminationDetail { QuestionID = item.QuestionID, AnswerID = item.AnswerID, ExaminationID = item.ExaminationID, Name = item.Name, ID = item.ID, }); } DB.SaveChanges(); return(inv.FUserExamination); }