SimonSmithTT Ответов: 1

Как рекламировать возможность для людей выбирать филиал/местоположение, в котором они находятся, когда входят в систему MVC5


хороший день.

У меня есть MVC5 проекта используя удостоверение 2. Я создал таблицу с именем branch, в которой хранятся 5 местоположений филиалов. Цель состоит в том, чтобы пользователь выбрал ветку, в которую он хочет войти, и затем она будет помечена для всех своих транзакций. После входа в систему пользователь сможет видеть только транзакцию(свою и чужую), соответствующую выбранной им ветви после первоначальной аутентификации.


Не могли бы вы указать мне справа ресурсы, которые могли бы принести пользу для этого. Спасибо

Что я уже пробовал:

Я расширил модель учетной записи, включив в нее внешний фей для таблицы под названием Поиск ветвей, который затем обеспечит связь "многие ко многим" с ветвями таблицы

1 Ответов

Рейтинг:
1

David_Wimbley

Таким образом, вы уже привязали пользователя к ветви, когда он регистрируется в таблице User, которая создается в identity framework, верно?

Когда вы получаете пользователя (предполагая, что вы используете entity framework), вы должны иметь возможность получить идентификатор транзакции с помощью оператора EF select (var user = users.Где(М=&ГТ;м. имя пользователя == "").выберите(м=&ГТ;м. сделок);).

Но перейдем к главному вопросу вашего вопроса.

Я думаю, что какие бы данные вы ни хранили, вам нужно будет включить guid/id транзакции от пользователя в строку, сохраняемую в базе данных.

Для хранения данных можно создать метод расширения в интерфейсе IIdentity, чтобы получить доступ к идентификатору транзакции, привязанному к этому пользователю. Что-то вроде этого

public static string GetTransactionId(this IIdentity identity)
        {
            var username = identity.GetUserName();
            var users = userstable.Where(m => m.UserName == username).Select(m => m.Transactions).FirstOrDefault;
            
            if (user == null)
            {
                return "";
            }

            var transId = users.TransactionId;
            return transId;
        }


Тогда использование будет просто

User.Identity.GetTransactionId()


Вы сможете использовать это, чтобы получить идентификатор транзакции, а затем сохранить его в таблице.

Оттуда, в вашем контроллере/моделях, вы получите данные из своей БД, передав идентификатор транскрипции от контроллера.

Что-то вроде

var transactionId = User.Identity.GetTransactionId();
var model = new MyDataModel();
model.Build(transactionId);


Тогда в рамках вашей модели вы бы сделали что-то вроде

var mydatainmodel = tableindb.Where(m=>m.TransactionId == transactionIdPassedIn);


Возможно, я смешал терминологию между тем, что вы назвали "филиалом" и "транзакцией", но надеюсь, что это направит вас в правильном направлении.