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