示例#1
0
        public static int getMaxCount(Fotografia foto)
        {
            int count = 0;

            // "2012-10-29.Gio\\EDOARDO.Fot"
            string subDirFileOrig = Path.GetDirectoryName(foto.nomeFile);
            // "2012-10-29.Gio\\EDOARDO.Fot\\.Thumb"
            string subDirFileProvino = Path.Combine(subDirFileOrig, PathUtil.THUMB);
            // "2012-10-29.Gio\EDOARDO.Fot\.Modif"
            string subDirFileRisult = Path.Combine(subDirFileOrig, PathUtil.MODIF);

            FileInfo fileInfoSrc = new FileInfo(foto.nomeFile);

            if (isClone(foto))
            {
                fileInfoSrc = getOriginalFileNameFromClone(foto);
            }

            // "e (10).jpg"
            string nomeFileOrig = fileInfoSrc.Name;

            // "e (10)"
            string nomeFileOrigWithoutExtension = Path.GetFileNameWithoutExtension(nomeFileOrig);

            count = getMaxCount(Path.Combine(Configurazione.cartellaRepositoryFoto, subDirFileOrig), nomeFileOrigWithoutExtension);

            return(count);
        }
示例#2
0
        private async void CrearFoto(string ruta, string codigo)
        {
            Fotografia fotografia = new Fotografia()
            {
                perfil = true,
                pieza  = codigo,
                ruta   = ruta,
                tipo   = 1
            };
            Task  t = Task.Factory.StartNew(() => fotografia.guardar());
            await t;

            if (!Error.isActivo())
            {
                if (ruta != "")
                {
                    ImageSource imageSource = new BitmapImage(new Uri(fotografia.ruta));
                    foto.Source = imageSource;
                }
            }
            else
            {
                MessageBox.Show("Ocurrio un error al subir la fotografia");
            }
        }
示例#3
0
        public async Task <Fotografia> AddFotografia(Fotografia value)
        {
            await context.Fotografia.AddAsync(value);

            context.SaveChanges();
            return(value);
        }
示例#4
0
        public void ricercaTest()
        {
            ParamCercaFoto param = new ParamCercaFoto();

            param.giornataIniz = new DateTime(2000, 1, 1);
            param.giornataFine = new DateTime(2299, 12, 31);

            using (LumenEntities dbContext = new LumenEntities()) {
                Evento    ev = dbContext.Eventi.First();
                Fotografo op = dbContext.Fotografi.First();

                Fotografia f = dbContext.Fotografie.First();
                f.evento        = ev;
                f.fotografo     = op;
                f.faseDelGiorno = (short)FaseDelGiorno.Mattino;
                f.didascalia    = "W IL POLLO ARROSTO";

                dbContext.SaveChanges();


                param.numeriFotogrammi = "3, 5, 7," + f.numero;
                param.eventi           = new Evento[] { ev };
                param.fotografi        = new Fotografo [] { op };
                param.fasiDelGiorno    = new FaseDelGiorno [] { FaseDelGiorno.Mattino, FaseDelGiorno.Sera };
                param.didascalia       = "%POLLO%";            // Ricerca like


                IList <Fotografia> ris = _impl.cerca(param);
                Assert.IsTrue(ris.Count > 0);
                Console.WriteLine(ris.Count);
            }
        }
