public List <Recensione> GetRecensioniSalvate(string username)
        {
            List <Recensione> recensioni = null;

            try
            {
                if (username == null)
                {
                    throw new ArgumentException("Username nullo");
                }
                ISession sessione = GetConnection();
                sessione.BeginTransaction();
                RecensioniPreferite recensioniRicevute = null;
                ICriteria           criteria           = sessione.CreateCriteria <RecensioniPreferite>();
                recensioniRicevute = (RecensioniPreferite)criteria.Add(Expression.Like("Username", username)).UniqueResult();
                sessione.Transaction.Commit();
                sessione.Transaction.Dispose();
                recensioni = new List <Recensione>();
                foreach (Recensione r in recensioniRicevute.RecensioniSalvate)
                {
                    if (r.Punteggio != -1)
                    {
                        Libro temp = new Libro
                        {
                            Anno     = r.Libro.Anno,
                            Autore   = r.Libro.Autore,
                            FilePath = r.Libro.FilePath,
                            Gen      = r.Libro.Gen,
                            Titolo   = r.Libro.Titolo
                        };
                        Recensione recTemp = new Recensione()
                        {
                            Punteggio = r.Punteggio,
                            Libro     = temp,
                            Commento  = r.Commento,
                            Username  = r.Username,
                            Id        = r.Id
                        };
                        recensioni.Add(recTemp);
                    }
                }

                RegisterOperazione("get recensioni salvate", username);
                return(recensioni);
            }
            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());
            }
        }
 public void SalvaRecensione(Recensione recensione, string username)
 {
     try
     {
         RecensioniPreferite recPrefe = null;
         ISession sessione = _gestisciUtente.OpenConnection();
         sessione.BeginTransaction();
         ICriteria criteria = sessione.CreateCriteria<RecensioniPreferite>();
         recPrefe = (RecensioniPreferite)criteria.Add(Expression.Like("Username", username)).UniqueResult();
         Recensione trovata;
         ICriteria criteria2 = sessione.CreateCriteria<Recensione>();
         trovata = (Recensione)criteria2.Add(Expression.Like("Id", recensione.Id)).UniqueResult();
         if(trovata != null)
             recPrefe.RecensioniSalvate.Add(trovata);
         sessione.Update(recPrefe);
         sessione.Transaction.Commit();
         sessione.Transaction.Dispose();
         _gestisciUtente.RegisterOperazione("Salvataggio recensione", username);
     }
     catch (Exception e)
     {
         throw new FaultException<BookFault>(new BookFault(e.Message));
     }
 }
 public void RimuoviRecensione(Recensione recensione, string username)
 {
     try
     {
         RecensioniPreferite recPrefe = null;
         ISession sessione = _gestisciUtente.OpenConnection();
         sessione.BeginTransaction();
         ICriteria criteria = sessione.CreateCriteria<RecensioniPreferite>();
         recPrefe = (RecensioniPreferite)criteria.Add(Expression.Like("Username", username)).UniqueResult();
         List<Recensione> recSalvateNew = new List<Recensione>();
         foreach (Recensione rec in recPrefe.RecensioniSalvate)
             if (rec.Id != recensione.Id)
                 recSalvateNew.Add(rec);
         recPrefe.RecensioniSalvate = recSalvateNew;
         sessione.Update(recPrefe);
         sessione.Transaction.Commit();
         sessione.Transaction.Dispose();
         _gestisciUtente.RegisterOperazione("Rimozione recensione salvata", username);
     }
     catch (Exception e)
     {
         throw new FaultException<BookFault>(new BookFault(e.Message));
     }
 }