private void creareNuovoFotografo()
        {
            try {
                if ("*".Equals(nuovoFotografo.id))
                {
                    nuovoFotografo.id = (string)fotografiReporitorySrv.getNextId();
                }

                // Salvo nel database
                fotografiReporitorySrv.addNew(nuovoFotografo);

                fotografiReporitorySrv.saveChanges();

                // Non c'è più bisogno perché mi rinfresco sulla ui tramite un messaggio
                // Aggiungo alla collezione visuale (per non dover rifare la query)
                //	fotografi.Add( nuovoFotografo );

                // Svuoto per nuova creazione
                istanziaNuovoFotografo();
            } catch (Exception ee) {
                // probabilmente sono state inserite le iniziali doppie (not unique)
                fotografiReporitorySrv.delete(nuovoFotografo);
                dialogProvider.ShowError(ErroriUtil.estraiMessage(ee), "Salva Fotografo", null);
            }
        }
Example #2
0
        void salvare()
        {
            if (!possoSalvare)
            {
                throw new InvalidOperationException("Impossibile salvare in questo momento");
            }

            TEntity entita = null;

            try {
                if (collectionView.IsAddingNew)
                {
                    collectionView.CommitNew();
                }
                if (collectionView.IsEditingItem)
                {
                    collectionView.CommitEdit();
                }

                entita = (TEntity)collectionView.CurrentItem;

                switch (status)
                {
                case DataEntryStatus.New:
                    entityRepositorySrv.addNew(entita);
                    break;

                case DataEntryStatus.Edit:
                    // TODO qui occorrerebbe gestire un controllo di concorrenza !!! Per ora salto
                    // entityRepositorySrv.update( ref entita );
                    break;

                case DataEntryStatus.Delete:
                    // entityRepositorySrv.delete( entita );
                    break;

                case DataEntryStatus.View:
                    break;
                }

                passoPrimaDiSalvare(entita);

                entityRepositorySrv.saveChanges();

                _giornale.Debug("salvata entità: " + entita);
                dialogProvider.ShowMessage("Ok salvataggio riuscito\n" + entita, "Info");

                passoDopoSalvato(entita);

                cambiareStatus(DataEntryStatus.View);
            } catch (Exception eee) {
                _giornale.Error("Salvataggio entità " + entita, eee);
                dialogProvider.ShowError(ErroriUtil.estraiMessage(eee), "ERRORE", null);
            }
        }
Example #3
0
        protected virtual bool cancella(TEntity entita)
        {
            bool prosegui = false, esito = false;

            dialogProvider.ShowConfirmation("L'elemento verrà cancellato in modo definitivo.\nConfermi la cancellazione ?", "Cancellazione",
                                            (sino) => {
                prosegui = sino;
            });

            if (prosegui)
            {
                try {
                    if (!collectionView.Contains(entita))
                    {
                        throw new LumenException("elemento da cancellare non trovato in lista");
                    }

                    // Prima di rimuovere dall'elenco devo spegnere l'elemento corrente
                    // se non sposto il puntatore all'elemento corrente, non posso poi toglierlo dalla collection osservabile.
                    if (collectionView.CurrentPosition > 0)
                    {
                        collectionView.MoveCurrentToPosition(0);
                    }
                    else
                    {
                        collectionView.MoveCurrentToNext();
                    }

                    collectionView.Remove(entita);                              // rimuovo dalla collection
                    entityRepositorySrv.delete(entita);                         // rimuovo dal database
                    int quanti = entityRepositorySrv.saveChanges();

                    if (quanti == 1)
                    {
                        esito = true;


                        dialogProvider.ShowMessage("L'elemento è stato cancellato correttamente.", "Cancellazione riuscita");
                    }
                    else
                    {
                        dialogProvider.ShowError("Cancellati " + quanti + " entità", "Attenzione", null);
                    }
                } catch (Exception ee) {
                    _giornale.Error(ErroriUtil.estraiMessage(ee), ee);
                    dialogProvider.ShowError(ErroriUtil.estraiMessage(ee), "Cancellazione fallita", null);
                    entityRepositorySrv.refresh(entita);                        // Devo rileggere lo stato, altrimenti rimane unchanged e mi da sampre errore
                }
            }
            return(esito);
        }
