public void RimuoviLista(Lista lista, string username)
 {
     try
     {
         ListePreferite listePrefe = null;
         ISession       sessione   = _gestisciUtente.OpenConnection();
         sessione.BeginTransaction();
         ICriteria criteria = sessione.CreateCriteria <ListePreferite>();
         listePrefe = (ListePreferite)criteria.Add(Expression.Like("Username", username)).UniqueResult();
         List <Lista> listeSalvateNew = new List <Lista>();
         foreach (Lista l in listePrefe.ListeSalvate)
         {
             if (l.Id != lista.Id)
             {
                 listeSalvateNew.Add(l);
             }
         }
         listePrefe.ListeSalvate = listeSalvateNew;
         sessione.Update(listePrefe);
         sessione.Transaction.Commit();
         sessione.Transaction.Dispose();
         _gestisciUtente.RegisterOperazione("rimozione lista personale", username);
     }
     catch (Exception e)
     {
         throw new FaultException <BookFault>(new BookFault(e.Message));
     }
 }
 public void SalvaLista(Lista lista, string username)
 {
     try
     {
         ListePreferite listePrefe = null;
         ISession       sessione   = _gestisciUtente.OpenConnection();
         sessione.BeginTransaction();
         ICriteria criteria = sessione.CreateCriteria <ListePreferite>();
         listePrefe = (ListePreferite)criteria.Add(Expression.Like("Username", username)).UniqueResult();
         Lista     trovata   = null;
         ICriteria criteria2 = sessione.CreateCriteria <Lista>();
         trovata = (Lista)criteria2.Add(Expression.Like("Id", lista.Id)).UniqueResult();
         if (trovata != null)
         {
             listePrefe.ListeSalvate.Add(trovata);
         }
         sessione.Update(listePrefe);
         sessione.Transaction.Commit();
         sessione.Transaction.Dispose();
         _gestisciUtente.RegisterOperazione("salvataggio lista personale", username);
     }
     catch (Exception e)
     {
         throw new FaultException <BookFault>(new BookFault(e.Message));
     }
 }
        public List <Lista> GetListeSalvate(string username)
        {
            List <Lista> listePrefe = null;

            try
            {
                if (username == null)
                {
                    throw new ArgumentException("Username nullo");
                }
                ListePreferite listeReceived = null;
                ISession       sessione      = GetConnection();
                sessione.BeginTransaction();
                ICriteria criteria = sessione.CreateCriteria <ListePreferite>();
                listeReceived = (ListePreferite)criteria.Add(Expression.Like("Username", username)).UniqueResult();
                sessione.Transaction.Commit();
                sessione.Transaction.Dispose();
                listePrefe = new List <Lista>();
                foreach (Lista l in listeReceived.ListeSalvate)
                {
                    if (l.Username != null)
                    {
                        Lista listaTemp = new Lista()
                        {
                            Nome       = l.Nome,
                            Gen        = l.Gen,
                            IsVisibile = l.IsVisibile,
                            ListaLibri = new List <Libro>(),
                            Username   = l.Username,
                            Id         = l.Id
                        };
                        foreach (Libro lib in l.ListaLibri)
                        {
                            Libro temp = new Libro
                            {
                                Anno     = lib.Anno,
                                Autore   = lib.Autore,
                                FilePath = lib.FilePath,
                                Gen      = lib.Gen,
                                Titolo   = lib.Titolo
                            };
                            listaTemp.ListaLibri.Add(temp);
                        }
                        listePrefe.Add(listaTemp);
                    }
                }
                RegisterOperazione("get liste salvate", username);
                return(listePrefe);
            }
            catch (Exception e)
            {
                throw new FaultException <BookFault>(new BookFault(e.Message));
            }
        }
        public void RegistraDati(string username, string password, string email)
        {
            if (String.IsNullOrEmpty(username))
            {
                throw new ArgumentException("Username nullo");
            }
            if (String.IsNullOrEmpty(password))
            {
                throw new ArgumentException("Password nulla");
            }
            if (String.IsNullOrEmpty(email))
            {
                throw new ArgumentException("Email nulla");
            }

            if (username.Length < 3)
            {
                throw new ArgumentException("Lunghezza minima username: 3 caratteri");
            }
            if (password.Length < 10)
            {
                throw new ArgumentException("Lunghezza minima password: 10 caratteri");
            }

            try
            {
                ISession sessione = GetConnection();
                sessione.BeginTransaction();
                Iscritto iscritto = new Iscritto
                {
                    Username = username,
                    Email    = email,
                    Password = password,
                    Ruolo    = "utente"
                };
                sessione.Save(iscritto);
                RecensioniPreferite recensioniPreferite = new RecensioniPreferite(username);
                sessione.Save(recensioniPreferite);
                ListePreferite listePreferite = new ListePreferite(username);
                sessione.Save(listePreferite);
                sessione.Transaction.Commit();
                sessione.Transaction.Dispose();
                PrintAccesso("login", username);
            }
            catch (Exception e)
            {
                throw new ArgumentException("Credenziali non valide: " + e.ToString());
            }
        }