Beispiel #1
0
        public ActionResult Deposit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PassBook passBook = db.PassBooks.Find(id);
            int      userid   = 0;

            if (Session["userid"] != null)
            {
                userid = int.Parse(Session["userid"].ToString());
            }
            if (passBook == null || passBook.CustomerId != userid)
            {
                return(HttpNotFound());
            }

            int checkDays = (DateTime.Now - passBook.ChangeDate).Days;

            ViewBag.Active = "false";
            if (checkDays >= passBook.Term.MinDate || checkDays == 0)
            {
                ViewBag.Active = "true";
            }
            Session["passbookid"] = id;
            ViewBag.Acronym       = passBook.Acronym;
            return(View());
        }
Beispiel #2
0
        public ActionResult Withdraw(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PassBook passBook = db.PassBooks.Find(id);
            int      userid   = 0;

            if (Session["userid"] != null)
            {
                userid = int.Parse(Session["userid"].ToString());
            }
            if (passBook == null || passBook.CustomerId != userid)
            {
                return(HttpNotFound());
            }

            int checkDays = (DateTime.Now - passBook.ChangeDate).Days;

            if (checkDays < 15)
            {
                //Error message
            }
            ViewBag.PbId       = id;
            ViewBag.Acronym    = passBook.Acronym;
            ViewBag.PassBookId = new SelectList(db.PassBooks, "Id", "Acronym");
            return(View());
        }
Beispiel #3
0
        public ActionResult ConfirmWithdraw(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PassBook passBook = db.PassBooks.Find(id);
            int      userid   = 0;

            if (Session["userid"] != null)
            {
                userid = int.Parse(Session["userid"].ToString());
            }
            if (passBook == null || passBook.CustomerId != userid)
            {
                return(HttpNotFound());
            }

            ViewBag.PassbookId  = id;
            ViewBag.Acronym     = passBook.Acronym;
            ViewBag.TermendDate = passBook.ChangeDate.AddDays(passBook.Term.MinDate);
            ViewBag.DemandRate  = passBook.DemandInterestRate;

            return(View());
        }
Beispiel #4
0
        public ActionResult Close(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PassBook passBook = db.PassBooks.Find(id);
            int      userid   = 0;

            if (Session["userid"] != null)
            {
                userid = int.Parse(Session["userid"].ToString());
            }
            if (passBook == null || passBook.CustomerId != userid)
            {
                return(HttpNotFound());
            }
            ViewBag.PbId = id;

            var res = Calculate(passBook.Id, "close");

            ViewBag.Acronym     = passBook.Acronym;
            ViewBag.Principal   = passBook.Principal;
            ViewBag.Balance     = passBook.Balance;
            ViewBag.Interest    = res.interest;
            ViewBag.InterestKKH = res.interestKKH;
            ViewBag.Total       = passBook.Balance + (decimal)res.interest + (decimal)res.interestKKH;
            return(View());
        }
Beispiel #5
0
        public ActionResult Withdraw(TransactionDetail obj)
        {
            int AccountNumber          = Convert.ToInt32(obj.AccountNumber);
            var AccData2               = _context.Accounts.Where(x => x.AccountNumber == AccountNumber).FirstOrDefault();
            TransactionDetail AccData  = new TransactionDetail();
            PassBook          AccData3 = new PassBook();

            if (AccData2 != null)
            {
                AccData2.AccountNumber = obj.AccountNumber;
                AccData2.Balance       = AccData2.Balance - obj.Amount;
                // AccData.TimeofTransaction = DateTime.Now;
                _context.Entry(AccData2).State = EntityState.Modified;
                _context.SaveChanges();
            }

            AccData.AccountNumber     = AccData2.AccountNumber;
            AccData.Amount            = obj.Amount;
            AccData.TimeofTransaction = DateTime.Now;

            AccData3.AccountNumber     = AccData2.AccountNumber;
            AccData3.Amount            = obj.Amount;
            AccData3.TimeofTransaction = DateTime.Now;
            AccData3.Mode = "Withdraw";
            _context.TransactionDetails.Add(AccData);
            _context.SaveChanges();
            _context.PassBooks.Add(AccData3);
            _context.SaveChanges();

            TempData["Message"] = " Amount Withdrawl of Rs. " + Convert.ToString(AccData.Amount) + " was Successful ";

            return(RedirectToAction("../Home/Redirect"));
        }
