Ejemplo n.º 1
0
        public ProdutoVa GerarCopia()
        {
            ProdutoVaRepository vaRepository = new ProdutoVaRepository();
            ProdutoVaSlideRepository slideRepository = new ProdutoVaSlideRepository();
            ProdutoVaSlideArquivoRepository slideArquivoRepository = new ProdutoVaSlideArquivoRepository();
            ProdutoVaArquivoRepository arquivoRepository = new ProdutoVaArquivoRepository();

            ProdutoVa va = new ProdutoVa();
            va.IdProduto = this.Produto.Id;
            va.IdUsuario = Sessao.Site.UsuarioInfo.Id;
            va.Status = (char)ProdutoVa.EnumStatus.Temporario;
            va.IdCategoria = this.IdCategoria;
            va.Nome = this.Nome;
            va.Descricao = this.Descricao;
            va.PalavrasChave = this.PalavrasChave;

            vaRepository.Add(va);
            vaRepository.Save();

            va.CriaDiretoriosBase();

            foreach (var slide in this.ProdutoVaSlides)
            {
                ProdutoVaSlide slideNovo = new ProdutoVaSlide();

                slideNovo.IdVa = va.Id;
                slideNovo.Ordem = slide.Ordem;

                slideRepository.Add(slideNovo);
                slideRepository.Save();

                foreach (var arquivo in slide.ProdutoVaSlideArquivos) {
                    ProdutoVaSlideArquivo arquivoNovo = new ProdutoVaSlideArquivo();

                    arquivoNovo.IdSlide = slideNovo.Id;
                    arquivoNovo.Nome = arquivo.Nome;
                    arquivoNovo.Tipo = arquivo.Tipo;
                    arquivoNovo.VideoAutoPlay = arquivo.VideoAutoPlay;

                    slideArquivoRepository.Add(arquivoNovo);
                    slideArquivoRepository.Save();

                    if (arquivo.Tipo == (char)ProdutoVaSlideArquivo.EnumTipoArquivo.Zip)
                    {

                        var caminhoOrigem = Util.Url.GetCaminhoFisico(this.GetDiretorio() + slide.Id);
                        var caminhoDestino = Util.Url.GetCaminhoFisico(va.GetDiretorio() + slideNovo.Id);

                        Util.Arquivo.CopyDirectory(caminhoOrigem, caminhoDestino, true);
                        Util.Arquivo.CopyDirectoryIfExists(this.GetDiretorioCssFisico(), va.GetDiretorioCssFisico(), true);
                        Util.Arquivo.CopyDirectoryIfExists(this.GetDiretorioSharedFisico(), va.GetDiretorioSharedFisico(), true);
                        Util.Arquivo.CopyDirectoryIfExists(this.GetDiretorioImagesFisico(), va.GetDiretorioImagesFisico(), true);
                        Util.Arquivo.CopyDirectoryIfExists(this.GetDiretorioJsFisico(), va.GetDiretorioJsFisico(), true);

                    }
                    else {

                        var caminhoOrigem = arquivo.GetCaminhoArquivoFisico();
                        var caminhoDestino = arquivoNovo.GetCaminhoArquivoFisico();

                        File.Copy(caminhoOrigem, caminhoDestino);

                        //se for imagem, copia a thumb também
                        if (arquivo.Tipo == (char)ProdutoVaSlideArquivo.EnumTipoArquivo.Jpg || arquivo.Tipo == (char)ProdutoVaSlideArquivo.EnumTipoArquivo.Farmacia) {

                            var caminhoOrigemThumb = arquivo.GetCaminhoArquivoFisico(ProdutoVaSlideArquivo.EnumTamanho.Thumb);
                            var caminhoDestinoThumb = arquivoNovo.GetCaminhoArquivoFisico(ProdutoVaSlideArquivo.EnumTamanho.Thumb);

                            File.Copy(caminhoOrigemThumb, caminhoDestinoThumb);
                        }

                        //se for zip(html), copia a thumb também
                        if (arquivo.Tipo == (char)ProdutoVaSlideArquivo.EnumTipoArquivo.Zip)
                        {
                            var caminhoOrigemThumb = arquivo.GetCaminhoArquivoFisico(ProdutoVaSlideArquivo.EnumTamanho.Thumb, ProdutoVaSlideArquivo.EnumTipoArquivo.Jpg);
                            var caminhoDestinoThumb = arquivoNovo.GetCaminhoArquivoFisico(ProdutoVaSlideArquivo.EnumTamanho.Thumb, ProdutoVaSlideArquivo.EnumTipoArquivo.Jpg);

                            if (File.Exists(caminhoOrigemThumb)) {

                                File.Copy(caminhoOrigemThumb, caminhoDestinoThumb);

                            }

                        }

                        //se for video, copia a imagem do primeiro frame do video
                        if (arquivo.Tipo == (char)ProdutoVaSlideArquivo.EnumTipoArquivo.Mp4)
                        {
                            var caminhoOrigemImagem = arquivo.GetCaminhoArquivoFisico(ProdutoVaSlideArquivo.EnumTamanho.Normal, ProdutoVaSlideArquivo.EnumTipoArquivo.Jpg);
                            var caminhoDestinoImagem = arquivoNovo.GetCaminhoArquivoFisico(ProdutoVaSlideArquivo.EnumTamanho.Normal, ProdutoVaSlideArquivo.EnumTipoArquivo.Jpg);

                            File.Copy(caminhoOrigemImagem, caminhoDestinoImagem);

                            var caminhoOrigemThumb = arquivo.GetCaminhoArquivoFisico(ProdutoVaSlideArquivo.EnumTamanho.Thumb, ProdutoVaSlideArquivo.EnumTipoArquivo.Jpg);
                            var caminhoDestinoThumb = arquivoNovo.GetCaminhoArquivoFisico(ProdutoVaSlideArquivo.EnumTamanho.Thumb, ProdutoVaSlideArquivo.EnumTipoArquivo.Jpg);

                            File.Copy(caminhoOrigemThumb, caminhoDestinoThumb);
                        }
                    }

                }

                //adiciona as especialidades
                slideNovo.AddEspecialidades(slideRepository, slide.ProdutoVaSlideEspecialidades.Select(e => e.Especialidade.Id).ToArray());
                slideRepository.Save();
            }

            foreach (var arquivo in this.ProdutoVaArquivos)
            {
                var arquivoNovo = new ProdutoVaArquivo();

                arquivoNovo.IdVa = va.Id;
                arquivoNovo.Nome = arquivo.Nome;
                arquivoNovo.Tipo = arquivo.Tipo;

                arquivoRepository.Add(arquivoNovo);
                arquivoRepository.Save();

                var caminhoOrigem = arquivo.GetCaminhoFisico();
                var caminhoDestino = arquivoNovo.GetCaminhoFisico();

                File.Copy(caminhoOrigem, caminhoDestino);
            }

            return va;
        }
