/// <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; } }
/// <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; } }