public void VerifyAppointedBy(Guid wasAppointed, Guid appointer, ICloneableException <Exception> e) { var toRemove = Owners.FirstOrDefault(o => o.OwnerGuid.Equals(wasAppointed)); if (toRemove == null) { toRemove = Managers.FirstOrDefault(m => m.OwnerGuid.Equals(wasAppointed)); } if (toRemove == null) { StackTrace stackTrace = new StackTrace(); var msg = $"User with Guid - {wasAppointed} is not an owner or manager of shop {Guid}" + $" cant complete {stackTrace.GetFrame(1).GetMethod().Name}"; throw e.Clone(msg); } var byCreator = Creator.OwnerGuid.Equals(toRemove.AppointerGuid); var byOwner = Owners.Any(o => o.OwnerGuid.Equals(toRemove.AppointerGuid)); if (!(byCreator || byOwner)) { StackTrace stackTrace = new StackTrace(); var msg = $"User with Guid - {wasAppointed} was not appointed by {appointer}" + $" cant complete {stackTrace.GetFrame(1).GetMethod().Name}"; throw e.Clone(msg); } }
public bool IsOwner(Guid userGuid) { if (Creator.OwnerGuid.Equals(userGuid)) { return(true); } return(Owners.FirstOrDefault(o => o.OwnerGuid.Equals(userGuid)) != null); }
private async Task RestoreGridAsync(OwnerDataModel selectedDirtyOwner) { if (selectedDirtyOwner != null && selectedDirtyOwner.IsNew) { selectedDirtyOwner.IsDirty = false; Owners.Remove(selectedDirtyOwner); SelectedOwner = Owners.FirstOrDefault(); } else { await GetOwnerAndUpdateGridAsync(selectedDirtyOwner, false); } }
public ICollection <Guid> CascadeRemoveShopOwner(Guid userGuid, Guid ownerToRemoveGuid) { var removedOwners = new HashSet <Guid>(); removedOwners.Add(ownerToRemoveGuid); foreach (var owner in Owners.ToList()) { if (owner.AppointerGuid.Equals(ownerToRemoveGuid)) { removedOwners.Add(owner.OwnerGuid); var cascadeRemovedOwners = CascadeRemoveShopOwner(ownerToRemoveGuid, owner.OwnerGuid); foreach (var cascRemovedOwner in cascadeRemovedOwners) { removedOwners.Add(cascRemovedOwner); } } } Owners.Remove(Owners.FirstOrDefault(o => o.OwnerGuid.Equals(ownerToRemoveGuid))); return(removedOwners); }
private async Task DeleteOwnerAsync() { bool isValid = false; if (SelectedOwner != null && SelectedOwner.IdOwner != null) { isValid = await ValidateDeletionOfOwnerAsync(); } if (isValid) { try { BusyIndicator.BlockUI(); var result = await requestManager.DeleteAsync($"{RoutingConstants.OwnerRoute}/{SelectedOwner.IdOwner}"); if (result != null && result.IsError) { notificationManager.Alert(result.ErrorMessage, result.IsFatalError); } else if (!result.IsError) { notificationManager.ToastAlert(string.Format(Resources.BankDeleted, SelectedOwner.OwnerCode)); var owner = Owners.FirstOrDefault(x => x.IdOwner == SelectedOwner.IdOwner); if (owner != null) { Owners.Remove(owner); } } } finally { BusyIndicator.UnblockUI(); } } }
private void ConstructModel() { switch (AccountOwnerPartialViewType) { case AccountOwnerPartialViewType.Undefined: break; case AccountOwnerPartialViewType.ForAccount: try { // Если модель должна быть сформирована в виде "показать всех подписчиков счёта", тогда // в списке Accounts все элементы будут одинаковые - один и тот же новер счёта. var acc = CurrentAccount = Accounts.GroupBy(x => x.ID).Single().FirstOrDefault(); // "превращаем" все эти одинаковые элементы в один элемент if (acc != null) { // Если всё прошло нормально - формируем список "пользователь счёта acc - права пользователя на этот счёт" var list = (from right in AccountUserRights let listItemOwner = Owners.FirstOrDefault(x => x.UserId == right.Item1) select new Tuple <AccountUserModel, UserAccountRights>(listItemOwner, right.Item2)).ToList(); // Заполняем кортеж "ForAccount", которая будет использоваться в представлении "AccountOwnerPartialForAccount" ForAccount = new Tuple <Account, List <Tuple <AccountUserModel, UserAccountRights> > >(acc, list); } } #region catch (InvalidOperationException ex) { Logger.Error( "ConstructModel() - при формировании модели для представления AccountOwner, при просмотре управляющих счёта, " + "было переданно больше одного счёта или не одного", ex); } catch (Exception ex) { Logger.Error("ConstructModel() - Не найдено счёта", ex); } #endregion break; case AccountOwnerPartialViewType.ForOwner: try { // всё аналогично вредыдущему случаю "case" var own = CurrentOwner = Owners.GroupBy(x => x.Title).Single().FirstOrDefault(); if (own != null) { var list = (from right in AccountUserRights let listItemAccount = Accounts.FirstOrDefault(x => x.ID == right.Item1) select new Tuple <Account, UserAccountRights>(listItemAccount, right.Item2)).ToList(); ForUser = new Tuple <AccountUserModel, List <Tuple <Account, UserAccountRights> > >(own, list); } } #region catch (InvalidOperationException ex) { Logger.Error("ConstructModel() - при формировании модели для представления AccountOwner, при просмотре счетов управляющего, " + "было переданно больше одного управляющего или не одного", ex); } catch (Exception ex) { Logger.Error("ConstructModel() - Не найдено пользователя", ex); } #endregion break; } }
public string GetOwner(int OwnerID) { var owner = Owners.FirstOrDefault(o => o.Value == OwnerID.ToString()); return(owner == null ? "Unowned" : owner.Text); }
public ShopOwner GetOwner(Guid ownerGuid) => Owners.FirstOrDefault(o => o.OwnerGuid.Equals(ownerGuid));
public Owner this[string name] { get { return(Owners?.FirstOrDefault(x => x.Name == name)); } }