Beispiel #6
0
        private dynamic Calculate(int id, string action)
        {
            PassBook passBook = db.PassBooks.SingleOrDefault(n => n.Id == id);
            double   rate = passBook.InterestRate, demandrate = passBook.DemandInterestRate;
            double   interest = 0, interestKKH = 0;
            int      checkDays = (DateTime.Now - passBook.ChangeDate).Days;

            if (checkDays < passBook.Term.MinDate)
            {
                //Tính lãi suất không kỳ hạn
                interestKKH = ((double)passBook.Balance * (demandrate / 100) / 360) * checkDays;
            }
            else if (checkDays == passBook.Term.MinDate)
            {
                //Tính lãi suất đúng kỳ hạn
                interest = ((double)passBook.Balance * (rate / 100) / 360) * passBook.Term.MinDate;
            }
            else
            {
                //Tính lãi suất đúng kỳ hạn + lãi suất không kỳ hạn
                int      checkTerms = checkDays / passBook.Term.MinDate;
                double   currentBal = (double)passBook.Balance;
                DateTime changeDate = passBook.ChangeDate;
                //Vòng lặp tính lãi suất mỗi lần đúng kỳ hạn
                for (int i = 0; i < checkTerms; i++)
                {
                    interest   = (currentBal * (rate / 100) / 360) * passBook.Term.MinDate;
                    changeDate = changeDate.AddDays(passBook.Term.MinDate);

                    if (action == "AutoTermEnd")
                    {
                        PassbookDetail pbDetail = new PassbookDetail();
                        pbDetail.PassbookId = id;
                        pbDetail.Action     = "Lãi kỳ hạn";
                        pbDetail.ActionDate = changeDate;
                        pbDetail.Balance    = decimal.Parse(currentBal.ToString("F"));
                        pbDetail.Amount     = decimal.Parse(interest.ToString("F"));
                        pbDetail.Surplus    = decimal.Parse((currentBal + interest).ToString("F"));
                        pbDetail.Status     = 1;

                        db.PassbookDetails.Add(pbDetail);
                    }

                    currentBal += interest;
                }
                passBook.ChangeDate = changeDate;
                passBook.Balance    = decimal.Parse(currentBal.ToString("F"));
                passBook.TermEnd    = 1;
                interestKKH         = (currentBal * (demandrate / 100) / 360) * (checkDays - (passBook.Term.MinDate * checkTerms));
            }
            interest    = double.Parse(interest.ToString("F"));
            interestKKH = double.Parse(interestKKH.ToString("F"));
            var res = new
            {
                interest,
                interestKKH
            };

            return(res);
        }
Beispiel #7
0
        public JsonResult CheckTerm(string pbid, string strdepdate)
        {
            int      a       = 0;
            string   result  = "";
            DateTime depdate = new DateTime(2000, 01, 01);

            if (!String.IsNullOrEmpty(pbid))
            {
                a = int.Parse(pbid);
                PassBook passBook = db.PassBooks.Find(a);
                if (!String.IsNullOrEmpty(strdepdate))
                {
                    depdate = DateTime.Parse(strdepdate);
                }
                int checkDays = (depdate - passBook.OpenDate).Days;
                if (checkDays == 0 || checkDays == passBook.Term.MinDate)
                {
                    result = "yes";
                }
                else
                {
                    result = "no";
                }
            }
            return(Json(new { result }, JsonRequestBehavior.AllowGet));
        }
        public JsonResult CheckTerm(string pbid, string strwitdate)
        {
            int      a = 0;
            string   result = "", acronym = "";
            decimal  balance = 0;
            DateTime depdate = new DateTime(2000, 01, 01);

            if (!String.IsNullOrEmpty(pbid))
            {
                a = int.Parse(pbid);
                PassBook passBook = db.PassBooks.Find(a);
                balance = passBook.Balance;
                if (!String.IsNullOrEmpty(strwitdate))
                {
                    depdate = DateTime.Parse(strwitdate);
                }
                int checkDays = (depdate - passBook.OpenDate).Days;
                if (checkDays >= passBook.Term.MinDate)
                {
                    result = "yes";
                    if (passBook.Term.Acronym == "KKH")
                    {
                        acronym = "KKH";
                    }
                }
                else
                {
                    result = "no";
                }
            }
            return(Json(new { result, acronym, balance }, JsonRequestBehavior.AllowGet));
        }
Beispiel #9
0
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PassBook passBook = db.PassBooks.Find(id);
            int      userid   = 0;

            if (Session["userid"] != null)
            {
                userid = int.Parse(Session["userid"].ToString());
            }
            if (passBook == null || passBook.CustomerId != userid)
            {
                return(HttpNotFound());
            }

            var res = BuildList();

            ViewBag.IpList      = res.iplist;
            ViewBag.TermEndList = res.termendlist;
            ViewBag.BankId      = new SelectList(db.Banks, "Id", "Acronym", passBook.BankId);
            ViewBag.TermId      = new SelectList(db.Terms, "Id", "Acronym", passBook.TermId);
            return(View(passBook));
        }
