예제 #1
0
        public static async Task <int> GetPastPurchasesAsync()
        {
            var container = CKContainer.DefaultContainer;

            var status = await container.GetAccountStatusAsync();

            var hasCloud = status == CKAccountStatus.Available;

            if (!hasCloud)
            {
                return(0);
            }

            var db = container.PrivateCloudDatabase;

            var pred  = NSPredicate.FromFormat("TransactionId != 'tttt'");
            var query = new CKQuery("PatronSubscription", pred);

            var recs = await db.PerformQueryAsync(query, CKRecordZone.DefaultRecordZone().ZoneId);

            Console.WriteLine("NUM PATRON RECS = {0}", recs.Length);

            var subs = recs.Select(x => new PatronSubscription(x)).OrderBy(x => x.PurchaseDate).ToArray();

            var ed = DateTime.UtcNow;

            if (subs.Length > 0)
            {
                ed = subs[0].PurchaseEndDate;
                foreach (var s in subs.Skip(1))
                {
                    if (s.PurchaseDate < ed)
                    {
                        ed = ed.AddMonths(s.NumMonths);
                    }
                    else
                    {
                        ed = s.PurchaseEndDate;
                    }
                }
            }

            Console.WriteLine("NEW END DATE = {0}", ed);

            var endDate  = ed;
            var isPatron = DateTime.UtcNow < endDate;

            var settings = DocumentAppDelegate.Shared.Settings;

            settings.IsPatron      = isPatron;
            settings.PatronEndDate = endDate;

            return(subs.Length);
        }
예제 #2
0
        async Task DeletePastPurchasesAsync()
        {
            try {
                var container = CKContainer.DefaultContainer;
                var db        = container.PrivateCloudDatabase;

                var pred  = NSPredicate.FromFormat("TransactionId != 'tttt'");
                var query = new CKQuery("PatronSubscription", pred);

                var recs = await db.PerformQueryAsync(query, CKRecordZone.DefaultRecordZone().ZoneId);

                Console.WriteLine("NUM RECS = {0}", recs.Length);

                foreach (var r in recs)
                {
                    await db.DeleteRecordAsync(r.Id);
                }
            } catch (NSErrorException ex) {
                Console.WriteLine("ERROR: {0}", ex.Error);
                Log.Error(ex);
            } catch (Exception ex) {
                Log.Error(ex);
            }
        }
예제 #3
0
    public void Default_record_zone_exists()
    {
        var zone = CKRecordZone.DefaultRecordZone();

        Assert.NotNull(zone);
    }