コード例 #1
0
        private CreditTransfer getCreditTransfer()
        {
            var segments = extractSegment(ppay.CreditTransferTag);
            if (!segments.Any())
            {
                return null;
            }

            var result = new CreditTransfer();
            foreach (var item in segments)
            {
                switch (item.Id)
                {
                    case ppay.AIDTag:
                        result.CustomerPresentedQR = item.Value == ppay.CustomerPresented;
                        break;
                    case ppay.MobileTag:
                        const int SkipTagId = 2;
                        result.MobileNumber = item.Value.Substring(SkipTagId);
                        break;
                    case ppay.NationalIdOrTaxIdTag:
                        result.NationalIdOrTaxId = item.Value;
                        break;
                    case ppay.EWalletTag:
                        result.EWalletId = item.Value;
                        break;
                    case ppay.OTATag:
                        result.OTA = item.Value;
                        break;
                    default: break;
                }
            }
            return result;
        }
コード例 #2
0
        public ActionResult SaveCreditTransfer(CreditTransfer data)
        {
            data.BranchId  = 1;
            data.UserId    = (int)Session["UserId"];
            data.DateAdded = DateTime.Now;
            db.CreditTransfers.Add(data);
            db.SaveChanges();


            return(View("CreditTransfer"));
        }
コード例 #3
0
        public async Task <IActionResult> Post([FromBody] CreditTransfer creditTransfer)
        {
            var beer = await beerService.GetBeerById(creditTransfer.BeerId);

            if (beer == null)
            {
                return(BadRequest("invalid beerId"));
            }

            beer.CreatedBy = creditTransfer.CreditReceiver;

            await beerService.UpdateBeer(beer);

            return(Ok());
        }
コード例 #4
0
        public ActionResult UpdateCreditTransfer(CreditTransfer data)
        {
            CreditTransfer item  = db.CreditTransfers.Find(data.Id);
            var            entry = db.CreditTransfers.Find(data.Id);

            entry.AccountNo = data.AccountNo;
            entry.Payer     = data.Payer;
            //if (item != null)
            //{
            //    item.AccountNo = data.AccountNo;
            //   // item.Payer = data.Payer;
            //    UpdateModel(item);
            //    db.SaveChanges();
            //}
            db.SaveChanges();

            return(View("ChangePayer"));
        }
コード例 #5
0
        public QrBuilder SetCreditTransfer(CreditTransfer transfer)
        {
            creditTransfer = transfer;
            billPayment.NationalIdOrTaxId = creditTransfer.NationalIdOrTaxId;

            var value  = getValue();
            var digits = value.GetLength();

            removeMerchantRecordsIfExists();
            Add($"{ppay.CreditTransferTagId}{digits}{value}");
            return(this);

            string getValue()
            {
                var aidRec      = formatRecord(ppay.AID, transfer.MerchantPresentedQR ? ppay.MerchantPresented : ppay.CustomerPresented);
                var mobileRec   = createMobileRecord();
                var receiverRec = string.IsNullOrWhiteSpace(transfer.NationalIdOrTaxId) ? string.Empty : formatRecord(ppay.NationalOrTaxId, transfer.NationalIdOrTaxId);
                var eWalletRec  = string.IsNullOrWhiteSpace(transfer.EWalletId) ? string.Empty : formatRecord(ppay.EWalletId, transfer.EWalletId);
                var bankAccRed  = string.IsNullOrWhiteSpace(transfer.BankAccount) ? string.Empty : formatRecord(ppay.BankAccountId, transfer.BankAccount);
                var otaRec      = string.IsNullOrWhiteSpace(transfer.OTA) ? string.Empty : formatRecord(ppay.OTAId, transfer.OTA);

                return($"{aidRec}{mobileRec}{receiverRec}{eWalletRec}{bankAccRed}{otaRec}");
            }

            string createMobileRecord()
            {
                if (string.IsNullOrWhiteSpace(transfer.MobileNumber))
                {
                    return(string.Empty);
                }

                const string Prefix   = "0066";
                var          mobileNo = transfer.MobileNumber;

                if (!mobileNo.StartsWith(Prefix))
                {
                    // HACK: Stupid change prefix (refactor this later)
                    mobileNo = $"{Prefix}{mobileNo.Substring(1)}";
                }
                return(formatRecord(ppay.MobileId, mobileNo));
            }
        }
