set the active symbol
This commit is contained in:
		
							parent
							
								
									6c904a8b3f
								
							
						
					
					
						commit
						9ad7d5a522
					
				@ -95,6 +95,7 @@ func (ls *LocalHandlerService) GetHandler() (*ussd.Handlers, error) {
 | 
			
		||||
	ls.DbRs.AddLocalFunc("check_vouchers", ussdHandlers.CheckVouchers)
 | 
			
		||||
	ls.DbRs.AddLocalFunc("get_vouchers", ussdHandlers.GetVoucherList)
 | 
			
		||||
	ls.DbRs.AddLocalFunc("view_voucher", ussdHandlers.ViewVoucher)
 | 
			
		||||
	ls.DbRs.AddLocalFunc("set_voucher", ussdHandlers.SetVoucher)
 | 
			
		||||
 | 
			
		||||
	return ussdHandlers, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1058,6 +1058,13 @@ func (h *Handlers) CheckVouchers(ctx context.Context, sym string, input []byte)
 | 
			
		||||
func (h *Handlers) ViewVoucher(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
			
		||||
	var res resource.Result
 | 
			
		||||
	var err error
 | 
			
		||||
	store := h.userdataStore
 | 
			
		||||
 | 
			
		||||
	sessionId, ok := ctx.Value("SessionId").(string)
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return res, fmt.Errorf("missing session")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	inputStr := string(input)
 | 
			
		||||
 | 
			
		||||
	if inputStr == "0" || inputStr == "99" {
 | 
			
		||||
@ -1067,7 +1074,6 @@ func (h *Handlers) ViewVoucher(ctx context.Context, sym string, input []byte) (r
 | 
			
		||||
	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
 | 
			
		||||
@ -1111,8 +1117,12 @@ func (h *Handlers) ViewVoucher(ctx context.Context, sym string, input []byte) (r
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// If a match is found, return the symbol and balance
 | 
			
		||||
	// If a match is found, write the temporary sym , then return the symbol and balance
 | 
			
		||||
	if matchedSymbol != "" && matchedBalance != "" {
 | 
			
		||||
		err = store.WriteEntry(ctx, sessionId, utils.DATA_TEMPORARY_SYM, []byte(matchedSymbol))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return res, err
 | 
			
		||||
		}
 | 
			
		||||
		res.Content = fmt.Sprintf("%s\n%s", matchedSymbol, matchedBalance)
 | 
			
		||||
		res.FlagReset = append(res.FlagReset, flag_incorrect_voucher)
 | 
			
		||||
	} else {
 | 
			
		||||
@ -1121,3 +1131,38 @@ func (h *Handlers) ViewVoucher(ctx context.Context, sym string, input []byte) (r
 | 
			
		||||
 | 
			
		||||
	return res, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetVoucher retrieves the temporary voucher, sets it as the active voucher and
 | 
			
		||||
// clears the temporary voucher/sym
 | 
			
		||||
func (h *Handlers) SetVoucher(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
			
		||||
	var res resource.Result
 | 
			
		||||
	var err error
 | 
			
		||||
	store := h.userdataStore
 | 
			
		||||
 | 
			
		||||
	sessionId, ok := ctx.Value("SessionId").(string)
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return res, fmt.Errorf("missing session")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// get the current temporary symbol
 | 
			
		||||
	temporarySym, err := store.ReadEntry(ctx, sessionId, utils.DATA_TEMPORARY_SYM)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// set the active symbol
 | 
			
		||||
	err = store.WriteEntry(ctx, sessionId, utils.DATA_ACTIVE_SYM, []byte(temporarySym))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// reset the temporary symbol
 | 
			
		||||
	err = store.WriteEntry(ctx, sessionId, utils.DATA_TEMPORARY_SYM, []byte(""))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	res.Content = string(temporarySym)
 | 
			
		||||
 | 
			
		||||
	return res, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1 +1 @@
 | 
			
		||||
Success! symbol is now your active voucher.
 | 
			
		||||
Success! {{.set_voucher}} is now your active voucher.
 | 
			
		||||
@ -1,3 +1,5 @@
 | 
			
		||||
LOAD set_voucher 12
 | 
			
		||||
MAP set_voucher
 | 
			
		||||
MOUT back 0
 | 
			
		||||
MOUT quit 9
 | 
			
		||||
HALT
 | 
			
		||||
 | 
			
		||||
@ -1 +1 @@
 | 
			
		||||
Hongera! symbol ni Sarafu inayotumika sasa.
 | 
			
		||||
Hongera! {{.set_voucher}} ni Sarafu inayotumika sasa.
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user