public async Task <Decimal> AddCavAsync(ScCav scCav)
        {
            var rstScCav = await scCavRepository.insert(scCav);

            if (rstScCav == null)
            {
                return(-1);
            }
            return(await SaveDbContextAsync());
        }
        public async Task<Decimal> AddCavAsync(ScCav scCav)
        {
            var rstScCav = await scCavRespository.insert(scCav);

            if (rstScCav == null)
            {
                return -1;
            }
            return await SaveDbContextAsync();
        }
        public static double CalcFinancialPoint(ScFinancialIndexT sboFinancialIndexT, ScCav obj)
        {
            //매출영업이익률(영업이익 ÷ 매출액)×100
            //if(sboFinancialIndexT.CurrentSale.Value == 0) ?
            double a      = (sboFinancialIndexT.CurrentSale.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.OperatingEarning.Value / sboFinancialIndexT.CurrentSale.Value) * 100);
            double aPoint = 0.0;

            if (sboFinancialIndexT.OperatingEarning.Value == 0 || sboFinancialIndexT.CurrentSale.Value == 0)
            {
                aPoint = 0;
            }
            else
            {
                // 소수 3.4000000004 식으로 왜??
                //double ex = Convert.ToDouble(obj.CavOp);
                //double gw = getWeight(a, ex);
                //aPoint = gw * 17D;
                aPoint = getWeight(a, Convert.ToDouble(obj.CavOp)) * 17;
            }
            //double aPoint = (a / (5.2 + a)) * 17;

            //자기자본순이익률(당기순이익 ÷ 자본총계)×100
            double b      = (sboFinancialIndexT.TotalCapital.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentEarning.Value / sboFinancialIndexT.TotalCapital.Value) * 100);
            double bPoint = 0.0;

            if (sboFinancialIndexT.CurrentEarning.Value == 0 || sboFinancialIndexT.TotalCapital.Value == 0)
            {
                bPoint = 0;
            }
            else
            {
                bPoint = getWeight(b, Convert.ToDouble(obj.CavRe)) * 6;
            }
            //double bPoint = (b / (5.19 + b)) * 6;

            //매출증가율((당기매출액 - 전기매출액) ÷ 전기매출액)×100
            double c = (sboFinancialIndexT.PrevSale.Value == 0) ? 0 : Convert.ToDouble(((sboFinancialIndexT.CurrentSale.Value - sboFinancialIndexT.PrevSale.Value) / sboFinancialIndexT.PrevSale.Value) * 100);
            //double cPoint = ((c / (4.93 + c)) * 9);
            double cPoint = 0.0;

            //전기매출액이 0 이고 당기매출액이 0 일때 =  0점
            if (sboFinancialIndexT.PrevSale.Value == 0)
            {
                if (sboFinancialIndexT.CurrentSale.Value == 0)
                {
                    cPoint = 0;
                }
                else if (sboFinancialIndexT.CurrentSale > 0)
                {
                    cPoint = 9;
                }
            }
            else
            {
                cPoint = getWeight(c, Convert.ToDouble(obj.CavSg)) * 9;
            }

            //순이익증가율((당기순이익 - 전기순이익) ÷ 전기순이익)×100
            double d = (sboFinancialIndexT.PrevEarning.Value == 0) ? 0 : Convert.ToDouble(((sboFinancialIndexT.CurrentEarning.Value - sboFinancialIndexT.PrevEarning.Value) / sboFinancialIndexT.PrevEarning.Value) * 100);
            //double dPoint = (d / (19.96 + d)) * 14;
            double dPoint = 0.0;

            //당기손익이 0이하일때 = 0점
            if (sboFinancialIndexT.CurrentEarning.Value <= 0)
            {
                dPoint = 0;
            }
            //당기손익이 이익(양수)이고 전기손익이 0이하일때 = 14점
            else if (sboFinancialIndexT.CurrentEarning.Value > 0 && sboFinancialIndexT.PrevEarning.Value <= 0)
            {
                dPoint = 14;
            }
            else
            {
                dPoint = getWeight(d, (Convert.ToDouble(obj.CavNg))) * 14;
            }

            //당좌비율((유동자산 - 재고자산) ÷ 유동부채)×100
            double e      = (sboFinancialIndexT.CurrentLiability.Value == 0) ? 0 : Convert.ToDouble(((sboFinancialIndexT.CurrentAsset.Value - sboFinancialIndexT.InventoryAsset.Value) / sboFinancialIndexT.CurrentLiability.Value) * 100);
            double ePoint = 0.0;

            // double ePoint = (e / (102.09 + e)) * 4;

            // 유동부채가 0일 경우 4점
            if ((sboFinancialIndexT.CurrentAsset.Value - sboFinancialIndexT.InventoryAsset.Value) == 0 && sboFinancialIndexT.CurrentLiability.Value == 0)
            {
                ePoint = 0;
            }
            else if ((sboFinancialIndexT.CurrentAsset.Value - sboFinancialIndexT.InventoryAsset.Value) == 0)
            {
                ePoint = 0;
            }
            else
            {
                if (sboFinancialIndexT.CurrentLiability.Value == 0)
                {
                    ePoint = 4;
                }
                else
                {
                    ePoint = getWeight(e, Convert.ToDouble(obj.CavQr)) * 4;
                }
            }

            //유동비율(유동자산 ÷ 유동부채)×100
            double f      = (sboFinancialIndexT.CurrentLiability.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentAsset.Value / sboFinancialIndexT.CurrentLiability.Value) * 100);
            double fPoint = 0.0;

            // 유동부채가 0일 경우 13점
            if (sboFinancialIndexT.CurrentAsset.Value == 0 && sboFinancialIndexT.CurrentLiability.Value == 0)
            {
                fPoint = 0;
            }
            else if (sboFinancialIndexT.CurrentAsset.Value == 0)
            {
                fPoint = 0;
            }
            else
            {
                if (sboFinancialIndexT.CurrentLiability.Value == 0)
                {
                    fPoint = 13;
                }
                else
                {
                    fPoint = getWeight(f, (Convert.ToDouble(obj.CavCr))) * 13;
                }
                //double fPoint = (f / (136.27 + f)) * 13;
            }

            //부채비율(부채 ÷ 자본총계)×100
            double g      = (sboFinancialIndexT.TotalCapital.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.TotalLiability.Value / sboFinancialIndexT.TotalCapital.Value) * 100);
            double gPoint = 0.0;

            if (sboFinancialIndexT.TotalLiability.Value == 0 && sboFinancialIndexT.TotalCapital.Value == 0)
            {
                gPoint = 0;
            }
            else if (sboFinancialIndexT.TotalLiability.Value == 0)
            {
                gPoint = 9;
            }
            else
            {
                gPoint = getWeight(g, Convert.ToDouble(obj.CavDebt)) * 9;
            }

            //이자보상비율(영업이익 ÷ 이자비용)×100
            double h      = (sboFinancialIndexT.InterstCost.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.OperatingEarning.Value / sboFinancialIndexT.InterstCost.Value) * 100);
            double hPoint = 0;

            if (sboFinancialIndexT.OperatingEarning.Value == 0 && sboFinancialIndexT.InterstCost.Value == 0)
            {
                hPoint = 0;
            }
            else if (sboFinancialIndexT.OperatingEarning.Value == 0)
            {
                hPoint = 0;
            }
            else
            {
                // 이자비용이 0일 경우 7
                if (sboFinancialIndexT.InterstCost.Value == 0)
                {
                    hPoint = 7;
                }
                else
                {
                    hPoint = getWeight(h, Convert.ToDouble(obj.CavIcr)) * 7;
                }
                //double hPoint = (h / (333.63 + h)) * 7;
            }

            //총자산회전율(매출액 ÷ 총자산)×100
            double i      = (sboFinancialIndexT.TotalAsset.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentSale.Value / sboFinancialIndexT.TotalAsset.Value) * 100);
            double iPoint = 0.0;

            if (sboFinancialIndexT.CurrentSale.Value == 0 && sboFinancialIndexT.TotalAsset.Value == 0)
            {
                iPoint = 0;
            }
            else if (sboFinancialIndexT.CurrentSale.Value == 0)
            {
                iPoint = 0;
            }
            else
            {
                // 총 자산이 0일 경우
                if (sboFinancialIndexT.TotalAsset.Value == 0)
                {
                    iPoint = 3;
                }
                else
                {
                    iPoint = getWeight(i, Convert.ToDouble(obj.CavTat)) * 3;
                }
                //double iPoint = (i / (114.75 + i)) * 3;
            }

            //매출채권회전율(매출액 ÷ 매출채권(=외상매출금,미수금,받을어음))×100
            double j      = (sboFinancialIndexT.SalesCredit.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentSale.Value / sboFinancialIndexT.SalesCredit.Value) * 100);
            double jPoint = 0;

            if (sboFinancialIndexT.CurrentSale.Value == 0 && sboFinancialIndexT.SalesCredit.Value == 0)
            {
                jPoint = 0;
            }
            else if (sboFinancialIndexT.CurrentSale.Value == 0)
            {
                jPoint = 0;
            }
            else
            {
                // 매출채권이 0인 경우
                if (sboFinancialIndexT.SalesCredit.Value == 0)
                {
                    jPoint = 3;
                }
                else
                {
                    jPoint = getWeight(j, Convert.ToDouble(obj.CavTrt)) * 3;
                }
                //double jPoint = (j / (569.36 + j)) * 3;
            }

            //재고자산회전율(매출액 ÷ 재고자산)×100
            double k      = (sboFinancialIndexT.InventoryAsset.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentSale.Value / sboFinancialIndexT.InventoryAsset.Value) * 100);
            double kPoint = 0;

            if (sboFinancialIndexT.CurrentSale.Value == 0 && sboFinancialIndexT.InventoryAsset.Value == 0)
            {
                kPoint = 0;
            }
            else if (sboFinancialIndexT.CurrentSale.Value == 0)
            {
                kPoint = 0;
            }
            else
            {
                //재고자산이 0일때 = 4점
                if (sboFinancialIndexT.InventoryAsset.Value == 0)
                {
                    kPoint = 4;
                }
                else
                {
                    kPoint = getWeight(k, Convert.ToDouble(obj.CavIt)) * 4;
                }
                //double kPoint = (k / (915.48 + k)) * 4;
            }

            // 부가가치율(부가가치 ÷ 매출액)×100
            double l      = (sboFinancialIndexT.CurrentSale.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.ValueAdded.Value / sboFinancialIndexT.CurrentSale.Value) * 100);
            double lPoint = 0;

            if (sboFinancialIndexT.ValueAdded.Value == 0 && sboFinancialIndexT.CurrentSale.Value == 0)
            {
                lPoint = 0;
            }
            else if (sboFinancialIndexT.ValueAdded.Value == 0)
            {
                lPoint = 0;
            }
            else
            {
                // 당기매출액이 0이면
                if (sboFinancialIndexT.CurrentSale.Value == 0)
                {
                    lPoint = 4;
                }
                else
                {
                    lPoint = getWeight(l, (Convert.ToDouble(obj.CavVr))) * 4;
                }
                //double lPoint = (l / (24.02 + l)) * 4;
            }

            // 노동생산성 = 부가가치 ÷ 종업원수
            double m      = (sboFinancialIndexT.QtEmp.Value == 0) ? 0 : Convert.ToDouble(sboFinancialIndexT.ValueAdded.Value / sboFinancialIndexT.QtEmp.Value);
            double mPoint = 0;

            if (sboFinancialIndexT.ValueAdded.Value == 0 && sboFinancialIndexT.QtEmp.Value == 0)
            {
                mPoint = 0;
            }
            else if (sboFinancialIndexT.ValueAdded.Value == 0)
            {
                mPoint = 0;
            }
            else
            {
                // 종업원 수가 0이면
                if (sboFinancialIndexT.QtEmp.Value == 0)
                {
                    mPoint = 4;
                }
                else
                {
                    mPoint = getWeight(Math.Truncate(m / 1000), Convert.ToDouble(obj.CavLp)) * 4;
                }
            }

            //double mPoint = (m / (16163671 + m)) * 4;

            //자본생산성((부가가치 ÷ 자본총계)×100
            double n      = (sboFinancialIndexT.TotalCapital.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.ValueAdded.Value / sboFinancialIndexT.TotalCapital.Value) * 100);
            double nPoint = 0;

            if (sboFinancialIndexT.ValueAdded.Value == 0 && sboFinancialIndexT.TotalCapital.Value == 0)
            {
                nPoint = 0;
            }
            else if (sboFinancialIndexT.ValueAdded.Value == 0)
            {
                nPoint = 0;
            }
            else
            {
                // 자본총계가 0이면
                if (sboFinancialIndexT.TotalCapital.Value == 0)
                {
                    nPoint = 3;
                }
                else
                {
                    nPoint = getWeight(n, Convert.ToDouble(obj.CavCp)) * 3;
                }
                //double nPoint = (n / (137.01 + n)) * 3;
            }

            //재무점수로 환산
            double point = aPoint + bPoint + cPoint + dPoint + ePoint + fPoint + gPoint + hPoint + iPoint + jPoint + kPoint + lPoint + mPoint + nPoint;

            return(point);
        }
 public void ModifyScCav(ScCav scCav)
 {
     scCavRepository.Update(scCav);
 }