Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
        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());
        }