示例#5
0
        T findComponentFromTemplate <T>(Fotografia f, string nomeComponente)
        {
            // Per ricavare il componente desiderato, devo fare diversi passaggi

            // 2. dalla foto ricavo il ListBoxItem che la contiene
            ContentPresenter contentPresenter;
            var test = itemsControl.ItemContainerGenerator.ContainerFromItem(f);

            if (test is ContentControl)
            {
                // 3. dal ListBoxItem ricavo il suo ContentPresenter
                ContentControl listBoxItem = (ContentControl)test;
                contentPresenter = AiutanteUI.FindVisualChild <ContentPresenter>(listBoxItem);
            }
            else
            {
                // IL componente è già avvolto direttamente nel presenter
                contentPresenter = (ContentPresenter)test;
            }

            // 4. con il ContentPresenter ricavo il DataTemplate (del singolo elemento)
            DataTemplate dataTemplate = contentPresenter.ContentTemplate;

            // 5. con il DataTemplate ricavo l'Image contenuta

            return((T)dataTemplate.FindName(nomeComponente, contentPresenter));
        }
        // ------------------


        void associareFacciaFotografo()
        {
            // La foto la prendo da quella selezionata
            if (targetMode != TargetMode.Singola)
            {
                throw new InvalidOperationException("Operazione solo su singola foto");
            }

            if (selettoreFotografoViewModelFaccia.countElementiSelezionati != 1)
            {
                throw new InvalidOperationException("Non è stato selezionato un Fotografo");
            }

            Fotografia fotografia = getListaFotoTarget().Single();

            Fotografo fotografo = selettoreFotografoViewModelFaccia.fotografoSelezionato;

            AiutanteFoto.setImmagineFotografo(fotografia, fotografo);

            string msg = string.Format("Impostata immagine per faccia fotografo {0}\nCon la foto numero {1}", fotografo.cognomeNome, fotografia.numero);

            _giornale.Info(msg);

            // Spengo la selezione per la prossima volta
            selettoreFotografoViewModelFaccia.fotografiCW.deselezionaTutto();

            dialogProvider.ShowMessage(msg, "Operazione riuscita");
        }
示例#7
0
        /// <summary>
        /// Elimina tutte le Correzioni da una foto e quindi ricrea il provino
        /// </summary>
        public void tornaOriginale(Fotografia fotografia, bool salvare)
        {
            fotografia.correzioniXml = null;

            // Rimuovo anche eventuale file su disco
            string nomeFileRis = PathUtil.nomeCompletoRisultante(fotografia);

            if (File.Exists(nomeFileRis))
            {
                File.Delete(nomeFileRis);
            }

            // Rilascio memoria
            AiutanteFoto.disposeImmagini(fotografia, IdrataTarget.Tutte);

            AiutanteFoto.creaProvinoFoto(fotografia);

            // Le due foto grandi le rilascio per non intasare la memoria qualora questo metodo è chiamato più volte
            AiutanteFoto.disposeImmagini(fotografia, IdrataTarget.Originale);
            AiutanteFoto.disposeImmagini(fotografia, IdrataTarget.Risultante);

            if (salvare)
            {
                Fotografia f = fotografia;
                fotografieRepositorySrv.update(ref f, true);
                fotografieRepositorySrv.saveChanges();                  // Persisto nel db le modifiche

                // Devo informate tutti che questa foto è cambiata
                FotoModificateMsg msg = new FotoModificateMsg(this, fotografia);
                pubblicaMessaggio(msg);
            }
        }
示例#8
0
        void provinatore_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            Fotografia foto = (Fotografia)e.UserState;

            bool esistevaRisultante = foto.imgRisultante != null;


            // Rilascio memoria
            AiutanteFoto.disposeImmagini(foto, IdrataTarget.Tutte);

            AiutanteFoto.creaProvinoFoto(foto);

            // Le due foto grandi le rilascio per non intasare la memoria qualora questo metodo è chiamato più volte
            AiutanteFoto.disposeImmagini(foto, IdrataTarget.Originale);
            AiutanteFoto.disposeImmagini(foto, IdrataTarget.Risultante);


            bool esisteRisultante = foto.imgRisultante != null;

            // Siccome è molto probabile che venga idratata l'immagine risultante e siccome sono in un loop,
            // non posso tenere in memoria tanta roba, altrimenti esplode
            if (esisteRisultante && !esistevaRisultante)
            {
                // Significa che l'ho idratata io in questo momento
                AiutanteFoto.disposeImmagini(foto, IdrataTarget.Risultante);
            }


            // Avviso tutti che questa foto è cambiata
            FotoModificateMsg msg = new FotoModificateMsg(this, foto);

            pubblicaMessaggio(msg);
        }
