예제 #1
0
        protected void btnAplicar_Click(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < grdPecas.Rows.Count; i++)
                {
                    Table tblImagens = (Table)grdPecas.Rows[i].FindControl("tblImagens");

                    for (int j = 0; j < tblImagens.Rows.Count; j++)
                    {
                        int item = Glass.Conversoes.StrParaInt(tblImagens.Rows[j].Cells[0].Attributes["item"]);

                        FileUpload f = (FileUpload)tblImagens.Rows[j].FindControl("flu" + j);
                        if (f == null || !f.HasFile)
                        {
                            continue;
                        }

                        uint idPecaItemProj = Glass.Conversoes.StrParaUint(tblImagens.Rows[j].Cells[0].Attributes["idPecaItemProj"]);

                        // Garante que a imagem pode ser alterada na peça
                        if (idPecaItemProj > 0 && !UtilsProjeto.PodeAlterarImagemPeca(PecaItemProjetoDAO.Instance.GetElementExt(null, idPecaItemProj, true), item, j + 1, false))
                        {
                            continue;
                        }

                        string extensao = f.FileName.Substring(f.FileName.LastIndexOf('.'));
                        if (!Arquivos.IsImagem(extensao))
                        {
                            throw new Exception("Apenas imagens podem ser selecionadas.");
                        }

                        HiddenField h        = (HiddenField)grdPecas.Rows[i].FindControl("hdfIdProdPed");
                        var         idPedido = Request["idPedido"].StrParaUint();

                        var idProdPed = h.Value.StrParaUint();

                        if (Request["tipo"] == "pedido" && !PedidoEspelhoDAO.Instance.ExisteEspelho(idPedido) && (ProdutosPedidoDAO.Instance.TemProdutoLamComposicao(idPedido) || Request["pecaAvulsa"] == "True"))
                        {
                            var urlImagem = ProdutosPedidoDAO.Instance.ObterUrlImagemSalvar(idProdPed);
                            ManipulacaoImagem.SalvarImagem(urlImagem, f.FileBytes);

                            // Cria Log de alteração da Imagem do Produto Pedido
                            LogAlteracaoDAO.Instance.Insert(new LogAlteracao
                            {
                                Tabela        = (int)LogAlteracao.TabelaAlteracao.ImagemProdPed,
                                IdRegistroAlt = (int)idProdPed,
                                Campo         = "Imagem Produto Pedido",
                                ValorAtual    = f.FileName,
                                DataAlt       = DateTime.Now,
                                IdFuncAlt     = UserInfo.GetUserInfo.CodUser,
                                Referencia    = "Imagem do Produto Pedido " + idProdPed,
                                NumEvento     = LogAlteracaoDAO.Instance.GetNumEvento(null, LogAlteracao.TabelaAlteracao.ImagemProdPed, (int)idProdPed)
                            });
                        }

                        if (Request["tipo"] == "pcp")
                        {
                            ProdutosPedidoEspelho ppe = ProdutosPedidoEspelhoDAO.Instance.GetElementByPrimaryKey(Glass.Conversoes.StrParaUint(h.Value));

                            if (ppe != null)
                            {
                                var nomeImagem = string.Empty;

                                if (item > 0)
                                {
                                    ppe.Item   = item;
                                    nomeImagem = ppe.ImagemUrlSalvarItem;
                                }
                                else
                                {
                                    nomeImagem = ppe.ImagemUrlSalvar;
                                }

                                ManipulacaoImagem.SalvarImagem(Server.MapPath(nomeImagem), f.FileBytes);

                                // Cria Log de alteração da Imagem do Produto Pedido Espelho
                                LogAlteracaoDAO.Instance.Insert(new LogAlteracao
                                {
                                    Tabela        = (int)LogAlteracao.TabelaAlteracao.ImagemProdPedEsp,
                                    IdRegistroAlt = (int)ppe.IdProdPed,
                                    Campo         = "Imagem Produto Pedido Espelho",
                                    ValorAtual    = f.FileName,
                                    DataAlt       = DateTime.Now,
                                    IdFuncAlt     = UserInfo.GetUserInfo.CodUser,
                                    Referencia    = "Imagem do Produto Pedido Espelho " + ppe.IdProdPed,
                                    NumEvento     = LogAlteracaoDAO.Instance.GetNumEvento(null, LogAlteracao.TabelaAlteracao.ImagemProdPedEsp, (int)ppe.IdProdPed)
                                });

                                if (idPecaItemProj > 0)
                                {
                                    LogAlteracaoDAO.Instance.LogImagemProducao(idPecaItemProj, item.ToString(), "Nova imagem atribuída à peça");
                                }
                            }
                        }
                    }
                }

                Glass.MensagemAlerta.ShowMsg("Imagens alteradas.", Page);
                Response.Redirect(Request.Url.ToString());
            }
            catch (Exception ex)
            {
                Glass.MensagemAlerta.ErrorMsg("Falha ao salvar imagem.", ex, Page);
            }
        }