Example #4
0
        /// <summary>
        /// Called on the end of the scope. Disposes the ObjectContext.
        /// </summary>
        public void Dispose()
        {
            if (!_isDisposed)
            {
                try {
                    /* End of scope, so clear the thread static
                     * _currentScope member: */
                    _currentScope = null;
                    Thread.EndThreadAffinity();

                    if (_saveAllChangesAtEndOfScope)
                    {
                        // Qui ci potrebbero essere delle eccezioni
                        _dbContext.SaveChanges();
                    }
                } catch (Exception ee) {
                    _giornale.Error("Salvataggio sul db fallito: " + ErroriUtil.estraiMessage(ee), ee);
                    throw ee;
                } finally {
                    // In ogni caso devo chiudere tutto
                    _dbContext.Dispose();
                    _dbContext  = null;
                    _isDisposed = true;

                    _giornale.Debug("-Chiudo Unit-Of-Work");
                }
            }
            else
            {
                _giornale.Warn("Come mai casco qui ?? Impossibile. Debuggare!");
                if (System.Diagnostics.Debugger.IsAttached)
                {
                    System.Diagnostics.Debugger.Break();
                }
            }
        }
Example #5
0
        public void Execute(object parameter)
        {
            try {
                _giornale.Debug("Eseguo RelayCommad: " + _execute.Method.ToString() + " parametro=" + parameter);

                esegui(parameter);

                if (_afterExecute != null)
                {
                    _giornale.Debug("RelayCommad invoco after execute");

                    _afterExecute.Invoke(parameter);
                }

                _giornale.Debug("Esecuzione RelayCommad completata: " + _execute.Method.ToString() + " parametro=" + parameter);
            } catch (OutOfMemoryException ofm) {
                long memoryPrima = Process.GetCurrentProcess().WorkingSet64;

                FormuleMagiche.attendiGcFinalizers();

                long memoryDopo = Process.GetCurrentProcess().WorkingSet64;

                _giornale.Error("finita la memoria: prima=" + memoryPrima + " dopo=" + memoryDopo);

                if (_execute.Target is ViewModelBase)
                {
                    ViewModelBase viewModel = _execute.Target as ViewModelBase;
                    if (viewModel.dialogProvider != null)
                    {
                        viewModel.dialogProvider.ShowError(ofm.GetType().Name + "\n" + ErroriUtil.estraiMessage(ofm), "Errore imprevisto.", null);
                    }
                }
            } catch (Exception ee) {
                _giornale.Error(_execute.Method.ToString(), ee);

                if (_execute.Target is ViewModelBase)
                {
                    ViewModelBase viewModel = _execute.Target as ViewModelBase;
                    if (viewModel.dialogProvider != null)
                    {
                        viewModel.dialogProvider.ShowError(ee.GetType().Name + "\n" + ErroriUtil.estraiMessage(ee), "Errore imprevisto. Consultare il Log", null);
                    }
                }

                // per ora non voglio far spaccare il programma altrimenti perdo il lavoro in corso.
                // anche se concettualmente sarebbe più corretto rilanciare l'errore.
                // L'unico problema è che non c'è modo di fare un try-catch di un Command.
                // throw ee;
            }
        }