示例#9
0
        public void tornaOriginale(IEnumerable <Fotografia> fotografie, bool salvare)
        {
            foreach (Fotografia fotografia in fotografie)
            {
                fotografia.correzioniXml = null;

                // Rimuovo anche eventuale file su disco
                string nomeFileRis = PathUtil.nomeCompletoRisultante(fotografia);
                if (File.Exists(nomeFileRis))
                {
                    File.Delete(nomeFileRis);
                }

                // Rilascio memoria
                AiutanteFoto.disposeImmagini(fotografia, IdrataTarget.Tutte);

                if (salvare)
                {
                    Fotografia f = fotografia;
                    fotografieRepositorySrv.update(ref f, true);
                    fotografieRepositorySrv.saveChanges();                      // Persisto nel db le modifiche
                }
            }

            // Rifaccio tutti i provini in background
            provinare(fotografie);
        }
示例#10
0
        public Fotografia GetFotografia(int idfoto)
        {
            Fotografia fotografia = new Fotografia();

            using (MySqlConnection conn = GetConnection())
            {
                conn.Open();
                MySqlCommand cmd = new MySqlCommand("SELECT * FROM qryfotos WHERE idfoto=@idfoto", conn);
                cmd.Parameters.AddWithValue("@idfoto", idfoto);
                using (MySqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        fotografia = new Fotografia()
                        {
                            idFoto        = reader.GetInt32("idfoto"),
                            foto          = reader.GetString("foto"),
                            idCinturon    = reader.GetInt32("idCinturon"),
                            cinturon      = reader.GetString("cinturon"),
                            idTipotecnica = reader.GetInt32("idTipotecnica"),
                            tipotecnica   = reader.GetString("tipotecnica"),
                            idtecnica     = reader.GetInt32("idtecnica"),
                            tecnica       = reader.GetString("tecnica"),
                            idusuario     = reader.GetInt32("idusuario"),
                            email         = reader.GetString("email"),
                            idioma        = reader.GetInt32("idioma"),
                            imagen        = reader.GetString("imagen")
                        };
                    }
                }
            }

            return(fotografia);
        }
示例#11
0
 public void addFotografia(Fotografia foto)
 {
     if (!fotografie.Contains(foto))
     {
         fotografie.Add(foto);
     }
 }
示例#12
0
        private byte[] getImage(Guid fotografiaId, IdrataTarget quale)
        {
            byte[] bytes = null;

            using (new UnitOfWorkScope()) {
                var srv = LumenApplication.Instance.getServizioAvviato <IEntityRepositorySrv <Fotografia> >();

                Fotografia fotografia = srv.getById(fotografiaId);

                string nomeFileImg;

                // Qui faccio una piccola miglioria: Se l'immagine risultante ha delle correzioni non ancora applicate, le applico adesso.
                if (quale == IdrataTarget.Risultante)
                {
                    nomeFileImg = AiutanteFoto.idrataImmagineDaStampare(fotografia);
                }
                else
                {
                    nomeFileImg = AiutanteFoto.idrataImmaginiFoto(fotografia, quale);
                }

                bytes = File.ReadAllBytes(nomeFileImg);

                AiutanteFoto.disposeImmagini(fotografia, IdrataTarget.Tutte);
            }

            return(bytes);
        }