Beispiel #10
0
        public void WithdrawTests()
        {
            int      pbid   = 0;
            PassBook pbtest = dbtest.PassBooks.FirstOrDefault(n => n.Balance > 100005 && n.Status == 1);

            if (pbtest != null)
            {
                pbid = pbtest.Id;

                Withdraw withdraw1 = new Withdraw();
                withdraw1.PassBookId = pbid;
                withdraw1.Amount     = 0;
                string     err1    = "Nhập số tiền rút !";
                JsonResult result1 = pbcontroller.Withdraw(withdraw1) as JsonResult;
                string     msg1    = GetLogMsg(result1).msg;
                Assert.AreEqual(err1, msg1);
                System.Diagnostics.Debug.WriteLine("Case 1: " + msg1);

                Withdraw withdraw2 = new Withdraw();
                withdraw2.PassBookId = pbid;
                withdraw2.Amount     = dbtest.PassBooks.Find(withdraw2.PassBookId).Balance + 1;
                string     err2    = "Số tiền rút không thể lớn hơn số dư hiện tại !";
                JsonResult result2 = pbcontroller.Withdraw(withdraw2) as JsonResult;
                string     msg2    = GetLogMsg(result2).msg;
                Assert.AreEqual(err2, msg2);
                System.Diagnostics.Debug.WriteLine("Case 2: " + msg2);

                Withdraw withdraw3 = new Withdraw();
                withdraw3.PassBookId = pbid;
                withdraw3.Amount     = 10000;
                string     err3    = "Số tiền rút không thể nhỏ hơn 100.000 !";
                JsonResult result3 = pbcontroller.Withdraw(withdraw3) as JsonResult;
                string     msg3    = GetLogMsg(result3).msg;
                Assert.AreEqual(err3, msg3);
                System.Diagnostics.Debug.WriteLine("Case 3: " + msg3);

                Withdraw withdraw4 = new Withdraw();
                withdraw4.PassBookId = pbid;
                withdraw4.Amount     = 100005;
                string     err4    = "Đơn vị tiền nhỏ nhất là 50.000 !";
                JsonResult result4 = pbcontroller.Withdraw(withdraw4) as JsonResult;
                string     msg4    = GetLogMsg(result4).msg;
                Assert.AreEqual(err4, msg4);
                System.Diagnostics.Debug.WriteLine("Case 4: " + msg4);

                Withdraw withdraw5 = new Withdraw();
                withdraw5.PassBookId = pbid;
                withdraw5.Amount     = 100000;
                string     err5    = "completed";
                JsonResult result5 = pbcontroller.Withdraw(withdraw5) as JsonResult;
                string     msg5    = GetLogMsg(result5).msg;
                Assert.AreEqual(err5, msg5);
                System.Diagnostics.Debug.WriteLine("Case 5: " + msg5);
            }
            else
            {
                Assert.IsNull(pbtest);
            }
        }
Beispiel #11
0
        public ActionResult DeleteConfirmed(int id)
        {
            PassBook passBook = db.PassBooks.Find(id);

            passBook.Status          = 0;
            db.Entry(passBook).State = EntityState.Modified;
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Beispiel #12
0
 public ActionResult Edit([Bind(Include = "Id,BankId,TermId,CustomerId,Acronym,Balance,OpenDate,InterestPayment,TermEnd,Status,Principal,ChangeDate,InterestRate,DemandInterestRate")] PassBook passBook)
 {
     if (ModelState.IsValid)
     {
         db.Entry(passBook).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.BankId     = new SelectList(db.Banks, "Id", "Acronym", passBook.BankId);
     ViewBag.CustomerId = new SelectList(db.Customers, "Id", "Acronym", passBook.CustomerId);
     ViewBag.TermId     = new SelectList(db.Terms, "Id", "Acronym", passBook.TermId);
     return(View(passBook));
 }
Beispiel #13
0
        public void TestPassbookDetails()
        {
            PassBook pb = new PassBook();

            pb.AccountNumber     = 1010;
            pb.Amount            = 10;
            pb.TimeofTransaction = new DateTime(2020, 09, 02);
            pb.Mode = "Deposit";
            Assert.AreEqual(pb.AccountNumber, 1010);
            Assert.AreEqual(pb.Amount, 200);
            Assert.AreEqual(pb.TimeofTransaction, new DateTime(2020, 09, 02));
            Assert.AreEqual(pb.Mode, "Deposit");
        }
        private dynamic Calculate(int id, DateTime witdate, decimal amount)
        {
            PassBook passBook = db.PassBooks.SingleOrDefault(n => n.Id == id);
            double   rate = passBook.InterestRate, demandrate = passBook.DemandInterestRate;
            double   interest = 0, interestKKH = 0;
            int      checkDays = (witdate - passBook.ChangeDate).Days;

            if (checkDays < passBook.Term.MinDate)
            {
                //Tính lãi suất không kỳ hạn
                interestKKH = ((double)amount * (demandrate / 100) / 360) * checkDays;
            }
            else if (checkDays == passBook.Term.MinDate)
            {
                //Tính lãi suất đúng kỳ hạn
                interest = ((double)amount * (rate / 100) / 360) * passBook.Term.MinDate;
            }
            else
            {
                //Tính lãi suất đúng kỳ hạn + lãi suất không kỳ hạn
                if (passBook.Term.Acronym == "KKH")
                {
                    passBook.Term.MinDate = 360;
                }
                int      checkTerms = checkDays / passBook.Term.MinDate;
                double   currentBal = (double)amount;
                DateTime changeDate = passBook.ChangeDate;
                //Vòng lặp tính lãi suất mỗi lần đúng kỳ hạn
                for (int i = 0; i < checkTerms; i++)
                {
                    interest   = (currentBal * (rate / 100) / 360) * passBook.Term.MinDate;
                    changeDate = changeDate.AddDays(passBook.Term.MinDate);

                    currentBal += interest;
                }
                passBook.ChangeDate = changeDate;
                passBook.Balance    = decimal.Parse(currentBal.ToString("F"));
                passBook.TermEnd    = 1;
                interestKKH         = (currentBal * (demandrate / 100) / 360) * (checkDays - (passBook.Term.MinDate * checkTerms));
            }
            interest    = double.Parse(interest.ToString("F"));
            interestKKH = double.Parse(interestKKH.ToString("F"));
            var res = new
            {
                interest,
                interestKKH
            };

            return(res);
        }
Beispiel #15
0
        // GET: Admin/PassBooks/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PassBook passBook = db.PassBooks.Find(id);

            if (passBook == null)
            {
                return(HttpNotFound());
            }
            return(View(passBook));
        }
Beispiel #16
0
        public ActionResult Transfer(TransactionDetail obj, string YourItemName)
        {
            //int AccountNumber1 = Convert.ToInt32(TempData["AccountNumber1"]);
            int AccountNumber1         = Convert.ToInt32(YourItemName);
            int AccountNumber          = Convert.ToInt32(obj.AccountNumber);
            var AccData2               = _context.Accounts.Where(x => x.AccountNumber == AccountNumber).FirstOrDefault();
            var AccData4               = _context.Accounts.Where(x => x.AccountNumber == AccountNumber1).FirstOrDefault();
            TransactionDetail AccData  = new TransactionDetail();
            PassBook          AccData3 = new PassBook();
            PassBook          AccData5 = new PassBook();
            TransactionDetail AccData6 = new TransactionDetail();

            if (AccData2 != null)
            {
                AccData2.AccountNumber = obj.AccountNumber;
                AccData2.Balance       = AccData2.Balance - obj.Amount;
                AccData4.Balance       = AccData4.Balance + obj.Amount;
                // AccData.TimeofTransaction = DateTime.Now;
                _context.Entry(AccData2).State = EntityState.Modified;
                _context.Entry(AccData4).State = EntityState.Modified;
                _context.SaveChanges();
            }

            AccData.AccountNumber      = AccData2.AccountNumber;
            AccData.Amount             = obj.Amount;
            AccData.TimeofTransaction  = DateTime.Now;
            AccData6.AccountNumber     = AccountNumber1;
            AccData6.Amount            = obj.Amount;
            AccData6.TimeofTransaction = DateTime.Now;
            AccData3.AccountNumber     = AccData2.AccountNumber;
            AccData3.Amount            = obj.Amount;
            AccData3.TimeofTransaction = DateTime.Now;
            AccData3.Mode              = "Transfer Sent to  " + Convert.ToString(AccData4.FirstName);
            AccData5.AccountNumber     = AccountNumber1;
            AccData5.Amount            = obj.Amount;
            AccData5.TimeofTransaction = DateTime.Now;
            AccData5.Mode              = "Transfer Recived from " + Convert.ToString(AccData2.FirstName);
            _context.TransactionDetails.Add(AccData);
            _context.TransactionDetails.Add(AccData6);
            _context.PassBooks.Add(AccData3);
            _context.PassBooks.Add(AccData5);
            _context.SaveChanges();

            TempData["Message"] = " Amount is Successfully transfered to " + Convert.ToString(AccData4.FirstName) + " from " + Convert.ToString(AccData2.FirstName);

            return(RedirectToAction("../Home/Redirect"));
        }
Beispiel #17
0
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PassBook passBook = db.PassBooks.Find(id);
            int      userid   = 0;

            if (Session["userid"] != null)
            {
                userid = int.Parse(Session["userid"].ToString());
            }
            else
            {
                return(RedirectToAction("Login", "Home"));
            }
            if (passBook == null || passBook.CustomerId != userid)
            {
                return(HttpNotFound());
            }
            var    res    = BuildList();
            string status = null;

            switch (passBook.Status)
            {
            case 1:
                status = "Đang mở";
                break;

            case 2:
                status = "Đã đóng";
                break;

            default:
                status = "Chưa xác định";
                break;
            }
            var ir = FindIR(passBook.BankId, passBook.TermId);

            ViewBag.Status     = status;
            ViewBag.IRP        = res.iplist[passBook.InterestPayment - 1].Text;
            ViewBag.TermEnd    = res.termendlist[(passBook.TermEnd ?? 1) - 1].Text;
            ViewBag.Rate       = ir.rate;
            ViewBag.DemandRate = ir.demandrate;
            return(View(passBook));
        }
