예제 #1
0
        /// <summary>
        /// Cadastra uma nova foto em banco
        /// </summary>
        /// <param name="foto">objetos com os dados da foto</param>
        /// <param name="arquivo">arquivo da foto</param>
        /// <returns>Foto cadastrada com o código gerado</returns>
        public Dominio.Foto SalvarFoto(Dominio.Foto foto, HttpPostedFileBase file)
        {
            try
            {
                if (foto == null)
                {
                    throw new ArgumentNullException("foto");
                }

                IFactoryDAO fabrica = FactoryFactoryDAO.GetFabrica();
                IFotoDAO    fotoDAO = fabrica.GetFotoDAO();
                string      path    = "~/AppData/Foto/";

                foto.Caminho = string.Format("Usuario/{0}.jpg", foto.Legenda);

                this.SalvarImagem
                (
                    this.RedimensionarImagem(file.InputStream, 90, 90), HttpContext.Current.Server.MapPath(path + foto.Caminho)
                );

                foto.Galeria = false;

                if (foto.Codigo == 0)
                {
                    return(fotoDAO.Cadastrar(foto));
                }

                fotoDAO.Alterar(foto);

                return(foto);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
예제 #2
0
        /// <summary>
        /// Cadastra uma nova foto em banco,
        /// Salvando todos os tamanhos necessários para galeria.
        /// </summary>
        /// <param name="foto">objetos com os dados da foto</param>
        /// <param name="arquivo">arquivo da foto</param>
        /// <returns>Foto cadastrada com o código gerado</returns>
        public Dominio.Foto SalvarFotoGaleria(Dominio.Foto foto, HttpPostedFileBase file)
        {
            try
            {
                // TODO: verificar transação
                // using (TransactionScope transacao = new TransactionScope())
                //{
                if (foto == null)
                {
                    throw new ArgumentNullException("foto");
                }

                IFactoryDAO fabrica = FactoryFactoryDAO.GetFabrica();
                IFotoDAO    fotoDAO = fabrica.GetFotoDAO();
                string      caminho = string.Empty;

                foto.Galeria = true;

                if (file != null)
                {
                    Image imagem = Image.FromStream(file.InputStream);

                    foto.Caminho = this.GerarCaminhoImagem(file);
                    double proporcao = 0;

                    if (imagem.Size.Width > imagem.Size.Height)
                    {
                        // imagem horizontal
                        proporcao = (double)imagem.Size.Height / (double)imagem.Size.Width;
                    }
                    else
                    {
                        // imagem vertical
                        proporcao = (double)imagem.Size.Width / (double)imagem.Size.Height;
                    }


                    foreach (dynamic tamanho in tamanhos)
                    {
                        caminho = string.Format("{0}\\{1}\\{2}", HttpContext.Current.Server.MapPath("~/AppData/Foto"), tamanho.caminho, foto.Caminho.Replace("/", @"\"));

                        // Se a imagem for mais larga que 1024px, reduz para esse tamanho e salva
                        if (imagem.Size.Width > 1024 && tamanho.largura == 1024)
                        {
                            if (imagem.Size.Width > imagem.Size.Height)
                            {
                                this.SalvarImagem
                                (
                                    this.RedimensionarImagem(file.InputStream, (int)(((double)tamanho.largura) * proporcao), tamanho.largura),
                                    caminho
                                );
                            }
                            else
                            {
                                this.SalvarImagem
                                (
                                    this.RedimensionarImagem(file.InputStream, tamanho.largura, (int)(((double)tamanho.largura) * proporcao)),
                                    caminho
                                );
                            }
                        }
                        // Se a imagem tiver 1024px ou menos e estiver na hora de salvar a full, mantem o tamanho dela
                        else if (tamanho.largura == 1024)
                        {
                            this.SalvarImagem
                            (
                                this.RedimensionarImagem(file.InputStream, imagem.Size.Height, imagem.Size.Width),
                                caminho
                            );
                        }
                        else// if (tamanho.largura == 300)
                        {
                            if (imagem.Size.Width > imagem.Size.Height)
                            {
                                this.SalvarImagem
                                (
                                    this.RedimensionarImagem(file.InputStream, (int)(((double)tamanho.largura) * proporcao), tamanho.largura),
                                    caminho
                                );
                            }
                            else
                            {
                                this.SalvarImagem
                                (
                                    this.RedimensionarImagem(file.InputStream, tamanho.largura, (int)(((double)tamanho.largura) * proporcao)),
                                    caminho
                                );
                            }
                        }

                        /*else
                         * {
                         *  this.SalvarImagem
                         *  (
                         *      this.RedimensionarImagem(file.InputStream, tamanho.largura, tamanho.altura),
                         *      caminho
                         *  );
                         * }*/
                    }
                }

                if (foto.Codigo == 0)
                {
                    foto = fotoDAO.Cadastrar(foto);
                    //ConteudoMySQL conteudo = new ConteudoMySQL();

                    //foto.Codigo = conteudo.InserirFoto(foto);
                }
                else
                {
                    fotoDAO.Alterar(foto);
                }

                //transacao.Complete();

                return(foto);
                //}
            }
            catch (Exception e)
            {
                throw e;
            }
        }