public void ChangeMyPassword(LoginToken <AirlineCompany> token, string oldPassword, string newPassword)
 {
     if (token != null)
     {
         if (oldPassword == token.User.user.Password)
         {
             token.User.user.Password = newPassword;
             _userDAO.Update(token.User.user);
             //log4net
         }
         else
         {
             logger.Debug($"Attempt to change Password for airline {token.User.Name} has failed. ");
             throw new WrongCredentialsException("The old password is incorrect. Please try again.");
         }
     }
     else
     {
         logger.Error("Error - token is null");
         throw new NullTokenException($"There is a problem to to change Password for airline {token.User.Name}. Please check your login details.Token is null.");
     }
 }
        public void CreateAdmin(LoginToken <Administrator> token, Administrator admin)
        {
            logger.Debug("starting CreateAdmin()");

            if (token != null)
            {
                if (token.User.Level == 3)
                {
                    //_userDAO.Add(admin.user);
                    _adminDAO.Add(admin);
                }
                else
                {
                    logger.Debug("This administrator level is not authorized to create a new admin.");
                    throw new WrongLevelOfAccessException("Access is denied. You have no authorization to create a new admin.");
                }
            }
            else
            {
                logger.Error("Error - token is null");
                throw new NullTokenException("There is a problem to create a new admin. Access is denied.");
            }
        }
        public bool TryLogin(string userName, string password, out ILoginToken token)
        {
            token = null;
            if (userName == "admin" && password == "9999")
            {
                logger.Info("Super administrator logged in.");
                token = new LoginToken <Administrator>();
                return(true);
            }
            else
            {
                try
                {
                    User user;
                    try
                    {
                        user = _userDAO.GetUserByUsername(userName);
                    }
                    catch (Exception e)
                    {
                        logger.Fatal("Wrong username. Please try again.", e);
                        return(false);
                    }

                    if (user.Password == password)
                    {
                        if (user.User_Role == 1)
                        {
                            Administrator admin = _adminDAO.GetById(user.Id);
                            admin.user = user;
                            token      = new LoginToken <Administrator>()
                            {
                                User = admin
                            };
                        }
                        if (user.User_Role == 2)
                        {
                            AirlineCompany airline = _airlineDAO.GetAirlineByUsername(user.Username); //TODO check if null
                            airline.user = user;
                            token        = new LoginToken <AirlineCompany>()
                            {
                                User = airline
                            };
                        }
                        if (user.User_Role == 3)
                        {
                            Customer customer = _customerDAO.GetCustomerByUsername(user.Username);
                            customer.user = user;
                            token         = new LoginToken <Customer>()
                            {
                                User = customer
                            };
                        }
                        logger.Info("Login was completed. Username and password are correct.");
                        return(true);
                    }
                    else
                    {
                        logger.Error("Login failed. Username or password are incorrect.");
                        throw new WrongCredentialsException("Username or password are incorrect. Please try again.");
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    logger.Error("Login failed.", e);
                    return(false);
                }
                //log4net
            }
        }