Beispiel #1
0
        public ActionResult CreateStockBuy([Bind(Include = "TradeType,TradeDate,UserName")] SummaryTable summaryTable, [Bind(Include = "stockID,stockPrice,stockAmount,stockFee,stockTax,stockTP,stockNetincome,stockNote,CashAccount")] StockHistory stockHistory, UsersData userdata)
        {
            if (Session["User"] == null)
            {
                return(RedirectToRoute("Default", new { Controller = "Home", Action = "Index" }));
            }

            if (ModelState.IsValid)
            {
                //存入總表獲得交易序號
                db.SummaryTable.Add(summaryTable);
                db.SaveChanges();
                var  id       = db.SummaryTable.Select(c => c.STId).ToList().LastOrDefault();
                bool cashflag = false;
                if (stockHistory.CashAccount)
                {
                    CashExpense expense = new CashExpense();
                    expense.OID        = id;
                    expense.UserName   = summaryTable.UserName;
                    expense.ExCashType = summaryTable.TradeType;
                    expense.ExAmount   = (stockHistory.stockNetincome) * (-1);
                    expense.ExDate     = summaryTable.TradeDate;
                    expense.ExNote     = "買進股票";
                    cashflag           = true;
                    db.CashExpense.Add(expense);
                    db.SaveChanges();
                }
                //存入股票交易紀錄表
                stockHistory.STId        = id;
                stockHistory.stockAmount = stockHistory.stockAmount * 1000;
                AVGCalculator calculator = new AVGCalculator();
                string        _username  = Session["User"].ToString();
                string        _searchid  = stockHistory.stockID.ToString();
                int           _invchange = (int)stockHistory.stockAmount;
                int           _cashflow  = (int)stockHistory.stockNetincome;
                stockHistory.stockLastAVG = calculator.GetAvg(_username, _searchid, _invchange, _cashflow);
                db.StockHistory.Add(stockHistory);
                db.SaveChanges();

                //計算股票現值
                var     name  = summaryTable.UserName;
                decimal pvsum = calculator.getPVsum(name);
                var     ud    = calculator.GetUserdata(name);

                userdata.StockValue      = (double)pvsum;
                userdata.UserName        = ud[0].UserName;
                userdata.CashValue       = (cashflag)? (ud[0].CashValue + Math.Abs((double)stockHistory.stockNetincome)): ud[0].CashValue;
                userdata.Password        = ud[0].Password;
                userdata.Email           = ud[0].Email;
                userdata.FXValue         = ud[0].FXValue;
                userdata.InsuranceValue  = ud[0].InsuranceValue;
                userdata.FundValue       = ud[0].FundValue;
                db.Entry(userdata).State = EntityState.Modified;
                db.SaveChanges();

                return(RedirectToAction("Index"));
            }

            return(RedirectToAction("Index"));
        }
Beispiel #2
0
        //Insert Income
        public ActionResult InsertIncome([Bind(Include = "STId,TradeType,TradeDate,UserName")] SummaryTable summaryTable, [Bind(Include = "InCashID,UserName,InCashType,InAmount,InDate,InNote")] CashIncome cashIncome)
        {
            if (Session["User"] == null)
            {
                return(RedirectToRoute("Default", new { Controller = "Home", Action = "Index" }));
            }

            if (ModelState.IsValid)
            {
                var username = Convert.ToString(Session["User"]);
                var Esum     = db.CashExpense.Sum(c => c.ExAmount).HasValue? db.CashExpense.Sum(c => c.ExAmount):0;
                var Isum     = (db.CashIncome.Sum(c => c.InAmount) + Convert.ToInt32(cashIncome.InAmount)).HasValue? db.CashIncome.Sum(c => c.InAmount) + Convert.ToInt32(cashIncome.InAmount):0;
                var net      = Isum - Esum;
                //算出現金淨值,更新至userdata的cashvalue
                var userdata = db.UsersData.Where(c => c.UserName == username).Select(c => c).SingleOrDefault();
                userdata.CashValue       = (double)net;
                db.Entry(userdata).State = EntityState.Modified;

                //新增總表資料
                summaryTable.TradeType = cashIncome.InCashType;
                summaryTable.TradeDate = cashIncome.InDate;
                summaryTable.UserName  = cashIncome.UserName;
                db.SummaryTable.Add(summaryTable);
                db.SaveChanges();

                //新增現金資產
                cashIncome.OID = summaryTable.STId;
                db.CashIncome.Add(cashIncome);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(cashIncome));
        }
