/// <summary>
        /// Metodo per salvare i dati sul database e sul file Word.
        /// </summary>
        /// <param name="obj"></param>
        private void OnVisualizzaClick(object obj)
        {
            // controllo che siano stati scelti tutti i requisiti.
            if (controllo[0] == 1 && controllo[1] == 1 &&
                controllo[2] == 1 && controllo[3] == 1 &&
                controllo[4] == 1 && controllo[5] == 1 && controllo[6] == 1)
            {
                AppDbContext ctx = new AppDbContext();
                AssegnazioneDbDataRepository repoAss = new AssegnazioneDbDataRepository(ctx);

                // ricavo l'ultimo Qdc creato (quello al quale assegnare i Qdc).
                QdcDbDataRepository repoQdc = new QdcDbDataRepository(ctx);
                int ind = repoQdc.Get().Where(q1 => q1.Id == q1.Id).Max(q1 => q1.Id);
                Qdcs = new ObservableCollection <Qdc>(repoQdc.Get().Where(q1 => q1.Id == ind));
                Qdc q = Qdcs[0];

                // inserisco tutti i requisiti standard.
                for (int i = 0; i < codici.Length; i++)
                {
                    repoAss.Insert(new Assegnazione(codici[i], q, i + 1));
                }

                // inserisco i requisiti scelti dall'utente.
                repoAss.Insert(new Assegnazione(Cod14, q, Id14));
                repoAss.Insert(new Assegnazione(Cod15, q, Id15));
                repoAss.Insert(new Assegnazione(Cod16, q, Id16));
                repoAss.Insert(new Assegnazione(Cod17, q, Id17));
                repoAss.Insert(new Assegnazione(Cod18, q, Id18));
                repoAss.Insert(new Assegnazione(Cod19, q, Id19));
                repoAss.Insert(new Assegnazione(Cod20, q, Id20));

                // metodo per il salvataggio su Word.
                SaveInFile(q);

                // mi sposto in VisualizzaView.
                Messenger.Default.Send <BindableBase>(new VisualizzaViewModel());
            }
            else
            {
                MessageBox.Show("Inserisci tutti i requisiti");
            }
        }
        /// <summary>
        /// Metodo costruttore del ViewModel del requisito.
        /// </summary>
        public MotivazioneViewModel()
        {
            SaveVoto = new DelegateCommand(OnSaveClick, CanSaveClick);

            AppDbContext ctx = new AppDbContext();

            repoQdc = new QdcDbDataRepository(ctx);
            repoAss = new AssegnazioneDbDataRepository(ctx);
            try
            {
                int ind = repoQdc.Get().Where(q1 => q1.Id == q1.Id).Max(q1 => q1.Id);
                Motivazioni = new ObservableCollection <Assegnazione>(repoAss.Get().Where(a1 => a1.QdcId == ind));
                Ass         = Motivazioni[0];
            }
            catch (Exception e)
            {
                if (e is ArgumentOutOfRangeException || e is InvalidOperationException)
                {
                    MessageBox.Show("Non esistono requisiti assegnati a questo Qdc");
                }
            }
        }