示例#13
0
        public static Fotografia getFotografiaById(int idFotografia)
        {
            Fotografia    fotografia = new Fotografia();
            SqlConnection connection = null;

            try
            {
                connection = ConexionBD.getConnection();
                if (connection != null)
                {
                    SqlCommand    command;
                    SqlDataReader dataReader;
                    String        query = String.Format("SELECT * FROM Fotografia WHERE idFotografia = {0}", idFotografia);
                    command    = new SqlCommand(query, connection);
                    dataReader = command.ExecuteReader();
                    while (dataReader.Read())
                    {
                        fotografia.IdFotografia = (!dataReader.IsDBNull(0)) ? dataReader.GetInt32(0) : 0;
                        fotografia.RutaArchivo  = (!dataReader.IsDBNull(1)) ? dataReader.GetString(1) : "";
                        fotografia.IdReporte    = (!dataReader.IsDBNull(2)) ? dataReader.GetInt32(2) : 0;
                    }
                    dataReader.Close();
                    command.Dispose();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                throw;
            }
            return(fotografia);
        }
示例#14
0
        public List <Fotografia> ObtenerFotosOfertaAccesorio(int idOferta)
        {
            List <Fotografia> resultado = new List <Fotografia>();


            string connectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString();
            Engine engine           = new Engine(connectionString);

            StringBuilder query = new StringBuilder();

            query.Append("select Id, RutaFoto ");
            query.Append(" from fotosaccesorios ");
            query.Append(" where fechabaja is null  ");
            query.Append(" and IdOferta = " + idOferta);

            DataTable table = engine.Query(query.ToString());

            foreach (DataRow dr in table.Rows)
            {
                Fotografia fotografia = new Fotografia();

                fotografia.Id       = int.Parse(dr["Id"].ToString());
                fotografia.RutaFoto = dr["RutaFoto"].ToString();

                resultado.Add(fotografia);
            }

            return(resultado);
        }
        public string Avatar(string size = "30")
        {
            this.SetURL(this.GetURL());

            if (VisitanteID == 0 || Fotografia == null || Fotografia.Trim() == "")
            {
                return("http://api.ning.com/files/XDvieCk-6Hj1PFXyHT13r7Et-ybLOKWFR9fYd15dBrqFQHv6gCVuGdr4GYjaO0u*h2E0p*c5ZVHE-H41wNz4uAGNfcH8LLZS/top_8_silhouette_male_120.jpg?width=" + size);
            }

            if (empresaId == 0)
            {
                EmpresaSecurity <SecurityContext> security = new EmpresaSecurity <SecurityContext>();
                Sessao sessaoCorrente = security.getSessaoCorrente(sessionId);
                if (sessaoCorrente == null)
                {
                    return("http://api.ning.com/files/XDvieCk-6Hj1PFXyHT13r7Et-ybLOKWFR9fYd15dBrqFQHv6gCVuGdr4GYjaO0u*h2E0p*c5ZVHE-H41wNz4uAGNfcH8LLZS/top_8_silhouette_male_120.jpg?width=" + size);
                }
                empresaId = sessaoCorrente.empresaId;
            }

            FileInfo f = new FileInfo(HttpContext.Current.Server.MapPath("~/Users_Data/Empresas/" + empresaId.ToString() + "/Visitante/" + Fotografia));

            if (f.Exists)
            {
                return(URL + "/Users_Data/Empresas/" + empresaId.ToString() + "/Visitante/" + Fotografia);
            }
            else
            {
                return("http://api.ning.com/files/XDvieCk-6Hj1PFXyHT13r7Et-ybLOKWFR9fYd15dBrqFQHv6gCVuGdr4GYjaO0u*h2E0p*c5ZVHE-H41wNz4uAGNfcH8LLZS/top_8_silhouette_male_120.jpg?width=" + size);
            }
        }
示例#16
0
        public List <Fotografia> ObtenerFotosUsuario(int idUsuario)
        {
            List <Fotografia> resultado = new List <Fotografia>();


            string connectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString();
            Engine engine           = new Engine(connectionString);

            StringBuilder query = new StringBuilder();

            query.Append("select Id, RutaFoto, EsPrincipal ");
            query.Append(" from fotos ");
            query.Append(" where fechabaja is null  ");
            query.Append(" and IdUsuario = " + idUsuario);
            query.Append(" order by EsPrincipal desc ");

            DataTable table = engine.Query(query.ToString());

            foreach (DataRow dr in table.Rows)
            {
                Fotografia fotografia = new Fotografia();

                fotografia.Id          = int.Parse(dr["Id"].ToString());
                fotografia.RutaFoto    = dr["RutaFoto"].ToString();
                fotografia.EsPrincipal = (dr["EsPrincipal"].ToString().Equals("1") ? true : false);
                resultado.Add(fotografia);
            }

            return(resultado);
        }
示例#17
0
        public Fotografia ObtenerFotoPrincipalOferta(int idOferta)
        {
            Fotografia resultado = new Fotografia();


            string connectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString();
            Engine engine           = new Engine(connectionString);

            StringBuilder query = new StringBuilder();

            query.Append("select Id, RutaFoto, EsPrincipal ");
            query.Append(" from fotosaccesorios ");
            query.Append(" where fechabaja is null  ");
            query.Append(" and IdOferta = " + idOferta + " ");
            query.Append(" and EsPrincipal = 1");

            DataTable table = engine.Query(query.ToString());

            foreach (DataRow dr in table.Rows)
            {
                resultado.Id          = int.Parse(dr["Id"].ToString());
                resultado.RutaFoto    = dr["RutaFoto"].ToString();
                resultado.EsPrincipal = (dr["EsPrincipal"].ToString().Equals("1") ? true : false);
            }

            return(resultado);
        }
示例#18
0
        public static void disposeImmagini(Fotografia foto, IdrataTarget quale)
        {
            // evito errori
            if (foto == null)
            {
                return;
            }

            if (quale == IdrataTarget.Tutte || quale == IdrataTarget.Originale)
            {
                if (foto.imgOrig != null)
                {
                    foto.imgOrig.Dispose();
                    foto.imgOrig = null;
                }
            }

            if (quale == IdrataTarget.Tutte || quale == IdrataTarget.Provino)
            {
                if (foto.imgProvino != null)
                {
                    foto.imgProvino.Dispose();
                    foto.imgProvino = null;
                }
            }

            if (quale == IdrataTarget.Tutte || quale == IdrataTarget.Risultante)
            {
                if (foto.imgRisultante != null)
                {
                    foto.imgRisultante.Dispose();
                    foto.imgRisultante = null;
                }
            }
        }
示例#19
0
        public static IdrataTarget qualeImmagineDaStampare(Fotografia foto)
        {
            // Se ho delle correzioni, allora devo usare il file Risultante. Se non ho modifiche, allora uso l'originale.
            IdrataTarget quale = (foto.correzioniXml == null ? IdrataTarget.Originale : IdrataTarget.Risultante);

            return(quale);
        }
示例#20
0
        /// <summary>
        /// Questo metodo si può usare spot anche se il servizio non è avviato
        /// </summary>
        /// <param name="foto"></param>
        /// <returns></returns>
        public String searchBarCode(Fotografia foto)
        {
            FileInfo fotoInfo = PathUtil.fileInfoFoto(foto);

            _giornale.Debug("E' stata richiesta la ricerca del codice a carre sulla foto " + fotoInfo.Name + " Inizio ricerca codici a barre");

            String provinoFileName = Path.Combine(Configurazione.cartellaRepositoryFoto, PathUtil.decidiCartellaProvini(foto), fotoInfo.Name);

            // Prima provo sul provino (che è più veloce)
            String findBarCode = searchBarCodeExecutable(provinoFileName);

            // Poi provo anche sulla foto grande originale
            if (findBarCode == null)
            {
                findBarCode = searchBarCodeExecutable(fotoInfo.FullName);
            }

            if (findBarCode != null)
            {
                _giornale.Info("E' stato trovato il codice a barre sulla foto " + fotoInfo.Name + " BAR_CODE: " + findBarCode);
            }
            else
            {
                _giornale.Debug("Non è stato trovato alcun codice a basse sulla foto " + fotoInfo.Name);
            }

            return(findBarCode);
        }
示例#21
0
        /// <summary>
        /// Rileggo dal db la fotografia. In questo modo, ricopro la proprietà correzioniXml che
        /// era stata modificata dall'utente applicando delle correzioni che poi non ha confermato.
        /// </summary>
        /// <param name="fotografia"></param>
        public void undoCorrezioniTransienti(Fotografia fotografia)
        {
            fotografieRepositorySrv.refresh(fotografia);

            fotografia.imgProvino = null;              // Questo forza la rilettura del provino da disco
            AiutanteFoto.idrataImmaginiFoto(fotografia, IdrataTarget.Provino);
        }
示例#22
0
        public void crudFotografia2()
        {
            using (LumenEntities context = new LumenEntities()) {
                Random r = new Random();

                Fotografia f = new Fotografia();

                f.id                  = Guid.NewGuid();
                f.didascalia          = "Test-" + r.Next(1000, 9999);
                f.numero              = r.Next(1, 1000000);
                f.nomeFile            = "Test";
                f.dataOraAcquisizione = DateTime.Now;
                f.giornata            = DateTime.Today;

                f.fotografo = context.Fotografi.First();
                f.evento    = context.Eventi.FirstOrDefault();

                context.Fotografie.Add(f);


                int test = context.SaveChanges();

                Assert.IsTrue(test > 0);
            }
        }
        public JsonResult GetTecnica(int idfoto)
        {
            BBDDContext context = HttpContext.RequestServices.GetService(typeof(TAE.Context.BBDDContext)) as BBDDContext;

            Fotografia fotografia = context.GetFotografia(idfoto);

            Respuestas.RespuestaFotografia respuestaFotografia = new Respuestas.RespuestaFotografia();
            respuestaFotografia.respuesta.funcion = "api/fotografiarecuperar";
            respuestaFotografia.respuesta.fecha   = DateTime.Now;
            respuestaFotografia.fotografia        = fotografia;

            if (fotografia.idFoto != 0)
            {
                respuestaFotografia.respuesta.codigo  = 1;
                respuestaFotografia.respuesta.mensaje = "Fotografia encontrada";

                return(Json(respuestaFotografia));
            }
            else
            {
                respuestaFotografia.respuesta.codigo  = 0;
                respuestaFotografia.respuesta.mensaje = "Fotografia no encontrada";

                return(Json(respuestaFotografia));
            }
        }
示例#24
0
        public async Task <bool> DeleteFotografia(Fotografia value)
        {
            context.Remove(value);
            await context.SaveChangesAsync();

            return(true);
        }
示例#25
0
        public static void removeFotografia(Fotografia fotografia)
        {
            SqlConnection connection = null;

            try
            {
                connection = ConexionBD.getConnection();
                if (connection != null)
                {
                    SqlCommand command;
                    int        idFotografia = fotografia.IdFotografia;
                    String     query        = String.Format("UPDATE Fotografia SET estado = 'Eliminado' WHERE idFotografia = {0}", idFotografia);
                    command = new SqlCommand(query, connection);
                    command.ExecuteNonQuery();
                    command.Dispose();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                throw;
            }
            finally
            {
                connection.Close();
            }
        }
示例#26
0
        /// <summary>
        /// Devo gestire la selezione consecutiva quando avviene l'evento SHIFT + CLICK
        /// Problema da risolvere, è che adesso la selezione può avvenire anche a cavallo di pagine diverse
        /// Devo spostare tutta questa logica, lato viewModel, non è più compito di questo metodo
        /// </summary>
        /// <param name="sender">la ListBox che ha generato l'evento</param>
        /// <param name="e">evento del bottone del mouse</param>
        private void LsImageGallery_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            // Se non ho il tasto SHIFT premuto, allora non devo fare niente.
            // Faccio subito questo controllo per evitare altre operazioni più lente e costose.
            // La stragrande maggioranza dei click, infatti, avviene senza lo shift premuto.
            // Il limiteA della selezione estesa (quello senza SHIFT), in questo caso, viene gestito dal ViewModel del metodo: fotografie_selezioneCambiata

            if (Keyboard.IsKeyDown(Key.LeftShift) == false && Keyboard.IsKeyDown(Key.RightShift) == false)
            {
                return;
            }

            // -- prendo la fotografia su cui ho cliccato
            Fotografia fotoLimiteB = getSelectedFotografiaOnMouseClick(e);

            if (fotoLimiteB == null)
            {
                return;
            }

            // Ok ho cliccato con lo shift, identificando quindi il secondo limite. Lo setto nel viewModel per avare una selezione completa (2 limiti)
            fotoGalleryViewModel.eseguireSelezioneEstesaCommand.Execute(fotoLimiteB);

            // Questo evento non è più da gestire perché ci ho già pensato prima nel ViewModel
            // viceversa, l'ultima foto cliccata riceverebbe un ulteriore click che la spegnerebbe (io invece sto accendendo)
            e.Handled = true;
        }
示例#27
0
        public static void addFotografia(Fotografia fotografia)
        {
            SqlConnection connection = null;

            try
            {
                connection = ConexionBD.getConnection();
                if (connection != null)
                {
                    SqlCommand command;
                    String     rutaArchivo = fotografia.RutaArchivo;
                    String     estado      = fotografia.Estado;
                    String     query       = String.Format("INSERT INTO Fotografia (rutaArchivo, estado) VALUES ('{0}', '{1})", rutaArchivo, estado);
                    command = new SqlCommand(query, connection);
                    command.ExecuteNonQuery();
                    command.Dispose();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                throw;
            }
            finally
            {
                connection.Close();
            }
        }
示例#28
0
        public void addLogo(Fotografia fotografia, Logo logo, bool salvare)
        {
            if (logo == null)
            {
                // Rimuovo il logo dalle correzioni
                // Deserializzo la stringa con le eventuali correzioni attuali
                if (fotografia.correzioniXml != null)
                {
                    CorrezioniList correzioni = SerializzaUtil.stringToObject <CorrezioniList>(fotografia.correzioniXml);
                    foreach (Correzione c in correzioni)
                    {
                        if (c is Logo)
                        {
                            correzioni.Remove(c);
                            break;
                        }
                    }
                    // Ora serializzo di nuovo
                    fotografia.correzioniXml = SerializzaUtil.objectToString(correzioni);
                }
            }
            else
            {
                // Siccome ho reso il logo sommabile, questa operazione in realtà non aggiunge ma sostituisce.
                addCorrezione(fotografia, logo, salvare);
            }

            // Ricalcolo il provino giusto per poterlo visualizzare
            AiutanteFoto.creaProvinoFoto(fotografia);
        }
示例#29
0
        /// <summary>
        /// Quando clicco con il destro, prima di aprire il menu contestuale,
        /// seleziono di giallo la foto che sta sotto il puntatore del mouse.
        /// Mi servirà poi per eseguire le azioni rapide, per esempio per stampare.
        /// </summary>
        /// <param name="e">evento click destro del mouse</param>
        /// <returns>la Fotografia che è stata cliccata e selezionata</returns>
        private Fotografia SelectItemOnRightClick(System.Windows.Input.MouseButtonEventArgs e)
        {
            Fotografia foto = getSelectedFotografiaOnMouseClick(e);

            fotoGalleryViewModel.selezionareSingola(foto);

            return(foto);
        }
示例#30
0
        public void stampaProviniFotoProviniTest()
        {
            using (new UnitOfWorkScope(false))
            {
                LumenEntities     dbContext = UnitOfWorkScope.currentDbContext;
                List <Fotografia> fotos     = (from f in dbContext.Fotografie.Include("fotografo")
                                               select f).Take(QUANTE).ToList();

                //Carico una stampa Provini
                ParamStampaProvini p = ricavaParamStampaProvini();
                p.numeroColonne  = 5;
                p.numeroRighe    = 5;
                p.macchiaProvini = false;

                _impl.aggiungereStampe(fotos, p);

                //Carico una stampa Foto
                ParamStampaFoto p2 = ricavaParamStampaFoto();

                CodaDiStampe c1 = new CodaDiStampe(p2, Costanti.NomeStampantePdf);

                Fotografia foto = (from f in dbContext.Fotografie.Include("fotografo")
                                   select f).Take(QUANTE + 1).ToList().Last();

                c1.EnqueueItem(new LavoroDiStampaFoto(foto, p2));
                c1.Start();

                List <Fotografia> fotos2 = (from f in dbContext.Fotografie.Include("fotografo")
                                            select f).Take(2 * QUANTE + 1).ToList();

                // Carico una stampa Provini
                ParamStampaProvini p3 = ricavaParamStampaProvini();
                p3.numeroColonne  = 3;
                p3.numeroRighe    = 4;
                p3.macchiaProvini = true;

                fotos2.RemoveRange(0, QUANTE + 1);

                _impl.aggiungereStampe(fotos2, p3);

                //Carico una stampa Foto
                ParamStampaFoto p4 = ricavaParamStampaFoto();

                CodaDiStampe c2 = new CodaDiStampe(p4, Costanti.NomeStampantePdf);

                Fotografia foto2 = (from f in dbContext.Fotografie.Include("fotografo")
                                    select f).Take(2 * QUANTE + 2).ToList().Last();

                c2.EnqueueItem(new LavoroDiStampaFoto(foto2, p4));
                c2.Start();
            }

            while (_contaElaborazioniTerminate != 2)
            {
                Thread.Sleep(1000);
            }
            Assert.IsTrue(esitoStampa == EsitoStampa.Ok);
        }