//TODO: colocar a regra de negocio no Negocio public void AtribuirVersaoFinal(Orcamento orcamento) { Contract.Requires(orcamento != null, "Orçamento não informado.0"); Contract.Requires(orcamento.DespesasOperacionais != null, "Despesas operacionais não informadas."); Contract.Requires(orcamento.ValorTotal > default(int), "É necessário que o total seje maior do que zero para atribuir esta versão como final."); var orcamentoFinal = Orcamentos.ObterOrcamentoFinalOrcamentoOperacional(orcamento.CentroDeCusto,orcamento.Setor); if (orcamentoFinal != null) { orcamentoFinal.VersaoFinal = false; Orcamentos.Salvar(orcamentoFinal); } orcamento.AtribuirVersaoFinal(); Orcamentos.Salvar(orcamento); }
//TODO: colocar a regra de negocio no Negocio public void AtribuirVersaoFinal(Orcamento orcamento) { Contract.Requires(orcamento != null, "Orçamento não informado."); Contract.Requires(orcamento.Servicos != null, "Produção não informada."); Contract.Requires(!orcamento.Servicos.All(d => d.Valores.All(v => v.Valor == 0)), "Não é possivel atribuir versão final para orçamento de produção, quando existir todos os valores zerados"); var listaTickets = Tickets.Todos(orcamento.Setor); Contract.Requires(listaTickets.Any(t => t.Parcelas.Sum(p=> p.Valor) > 0),"Todos os tickets de produção estão iguais a zero, por favor insira tickets antes de atribuir versão final."); var orcamentoFinal = Orcamentos.ObterOrcamentoHospitalarFinal(orcamento.Setor); if (orcamentoFinal != null) { orcamentoFinal.VersaoFinal = false; Orcamentos.Salvar(orcamentoFinal); } orcamento.AtribuirVersaoFinal(); Orcamentos.Salvar(orcamento); }