Exemplo n.º 1
0
        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;
            }
        }