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; }
/// <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); }
/// <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); }
/// <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; } }