/// <summary> /// Salva os dados do setor. /// </summary> /// <param name="setor"></param> /// <returns></returns> public Colosoft.Business.SaveResult SalvarSetor(Entidades.Setor setor) { setor.Require("setor").NotNull(); if (!setor.ExistsInStorage) { var numeroSequencia = SourceContext.Instance.CreateQuery() .From <Glass.Data.Model.Setor>() .Select("MAX(NumeroSequencia)") .Execute() .Select(f => f.GetInt32(0)) .FirstOrDefault() + 1; // Gera um novo número de sequência para este novo setor setor.NumeroSequencia = numeroSequencia; } using (var session = SourceContext.Instance.CreateSession()) { var resultado = setor.Save(session); if (!resultado) { return(resultado); } return(session.Execute(false).ToSaveResult()); } }
/// <summary> /// Apaga os dados do setor. /// </summary> /// <param name="setor"></param> /// <returns></returns> public Colosoft.Business.DeleteResult ApagarSetor(Entidades.Setor setor) { setor.Require("setor").NotNull(); var mensagensValidacao = ValidarExclusaoSetor(setor.IdSetor); if (mensagensValidacao.Any()) { return(new Colosoft.Business.DeleteResult(false, mensagensValidacao.Join("\n"))); } using (var session = SourceContext.Instance.CreateSession()) { var resultado = setor.Delete(session); if (!resultado) { return(resultado); } return(session.Execute(false).ToDeleteResult()); } }
/// <summary> /// Valida a atualização dos dados do setor. /// </summary> /// <param name="setor"></param> /// <returns></returns> IMessageFormattable[] Entidades.IProvedorSetor.ValidaAtualizacao(Entidades.Setor setor) { if (setor.ExistsInStorage) { //Verifica Situação do setor antes de alterá-lo pois caso caso a alteração for somente no numseq o sistema não precisa verificar se está inativo novamente var setorAtual = SourceContext.Instance.CreateQuery() .From <Glass.Data.Model.Setor>() .Where("IdSetor=?id").Add("?id", setor.IdSetor) .ProcessLazyResult <Entidades.Setor>() .FirstOrDefault(); if (setorAtual.Situacao != Situacao.Inativo && setor.Situacao == Situacao.Inativo) { if (SourceContext.Instance.CreateQuery() .From <Glass.Data.Model.FuncionarioSetor>("fs") .Where("fs.IdSetor=?id") .Add("?id", setor.IdSetor) .GroupBy("fs.IdSetor") .ExistsResult()) { return new IMessageFormattable[] { (string.Format("O setor {0} não pode ser inativado, pois, ele está associado à funcionário(s) de produção. " + "Para inativá-lo, desassocie o setor do funcionário.", setor.Descricao)).GetFormatter() } } ; /* Chamado 51830. */ if (SourceContext.Instance.CreateQuery() .From <Glass.Data.Model.ProdutoPedidoProducao>("ppp") .Where("ppp.IdSetor=?id AND ppp.Situacao=?situacaoProdutoProducao") .Add("?id", setor.IdSetor) .Add("?situacaoProdutoProducao", (int)Glass.Data.Model.ProdutoPedidoProducao.SituacaoEnum.Producao) .GroupBy("ppp.IdSetor") .ExistsResult()) { return new IMessageFormattable[] { (string.Format("O setor {0} não pode ser inativado, pois, ele está associado à etiqueta(s) de produção. " + "Para inativá-lo, retire a(s) etiqueta(s) deste setor.", setor.Descricao)).GetFormatter() } } ; /* Chamado 56684. */ if (SourceContext.Instance.CreateQuery() .From <Glass.Data.Model.RoteiroProducaoSetor>("rps") .Where("rps.IdSetor=?id") .Add("?id", setor.IdSetor) .GroupBy("rps.IdSetor") .ExistsResult()) { return new IMessageFormattable[] { (string.Format("O setor {0} não pode ser inativado, pois, ele está associado à roteiro(s) de produção. " + "Para inativá-lo, retire este setor do(s) roteiro(s) de produção.", setor.Descricao)).GetFormatter() } } ; /* Chamado 56684. */ if (SourceContext.Instance.CreateQuery() .From <Glass.Data.Model.RoteiroProducaoEtiqueta>("rpe") .Where("rpe.IdSetor=?id") .Add("?id", setor.IdSetor) .GroupBy("rpe.IdSetor") .ExistsResult()) { return new IMessageFormattable[] { (string.Format("O setor {0} não pode ser inativado, pois, existem etiquetas configuradas com este setor em seu roteiro de produção.", setor.Descricao)).GetFormatter() } } ; } else if (setor.Situacao == Situacao.Ativo) { if (setor.ChangedProperties.Contains("Situacao") && setor.Tipo == Glass.Data.Model.TipoSetor.Entregue && SourceContext.Instance.CreateQuery() .From <Glass.Data.Model.Setor>("s") .Where("Situacao=?ativo AND Tipo=?entregue") .Add("?ativo", Situacao.Ativo) .Add("?entregue", Glass.Data.Model.TipoSetor.Entregue).ExistsResult()) { return(new IMessageFormattable[] { (string.Format("O setor {0} não pode ser ativado, pois, já existe um setor do tipo Entregue ativo. ", setor.Descricao)).GetFormatter() }); } if (setor.ChangedProperties.Contains("Situacao") && setor.Tipo == Glass.Data.Model.TipoSetor.ExpCarregamento && SourceContext.Instance.CreateQuery() .From <Glass.Data.Model.Setor>("s") .Where("Situacao=?ativo AND Tipo=?expCarregamento") .Add("?ativo", Situacao.Ativo) .Add("?expCarregamento", Glass.Data.Model.TipoSetor.ExpCarregamento).ExistsResult()) { return(new IMessageFormattable[] { (string.Format("O setor {0} não pode ser ativado, pois, já existe um setor do tipo Expedição Carregamento ativo. ", setor.Descricao)).GetFormatter() }); } } } else { if (setor.Tipo == Glass.Data.Model.TipoSetor.Entregue && SourceContext.Instance.CreateQuery() .From <Glass.Data.Model.Setor>("s") .Where("Situacao=?ativo AND Tipo=?entregue") .Add("?ativo", Situacao.Ativo) .Add("?entregue", Glass.Data.Model.TipoSetor.Entregue).ExistsResult()) { return(new IMessageFormattable[] { (string.Format("Não é possivel cadastrar o setor {0}, pois, já existe um setor do tipo Entregue ativo. ", setor.Descricao)).GetFormatter() }); } if (setor.Tipo == Glass.Data.Model.TipoSetor.ExpCarregamento && SourceContext.Instance.CreateQuery() .From <Glass.Data.Model.Setor>("s") .Where("Situacao=?ativo AND Tipo=?expCarregamento") .Add("?ativo", Situacao.Ativo) .Add("?expCarregamento", Glass.Data.Model.TipoSetor.ExpCarregamento).ExistsResult()) { return(new IMessageFormattable[] { (string.Format("Não é possivel cadastrar o setor {0}, pois, já existe um setor do tipo Expedição Carregamento ativo. ", setor.Descricao)).GetFormatter() }); } } return(new IMessageFormattable[0]); } #endregion } }