예제 #2
0
        protected void tblImagens_Load(object sender, EventArgs e)
        {
            try
            {
                Table       tblImagens = (Table)sender;
                GridViewRow row        = tblImagens.Parent.Parent as GridViewRow;
                HiddenField h          = (HiddenField)row.FindControl("hdfIdProdPed");
                var         idPedido   = Request["idPedido"].StrParaUint();

                if (Request["tipo"] == "pedido" && !PedidoEspelhoDAO.Instance.ExisteEspelho(idPedido) && (ProdutosPedidoDAO.Instance.TemProdutoLamComposicao(idPedido) || Request["pecaAvulsa"] == "True"))
                {
                    var pp = !IsPostBack ? row.DataItem as ProdutosPedido : ProdutosPedidoDAO.Instance.GetElement(null, h.Value.StrParaUint(), false, true, false);
                    CriaLinhaTabela(tblImagens, true, "", null, null, pp, string.Empty);
                    return;
                }

                ProdutosPedidoEspelho ppe = !IsPostBack ? row.DataItem as ProdutosPedidoEspelho :
                                            ProdutosPedidoEspelhoDAO.Instance.GetElement(Glass.Conversoes.StrParaUint(h.Value), true);

                PecaItemProjeto peca = null;

                if (ppe.IdMaterItemProj > 0)
                {
                    uint?idPecaItemProj = MaterialItemProjetoDAO.Instance.ObtemIdPecaItemProj(null, ppe.IdMaterItemProj.Value);
                    if (idPecaItemProj.GetValueOrDefault() == 0)
                    {
                        return;
                    }

                    peca = PecaItemProjetoDAO.Instance.GetElementExt(null, idPecaItemProj.Value, true);
                }

                string msgErro = "Item possui arquivo de otimização (mesa de<br/ >corte) gerado. Não é possível alterá-lo.";

                // Mostra imagem apenas se for instalação
                if (peca != null && peca.Tipo == 1)
                {
                    // Controla o número da etiqueta de acordo com a quantidade (1/3)
                    int itemEtiqueta = 1;

                    // Para cada item desta peça. Ex.: 1 e 2 ou 3 e 4
                    foreach (string item in UtilsProjeto.GetItensFromPeca(peca.Item))
                    {
                        ppe.Item = Glass.Conversoes.StrParaInt(item);
                        bool permitirAlterarImagem = UtilsProjeto.PodeAlterarImagemPeca(peca, ppe.Item, itemEtiqueta++, false, ref msgErro);

                        if (permitirAlterarImagem && Request["tipo"] != "pcp")
                        {
                            permitirAlterarImagem = false;
                            msgErro = "Alteração de imagem apenas no PCP";
                        }

                        CriaLinhaTabela(tblImagens, permitirAlterarImagem, item, peca, ppe, null, msgErro);
                    }
                }
                else if (peca == null)
                {
                    string result = ppe.EtiquetasLegenda;
                    msgErro = String.IsNullOrEmpty(ppe.EtiquetasLegenda) ? String.Empty : msgErro;

                    // Verifica se é permitido alterar imagem da peça
                    var situacaoPedidoEspelho = PedidoEspelhoDAO.Instance.ObtemSituacao(ppe.IdPedido);
                    var permitirAlterarImagem = situacaoPedidoEspelho == PedidoEspelho.SituacaoPedido.Finalizado ||
                                                Config.PossuiPermissao(Config.FuncaoMenuPCP.AlterarImagemPecaAposImpressao);

                    if (permitirAlterarImagem)
                    {
                        string[] itens = result != null?result.ToUpper().Replace(" E ", ",").Split(',') : null;

                        itens = itens.Select(f => f.Trim()).ToArray();

                        permitirAlterarImagem = itens != null && itens.Length > 0 && !string.IsNullOrEmpty(itens[0]);

                        // Recupera o setor de marcação
                        Setor setor = SetorDAO.Instance.ObterSetorPorNome(null, "Marcação");

                        // Se for permitido alterar imagem da peça, verifica se o item não tem arquivo sag e se não passou pelo setor de marcação
                        if (setor != null && setor.IdSetor > 0 && permitirAlterarImagem && itens != null && itens.Length > 0)
                        {
                            foreach (string etiq in itens)
                            {
                                permitirAlterarImagem = permitirAlterarImagem && !EtiquetaArquivoOtimizacaoDAO.Instance.TemArquivoSAG(etiq) &&
                                                        !LeituraProducaoDAO.Instance.PassouSetor(null, etiq, (uint)setor.IdSetor);
                            }
                        }
                    }
                    else if (PedidoDAO.Instance.IsMaoDeObra(null, ppe.IdPedido))
                    {
                        permitirAlterarImagem = true;
                    }
                    else
                    {
                        msgErro = String.IsNullOrEmpty(result) ? "Apenas vidros que serão produzidos<br/ >podem ter imagens anexadas." :
                                  "Etiqueta já impressa. Não é<br />possível alterar a imagem";
                    }

                    CriaLinhaTabela(tblImagens, permitirAlterarImagem, "", null, ppe, null, msgErro);
                }
            }
            catch (Exception ex)
            {
                MensagemAlerta.ErrorMsg("Falha ao exibir imagens.", ex, Page);
                var urlErro = Request.Url.ToString() == null || Request.Url.ToString() == "" ? "Sel Imagem Peça" : Request.Url.ToString();
                ErroDAO.Instance.InserirFromException(urlErro, ex);
            }
        }