Esempio n. 1
0
        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);
        }