Beispiel #18
0
        // GET: Admin/PassBooks/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PassBook passBook = db.PassBooks.Find(id);

            if (passBook == null)
            {
                return(HttpNotFound());
            }
            ViewBag.BankId     = new SelectList(db.Banks, "Id", "Acronym", passBook.BankId);
            ViewBag.CustomerId = new SelectList(db.Customers, "Id", "Acronym", passBook.CustomerId);
            ViewBag.TermId     = new SelectList(db.Terms, "Id", "Acronym", passBook.TermId);
            return(View(passBook));
        }
Beispiel #19
0
        // GET: Admin/PassBooks/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PassBook passBook = db.PassBooks.Find(id);

            if (passBook == null)
            {
                return(HttpNotFound());
            }
            int depcount = db.Deposits.Where(n => n.PassBookId == passBook.Id && n.Status == 1).Count();
            int witcount = db.Withdraws.Where(n => n.PassBookId == passBook.Id && n.Status == 1).Count();

            ViewBag.DepCount = depcount;
            ViewBag.WitCount = witcount;
            return(View(passBook));
        }
Beispiel #20
0
        public ActionResult Create([Bind(Include = "Id,PassBookId,Acronym,DepositDate,Amount,Status")] Deposit deposit)
        {
            string   msg = null, msgacronym = null, msgpbid = null, msgdepdate = null, msgamount = null;
            DateTime mindate = new DateTime(2000, 01, 01);

            if (String.IsNullOrEmpty(deposit.Acronym))
            {
                msgacronym = "Nhập mã phiếu gởi !";
            }
            else
            {
                int depcount = db.Deposits.Where(n => n.Acronym == deposit.Acronym).Count();
                if (depcount > 0)
                {
                    msgacronym = "Phiếu gởi này đã tồn tại !";
                }
            }
            if (deposit.PassBookId == 0)
            {
                msgpbid = "Chưa có sổ tiết kiệm !";
            }
            if (deposit.Amount == 0)
            {
                msgamount = "Nhập số tiền gửi !";
            }
            else if (deposit.Amount < 100000)
            {
                msgamount = "Số tiền gửi tối thiểu là 100.000 !";
            }
            else if (deposit.Amount % 50000 > 0)
            {
                msgamount = "Đơn vị tiền nhỏ nhất là 50.000 !";
            }
            if (deposit.DepositDate < mindate)
            {
                msgdepdate = "Ngày gửi không thể nhỏ hơn 01/01/2000 !";
            }
            else if (deposit.DepositDate > DateTime.Now)
            {
                msgdepdate = "Ngày gửi không thể lớn hơn ngày hiện tại !";
            }
            else if (deposit.PassBookId != 0)
            {
                PassBook passBook = db.PassBooks.Find(deposit.PassBookId);
                if (deposit.DepositDate < passBook.OpenDate)
                {
                    msgdepdate = "Ngày gửi không thể nhỏ hơn ngày mở sổ !";
                }
            }

            if (msgacronym == null && msgpbid == null && msgdepdate == null && msgamount == null)
            {
                msg            = "completed";
                deposit.Status = 1;
                db.Deposits.Add(deposit);
                PassBook passBook = db.PassBooks.Find(deposit.PassBookId);
                passBook.Balance += deposit.Amount;
                db.SaveChanges();
                int depid = 0;
                depid = deposit.Id;
                return(Json(new { depid, msg }, JsonRequestBehavior.AllowGet));
            }
            return(Json(new { msgacronym, msgpbid, msgdepdate, msgamount }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Create([Bind(Include = "Id,PassBookId,Acronym,WithdrawDate,Amount,Status")] Withdraw withdraw)
        {
            string   msg = null, msgacronym = null, msgpbid = null, msgwitdate = null, msgamount = null;
            DateTime mindate = new DateTime(2000, 01, 01);

            if (String.IsNullOrEmpty(withdraw.Acronym))
            {
                msgacronym = "Nhập mã phiếu rút !";
            }
            else
            {
                int witcount = db.Withdraws.Where(n => n.Acronym == withdraw.Acronym).Count();
                if (witcount > 0)
                {
                    msgacronym = "Phiếu rút này đã tồn tại !";
                }
            }
            if (withdraw.PassBookId == 0)
            {
                msgpbid = "Chưa có sổ tiết kiệm !";
            }
            if (withdraw.Amount == 0)
            {
                msgamount = "Nhập số tiền rút !";
            }
            else if (withdraw.Amount < 0)
            {
                msgamount = "Số tiền rút không thể nhỏ hơn 0 !";
            }
            //else if (withdraw.Amount % 50000 > 0)
            //{
            //    msgamount = "Đơn vị tiền nhỏ nhất là 50.000 !";
            //}
            else if (withdraw.PassBookId != 0)
            {
                PassBook passBook = db.PassBooks.Find(withdraw.PassBookId);
                if (withdraw.Amount > passBook.Balance)
                {
                    msgamount = "Số tiền rút không thể lớn hơn số dư hiện có : " + passBook.Balance;
                }
            }
            if (withdraw.WithdrawDate < mindate)
            {
                msgwitdate = "Ngày rút không thể nhỏ hơn 01/01/2000 !";
            }
            else if (withdraw.WithdrawDate > DateTime.Now)
            {
                msgwitdate = "Ngày rút không thể lớn hơn ngày hiện tại !";
            }
            else if (withdraw.PassBookId != 0)
            {
                PassBook passBook = db.PassBooks.Find(withdraw.PassBookId);
                if (withdraw.WithdrawDate < passBook.OpenDate)
                {
                    msgwitdate = "Ngày rút không thể nhỏ hơn ngày mở sổ !";
                }
            }

            if (msgacronym == null && msgpbid == null && msgwitdate == null && msgamount == null)
            {
                msg             = "completed";
                withdraw.Status = 1;
                db.Withdraws.Add(withdraw);
                PassBook passBook = db.PassBooks.Find(withdraw.PassBookId);
                passBook.Balance -= withdraw.Amount;
                if (passBook.Balance == 0)
                {
                    passBook.Status = 2;
                }
                db.SaveChanges();
                var     res         = Calculate(withdraw.PassBookId, withdraw.WithdrawDate, withdraw.Amount);
                decimal interest    = (decimal)res.interest;
                decimal interestKKH = (decimal)res.interestKKH;
                int     witid       = 0;
                witid = withdraw.Id;
                return(Json(new { witid, msg, interest, interestKKH }, JsonRequestBehavior.AllowGet));
            }
            return(Json(new { msgacronym, msgpbid, msgwitdate, msgamount }, JsonRequestBehavior.AllowGet));
        }
Beispiel #22
0
        public ActionResult Close([Bind(Include = "Id,PassBookId,Acronym,WithdrawDate,Amount,Status")] Withdraw withdraw)
        {
            withdraw.Acronym      = "C_TESTING";
            withdraw.WithdrawDate = DateTime.Now;
            withdraw.Status       = 1;

            string   msg      = null;
            PassBook passBook = db.PassBooks.SingleOrDefault(n => n.Id == withdraw.PassBookId);

            if (ModelState.IsValid)
            {
                int checkDays = (DateTime.Now - passBook.ChangeDate).Days;
                //Tính lãi suất
                var res = Calculate(withdraw.PassBookId, "close");

                decimal interest = 0, demandinterest = 0;
                interest       = decimal.Parse(res.interest.ToString("F"));
                demandinterest = decimal.Parse(res.interestKKH.ToString("F"));

                if (checkDays == passBook.Term.MinDate)
                {
                    PassbookDetail pbDetail2 = new PassbookDetail();
                    pbDetail2.PassbookId = passBook.Id;
                    pbDetail2.ActionDate = passBook.ChangeDate.AddDays(passBook.Term.MinDate);
                    pbDetail2.Action     = "Lãi kỳ hạn";
                    pbDetail2.Balance    = passBook.Balance;
                    pbDetail2.Amount     = interest;
                    pbDetail2.Surplus    = pbDetail2.Balance + interest;
                    pbDetail2.Status     = 1;
                    db.PassbookDetails.Add(pbDetail2);
                }
                else if (checkDays < passBook.Term.MinDate)
                {
                    PassbookDetail pbDetail3 = new PassbookDetail();
                    pbDetail3.PassbookId = passBook.Id;
                    pbDetail3.ActionDate = DateTime.Now;
                    pbDetail3.Action     = "Lãi KKH";
                    pbDetail3.Balance    = passBook.Balance;
                    pbDetail3.Amount     = demandinterest;
                    pbDetail3.Surplus    = pbDetail3.Balance + demandinterest;
                    pbDetail3.Status     = 1;
                    db.PassbookDetails.Add(pbDetail3);
                }

                //Add PassbookDetail
                PassbookDetail pbDetail = new PassbookDetail();
                pbDetail.PassbookId = passBook.Id;
                pbDetail.ActionDate = DateTime.Now;
                pbDetail.Action     = "Tất toán";
                pbDetail.Balance    = passBook.Balance + interest + demandinterest;
                pbDetail.Amount     = -pbDetail.Balance;
                pbDetail.Surplus    = 0;
                pbDetail.Status     = 2;
                db.PassbookDetails.Add(pbDetail);

                withdraw.Amount = pbDetail.Balance;

                //Edit Passbook details
                passBook.Balance    = 0;
                passBook.ChangeDate = DateTime.Now;
                passBook.TermEnd    = 3;
                passBook.Status     = 2;

                msg = "completed";

                db.Withdraws.Add(withdraw);
                db.SaveChanges();
                return(Json(new { msg }, JsonRequestBehavior.AllowGet));
            }

            return(Json(new { msg }, JsonRequestBehavior.AllowGet));
        }
Beispiel #23
0
        public ActionResult Withdraw([Bind(Include = "Id,PassBookId,Acronym,WithdrawDate,Amount,Status")] Withdraw withdraw)
        {
            withdraw.Acronym      = "W_TESTING";
            withdraw.WithdrawDate = DateTime.Now;
            withdraw.Status       = 1;

            string   msgamount = null, msg = null;
            PassBook passBook  = db.PassBooks.SingleOrDefault(n => n.Id == withdraw.PassBookId);
            int      checkDays = (DateTime.Now - passBook.ChangeDate).Days;

            if (withdraw.Amount == 0)
            {
                msgamount = "Nhập số tiền rút !";
            }
            else if (withdraw.Amount > passBook.Balance)
            {
                msgamount = "Số tiền rút không thể lớn hơn số dư hiện tại !";
            }
            else if (withdraw.Amount < 100000)
            {
                //Error message
                msgamount = "Số tiền rút không thể nhỏ hơn 100.000 !";
            }
            else if (withdraw.Amount % 50000 > 0)
            {
                msgamount = "Đơn vị tiền nhỏ nhất là 50.000 !";
            }
            else
            {
                msg = "completed";
                db.Withdraws.Add(withdraw);

                decimal interest = 0;

                if (checkDays == passBook.Term.MinDate && passBook.TermEnd == 1)
                {
                    interest = decimal.Parse(Calculate(withdraw.PassBookId, "withdraw").interest.ToString("F"));

                    PassbookDetail pbDetail2 = new PassbookDetail();
                    pbDetail2.PassbookId = passBook.Id;
                    pbDetail2.ActionDate = passBook.ChangeDate.AddDays(passBook.Term.MinDate);
                    pbDetail2.Action     = "Lãi kỳ hạn";
                    pbDetail2.Balance    = passBook.Balance;
                    pbDetail2.Amount     = interest;
                    pbDetail2.Surplus    = pbDetail2.Balance + interest;
                    pbDetail2.Status     = 1;
                    db.PassbookDetails.Add(pbDetail2);

                    passBook.ChangeDate = passBook.ChangeDate.AddDays(passBook.Term.MinDate);
                }

                PassbookDetail pbDetail = new PassbookDetail();
                pbDetail.PassbookId = passBook.Id;
                pbDetail.ActionDate = DateTime.Now;
                pbDetail.Action     = "Rút một phần";
                pbDetail.Balance    = passBook.Balance + interest;
                pbDetail.Amount     = -withdraw.Amount;
                pbDetail.Surplus    = pbDetail.Balance - withdraw.Amount;
                pbDetail.Status     = 2;
                db.PassbookDetails.Add(pbDetail);

                decimal demandinterest = decimal.Parse((((double)withdraw.Amount * (passBook.DemandInterestRate / 100) / 360) * checkDays).ToString("F"));

                PassbookDetail pbDetail3 = new PassbookDetail();
                pbDetail3.PassbookId = passBook.Id;
                pbDetail3.ActionDate = DateTime.Now;
                pbDetail3.Action     = "Lãi khi rút";
                pbDetail3.Balance    = passBook.Balance + interest - withdraw.Amount;
                pbDetail3.Amount     = demandinterest;
                pbDetail3.Surplus    = pbDetail3.Balance + demandinterest;
                pbDetail3.Status     = 2;
                db.PassbookDetails.Add(pbDetail3);

                passBook.Balance += (interest - withdraw.Amount + demandinterest);
                db.SaveChanges();
                return(Json(new { msg }, JsonRequestBehavior.AllowGet));
            }

            return(Json(new { msgamount }, JsonRequestBehavior.AllowGet));
        }
Beispiel #24
0
        public ActionResult Deposit([Bind(Include = "Id,PassBookId,Acronym,DepositDate,Amount,Status")] Deposit deposit)
        {
            deposit.PassBookId  = int.Parse(Session["passbookid"].ToString());
            deposit.Acronym     = "D_TESTING";
            deposit.DepositDate = DateTime.Now;
            deposit.Status      = 1;
            string msgamount = null, msg = null;

            if (deposit.Amount == 0)
            {
                msgamount = "Nhập số tiền gửi !";
            }
            else if (deposit.Amount < 100000)
            {
                //Error message
                msgamount = "Số tiền gửi không thể nhỏ hơn 100.000 !";
            }
            else if (deposit.Amount % 50000 > 0)
            {
                msgamount = "Đơn vị tiền nhỏ nhất là 50.000 !";
            }
            else
            {
                msg = "completed";
                db.Deposits.Add(deposit);

                PassBook passBook  = db.PassBooks.SingleOrDefault(n => n.Id == deposit.PassBookId);
                decimal  interest  = 0;
                int      checkDays = (DateTime.Now - passBook.ChangeDate).Days;

                if (checkDays == passBook.Term.MinDate && passBook.TermEnd == 1)
                {
                    interest = decimal.Parse(Calculate(deposit.PassBookId, "deposit").interest.ToString("F"));

                    PassbookDetail pbDetail2 = new PassbookDetail();
                    pbDetail2.PassbookId = passBook.Id;
                    pbDetail2.ActionDate = passBook.ChangeDate.AddDays(passBook.Term.MinDate);
                    pbDetail2.Action     = "Lãi kỳ hạn";
                    pbDetail2.Balance    = passBook.Balance;
                    pbDetail2.Amount     = interest;
                    pbDetail2.Surplus    = pbDetail2.Balance + interest;
                    pbDetail2.Status     = 1;
                    db.PassbookDetails.Add(pbDetail2);

                    passBook.ChangeDate = passBook.ChangeDate.AddDays(passBook.Term.MinDate);
                }

                PassbookDetail pbDetail = new PassbookDetail();
                pbDetail.PassbookId = passBook.Id;
                pbDetail.ActionDate = DateTime.Now;
                pbDetail.Action     = "Gửi thêm";
                pbDetail.Balance    = passBook.Balance + interest;
                pbDetail.Amount     = deposit.Amount;
                pbDetail.Surplus    = pbDetail.Balance + deposit.Amount;
                pbDetail.Status     = 1;
                db.PassbookDetails.Add(pbDetail);

                passBook.Balance += (interest + deposit.Amount);
                db.SaveChanges();
                return(Json(new { msg }, JsonRequestBehavior.AllowGet));
            }

            return(Json(new { msgamount }, JsonRequestBehavior.AllowGet));
        }
Beispiel #25
0
        public ActionResult Edit([Bind(Include = "Id,BankId,TermId,CustomerId,Acronym,Balance,InterestRate,DemandInterestRate,OpenDate,InterestPayment,TermEnd,Status,Principal,ChangeDate")] PassBook passBook, string acrbank)
        {
            string   msg = null, msgbankid = null, msgtermid = null, msgir = null, msgdemandir = null, msgacronym = null, msgprincipal = null, msgopendate = null, msgchangedate = null;
            DateTime mindate = new DateTime(2000, 01, 01);

            if (acrbank.Length < 2)
            {
                msgbankid = "Nhập tên ngân hàng viết tắt từ 2 đến 20 ký tự";
            }
            else
            {
                var bank = db.Banks.FirstOrDefault(n => n.Acronym == acrbank);
                if (bank != null)
                {
                    passBook.BankId = bank.Id;
                }
                else
                {
                    Bank newbank = new Bank();
                    newbank.Acronym = acrbank;
                    newbank.Name    = acrbank;
                    newbank.Status  = 1;
                    db.Banks.Add(newbank);
                    passBook.BankId = newbank.Id;
                }
            }
            if (passBook.TermId == 0)
            {
                msgtermid = "Chọn loại kỳ hạn !";
            }
            if (passBook.InterestRate == 0)
            {
                msgir = "Nhập lãi suất !";
            }
            else if (passBook.InterestRate > 100)
            {
                msgir = "Lãi suất không thể lớn hơn 100 %";
            }
            if (passBook.DemandInterestRate == 0)
            {
                passBook.DemandInterestRate = 0.05;
                Term term = db.Terms.Find(passBook.TermId);
                if (term.Acronym == "KKH")
                {
                    if (passBook.Term.Acronym == "KKH")
                    {
                        passBook.DemandInterestRate = passBook.InterestRate;
                    }
                }
            }
            else if (passBook.DemandInterestRate > 100)
            {
                msgdemandir = "Lãi suất không thể lớn hơn 100 %";
            }
            if (String.IsNullOrEmpty(passBook.Acronym))
            {
                msgacronym = "Nhập mã sổ !";
            }
            else
            {
                var oldPb   = db.PassBooks.Where(n => n.Id == passBook.Id);
                var pbexc   = db.PassBooks.Except(oldPb);
                int pbcount = pbexc.Where(n => n.Acronym == passBook.Acronym && n.Status == 1 && n.CustomerId == passBook.CustomerId).Count();
                if (pbcount > 0)
                {
                    msgacronym = "Sổ này đang mở !";
                }
            }
            if (passBook.Principal == 0)
            {
                msgprincipal = "Nhập số tiền gửi !";
            }
            else if (passBook.Principal < 1000000)
            {
                msgprincipal = "Số tiền gửi không thể nhỏ hơn 1.000.000 !";
            }
            else if (passBook.Principal % 50000 > 0)
            {
                msgprincipal = "Đơn vị tiền nhỏ nhất là 50.000 !";
            }
            if (passBook.OpenDate < mindate)
            {
                msgopendate = "Ngày gửi không thể nhỏ hơn 01/01/2000 !";
            }
            else if (passBook.OpenDate > DateTime.Now)
            {
                msgopendate = "Ngày gửi không thể lớn hơn ngày hiện tại !";
            }
            if (passBook.ChangeDate < mindate)
            {
                msgchangedate = "Ngày bắt đầu tính lãi không thể nhỏ hơn 01/01/2000 !";
            }
            else if (passBook.ChangeDate > DateTime.Now)
            {
                msgchangedate = "Ngày bắt đầu tính lãi không thể lớn hơn ngày hiện tại !";
            }
            else if (passBook.ChangeDate < passBook.OpenDate)
            {
                msgchangedate = "Ngày bắt đầu tính lãi không thể nhỏ hơn ngày gửi !";
            }

            if (msgbankid == null && msgtermid == null && msgir == null && msgdemandir == null && msgacronym == null && msgprincipal == null && msgopendate == null && msgchangedate == null)
            {
                msg = "completed";
                passBook.Balance         = passBook.Principal;
                passBook.Status          = 1;
                db.Entry(passBook).State = EntityState.Modified;
                db.SaveChanges();
                return(Json(new { msg }, JsonRequestBehavior.AllowGet));
            }
            return(Json(new { msgbankid, msgtermid, msgir, msgdemandir, msgacronym, msgprincipal, msgopendate, msgchangedate }, JsonRequestBehavior.AllowGet));
        }
Beispiel #26
0
        public ActionResult Create([Bind(Include = "Id,BankId,TermId,CustomerId,Acronym,Balance,OpenDate,InterestPayment,TermEnd,Status,Principal,ChangeDate,InterestRate,DemandInterestRate")] PassBook passBook)
        {
            string   msg = null, msgcustid = null, msgtermid = null, msgacronym = null, msgprincipal = null, msgopendate = null;
            DateTime mindate = new DateTime(2000, 01, 01);

            if (passBook.TermId == 0)
            {
                msgtermid = "Chọn loại kỳ hạn !";
            }
            if (String.IsNullOrEmpty(passBook.Acronym))
            {
                msgacronym = "Nhập mã sổ !";
            }
            else
            {
                int pbcount = db.PassBooks.Where(n => n.Acronym == passBook.Acronym).Count();
                if (pbcount > 0)
                {
                    msgacronym = "Sổ này đã tồn tại !";
                }
            }
            if (passBook.Principal == 0)
            {
                msgprincipal = "Nhập số tiền gửi !";
            }
            else if (passBook.Principal < 1000000)
            {
                msgprincipal = "Số tiền gửi không thể nhỏ hơn 1.000.000 !";
            }
            else if (passBook.Principal % 50000 > 0)
            {
                msgprincipal = "Đơn vị tiền nhỏ nhất là 50.000 !";
            }
            if (passBook.OpenDate < mindate)
            {
                msgopendate = "Ngày gửi không thể nhỏ hơn 01/01/2000 !";
            }
            else if (passBook.OpenDate > DateTime.Now)
            {
                msgopendate = "Ngày gửi không thể lớn hơn ngày hiện tại !";
            }

            if (msgcustid == null && msgtermid == null && msgacronym == null && msgprincipal == null && msgopendate == null)
            {
                msg = "completed";
                var res = FindIR(passBook.TermId);
                passBook.BankId             = db.Banks.FirstOrDefault(n => n.Status == 2).Id;
                passBook.InterestRate       = res.rate;
                passBook.DemandInterestRate = res.demandrate;
                passBook.InterestPayment    = 1;
                passBook.TermEnd            = 1;
                passBook.Balance            = passBook.Principal;
                passBook.ChangeDate         = passBook.OpenDate;
                passBook.Status             = 1;
                db.PassBooks.Add(passBook);
                db.SaveChanges();
                int pbid = 0;
                pbid = passBook.Id;
                return(Json(new { pbid, msg }, JsonRequestBehavior.AllowGet));
            }
            return(Json(new { msgcustid, msgtermid, msgacronym, msgprincipal, msgopendate }, JsonRequestBehavior.AllowGet));
        }