private void ValidarCampos(PropostaModel desejo)
 {
     if (desejo.Usuario.Id == 0)
         throw new CadastroException("Erro ao recuperar o usuário");
     if (desejo.Desejo.Id == 0)
         throw new CadastroException("Erro ao recuperar o desejo");
     if (desejo.ValorProposta == decimal.Zero)
         throw new CadastroException("Favor informar um valor para a proposta");
     
 }
        public PropostaModel CadastrarNovo(PropostaModel model)
        {
            ValidarCampos(model);
            Proposta novoRegistro = new Proposta();
            novoRegistro = Mapper.Map<PropostaModel, Proposta>(model);
            novoRegistro.DataProposta = DateTime.Now;
            novoRegistro.Deletado = false;
            novoRegistro.StatusProposta = enumStatusProposta.Nova;

            //BUSCAR REFERENCIA DAS ENTIDADES
            novoRegistro.Usuario = new UsuarioRepositorio().BuscarPorId(model.Usuario.Id);
            novoRegistro.Desejo = new DesejoRepositorio().BuscarPorId(model.Desejo.Id);
            novoRegistro.TipoProposta = new TipoPropostaRepositorio().BuscarPorId(model.TipoProposta.Id);
            novoRegistro.ListaAvaliacao = null;
            novoRegistro.ListaMensagem = null; 

            repositorio.Inserir(novoRegistro);

            return Mapper.Map<Proposta, PropostaModel>(novoRegistro);
        }
        public Desejo DecidirProposta(PropostaModel destModel)
        {

            Desejo desejo = new DesejoRepositorio().BuscarPorId(destModel.Desejo.Id); ;

            foreach (var item in desejo.ListaProposta)
            {
                item.StatusProposta = (item.Id == destModel.Id) ? enumStatusProposta.Aceita : enumStatusProposta.Recusada;
            }

            repositorio.Atualizar(desejo);

            return desejo;
        }