Мне нужна функция входа в систему (вход в систему - только пример, любой другой часто используемый метод может подойти), который принимает электронную почту и пароль в качестве параметра и спрашивает DB, есть ли такой пользователь. Если да, он должен вернуть customer_id (int), если нет, он вернет сообщение о том, почему не удалось войти (например, нет такого адреса электронной почты).
Я также не хочу переписывать функцию входа каждый раз. Я хочу написать это один раз в общем проекте, который я могу использовать в каждом своем проекте и использовать его повторно. Но я пытаюсь найти лучшую практику для этого. До сих пор я думал что-то вроде ниже, но проблема для меня заключается в том, что я не могу вернуть customerID, который я получу в codebehind в моих проектах (любом другом проекте), и открыть с ним переменную сеанса. Я могу только вернуть строки в структуре ниже. Я также подумал о возврате Dic, но это также неправильно, я думаю, потому что, если bool (key) имеет значение true, customerID не является строкой (значением). Можете ли вы помочь мне, пожалуйста, узнать правильный способ использования общих функций без необходимости думать о возвращаемых сообщениях и переменных дважды? Большое спасибо
public class UserFunctions
{
private enum Info
{
//thought of returning codes??
LoginSuccess = 401,
NoMatchPasswordEmail = 402,
InvalidEmail = 403,
};
public string TryLogin(string email, string password)
{
bool isValidEmail = Validation.ValidEmail(email);
if (isValidEmail == false)
{
return Result(Info.InvalidEmail);
// returning a message here
}
Customers customer = new Customers();
customer.email = email;
customer.password = password;
DataTable dtCustomer = customer.SelectExisting();
if (dtCustomer.Rows.Count > 0)
{
int customerID = int.Parse(dtCustomer.Rows[0]["CustomerID"].ToString());
return Result(Info.LoginSuccess);
// Here I cant return the customerID. I dont wanna open a session here because this function has no such a job. Its other projects button events job I guess
}
else
{
return Result(Info.NoMatchPasswordEmail);
}
}
private string Result(Info input)
{
switch (input)
{
case Info.NoMatchPasswordEmail:
return "Email ve şifre bilgisi uyuşmamaktadır";
case Info.InvalidEmail:
return "Geçerli bir email adresi girmelisiniz";
case Info.LoginSuccess:
return "Başarılı Login";
}
return "";
}
}