/// <summary>
        /// Eliminazione definitiva delle foto selezionate.
        /// </summary>
        /// <param name="param">Se param è una stringa e contiene il valore "SEL" allora elimino le foto selezionate.</param>
        void eliminareFoto()
        {
            IEnumerable <Fotografia> itemsToDelete = getListaFotoTarget();

            string msg         = "Sei sicuro di voler eliminare definitivamente\nle " + itemsToDelete.Count() + " fotografie selezionate?\nL'operazione non è recuperabile !";
            bool   procediPure = chiedereConfermaPerProseguire(msg, "Eliminazione definitiva foto");

            if (!procediPure)
            {
                return;
            }

            if (itemsToDelete.Count() > 5)
            {
                procediPure = chiedereConfermaPerProseguire(msg, "Eliminazione definitiva foto, 2^ conferma");
            }

            if (!procediPure)
            {
                return;
            }

            // chiamo il servizio che mi elimina fisicamente i files immagini, e le Fotografie dal db.
            int quanti = 0;

            using (IEliminaFotoVecchieSrv srv = LumenApplication.Instance.creaServizio <IEliminaFotoVecchieSrv>()) {
                quanti = srv.elimina(itemsToDelete);
            }
        }
Example #2
0
        public void eliminaUnaFotoTest()
        {
            using (new UnitOfWorkScope()) {
                UnitOfWorkScope.currentObjectContext.Connection.Open();
                LumenEntities entities = UnitOfWorkScope.currentDbContext;

                // ----- Ora provo in eSql
                string esql = @"SELECT  f.id
                              FROM LumenEntities.Fotografie as f
                              left join LumenEntities.RigheCarrelli as rc on rc.fotografia = f";

                DbCommand comando = UnitOfWorkScope.currentObjectContext.Connection.CreateCommand();
                comando.CommandText = esql;

                // Devo scegliere una foto che non sia dentro un carrello, altrimenti mi si spacca
                Guid idFoto = Guid.Empty;

                using (DbDataReader rdr = comando.ExecuteReader(CommandBehavior.SequentialAccess)) {
                    if (rdr.Read())
                    {
                        var oo = rdr.GetValue(0);
                        idFoto = (Guid)oo;
                    }

                    if (idFoto == Guid.Empty)
                    {
                        return;
                    }

                    Fotografia fDacanc = entities.Fotografie.Single(f => f.id == idFoto);

                    string nomeFileOrig = PathUtil.nomeCompletoOrig(fDacanc);

                    Object[] parametri = new Object[] { fDacanc.id };

                    Assert.IsTrue(File.Exists(nomeFileOrig));
                    ObjectResult <int> test1 = ((IObjectContextAdapter)entities).ObjectContext.ExecuteStoreQuery <int>(@"select count(*) from Fotografie where id = {0}", parametri);
                    Assert.IsTrue(test1.ElementAt(0) == 1);

                    using (IEliminaFotoVecchieSrv srv = LumenApplication.Instance.creaServizio <IEliminaFotoVecchieSrv>()) {
                        Fotografia [] listaDacanc = { fDacanc };
                        int           quante      = srv.elimina(listaDacanc);
                        Assert.IsTrue(quante == 1);
                    }

                    Assert.IsFalse(File.Exists(nomeFileOrig));
                    ObjectResult <int> test2 = ((IObjectContextAdapter)entities).ObjectContext.ExecuteStoreQuery <int>(@"select count(*) from Fotografie where id = {0}", parametri);
                    Assert.IsTrue(test2.ElementAt(0) == 0);

                    //
                    // Siccome non mi fido, provo a fare una query per vedere che la foto in questione sia davvero sparita.
                }
            }
        }