forked from urdt/ussd
view a selected voucher and verify the PIN
This commit is contained in:
parent
06ebcc0f07
commit
cb4a52e4f2
@ -94,6 +94,7 @@ func (ls *LocalHandlerService) GetHandler() (*ussd.Handlers, error) {
|
|||||||
ls.DbRs.AddLocalFunc("quit_with_help", ussdHandlers.QuitWithHelp)
|
ls.DbRs.AddLocalFunc("quit_with_help", ussdHandlers.QuitWithHelp)
|
||||||
ls.DbRs.AddLocalFunc("check_vouchers", ussdHandlers.CheckVouchers)
|
ls.DbRs.AddLocalFunc("check_vouchers", ussdHandlers.CheckVouchers)
|
||||||
ls.DbRs.AddLocalFunc("get_vouchers", ussdHandlers.GetVoucherList)
|
ls.DbRs.AddLocalFunc("get_vouchers", ussdHandlers.GetVoucherList)
|
||||||
|
ls.DbRs.AddLocalFunc("view_voucher", ussdHandlers.ViewVoucher)
|
||||||
|
|
||||||
return ussdHandlers, nil
|
return ussdHandlers, nil
|
||||||
}
|
}
|
||||||
|
@ -1053,3 +1053,71 @@ func (h *Handlers) CheckVouchers(ctx context.Context, sym string, input []byte)
|
|||||||
|
|
||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ViewVoucher retrieves the token holding and balance from the subprefixDB
|
||||||
|
func (h *Handlers) ViewVoucher(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||||
|
var res resource.Result
|
||||||
|
var err error
|
||||||
|
inputStr := string(input)
|
||||||
|
|
||||||
|
if inputStr == "0" || inputStr == "00" {
|
||||||
|
return res, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
flag_incorrect_voucher, _ := h.flagManager.GetFlag("flag_incorrect_voucher")
|
||||||
|
|
||||||
|
// Initialize the store and prefix database
|
||||||
|
store := h.userdataStore
|
||||||
|
prefixdb := storage.NewSubPrefixDb(store, []byte("token_holdings"))
|
||||||
|
|
||||||
|
// Retrieve the voucher symbol list
|
||||||
|
voucherSymbolList, err := prefixdb.Get(ctx, []byte("tokens"))
|
||||||
|
if err != nil {
|
||||||
|
return res, fmt.Errorf("failed to retrieve voucher symbol list: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve the voucher balance list
|
||||||
|
voucherBalanceList, err := prefixdb.Get(ctx, []byte(voucherSymbolList))
|
||||||
|
if err != nil {
|
||||||
|
return res, fmt.Errorf("failed to retrieve voucher balance list: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert the symbol and balance lists from byte arrays to strings
|
||||||
|
voucherSymbols := string(voucherSymbolList)
|
||||||
|
voucherBalances := string(voucherBalanceList)
|
||||||
|
|
||||||
|
// Split the lists into slices for processing
|
||||||
|
symbols := strings.Split(voucherSymbols, "\n")
|
||||||
|
balances := strings.Split(voucherBalances, "\n")
|
||||||
|
|
||||||
|
var matchedSymbol, matchedBalance string
|
||||||
|
|
||||||
|
for i, symbol := range symbols {
|
||||||
|
symbolParts := strings.SplitN(symbol, ":", 2)
|
||||||
|
if len(symbolParts) != 2 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
voucherNum := symbolParts[0]
|
||||||
|
voucherSymbol := symbolParts[1]
|
||||||
|
|
||||||
|
// Check if input matches either the number or the symbol
|
||||||
|
if inputStr == voucherNum || strings.EqualFold(inputStr, voucherSymbol) {
|
||||||
|
matchedSymbol = voucherSymbol
|
||||||
|
// Ensure there's a corresponding balance
|
||||||
|
if i < len(balances) {
|
||||||
|
matchedBalance = strings.SplitN(balances[i], ":", 2)[1] // Extract balance after the "x:balance" format
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If a match is found, return the symbol and balance
|
||||||
|
if matchedSymbol != "" && matchedBalance != "" {
|
||||||
|
res.Content = fmt.Sprintf("%s\n%s", matchedSymbol, matchedBalance)
|
||||||
|
res.FlagReset = append(res.FlagReset, flag_incorrect_voucher)
|
||||||
|
} else {
|
||||||
|
res.FlagSet = append(res.FlagSet, flag_incorrect_voucher)
|
||||||
|
}
|
||||||
|
|
||||||
|
return res, nil
|
||||||
|
}
|
||||||
|
@ -4,6 +4,3 @@ MOUT back 0
|
|||||||
HALT
|
HALT
|
||||||
INCMP _ 0
|
INCMP _ 0
|
||||||
INCMP select_voucher 1
|
INCMP select_voucher 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,5 +12,5 @@ flag,flag_invalid_amount,18,this is set when the given transaction amount is inv
|
|||||||
flag,flag_incorrect_pin,19,this is set when the provided PIN is invalid or does not match the current account's PIN
|
flag,flag_incorrect_pin,19,this is set when the provided PIN is invalid or does not match the current account's PIN
|
||||||
flag,flag_valid_pin,20,this is set when the given PIN is valid
|
flag,flag_valid_pin,20,this is set when the given PIN is valid
|
||||||
flag,flag_allow_update,21,this is set to allow a user to update their profile data
|
flag,flag_allow_update,21,this is set to allow a user to update their profile data
|
||||||
flag,flag_single_edit,22,this is set to allow a user to edit a single profile item such as year of birth
|
flag,flag_incorrect_voucher,22,this is set when the selected voucher is invalid
|
||||||
flag,flag_incorrect_date_format,23,this is set when the given year of birth is invalid
|
flag,flag_incorrect_date_format,23,this is set when the given year of birth is invalid
|
||||||
|
|
@ -1,11 +1,15 @@
|
|||||||
LOAD get_vouchers 0
|
LOAD get_vouchers 0
|
||||||
MAP get_vouchers
|
MAP get_vouchers
|
||||||
MOUT back 0
|
MOUT back 0
|
||||||
MOUT quit 9
|
MOUT quit 00
|
||||||
MNEXT next 11
|
MNEXT next 11
|
||||||
MPREV prev 22
|
MPREV prev 22
|
||||||
HALT
|
HALT
|
||||||
|
LOAD view_voucher 80
|
||||||
|
RELOAD view_voucher
|
||||||
|
CATCH . flag_incorrect_voucher 1
|
||||||
INCMP _ 0
|
INCMP _ 0
|
||||||
INCMP quit 9
|
INCMP quit 9
|
||||||
INCMP > 11
|
INCMP > 11
|
||||||
INCMP < 22
|
INCMP < 22
|
||||||
|
INCMP view_voucher *
|
||||||
|
2
services/registration/view_voucher
Normal file
2
services/registration/view_voucher
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Enter PIN to confirm selection:
|
||||||
|
{{.view_voucher}}
|
11
services/registration/view_voucher.vis
Normal file
11
services/registration/view_voucher.vis
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
RELOAD view_voucher
|
||||||
|
MAP view_voucher
|
||||||
|
MOUT back 0
|
||||||
|
MOUT quit 9
|
||||||
|
LOAD authorize_account 6
|
||||||
|
HALT
|
||||||
|
RELOAD authorize_account
|
||||||
|
CATCH incorrect_pin flag_incorrect_pin 1
|
||||||
|
INCMP _ 0
|
||||||
|
INCMP quit 9
|
||||||
|
INCMP voucher_set *
|
2
services/registration/view_voucher_swa
Normal file
2
services/registration/view_voucher_swa
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Weka PIN ili kuthibitisha chaguo:
|
||||||
|
{{.view_voucher}}
|
1
services/registration/voucher_set
Normal file
1
services/registration/voucher_set
Normal file
@ -0,0 +1 @@
|
|||||||
|
Success! symbol is now your active voucher.
|
5
services/registration/voucher_set.vis
Normal file
5
services/registration/voucher_set.vis
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
MOUT back 0
|
||||||
|
MOUT quit 9
|
||||||
|
HALT
|
||||||
|
INCMP ^ 0
|
||||||
|
INCMP quit 9
|
1
services/registration/voucher_set_swa
Normal file
1
services/registration/voucher_set_swa
Normal file
@ -0,0 +1 @@
|
|||||||
|
Hongera! symbol ni Sarafu inayotumika sasa.
|
Loading…
Reference in New Issue
Block a user