예제 #1
0
        public async Task <ActionResult> Edit(int id)
        {
            var plan = await _plansService.GetByIdAsync(id);

            if (plan == null)
            {
                return(NotFound());
            }

            var model = plan.MapViewModel(_mapper);

            return(Ok(model));
        }
예제 #2
0
        public async Task <BillViewModel> StoreBillAsync(BillViewModel model, string userId)
        {
            //驗證表單
            int planId       = model.PlanId;
            var selectedPlan = await _plansService.GetByIdAsync(planId);

            if (selectedPlan == null)
            {
                throw new EntityNotFoundException(new Plan {
                    Id = planId
                });
            }

            int payWayId       = model.PayWayId;
            var selectedPayWay = _paysService.GetPayWayById(payWayId);

            if (selectedPayWay == null || !selectedPayWay.Active)
            {
                throw new EntityNotFoundException(new PayWay {
                    Id = payWayId
                });
            }

            //取得訂閱紀錄
            var indexModel = await GetSubscribesIndexViewAsync(userId);

            var selectedPlanView = selectedPlan.MapViewModel(_mapper);
            //核對方案與金額
            var activePlanView = await CheckForExceptionsAsync(userId, indexModel, selectedPlanView);

            //進行到這裡表示通過驗證. 開始建立Bill
            var bill = new Bill
            {
                UserId      = userId,
                PlanId      = activePlanView.Id,
                Amount      = activePlanView.Price,
                HasDiscount = activePlanView.HasDiscount,
                PayWayId    = payWayId,
                DeadLine    = DateTime.Today.AddDays(_subscribesSettings.BillDaysToExpire).ToEndDate()
            };

            bill = await _billsService.CreateAsync(bill);

            return(bill.MapViewModel(_mapper));
        }
예제 #3
0
        public async Task <IActionResult> Get(string id)
        {
            var result = await _plans.GetByIdAsync(id);

            return(Ok(new ApiResponse <PlanDetail>(result, "Plan retrieved successfully")));
        }