/// <summary>
 /// Metoda care intoarce lista de roluri a unui anumit utilizator.
 /// </summary>
 /// <param name="username">username-ul utilizatorului</param>
 /// <returns>lista de roluri pe care le are utilizatorul</returns>
 public override string[] GetRolesForUser(string username)
 {
     string[] rolesForUser = new string[10000];
     using (ITeamEntities context = new ITeamEntities())
     {
         List<IEnumerable<string>> roles = context.Utilizatoris.Where(r => r.numeUtilizator == username).Select(s => s.Roluris.Select(u => u.numeRol)).ToList();
         List<string> list = new List<string>();
         foreach (IEnumerable<string> r in roles)
         {
             list.AddRange(r);
         }
         rolesForUser = list.ToArray();
     }
     return rolesForUser;
 }
        /// <summary>
        /// Metoda care intoarce lista de utilizatori cu un anumit rol.
        /// </summary>
        /// <param name="roleName">numele rolului pentru care vrem sa aflam userii</param>
        /// <returns>lista cu toti userii cu rolul 'roleName'</returns>
        public override string[] GetUsersInRole(string roleName)
        {
            string[] usersInRole = new string[10000];

            using (ITeamEntities context = new ITeamEntities())
            {
               List<IEnumerable<string>> userInRole = context.Roluris.Where(s => s.numeRol == roleName).Select(r => r.Utilizatoris.Select(u=>u.numeUtilizator)).ToList();

               List<string> list = new List<string>(); ;
               foreach (IEnumerable<string> s in userInRole)
               {
                   list.AddRange(s);
               }
               usersInRole = list.ToArray();
            }

            return usersInRole;
        }
        /// <summary>
        /// Metoda care valideaza un user atunci cand acesta incearca sa se logheze.
        /// </summary>
        /// <param name="username">username-ul introdus in formular de login</param>
        /// <param name="password">parola introdusa in formularul de login</param>
        /// <returns>true daca utilizatorul este valid si false, altfel</returns>
        public override bool ValidateUser(string username, string password)
        {
            string encryptedPass = encryptUserPassword(password);
            using (ITeamEntities context = new ITeamEntities())
            {
                var userQuery = from Utilizatori in context.Utilizatoris
                                where Utilizatori.numeUtilizator == username && Utilizatori.parola == encryptedPass && Utilizatori.isDeleted == false
                                select Utilizatori;

                if (userQuery.Count() > 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }