forked from grassrootseconomics/visedriver
		
	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("check_vouchers", ussdHandlers.CheckVouchers) | ||||
| 	ls.DbRs.AddLocalFunc("get_vouchers", ussdHandlers.GetVoucherList) | ||||
| 	ls.DbRs.AddLocalFunc("view_voucher", ussdHandlers.ViewVoucher) | ||||
| 
 | ||||
| 	return ussdHandlers, nil | ||||
| } | ||||
|  | ||||
| @ -1053,3 +1053,71 @@ func (h *Handlers) CheckVouchers(ctx context.Context, sym string, input []byte) | ||||
| 
 | ||||
| 	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 | ||||
| INCMP _ 0 | ||||
| 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_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_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 | ||||
|  | ||||
| 
 | 
| @ -1,11 +1,15 @@ | ||||
| LOAD get_vouchers 0 | ||||
| MAP get_vouchers | ||||
| MOUT back 0 | ||||
| MOUT quit 9 | ||||
| MOUT quit 00 | ||||
| MNEXT next 11 | ||||
| MPREV prev 22 | ||||
| HALT | ||||
| LOAD view_voucher 80 | ||||
| RELOAD view_voucher | ||||
| CATCH . flag_incorrect_voucher 1 | ||||
| INCMP _ 0 | ||||
| INCMP quit 9 | ||||
| INCMP > 11 | ||||
| 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