Ir para o conteúdo
caxinaswin

Obter listas e fazer calculos numa viewModel(Mvc)

Mensagens Recomendadas

caxinaswin

Bem, tou a tentar desenvolver uma aplicação que controla despesas e rendimentos, e que permite ao utilizador construir listas com base nisso, tendo cada utilizador uma lista de despesas e rendimentos e um respetivo saldo associado á sua conta.

O problema na minha aplicação é precisamente obter esse saldo, penso que o problema seja menor, mas não tou a conseguir chegar á solução.

Modal Saldo:

public class Saldo
{
 public Saldo()
{
 Despesas = new List<Despesa>();
 Rendimentos = new List<Rendimento>();
}

public int SaldoId { get; set; }
public List<Despesa> Despesas { get; set; }
public List<Rendimento> Rendimentos { get; set; }
public string ApplicationUserId { get; set; }
}
}

Sempre que adiciono uma despesa ou um rendimento é suposto este ser adicionado a esta modal?? ou é possivel obter todas as despesas e rendimentos e depois compara lo com utilizador?

O que fiz foi isto:

Controlador Despesas

public ActionResult Create([bind(Include = "DespesaId,TipoDespesaId,DespesaDescricao,DespesaValor,TipoPagamentoId,Data,Comentario")] Despesa despesa)
{
 var userId = User.Identity.GetUserId();
 if (ModelState.IsValid)
{

var saldo = db.Saldo.Where(d => d.ApplicationUserId == userId).FirstOrDefault();
var desp = new List<Despesa>();
desp.Add(despesa);

despesa.ApplicationUserId = userId;

if (saldo == null)
{
 var s = new Saldo();
 s.Despesas = desp;
 s.ApplicationUserId = userId;
 db.Saldo.Add(s);

}
else
{
 saldo.Despesas.Add(despesa);
}

db.Despesas.Add(despesa);
db.SaveChanges();
return RedirectToAction("Index");
}

return View(despesa);
}

como eu quero o saldo em toda a aplicação chamei um controlador parcial no layout chamado **_ObterSaldo**

Modal ObterSaldo

public PartialViewResult _ObtemSaldo()
{
var userId = User.Identity.GetUserId();
var saldo = db.Saldo.Where(d => d.ApplicationUserId == userId).FirstOrDefault();
return PartialView(saldo);
}

Aqui selecciono o saldo cujo Id do utilizador está associado com o Utilizador com sessão iniciada.

vista _ObterSaldo

@model MSDiary.Models.Saldo

<p>Saldo: @obtemSaldo()</p>

@functions
{
HtmlString obtemSaldo()
{
decimal saldo = 0;
if (Model != null)
{
foreach (var item in Model.Despesas)
{
saldo += item.DespesaValor;
}
foreach (var item in Model.Rendimentos)
{
saldo -= item.RendimentoValor;
}
}
return new HtmlString(saldo.ToString());
}
}

Nesta vista itero sobre as listas associadas ao saldo do utilizador, mas sempre que vejo na consola os resultados das listas, diz me que não tem lá nada que está vazio, se alguem me poder explicar o que estou a fazer errado, ou se me poderem explicar um processo melhor de fazer isto agradecia imenso.

Editado por caxinaswin

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.