public ActionResult Index() { //Disponibilizar os dados do usuário para o layout //ViewBag.Usuario = usuario; //@{var usuario = (Andromeda.Models.Usuario)ViewBag.usuario;} ResListViewModel model = new ResListViewModel(); //Obter lista de residências relacionadas ao usuário IList <UserRes> listUr = new List <UserRes>(); UserResDAL urDAL = new UserResDAL(); listUr = urDAL.ListarPorUser(1); IList <Residencia> listRes = new List <Residencia>(); ResidenciaDAL resDAL = new ResidenciaDAL(); listRes = resDAL.ListarPorUser(listUr); model.ListRes = listRes; Session["res"] = listRes[0]; //Objeto a ser preenchido com a criação de uma nova residência model.Res = new Residencia(); //Objeto a ser alterado na edição de uma residência model.ResEdit = new Residencia(); //Gerar lista de Comodos atrelados a cada residencia List <List <Comodo> > listsCom = new List <List <Comodo> >(); ComodoDAL comDAL = new ComodoDAL(); foreach (Residencia res in listRes) { List <Comodo> listaComodo = (List <Comodo>)comDAL.ListarPorRes(res.IdRes); listsCom.Add(listaComodo); if (res.IdRes == listRes[0].IdRes) { Session["com"] = listaComodo; } } model.ListsComodo = listsCom; //Objeto a ser preenchido com a criação de um novo cômodo model.Com = new Comodo(); //Objeto a ser preenchido com a edição de cômodo model.ComEdit = new Comodo(); //Gerar lista de aparelhos para cada cômodo //1- Gerar lista de ComEle para cada cômodo List <List <ComEle> > listsComEle = new List <List <ComEle> >(); ComEleDAL ceDAL = new ComEleDAL(); foreach (List <Comodo> listCom in listsCom) { foreach (Comodo com in listCom) { listsComEle.Add((List <ComEle>)ceDAL.ListarPorCom(com.IdComodo)); } } //2- Gerar lista funcional de IEle + Id Comodo + Id ItemAparelho List <IEleTratado> listTratado = new List <IEleTratado>(); IEleDAL eDAL = new IEleDAL(); List <IEle> listaEle = new List <IEle>(); foreach (List <ComEle> listComEle in listsComEle) { foreach (ComEle comEle in listComEle) { IEleTratado tratado = new IEleTratado(); IEle item = eDAL.Consultar(comEle.IdIEle); tratado.IdComEle = comEle.IdComEle; tratado.IdIEle = item.IdIEle; tratado.NmIEle = item.NmIEle; tratado.IdCat = item.IdCat; tratado.VlConsumo = item.VlConKwh; tratado.Custo = item.VlCusto; tratado.IdComodo = comEle.IdComodo; tratado.QntConsumo = (int)comEle.QtTempoUso; listTratado.Add(tratado); foreach (Comodo com in (List <Comodo>)Session["com"]) { if (comEle.IdComodo == com.IdComodo) { listaEle.Add(item); } } } } Session["itens"] = listaEle; //3- Exportar objeto tratado para o modelo model.ListIEle = listTratado; //Objeto para adicao de novo item dentro de um comodo model.IEleAdd = new IEleAdd(); return(View(model)); //return View (listRes); }