Example #6
0
        public void carrelloTest()
        {
            using (LumenEntities dbContext = new LumenEntities()) {
                Carrello c1 = new Carrello();
                c1.id             = Guid.NewGuid();
                c1.giornata       = DateTime.Today;
                c1.tempo          = DateTime.Now;
                c1.totaleAPagare  = 123m;
                c1.righeCarrello  = new EntityCollection <RigaCarrello>();
                _carrelloInserito = c1;

                // ---

                RigaCarrello r1 = new RigaCarrello();
                r1.fotografia          = Costanti.findUnaFotografiaRandom(dbContext);
                r1.fotografo           = r1.fotografia.fotografo;
                r1.discriminator       = RigaCarrello.TIPORIGA_MASTERIZZATA;
                r1.id                  = Guid.NewGuid();
                r1.prezzoLordoUnitario = new Decimal(20);
                r1.quantita            = 2;
                r1.prezzoNettoTotale   = Decimal.Multiply(r1.prezzoLordoUnitario, r1.quantita);
                r1.descrizione         = "Foto masterizzata";
                c1.righeCarrello.Add(r1);
                _contaMasterizzate++;

                // ---

                RigaCarrello r2 = new RigaCarrello();
                r2.fotografia          = Costanti.findUnaFotografiaRandom(dbContext);
                r2.discriminator       = RigaCarrello.TIPORIGA_STAMPA;
                r2.id                  = Guid.NewGuid();
                r2.prezzoLordoUnitario = new Decimal(5);
                r2.quantita            = 3;
                r2.prezzoNettoTotale   = Decimal.Multiply(r2.prezzoLordoUnitario, r2.quantita);
                r2.descrizione         = "RicaFotoStampata1";
                r2.totFogliStampati    = 3;
                r2.prodotto            = Utilita.ottieniFormatoCarta(dbContext, "A4");
                r2.fotografo           = Utilita.ottieniFotografoMario(dbContext);
                c1.righeCarrello.Add(r2);
                _contaStampate++;

                // ---


                RigaCarrello r3 = new RigaCarrello();
                r3.fotografia          = Costanti.findUnaFotografiaRandom(dbContext);
                r3.discriminator       = RigaCarrello.TIPORIGA_STAMPA;
                r3.id                  = Guid.NewGuid();
                r3.prezzoLordoUnitario = new Decimal(5);
                r3.quantita            = 2;
                r3.prezzoNettoTotale   = Decimal.Multiply(r3.prezzoLordoUnitario, r3.quantita);
                r3.descrizione         = "RicaFotoStampata1";
                r3.totFogliStampati    = 3;
                r3.prodotto            = Utilita.ottieniFormatoCarta(dbContext, "A4");
                r3.fotografo           = Utilita.ottieniFotografoMario(dbContext);
                c1.righeCarrello.Add(r3);
                _contaStampate++;

                // ---

                dbContext.Carrelli.Add(c1);


                try {
                    dbContext.SaveChanges();
                } catch (Exception ee) {
                    String msg = ErroriUtil.estraiMessage(ee);
                    Console.WriteLine(msg);

                    throw ee;
                }
            }

            // Verifico che l'inserimento appena effettuato sia andato bene.
            queryPolimorficaCorrente();


            // provo altre tecniche di query, giusto per sport.
            queryPolimorficaSql();
            queryPolimorfica();
        }
Example #7
0
        public void simulaUiStaccando()
        {
            Carrello c3;

            using (LumenEntities dbContext = new LumenEntities()) {
                c3 = new Carrello {
                    id = Guid.NewGuid(), giornata = DateTime.Today, tempo = DateTime.Now, totaleAPagare = 123m
                };
                c3.righeCarrello = new EntityCollection <RigaCarrello>();
            }

            // ----------
            FormatoCarta formato;

            using (LumenEntities dbContext = new LumenEntities()) {
                formato = dbContext.FormatiCarta.FirstOrDefault();
            }

            Fotografia fotografia;

            using (LumenEntities dbContext = new LumenEntities()) {
                fotografia = dbContext.Fotografie.FirstOrDefault();
            }

            Fotografo fotografo;

            using (LumenEntities dbContext = new LumenEntities()) {
                fotografo = dbContext.Fotografi.FirstOrDefault();
            }

            // ----------

            using (LumenEntities dbContext = new LumenEntities()) {
                RigaCarrello r1 = new RigaCarrello();
                r1.discriminator       = RigaCarrello.TIPORIGA_STAMPA;
                r1.id                  = Guid.NewGuid();
                r1.prezzoLordoUnitario = new Decimal(5);
                r1.quantita            = 3;
                r1.prezzoNettoTotale   = Decimal.Multiply(r1.prezzoLordoUnitario, r1.quantita);
                r1.descrizione         = "RicaFotoStampata1";
                r1.totFogliStampati    = 11;

                r1.prodotto   = formato;
                r1.fotografo  = fotografo;
                r1.fotografia = fotografia;

                c3.righeCarrello.Add(r1);
            }


            // ----------

            using (LumenEntities dbContext = new LumenEntities()) {
                RigaCarrello r1 = c3.righeCarrello.ElementAt(0);

                // Riattacco le associazioni altrimeti si spacca (sembra)
                dbContext.FormatiCarta.Attach(r1.prodotto as FormatoCarta);
                dbContext.Fotografi.Attach(r1.fotografo);
                dbContext.Fotografie.Attach(r1.fotografia);

                dbContext.Carrelli.Add(c3);

                try {
                    dbContext.SaveChanges();
                } catch (DbEntityValidationException ee) {
                    string msg = ErroriUtil.estraiMessage(ee);
                    Console.WriteLine(msg);

                    throw;
                }
            }
        }