azkarriyaz Ответов: 1

Проверьте три условия при входе в систему


hi, am new to mvc web api actually am trying to login with three condition 
 
 
 
problem (1) 
   if ( 1. login if email exist in emp table (or)2. login if email exist in user table )
   {
      
      return "succeslogin"; 
   }
   else if( 3. login if email exist in emp table for first time )
      { 
       
       return "succeslogin_first_time";
       } 
 }
else
{
 return "fails"; 
} 
 
 In my C#
 
public class All
{
public string EmailId { get; set; }
public string Password { get; set; }
}
 
public partial class tblEmployee
{
public int Id { get; set; }
public long Emp_Id { get; set; }
public string Emp_Email { get; set; }
public string Emp_Name { get; set; }
public string Emp_Dept { get; set; }
public Nullable<long> Emp_Mobile { get; set; }
public Nullable<long> Emp_Payroll { get; set; }
public string Emp_Password { get; set; }
public Nullable<bool> Emp_FirstLog { get; set; }
}
public partial class tblUser
{
public int Id { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
 
 
public string LoginAttempt(All user)
{
var loginEmp = db.tblEmployees.FirstOrDefault(e => e.Emp_Email == user.EmailId);
var loginUser = db.tblUsers.FirstOrDefault(u => u.Email == user.EmailId);
if (loginEmp != null || loginUser != null)
{
return "loginsuccess";
}
else if (loginEmp.Emp_FirstLog == "true") // 
{
return "error";
}
else{
return "error";
}
}
 
 
 Error 1 Inconsistent accessibility: parameter type 'ServerControl.Controllers.All' is less accessible than method 'ServerControl.Controllers.LoginAcuteController.LoginAttempt(ServerControl.Controllers.All)'
 Error 2 Operator '==' cannot be applied to operands of type 'bool?' and 'string'
 
  
 Problem(2)
 
1.How can i check if email login  for first time 
2.How can i define in email login for first time in database
 
 
 
please help me to solve this issue  


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

пытался сделать, но у меня получилось
Ошибка 1 несогласованная доступность: тип параметра ' ServerControl.Контроллеры.Все "менее доступно, чем метод" ServerControl.Контроллеры.LoginAcuteController.LoginAttempt(ServerControl.Контроллеры.Все)'
Ошибка 2 оператор '= = 'не может быть применен к операндам типа 'bool?' и 'string'

1 Ответов

Рейтинг:
2

OriginalGriff

Вторая проблема очевидна:

Operator '==' cannot be applied to operands of type 'bool?' and 'string'

else if (loginEmp.Emp_FirstLog == "true")

Emp_FirstLog объявляется как Nullable< bool>, а не string.
Так что попробуй:
else if (loginEmp.Emp_FirstLog == true)
И эта ошибка должна исчезнуть.

Первый из них сложнее: из вашего кода не очевидно, что именно происходит с точки зрения деклараций.
Но в основном что-то в содержащих классах для класса All (или, возможно, класса LoginAcuteController, но это менее вероятно) protected, internal, или private, и это несовместимо с публичным объявлением метода LoginAttempt - что означает, что некоторый код, который может вызвать метод, не может получить доступ к классу, который он должен передать ему. Отсюда и сообщение об ошибке.
Я бы предложил внимательно изучить все ваши контейнерные классы и точно оценить, какой модификатор доступа вы используете и какой вам нужен: кому действительно нужен доступ к методу?
Извините , но мы не можем сделать это для вас!