Exemple #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;
        }
Exemple #2
0
        public void AtualizaVersaoDoutores()
        {
            ProdutoVaRepository vaRepository = new ProdutoVaRepository();

            vaRepository.AtualizaVersaoDoutoresRelacionados(this);

            vaRepository.Save();
        }
Exemple #3
0
        public void GravaDownload(string idTerritorio)
        {
            ProdutoVaRepository vaRepository = new ProdutoVaRepository();

            vaRepository.AddDownload(this.Id, idTerritorio);
            vaRepository.Save();
        }
Exemple #4
0
        /// <summary>
        /// Publica o VA (ativa o VA e inativa o VA atualmente ativo)
        /// </summary>
        public void Publicar(ProdutoVaRepository vaRepository)
        {
            if (this.ProdutoVaCategoria.SomenteUmAtivo)
            {
                //inativa o VA ativo do produto deste VA.
                vaRepository.GetProdutoVas()
                    .Where(v => v.IdProduto == this.IdProduto && v.Status == (char)ProdutoVa.EnumStatus.Ativo && v.IdCategoria == this.IdCategoria)
                    .Each(v => v.Status = (char)ProdutoVa.EnumStatus.Inativo);
            }

            this.Status = (char)ProdutoVa.EnumStatus.Ativo;
            this.Versao = this.Produto.GetNovaVersaoVa();

            vaRepository.Save();

            AtualizaVersaoDoutores();

            this.EnviarEmailStatus();
        }
Exemple #5
0
        public void ColocarEmTeste(ProdutoVaRepository vaRepository)
        {
            //inativa o VA ativo do produto deste VA.
            /*vaRepository.GetProdutoVas()
                .Where(v => v.IdProduto == this.IdProduto && v.Status == (char)ProdutoVa.EnumStatus.Teste)
                .Each(v => v.Status = (char)ProdutoVa.EnumStatus.Inativo);*/

            this.Status = (char)ProdutoVa.EnumStatus.Teste;
            this.VersaoTeste = this.Produto.GetNovaVersaoTesteVa();

            vaRepository.Save();
        }
Exemple #6
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);
        }
Exemple #7
0
        public Answer InsertPresentationComment(string territory, string password, int idPresentation, string comment)
        {
            Util.Logs logs = new Util.Logs(Models.Log.EnumPagina.ProdutosVas, Models.Log.EnumArea.WebService);
            var usuario = GetUsuarioByTerritorioSimulado(territory, password);

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

            Sessao.Site.Logar(usuario);

            ProdutoVaRepository vaRepository = new ProdutoVaRepository();

            var va = vaRepository.GetProdutoVa(idPresentation);

            if (va == null)
                return new Answer(Answer.EnumStatus.Erro, "VA inválido");

            if (comment.Length > 500)
                return new Answer(Answer.EnumStatus.Erro, "Comentário não pode ter mais do que 500 caracteres");

            ProdutoVaComentarioRepository comentarioRepository = new ProdutoVaComentarioRepository();
            ProdutoVaComentario comentario = new ProdutoVaComentario();

            comentario.IdUsuario = Sessao.Site.UsuarioInfo.Id;
            comentario.IdVa = va.Id;
            comentario.Descricao = comment;

            comentarioRepository.Add(comentario);
            comentarioRepository.Save();

            logs.Add(Models.Log.EnumTipo.Inclusao, "Comentou no VA (data: " + va.DataInclusao.Formata(Util.Data.FormatoData.DiaMesAno) + ") do Produto '" + va.Produto.Nome + "'", string.Empty);

            return new Answer(Answer.EnumStatus.Ok, string.Empty);
        }
Exemple #8
0
        public Answer GetPresentationComments(string territory, string password, int idPresentation)
        {
            Util.Logs logs = new Util.Logs(Models.Log.EnumPagina.ProdutosVas, Models.Log.EnumArea.WebService);
            var usuario = GetUsuarioByTerritorioSimulado(territory, password);

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

            Sessao.Site.Logar(usuario);

            ProdutoVaRepository vaRepository = new ProdutoVaRepository();

            var va = vaRepository.GetProdutoVa(idPresentation);

            if (va == null)
                return new Answer(Answer.EnumStatus.Erro, "VA inválido");

            List<PresentationComment> presentationComments = new List<PresentationComment>();

            foreach (var comentario in va.ProdutoVaComentarios)
            {
                PresentationComment comment = new PresentationComment();

                comment.Id = comentario.Id.ToString();
                comment.Name = comentario.Usuario.Nome;
                comment.Description = comentario.Descricao;
                comment.Date = comentario.Datainclusao.Formata(Util.Data.FormatoData.DiaMesAnoHoraMinuto);

                presentationComments.Add(comment);
            }

            return new Answer(Answer.EnumStatus.Ok, string.Empty, presentationComments);
        }
Exemple #9
0
        public Answer UpdatePresentationStatus(string territory, string password, int idPresentation, int status)
        {
            var usuario = GetUsuarioByTerritorioSimulado(territory, password);

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

            Sessao.Site.Logar(usuario);

            ProdutoVaRepository vaRepository = new ProdutoVaRepository();

            var va = vaRepository.GetProdutoVa(idPresentation);

            if(va == null)
                return new Answer(Answer.EnumStatus.Erro, "VA inválido");

            if (!va.ValidoParaEdicao())
                return new Answer(Answer.EnumStatus.Erro, "VA inválido para edição");

            switch (status)
            {
                case 1: //aprovar
                    va.Aprovar();
                    vaRepository.Save();
                    break;
                case 2: //reprovar
                    va.Reprovar();
                    vaRepository.Save();
                    break;
                case 3:

                    if (!va.IsAprovado()) {
                        va.Aprovar();
                        vaRepository.Save();
                    }

                    if (va.IsAprovado())
                    {
                        va.Publicar(vaRepository);
                    }

                    break;

                default:
                    break;
            }

            Presentation presentation = new Presentation();

            presentation.PreencherByVA(va,null,usuario,null);

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