예제 #1
0
        /// <summary>
        /// Remover uma imagem de um item
        /// </summary>
        /// <param name="id">Id da imagem</param>
        /// <param name="dadosRetorno">Varíavel (object) de saída da resposta</param>
        public bool RemoverImagem(Guid id, string caminho, out object dadosRetorno)
        {
            try
            {
                ItemImagem imagem = _imgDomain.ObterPorId(id);

                if (imagem == null)
                {
                    dadosRetorno = new
                    {
                        Sucesso  = false,
                        Mensagem = $"Registro de imagem não encontrado"
                    };
                    return(false);
                }

                string nomeCompleto = Path.Combine(caminho, imagem.ItemId.ToString(), $"{imagem.Id.ToString()}{imagem.Caminho.Substring(imagem.Caminho.LastIndexOf("."))}");
                if (!Directory.Exists(caminho))
                {
                    dadosRetorno = new
                    {
                        Sucesso  = false,
                        Mensagem = $"Caminho do arquivo da imagem não encontrado"
                    };
                    return(false);
                }
                else
                {
                    if (!File.Exists(nomeCompleto))
                    {
                        dadosRetorno = new
                        {
                            Sucesso  = false,
                            Mensagem = $"Arquivo da imagem não encontrado"
                        };
                        return(false);
                    }
                    else
                    {
                        File.Delete(nomeCompleto);
                        _imgDomain.Excluir(id);
                        _uow.Efetivar();
                        dadosRetorno = new
                        {
                            Sucesso  = true,
                            Mensagem = $"Imagem removida com sucesso"
                        };
                        return(true);
                    }
                }
            }
            catch (Exception ex)
            {
                dadosRetorno = new
                {
                    Sucesso  = false,
                    Mensagem = $"Falha ao remover a imagem - {ex.Message} - {ex.StackTrace}"
                };
                return(false);
            }
        }
예제 #2
0
        /// <summary>
        /// Carrega uma imagem para um item
        /// </summary>
        /// <param name="item">Item para o qual a imagem será anexada</param>
        /// <param name="nomeImagem">Nome da imagem</param>
        /// <param name="imagemBase64">Expressão Base64 da imagem</param>
        /// <param name="caminho">Caminho onde o arquivo será gravado</param>
        /// <param name="dadosRetorno">Varíavel (object) de saída da resposta</param>
        public bool CarregarImagem(Item item, string nomeImagem, string imagemBase64, string caminho, out object dadosRetorno)
        {
            // Gerar arquivo
            string pastaItem = Path.Combine(caminho, item.Id.ToString());

            IEnumerable <ItemImagem> imagens = _imgDomain.Obter(x => x.ItemId.Equals(item.Id));

            if (imagens.Count().Equals(5))
            {
                dadosRetorno = new
                {
                    Sucesso  = false,
                    Mensagem = "Número máximo de imagens atingido"
                };
                return(false);
            }

            ItemImagem imagem = new ItemImagem()
            {
                ItemId       = item.Id,
                NomeOriginal = nomeImagem
            };
            string arquivo      = $"{imagem.Id.ToString()}.jpg";
            string nomeCompleto = Path.Combine(pastaItem, arquivo);
            string caminhoUrl   = $"/images/item/{item.Id.ToString()}/{imagem.Id.ToString()}.jpg";

            imagem.Caminho = caminhoUrl;

            try
            {
                if (!Directory.Exists(pastaItem))
                {
                    Directory.CreateDirectory(pastaItem);
                }
            }
            catch (Exception ex)
            {
                dadosRetorno = new
                {
                    Sucesso  = false,
                    Mensagem = $"Falha ao acessar local de armazenamento do arquivo - {ex.Message} - {ex.StackTrace}"
                };
                return(false);
            }

            try
            {
                byte[] bytes = Convert.FromBase64String(imagemBase64);
                File.WriteAllBytes(nomeCompleto, bytes);
            }
            catch (Exception ex)
            {
                dadosRetorno = new
                {
                    Sucesso  = false,
                    Mensagem = $"Falha ao converter Base64 em Imagem - {ex.Message} - {ex.StackTrace}"
                };
                return(false);
            }

            try
            {
                _imgDomain.Adicionar(imagem);
                _uow.Efetivar();

                dadosRetorno = new
                {
                    Sucesso  = true,
                    Mensagem = "Imagem carregada com sucesso",
                    Id       = imagem.Id.ToString(),
                    Arquivo  = caminhoUrl
                };

                return(true);
            }
            catch (Exception ex)
            {
                File.Delete(nomeCompleto);
                dadosRetorno = new
                {
                    Sucesso  = false,
                    Mensagem = $"Falha ao gravar registro - {ex.Message} - {ex.StackTrace}"
                };
            }

            return(false);
        }