Ejemplo n.º 2
0
        public Answer LogEmail(string xml)
        {
            ProdutoVaArquivoRepository arquivoRepository = new ProdutoVaArquivoRepository();
            ProdutoVaRepository vaRepository = new ProdutoVaRepository();

            string crm = string.Empty;
            string crmUf = string.Empty;
            string email = string.Empty;
            int idArquivo = 0;
            int idVa = 0;
            DateTime? data = null;

            string userTerritorio;
            string userSenha;

            #region lê informações do Xml passado

            XmlDocument doc = new XmlDocument();

            try
            {
                doc.Load(new StringReader(xml));

                XmlElement nodeUsuario = (XmlElement)doc.GetElementsByTagName("user")[0];
                userTerritorio = nodeUsuario.GetElementsByTagName("territory")[0].InnerText;
                userSenha = nodeUsuario.GetElementsByTagName("password")[0].InnerText;

                XmlElement nodeLogs = (XmlElement)doc.GetElementsByTagName("emails")[0];

                //faz autenticação
                var territorio = GetTerritorio(userTerritorio, userSenha);

                if (territorio == null)
                    return new Answer(Answer.EnumStatus.ErroLogin, "Login e/ou senha inválido(s)");

                foreach (XmlNode nodeLog in nodeLogs.ChildNodes)
                {
                    crm = nodeLog["crm"].InnerText.ToString();
                    crmUf = nodeLog["crmUf"].InnerText.ToString();
                    email = nodeLog["email"].InnerText.ToString();
                    idArquivo = nodeLog["attachmentId"].InnerText.ToInt();
                    idVa = nodeLog["presentationId"].InnerText.ToInt();
                    data = nodeLog["date"].InnerText.ToDateTime();

                    #region Valida Informações passadas

                    /*
                    //verifica VA
                    var va = vaRepository.GetProdutoVa(idVa);

                    if (va == null)
                        return new Answer(Answer.EnumStatus.Erro, "VA não existente");

                    //verifica arquivo
                    var arquivo = arquivoRepository.GetProdutoVaArquivo(idArquivo);

                    if (arquivo == null)
                        return new Answer(Answer.EnumStatus.Erro, "Arquivo não existente");

                    if (!va.ProdutoVaArquivos.Any(a => a.Id == arquivo.Id))
                        return new Answer(Answer.EnumStatus.Erro, "Arquivo não pertence ao VA informado");
                    */

                    #endregion
                }

                RelatorioEmailRepository relatorioEmailRepository = new RelatorioEmailRepository();

                foreach (XmlNode nodeLog in nodeLogs.ChildNodes)
                {
                    crm = nodeLog["crm"].InnerText.ToString();
                    crmUf = nodeLog["crmUf"].InnerText.ToString();
                    email = nodeLog["email"].InnerText.ToString();
                    idArquivo = nodeLog["attachmentId"].InnerText.ToInt();
                    idVa = nodeLog["presentationId"].InnerText.ToInt();
                    data = nodeLog["date"].InnerText.ToDateTime();

                    #region grava relatório

                    RelatorioEmail relatorioEmail = new RelatorioEmail();

                    relatorioEmail.IdTerritorio = territorio.Id;
                    relatorioEmail.IdVa_temp = idVa;
                    relatorioEmail.IdProdutoVaArquivo_temp = idArquivo;
                    relatorioEmail.Data = data;
                    relatorioEmail.Crm = crm;
                    relatorioEmail.CrmUf = crmUf;
                    relatorioEmail.Email = email;
                    relatorioEmail.IdTerritorio = territorio.Id;
                    relatorioEmail.Status = (char?)RelatorioEmail.EnumStatus.Pendente;

                    relatorioEmailRepository.Add(relatorioEmail);
                    relatorioEmailRepository.Save();

                    try
                    {
                        relatorioEmail.IdVa = idVa;
                        relatorioEmail.IdProdutoVaArquivo = idArquivo;

                        relatorioEmailRepository.Save();
                    }
                    catch (Exception e)
                    {
                        relatorioEmail.IdVa = null;
                        relatorioEmail.IdProdutoVaArquivo = null;

                        relatorioEmail.Xml = xml;
                        relatorioEmailRepository.Save();

                        Util.Sistema.Error.TrataErro(e, enviarEmail: false);
                    }

                    #endregion

                }

                relatorioEmailRepository.Save();

                /*foreach (XmlNode nodeLog in nodeLogs.ChildNodes)
                {
                    idArquivo = nodeLog["attachmentId"].InnerText.ToInt();
                    email = nodeLog["email"].InnerText.ToString();

                    var arquivo = arquivoRepository.GetProdutoVaArquivo(idArquivo);

                    try
                    {
                        List<Attachment> attachments = new List<Attachment>{
                            new Attachment(arquivo.GetCaminhoFisico())
                        };

                        Util.Email.Enviar(email, Util.Email.GetCorpoEmail("logEmail"), "Anexo", attachments);

                        cont++;
                    }
                    catch(Exception e)
                    {
                        erros++;
                    }
                }*/

            }
            catch (Exception e)
            {
                Util.Sistema.Error.TrataErro(e);

                return new Answer(Answer.EnumStatus.Erro, "Erro ao fazer a leitura do arquivo xml");
            }

            #endregion

            return new Answer(Answer.EnumStatus.Ok, string.Empty);
        }