Beispiel #3
0
 public ActionResult Edit([Bind(Include = "SerialNumber,UserID,InsuranceName,PurchaseDate,WithdrawDate,PaymentPerYear,PayYear,PurchaseOrWithdraw,CashFlow,Withdrawal")] Insurances insurances)
 {
     if (ModelState.IsValid)
     {
         db.Entry(insurances).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(insurances));
 }
Beispiel #4
0
        public ActionResult Edit([Bind(Include = "SerialNumber,UserID,FundName,BuyOrSell,Fee,Units,Date,NAV,CashFlow")] Fund fund)
        {
            if (Session["User"] == null)
            {
                return(RedirectToRoute("Default", new { Controller = "Home", Action = "Index" }));
            }

            if (ModelState.IsValid)
            {
                db.Entry(fund).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(fund));
        }
Beispiel #5
0
        //Edit
        public ActionResult EditIinsurance(Insurances insurance)
        {
            if (ModelState.IsValid)
            {
                db.Entry(insurance).State = EntityState.Modified;

                var stdata = db.SummaryTable.Find(insurance.STID);
                if (insurance.PurchaseOrWithdraw == true)
                {
                    stdata.TradeDate = insurance.PurchaseDate;
                    var arr = db.CashExpense.Where(C => C.OID == insurance.STID).Select(C => C).SingleOrDefault();
                    arr.ExAmount = insurance.CashFlow;
                    arr.ExDate   = insurance.PurchaseDate;
                }
                else
                {
                    stdata.TradeDate = insurance.WithdrawDate;
                    var arr = db.CashIncome.Where(C => C.OID == insurance.STID).Select(C => C).SingleOrDefault();
                    arr.InAmount = -insurance.CashFlow;
                    arr.InDate   = insurance.PurchaseDate;
                }
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(insurance));
        }
Beispiel #6
0
        //Edit
        public ActionResult EditIinsurance(Fund fund)
        {
            if (ModelState.IsValid)
            {
                db.Entry(fund).State = EntityState.Modified;


                var stdata = db.SummaryTable.Find(fund.STID);
                if (fund.BuyOrSell == true)
                {
                    stdata.TradeDate = fund.Date;
                    var arr = db.CashExpense.Where(C => C.OID == fund.STID).Select(C => C).SingleOrDefault();
                    arr.ExAmount = Convert.ToInt32(fund.CashFlow);
                    arr.ExDate   = fund.Date;
                }
                else
                {
                    stdata.TradeDate = fund.Date;
                    var arr = db.CashIncome.Where(C => C.OID == fund.STID).Select(C => C).SingleOrDefault();
                    arr.InAmount = -Convert.ToInt32(fund.CashFlow);
                    arr.InDate   = fund.Date;
                }
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(fund));
        }
