public async Task <BillEditForm> GetEditBillFormAsync(int billId, string userId) { var bill = _billsService.GetById(billId); if (bill == null) { throw null; } if (bill.Payed) { return(null); //已經支付, 應該去Details } var form = new BillEditForm() { Bill = bill.MapViewModel(_mapper) }; bool canPay = !bill.Expired; if (canPay) { var bills = await _billsService.FetchByUserAsync(new User { Id = userId }, new Plan { Id = bill.PlanId }); if (bills.HasItems()) { //查看是否已經有同方案, 已支付的帳單 var payedBill = bills.Where(x => x.Payed).FirstOrDefault(); if (payedBill != null) { canPay = false; } } } if (canPay) { var payways = (await _paysService.FetchPayWaysAsync()).GetOrdered(); form.PayWays = payways.MapViewModelList(_mapper); } return(form); }
public async Task <ActionResult> Edit(int id) { var bill = _billsService.GetById(id); if (bill == null) { return(NotFound()); } if (bill.Payed) { return(NotFound()); //已經支付, 應該去Details } var form = new BillEditForm() { Bill = bill.MapViewModel(_mapper) }; bool canPay = !bill.Expired; if (canPay) { var bills = await _billsService.FetchByUserAsync(new User { Id = CurrentUserId }, new Plan { Id = bill.PlanId }); if (bills.HasItems()) { //查看是否已經有同方案, 已支付的帳單 var payedBill = bills.Where(x => x.Payed).FirstOrDefault(); if (payedBill != null) { canPay = false; } } } if (canPay) { var payways = (await _paysService.FetchPayWaysAsync()).GetOrdered(); form.PayWays = payways.MapViewModelList(_mapper); } return(Ok(form)); }
public async Task <BillEditForm> GetCreateBillFormAsync(string userId) { var indexModel = await GetSubscribesIndexViewAsync(userId); var model = new BillEditForm(); var plan = indexModel.Plan; if (plan == null) { return(model); //正在訂閱期內或無方案可訂閱 } //查看是否已經有帳單未繳(同方案) var bills = await _billsService.FetchByUserAsync(new User { Id = userId }, new Plan { Id = plan.Id }); if (bills.HasItems()) { //帳單有繳的話, 應該在訂閱期內 //所以應該只會有未繳的 var unPayedBills = bills.Where(x => !x.Payed).ToList(); if (unPayedBills.IsNullOrEmpty()) { //沒有未繳帳單,異常 //例外 _logger.LogException(new BillPayedButNoCurrentSubscribe(new User { Id = userId }, new Plan { Id = plan.Id })); return(model); } else { //有未繳帳單, 找沒過期的 var canPayBill = unPayedBills.Where(x => !x.Expired).FirstOrDefault(); if (canPayBill != null) { model.Bill = canPayBill.MapViewModel(_mapper); } } } //只有進行到這裡,才可建立新訂單 model.Plan = plan; var payways = (await _paysService.FetchPayWaysAsync()).GetOrdered(); model.PayWays = payways.MapViewModelList(_mapper); if (model.Bill == null) { model.Bill = new BillViewModel() { PayWayId = payways.FirstOrDefault().Id } } ; return(model); }