private Task<AccountPhoneMark[]> DeleteTask(AccountPhoneMark[] items)
        {
            var startTask = Task.Factory.StartNew(() =>
            {
                IsBusy = true;
            }, GetCancellationToken(), TaskCreationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());

            var clientTask = startTask.ContinueWith((t) =>
            {
                var client = new RoyaltyServiceWorker.AccountService.AccountServiceClient();
                try
                {
                    return client.RemoveAccountPhoneMarkRange(items.Select(i => i.Id).ToList());
                }
                finally
                {
                    try { client.Close(); } catch { }
                }
            }, GetCancellationToken(), TaskContinuationOptions.AttachedToParent, TaskScheduler.Default);

            var taskRes = clientTask.ContinueWith((res) =>
            {
                try
                {
                    if (res.Result.Error != null)
                        throw new Exception(res.Result.Error);

                    return items
                        .Where(i => !res.Result.Values.Contains(i.Id))
                        .ToArray();
                }
                catch (Exception ex)
                {
                    Error = ex.ToString();
                    return items;
                }
                finally
                {
                    IsBusy = false;
                }
            }, GetCancellationToken(), TaskContinuationOptions.AttachedToParent, TaskScheduler.FromCurrentSynchronizationContext());

            return taskRes;
        }
Exemple #2
0
 /// <summary>
 /// Add AccountPhoneMark to database
 /// </summary>
 /// <param name="instance">AccountPhoneMark instance</param>
 /// <param name="saveAfterInsert">Save database after insertion</param>
 /// <param name="waitUntilSaving">Wait until saving</param>
 public void AccountPhoneMarkAdd(AccountPhoneMark instance, bool saveAfterInsert = true, bool waitUntilSaving = true)
 {
     AccountPhoneMarkAdd(new AccountPhoneMark[] { instance }, saveAfterInsert, waitUntilSaving);
 }
Exemple #3
0
 /// <summary>
 /// Remove AccountPhoneMark from database
 /// </summary>
 /// <param name="instance">AccountPhoneMark instance</param>
 /// <param name="saveAfterRemove">Save database after removing</param>
 /// <param name="waitUntilSaving">Wait until saving</param>
 public void AccountPhoneMarkRemove(AccountPhoneMark instance, bool saveAfterRemove = true, bool waitUntilSaving = true)
 {
     AccountPhoneMarkRemove(new AccountPhoneMark[] { instance }, saveAfterRemove, waitUntilSaving);
 }
Exemple #4
0
        /// <summary>
        /// Create/Get new AccountPhoneMark without any link to database
        /// </summary>
        /// <param name="phone">Phone</param>
        /// <param name="account">Account</param>
        /// <param name="mark">Mark</param>
        /// <returns>AccountPhoneMark instance</returns>
        public AccountPhoneMark AccountPhoneMarkNew(Phone phone = null, Account account = null, Mark mark = null)
        {
            try
            {
                mark = mark ?? MarkGet(MarkTypes.Unknown);
                var res = new AccountPhoneMark() { Account = account, Phone = phone, Mark = mark };

                if (account != null)
                    account.PhoneMarks.Add(res);

                return res;
            }
            catch (Exception ex)
            {
                Helpers.Log.Add(ex, string.Format("Repository.AccountPhoneMarkNew(sourceId='{0}',actionType='{1}',sourceType='{2}')", phone.ToString() ?? "NULL", account.ToString() ?? "NULL", mark.ToString() ?? "NULL"));
                throw;
            }
        }