Beispiel #7
0
        //Insert Expense
        public ActionResult InsertExpense([Bind(Include = "STId,TradeType,TradeDate,UserName")] SummaryTable summaryTable, [Bind(Include = "ExCashID,UserName,ExCashType,ExAmount,ExDate,ExNote")] CashExpense cashExpense)
        {
            if (Session["User"] == null)
            {
                return(RedirectToRoute("Default", new { Controller = "Home", Action = "Index" }));
            }

            if (ModelState.IsValid)
            {
                var username = Convert.ToString(Session["User"]);
                var Esum     = (db.CashExpense.Sum(c => c.ExAmount) + Convert.ToInt32(cashExpense.ExAmount)).HasValue? db.CashExpense.Sum(c => c.ExAmount) + Convert.ToInt32(cashExpense.ExAmount):0;
                var Isum     = db.CashIncome.Sum(c => c.InAmount).HasValue? db.CashIncome.Sum(c => c.InAmount):0;
                var net      = Isum - Esum;
                //如果淨資產小於零,不給新增支出項目
                if (net - cashExpense.ExAmount < 0)
                {
                    return(Json(net - cashExpense.ExAmount, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    //更新userdata的cashvalue
                    var userdata = db.UsersData.Where(c => c.UserName == username).Select(c => c).SingleOrDefault();
                    userdata.CashValue       = (double)net;
                    db.Entry(userdata).State = EntityState.Modified;
                    //新增總表資料
                    summaryTable.TradeType = cashExpense.ExCashType;
                    summaryTable.TradeDate = cashExpense.ExDate;
                    summaryTable.UserName  = cashExpense.UserName;
                    db.SummaryTable.Add(summaryTable);
                    //新增支出表資料
                    cashExpense.OID = summaryTable.STId;
                    db.CashExpense.Add(cashExpense);
                    try
                    {
                        db.SaveChanges();
                    }
                    catch (Exception er)
                    {
                        throw er;
                    }
                    return(RedirectToAction("Index"));
                }
            }
            return(View(cashExpense));
        }
Beispiel #8
0
 //Edit Income
 public ActionResult EditExpense([Bind(Include = "ExCashID,UserID,ExCashType,ExAmount,ExDate,ExNote")] CashExpense cashExpense)
 {
     if (ModelState.IsValid)
     {
         db.Entry(cashExpense).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(cashExpense));
 }
 //Edit Income
 public ActionResult EditIncome([Bind(Include = "InCashID,UserName,InCashType,InAmount,InDate,InNote")] CashIncome cashIncome)
 {
     if (ModelState.IsValid)
     {
         db.Entry(cashIncome).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(cashIncome));
 }
Beispiel #10
0
 public ActionResult Edit([Bind(Include = "SerialNumber,UserID,FundName,BuyOrSell,Fee,Units,Date,NAV,CashFlow")] Fund fund)
 {
     if (ModelState.IsValid)
     {
         db.Entry(fund).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(fund));
 }
Beispiel #11
0
        public async Task <ActionResult> Edit([Bind(Include = "Id,UserName,MClass,NTD,USD,FX,tax,Ttime,TClass")] FXtradeTable tradeTable)
        {
            if (ModelState.IsValid)
            {
                db.Entry(tradeTable).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(tradeTable));
        }
Beispiel #12
0
        //Edit Expense
        public ActionResult EditExpense([Bind(Include = "ExCashID,UserID,ExCashType,ExAmount,ExDate,ExNote")] CashExpense cashExpense)
        {
            if (Session["User"] == null)
            {
                return(RedirectToRoute("Default", new { Controller = "Home", Action = "Index" }));
            }

            if (ModelState.IsValid)
            {
                db.Entry(cashExpense).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(cashExpense));
        }
Beispiel #13
0
        //[ValidateAntiForgeryToken]
        public ActionResult Create(FXtradeTable tradeTable, SummaryTable summaryTable, UsersData usersData)
        {
            if (ModelState.IsValid)
            {
                //存總表
                db.SummaryTable.Add(summaryTable);
                db.SaveChanges();

                //存外匯交易表
                var uid = db.SummaryTable.Select(c => c.STId).ToList().LastOrDefault();
                tradeTable.SummaryId = uid;
                db.FXtradeTable.Add(tradeTable);
                db.SaveChanges();
                if (tradeTable.TradeClass == "賣出")
                {
                    CashIncome cashincome = new CashIncome();
                    cashincome.UserName   = Session["User"].ToString();
                    cashincome.OID        = uid;
                    cashincome.InCashType = summaryTable.TradeType;
                    cashincome.InDate     = summaryTable.TradeDate;
                    cashincome.InNote     = tradeTable.TradeClass;
                    var change = tradeTable.NTD * -1;
                    cashincome.InAmount = Convert.ToInt32(change);
                    db.CashIncome.Add(cashincome);
                    db.SaveChanges();
                    //更新個人資產表
                    TestHomeController th = new TestHomeController();
                    var name = summaryTable.UserName;
                    var ud   = th.GetUsersData(name);

                    usersData.FXValue  = th.SaveUserdata(name);
                    usersData.UserName = ud[0].UserName;
                    var cv = Math.Abs(tradeTable.NTD.Value);
                    usersData.CashValue       = ud[0].CashValue + tradeTable.NTD;
                    usersData.InsuranceValue  = ud[0].InsuranceValue;
                    usersData.StockValue      = ud[0].StockValue;
                    usersData.FundValue       = ud[0].FundValue;
                    usersData.Email           = ud[0].Email;
                    usersData.Password        = ud[0].Password;
                    db.Entry(usersData).State = EntityState.Modified;
                    db.SaveChanges();
                }
                else
                {
                    CashExpense cashexpense = new CashExpense();
                    cashexpense.UserName   = Session["User"].ToString();
                    cashexpense.OID        = uid;
                    cashexpense.ExCashType = summaryTable.TradeType;
                    cashexpense.ExDate     = summaryTable.TradeDate;
                    cashexpense.ExNote     = tradeTable.TradeClass;
                    if (tradeTable.TradeClass == "買入(不要連動新臺幣帳戶)")
                    {
                        cashexpense.ExAmount = 0;
                    }
                    else
                    {
                        cashexpense.ExAmount = Convert.ToInt32(tradeTable.NTD);
                    }
                    db.CashExpense.Add(cashexpense);
                    db.SaveChanges();
                    //更新個人資產表
                    TestHomeController th = new TestHomeController();
                    var name = summaryTable.UserName;
                    var ud   = th.GetUsersData(name);

                    usersData.FXValue  = th.SaveUserdata(name);
                    usersData.UserName = ud[0].UserName;
                    var cv = Math.Abs(tradeTable.NTD.Value);
                    if (tradeTable.TradeClass == "買入(不要連動新臺幣帳戶)")
                    {
                        usersData.CashValue = ud[0].CashValue;
                    }
                    else
                    {
                        usersData.CashValue = ud[0].CashValue - tradeTable.NTD;
                    }
                    usersData.InsuranceValue  = ud[0].InsuranceValue;
                    usersData.StockValue      = ud[0].StockValue;
                    usersData.FundValue       = ud[0].FundValue;
                    usersData.Email           = ud[0].Email;
                    usersData.Password        = ud[0].Password;
                    db.Entry(usersData).State = EntityState.Modified;
                    db.SaveChanges();
                }

                return(RedirectToAction("Index"));
            }
            return(View(tradeTable));
        }
Beispiel #14
0
        public void Delete(int id)
        {
            FXtradeTable tt = dc.FXtradeTable.Find(id);

            if (tt == null)
            {
                return;
            }
            var        name       = Session["User"].ToString();
            CashIncome cashincome = new CashIncome();

            if (tt.TradeClass == "賣出")
            {
                CashExpense cashexpense = new CashExpense();
                cashexpense.UserName = Session["User"].ToString();

                var summary = dc.SummaryTable.Where(c => c.UserName == name).ToList();

                cashexpense.OID        = summary[0].STId;
                cashexpense.ExCashType = summary[0].TradeType;
                cashexpense.ExDate     = summary[0].TradeDate;
                cashexpense.ExNote     = "資料表刪除";
                cashexpense.ExAmount   = Convert.ToInt32(Math.Abs(tt.NTD.Value));
                dc.CashExpense.Add(cashexpense);

                dc.FXtradeTable.Remove(tt);
                dc.SaveChanges();

                UsersData          usersData = new UsersData();
                TestHomeController th        = new TestHomeController();
                var ud = th.GetUsersData(name);
                usersData.FXValue  = th.SaveUserdata(name);
                usersData.UserName = ud[0].UserName;
                var cv = Math.Abs(tt.NTD.Value);
                usersData.CashValue       = ud[0].CashValue - cv;
                usersData.InsuranceValue  = ud[0].InsuranceValue;
                usersData.StockValue      = ud[0].StockValue;
                usersData.FundValue       = ud[0].FundValue;
                usersData.Email           = ud[0].Email;
                usersData.Password        = ud[0].Password;
                dc.Entry(usersData).State = EntityState.Modified;
                dc.SaveChanges();
            }
            else
            {
                var summary = dc.SummaryTable.Where(c => c.UserName == name).ToList();

                cashincome.UserName   = name;
                cashincome.OID        = summary[0].STId;
                cashincome.InCashType = summary[0].TradeType;
                cashincome.InDate     = summary[0].TradeDate;
                cashincome.InNote     = "資料表刪除";
                var cv = Math.Abs(tt.NTD.Value);
                if (tt.TradeClass == "買入(不要連動新臺幣帳戶)")
                {
                    cashincome.InAmount = 0;
                }
                else
                {
                    cashincome.InAmount = Convert.ToInt32(cv);
                }
                dc.CashIncome.Add(cashincome);

                dc.FXtradeTable.Remove(tt);
                dc.SaveChanges();

                UsersData          usersData = new UsersData();
                TestHomeController th        = new TestHomeController();

                var ud = th.GetUsersData(name);

                usersData.FXValue  = th.SaveUserdata(name);
                usersData.UserName = ud[0].UserName;
                if (tt.TradeClass == "買入(不要連動新臺幣帳戶)")
                {
                    usersData.CashValue = ud[0].CashValue;
                }
                else
                {
                    usersData.CashValue = ud[0].CashValue + cv;
                }
                usersData.InsuranceValue  = ud[0].InsuranceValue;
                usersData.StockValue      = ud[0].StockValue;
                usersData.FundValue       = ud[0].FundValue;
                usersData.Email           = ud[0].Email;
                usersData.Password        = ud[0].Password;
                dc.Entry(usersData).State = EntityState.Modified;
                dc.SaveChanges();
            }
        }