Exemplo n.º 1
0
        //public IResult GetStudent(GetStudentRequest request)
        //{
        //    var student = _dataSource.Students.GetStudent(request);
        //    return new Result<Student>(true, student, "Operation completed successfully.");
        //}

        public IResult BuyVoucher(BuyVoucherRequest request)
        {
            var voucher = _dataSource.Vouchers.GetById(request.VoucherId);

            if (voucher == null)
            {
                return(new Result(false, "Voucher does not exist."));
            }
            if (voucher.Used is true)
            {
                return(new Result(false, "Voucher has been used."));
            }
            var student = _dataSource.Students.GetByIndexNumber(request.IndexNumber);

            if (student is null)
            {
                return(new Result(false, "Invalid index number."));
            }
            var transaction = new StudentTransaction {
                Amount = voucher.Amount, IndexNumber = student.IndexNumber
            };
            var result = _dataSource.Students.BuyVoucher(transaction);

            _dataSource.Vouchers.UpdateVoucher(request.VoucherId);
            //_dataSource.Transactions.Add(transaction);
            return(new Result <float>(true, result.Balance, "Operation completed successfully."));
        }
        public IActionResult Buy([FromBody] BuyVoucherRequest buyVoucherRequest)
        {
            var newVoucherCode = Guid.NewGuid().ToString();

            this.voucherEventStore.AppendEvent(newVoucherCode, new VoucherPurchased(buyVoucherRequest.Amount));
            return(this.Ok(new BuyVoucherResponse(newVoucherCode)));
        }
Exemplo n.º 3
0
        public async Task WhenAVoucherIsPartiallySpentTheCurrentAmountIsCorrect()
        {
            var    buyRequest = new BuyVoucherRequest(50m);
            string voucherCode;

            using (var requestContent =
                       new StringContent(JsonConvert.SerializeObject(buyRequest), Encoding.UTF8, "application/json"))
            {
                var buyResponse = await this.client.PostAsync("/api/vouchers/buy", requestContent);

                var buyVoucherResponse = JsonConvert.DeserializeObject <BuyVoucherResponse>(await buyResponse.Content.ReadAsStringAsync());
                voucherCode = buyVoucherResponse.VoucherCode;
            }

            var spendRequest = new SpendVoucherRequest(voucherCode, 25);

            using (var requestContent =
                       new StringContent(JsonConvert.SerializeObject(spendRequest), Encoding.UTF8, "application/json"))
            {
                var spendResponse = await this.client.PostAsync("/api/vouchers/spend", requestContent);

                spendResponse.StatusCode.ShouldBe(HttpStatusCode.OK);
            }

            var getResponse = await this.client.GetAsync($"/api/vouchers/{voucherCode}");

            getResponse.StatusCode.ShouldBe(HttpStatusCode.OK);
            var voucher = JsonConvert.DeserializeObject <Voucher>(await getResponse.Content.ReadAsStringAsync());

            voucher.VoucherCode.ShouldBe(voucherCode);
            voucher.OriginalAmount.ShouldBe(50m);
            voucher.CurrentAmount.ShouldBe(25m);
        }
Exemplo n.º 4
0
        public async override Task <Response> BuyVoucher(BuyVoucherRequest request, ServerCallContext context)
        {
            var result = _studentService.BuyVoucher(new UTransit.Models.Requests.BuyVoucherRequest
            {
                IndexNumber = request.IndexNumber, VoucherId = request.VoucherId
            });

            return(await Task.FromResult(new Response { Issuccessful = result.IsSucessful, Message = result.Message }));
        }
Exemplo n.º 5
0
        public IActionResult BuyVoucher([FromBody] BuyVoucherRequest request)
        {
            var result = _studentService.BuyVoucher(request);

            if (result.IsSucessful)
            {
                return(Ok(result));
            }
            return(BadRequest(result));
        }
Exemplo n.º 6
0
        public async Task WhenAVoucherIsBoughtTheCodeIsReturned()
        {
            var buyRequest = new BuyVoucherRequest(50m);

            using (var requestContent =
                       new StringContent(JsonConvert.SerializeObject(buyRequest), Encoding.UTF8, "application/json"))
            {
                var buyResponse = await this.client.PostAsync("/api/vouchers/buy", requestContent);

                buyResponse.StatusCode.ShouldBe(HttpStatusCode.OK);

                var buyVoucherResponse = JsonConvert.DeserializeObject <BuyVoucherResponse>(await buyResponse.Content.ReadAsStringAsync());
                buyVoucherResponse.VoucherCode.ShouldNotBeNullOrEmpty();
            }
        }
        public async Task <List <BuyVoucherResponse> > BuyVoucher(BuyVoucherRequest buyVoucher)
        {
            Url = Session.BaseUrl + BasePath.BuyVoucher;
            StringContent formBody = new StringContent(JsonConvert.SerializeObject(buyVoucher), Encoding.UTF8, "application/json");

            var response = await Session.SEVClient.PostAsync(Url, formBody);

            if (response.IsSuccessStatusCode)
            {
                var str = await response.Content.ReadAsStringAsync();

                return(JsonConvert.DeserializeObject <List <BuyVoucherResponse> >(str));;
            }

            return(null);
        }