// GET: Deposites/Cashout/5
        public ActionResult Cashout(long?accountId)
        {
            if (accountId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            StationAccount account = db.StationAccounts.Find(accountId);

            if (account == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            if (account.Deposite < 0)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            DepositeHistory depositeHistory = new DepositeHistory()
            {
                StationAccountId = accountId.Value,
                Amount           = account.Deposite
            };

            return(View(depositeHistory));
        }
        public ActionResult Cashout([Bind(Include = "StationAccountId,Amount,ChangeType,Description,Timestamp")] DepositeHistory depositeHistory)
        {
            DateTime time = depositeHistory.Timestamp;

            if (ModelState.IsValid)
            {
                StationAccount account = db.StationAccounts.Find(depositeHistory.StationAccountId);

                if (account.Deposite < 0 || account.Deposite < depositeHistory.Amount || depositeHistory.Amount < 0)
                {
                    return(View("The deposite is not enough to cashout."));
                }

                account.Deposite          -= depositeHistory.Amount;
                depositeHistory.Amount     = depositeHistory.Amount * -1;
                depositeHistory.Timestamp  = time;
                depositeHistory.ChangeType = DepositeChangeType.Cashout;
                db.DepositeHistories.Add(depositeHistory);

                db.Entry(account).State = EntityState.Modified;

                db.SaveChanges();

                return(RedirectToAction("Index", new { accountId = depositeHistory.StationAccountId }));
            }

            return(View(depositeHistory));
        }
        public ActionResult DeleteConfirmed(long id)
        {
            DepositeHistory depositeHistory = db.DepositeHistories.Find(id);

            db.DepositeHistories.Remove(depositeHistory);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        // GET: Deposites/Create
        public ActionResult Recharge(long?accountId)
        {
            if (accountId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var depositeHistory = new DepositeHistory()
            {
                StationAccountId = accountId.Value
            };

            return(View(depositeHistory));
        }
        // GET: Deposites/Details/5
        public ActionResult Details(long?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DepositeHistory depositeHistory = db.DepositeHistories.Find(id);

            if (depositeHistory == null)
            {
                return(HttpNotFound());
            }
            return(View(depositeHistory));
        }
Exemple #6
0
        public ActionResult BusinessApprove([Bind(Include = "StationAccountId, PaymentRequestId, BusinessManagerComments, IsApprove")] PaymentRequestBusinessManagerApproveViewModel businessApprove)
        {
            if (ModelState.IsValid)
            {
                PaymentRequest request = db.PaymentRequests.Find(businessApprove.PaymentRequestId);

                DateTime now = DateTime.Now;

                if (request.State != PaymentRequestState.FinanceManagerApproved)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.ExpectationFailed, "请款单不是FinanceManagerApproved状态."));
                }

                request.BusinessManagerComments = businessApprove.BusinessManagerComments;

                if (businessApprove.IsApprove == "Yes")
                {
                    request.State = PaymentRequestState.BusinessManagerApproved;

                    // Add Deposite logs
                    StationAccount account = db.StationAccounts.Find(businessApprove.StationAccountId);
                    account.Deposite += Convert.ToDouble(request.Amount);

                    var depositeHistory = new DepositeHistory()
                    {
                        StationAccountId = businessApprove.StationAccountId
                    };

                    depositeHistory.Timestamp  = now;
                    depositeHistory.ChangeType = DepositeChangeType.Recharge;
                    depositeHistory.Amount     = Convert.ToDouble(request.Amount);
                    db.DepositeHistories.Add(depositeHistory);

                    db.Entry(account).State = EntityState.Modified;
                }
                else
                {
                    request.State = PaymentRequestState.BusinessManagerRejected;
                }

                request.BusinessManagerCommentsTimestamp = now;
                request.BusinessManagerId = System.Web.HttpContext.Current.User.Identity.GetUserId();
                db.Entry(request).State   = EntityState.Modified;

                db.SaveChanges();
            }

            return(RedirectToAction("Index", new { accountId = businessApprove.StationAccountId }));
        }
        public ActionResult PayConfirmed([Bind(Include = "SubscriptionId, Notes, Timestamp")] Subscription s)
        {
            if (ModelState.IsValid)
            {
                DateTime time = s.Timestamp;

                Subscription   subscription = db.Subscriptions.Find(s.SubscriptionId);
                long           accountId    = subscription.StationAccountId;
                StationAccount station      = db.StationAccounts.Find(accountId);


                subscription.State           = SubscriptionState.Paid;
                subscription.Timestamp       = time;
                db.Entry(subscription).State = EntityState.Modified;


                station.Deposite       -= subscription.UnitPrice * subscription.StartQuantity;
                db.Entry(station).State = EntityState.Modified;

                var subscriptionHistory = new SubscriptionHistory()
                {
                    UnitPrice      = subscription.UnitPrice,
                    State          = SubscriptionState.Paid,
                    Quantity       = subscription.StartQuantity,
                    Notes          = subscription.Notes,
                    SubscriptionId = subscription.SubscriptionId,
                    Timestamp      = time
                };

                db.SubscriptionHistories.Add(subscriptionHistory);

                var depositeHistory = new DepositeHistory()
                {
                    Amount           = subscription.UnitPrice * subscription.StartQuantity * -1,
                    ChangeType       = DepositeChangeType.Pay,
                    StationAccountId = accountId,
                    Description      = string.Format("Pay for Subscription: {0}.", subscription.SubscriptionId),
                    Timestamp        = time
                };

                db.DepositeHistories.Add(depositeHistory);

                db.SaveChanges();
                return(RedirectToAction("Index", new { accountId = accountId }));
            }

            return(View("The state is not valid."));
        }
        public ActionResult Recharge([Bind(Include = "StationAccountId,Amount,Description,Timestamp")] DepositeHistory depositeHistory)
        {
            DateTime time = depositeHistory.Timestamp;

            if (ModelState.IsValid)
            {
                StationAccount account = db.StationAccounts.Find(depositeHistory.StationAccountId);
                account.Deposite          += depositeHistory.Amount;
                depositeHistory.Timestamp  = time;
                depositeHistory.ChangeType = DepositeChangeType.Recharge;
                db.DepositeHistories.Add(depositeHistory);

                db.Entry(account).State = EntityState.Modified;

                db.SaveChanges();

                return(RedirectToAction("Index", new { accountId = depositeHistory.StationAccountId }));
            }

            return(View(depositeHistory));
        }