コード例 #6
0
        public string CreateCreditTransferQrCode(CreditTransfer transfer)
        {
            creditTransfer = transfer;

            var value  = getValue();
            var digits = getLengthDigits(value);

            removeMerchantRecordsIfExists();
            Add($"{ppay.CreditTransferTag}{digits}{value}");
            return(SetCyclicRedundancyCheck(new CRC16()).ToString());

            string getValue()
            {
                var aidRec      = formatRecord(ppay.AIDTag, transfer.AID);
                var mobileRec   = createMobileRecord();
                var receiverRec = string.IsNullOrWhiteSpace(transfer.NationalIdOrTaxId) ? string.Empty : formatRecord(ppay.NationalIdOrTaxIdTag, transfer.NationalIdOrTaxId);
                var eWalletRec  = string.IsNullOrWhiteSpace(transfer.EWalletId) ? string.Empty : formatRecord(ppay.EWalletTag, transfer.EWalletId);
                var bankAccRed  = string.IsNullOrWhiteSpace(transfer.BankAccount) ? string.Empty : formatRecord(ppay.BankAccountTag, transfer.BankAccount);
                var otaRec      = string.IsNullOrWhiteSpace(transfer.OTA) ? string.Empty : formatRecord(ppay.OTATag, transfer.OTA);

                return($"{aidRec}{mobileRec}{receiverRec}{eWalletRec}{bankAccRed}{otaRec}");
            }

            string createMobileRecord()
            {
                if (string.IsNullOrWhiteSpace(transfer.MobileNumber))
                {
                    return(string.Empty);
                }

                const string Prefix   = "0066";
                var          mobileNo = transfer.MobileNumber;

                if (!mobileNo.StartsWith(Prefix))
                {
                    // HACK: Stupid change prefix (refactor this later)
                    mobileNo = $"{Prefix}{mobileNo.Substring(1)}";
                }
                return(formatRecord(ppay.MobileTag, mobileNo));
            }
        }
コード例 #7
0
        public async Task TransferCreditsAsync(ClaimsPrincipal user, TransferDTOin dto)
        {
            using (var transaction = await transfersRepository.BeginTransactionAsync())
            {
                UserGE sender = await _userManager.GetUserAsync(user);

                if (sender.CreditBalance < dto.Ammount)
                {
                    throw new ArgumentOutOfRangeException(GlobalConstants.InsufficientFundsError);
                }

                UserGE reciever = _userManager.Users.FirstOrDefault(x => x.UserName.ToLower() == dto.RecieverUnameOrPhone.ToLower() ||
                                                                    x.PhoneNumber == Helpers.SanitizePhone(dto.RecieverUnameOrPhone));

                if (reciever is null)
                {
                    throw new ArgumentOutOfRangeException(GlobalConstants.UserNotLocatedByPhoneOrUserNameError(dto.RecieverUnameOrPhone));
                }
                else if (reciever.Id == sender.Id)
                {
                    throw new ArgumentOutOfRangeException(GlobalConstants.AutoSendCreditsError);
                }

                sender.CreditBalance   -= dto.Ammount;
                reciever.CreditBalance += dto.Ammount;

                var transfer = new CreditTransfer
                {
                    Sender   = sender,
                    Reciever = reciever,
                    Ammount  = dto.Ammount,
                    Comment  = dto.Comment
                };
                sender.TransactionsSent.Add(transfer);
                cache.Remove(GlobalConstants.StatisticsCasheName);
                await transfersRepository.SaveChangesAsync();

                await transaction.CommitAsync();
            }
        }
コード例 #8
0
        public async Task <IActionResult> Post([FromBody] CreditTransfer creditTransfer)
        {
            var beer = await beerService.GetBeerById(creditTransfer.BeerId);

            if (beer == null)
            {
                return(BadRequest("invalid beerId"));
            }

            var user = $"{User.Claims.Where(c => c.Type == System.Security.Claims.ClaimTypes.GivenName).FirstOrDefault().Value} {User.Claims.Where(c => c.Type == System.Security.Claims.ClaimTypes.Surname).FirstOrDefault().Value}";

            if (beer.CreatedBy != user)
            {
                return(BadRequest($"Invalid beerId, Beer not owned by user {user}"));
            }

            beer.CreatedBy = creditTransfer.CreditReceiver;

            await beerService.UpdateBeer(beer);

            return(Ok());
        }
コード例 #9
0
 public QrBuilder()
 {
     billPayment    = new BillPayment();
     creditTransfer = new CreditTransfer();
     qrDataObjects  = new List <QrDataObject>();
 }
コード例 #10
0
 /// <summary>
 /// กำหนดค่าเริ่มต้นให้กับ ตัวสร้าง QR PromptPay
 /// </summary>
 public PromptPayQrBuilder()
 {
     qrBuilder      = new QrBuilder();
     billPayment    = new BillPayment();
     creditTransfer = new CreditTransfer();
 }