public ActionResult GetRule(int ruleId) { using (var q = new FinancialQueries()) { var rule = q.GetRule(ruleId); var mdr = new ModuleDepositRules() { id = rule.Id, nome = rule.Name, regras = new regra[rule.DistributionPercentages.Count] }; for (int i = 0; i < rule.DistributionPercentages.Count; i++) { var p = rule.DistributionPercentages.ElementAt(i); regra r = new regra() { id = p.ID, fundo = new fundo() { id = p.FundID.Value, text = p.Fund.Name }, objetivo = new objetivo() { id = p.ReserveID, text = p.Reserve.Name }, porcentagem = p.Percentage * 100 }; mdr.regras[i] = r; } return(Json(mdr)); } }
public ActionResult SubmitRule(ModuleDepositRules mdr) { DistributionRule dr = null; var percsToRemove = new List <DistributionPercentage>(); if (mdr.id == 0) { dr = new DistributionRule() { Name = mdr.nome, UserId = User.Identity.Name, DistributionPercentages = new List <DistributionPercentage>() }; foreach (var perc in mdr.regras) { var dp = new DistributionPercentage() { FundID = perc.fundo.id, ReserveID = perc.objetivo.id, Percentage = perc.porcentagem / 100, }; dr.DistributionPercentages.Add(dp); } using (var o = new FinancialOperations()) o.AddRule(dr); } else { using (var q = new FinancialQueries()) { dr = q.GetDistributionRule(mdr.id.Value); for (int i = 0; i < dr.DistributionPercentages.Count; i++) { var currPerc = dr.DistributionPercentages.ElementAt(i); if (mdr.regras.Any(r => r.fundo.id == currPerc.FundID && r.objetivo.id == currPerc.ReserveID) == false) { percsToRemove.Add(currPerc); } } dr.Name = mdr.nome; foreach (var perc in mdr.regras) { var dp = dr.DistributionPercentages.SingleOrDefault(p => p.FundID == perc.fundo.id && p.ReserveID == perc.objetivo.id); if (dp == null) { dp = new DistributionPercentage() { FundID = perc.fundo.id, ReserveID = perc.objetivo.id, Percentage = perc.porcentagem / 100 }; dr.DistributionPercentages.Add(dp); } else { dp.FundID = perc.fundo.id; dp.ReserveID = perc.objetivo.id; dp.Percentage = perc.porcentagem; } } using (var o = new FinancialOperations(q.Context)) o.UpdateRule(dr, percsToRemove); } } return(RulesPartial()); }