/// <summary> /// Cancel a transaction. /// </summary> /// <param name="cancelation">Cancelation info.</param> internal void Cancel(CancelationOption cancelation) { ICancellationReport cancelReport = this.StoneAuthorizer .Cancel(cancelation.StoneId, cancelation.Amount); if (cancelReport.WasSuccessful == true) { Console.WriteLine("TRANSACAO {0} CANCELADA COM SUCESSO.", cancelation.StoneId); TransactionTableEntry transaction = this.Transactions .Where(t => t.StoneId == cancelation.StoneId) .FirstOrDefault(); if (transaction != null) { transaction.IsCaptured = false; } } else { Console.WriteLine("TRANSACAO {0} NAO PODE SER CANCELADA.", cancelation.StoneId); } }
/// <summary> /// Turns a command string into a <see cref="CancelationOption"/>. /// </summary> /// <param name="payCommand">Cancelation command from command line.</param> /// <returns>The class with cancelation properties.</returns> public static CancelationOption DecodeCancelation(this string cancelationCommand) { string[] args = cancelationCommand.Split(' '); CancelationOption cancelation = new CancelationOption(); CommandLine.Parser.Default.ParseArguments(args, cancelation); return(cancelation); }
/// <summary> /// Decodes the command name and performs the corresponding action. /// The commands supported are: /// - "ativar": activate and connect to one terminal; /// - "pagar": pay something; /// - "resumo": transaction sumamry, it can be filtered by approved /// transactions, not approved or cancelled transactions or all transactions; /// - "cancel": cancel a transaction by it's Stone ID; /// - "sair": disconnect from the terminal and exit the application. /// </summary> /// <param name="command">Command typed by the user.</param> /// <returns>Whether it has to exit the application or not.</returns> public static bool Decode(this string command) { string[] args = command.Split(' '); string commandName = args[0]; string baseCommand = string.Join(" ", args, 1, args.Length - 1); switch (commandName) { case "ativar": ActivateOption activation = baseCommand.DecodeActivation(); AuthorizationCore.GetInstance() .TryActivate(activation); break; case "pagar": TransactionOption transaction = baseCommand.DecodeTransaction(); AuthorizationCore.GetInstance() .Authorize(transaction); break; case "resumo": ShowTransactionsOption showOptions = baseCommand.DecodeShowTransactions(); AuthorizationCore.GetInstance() .ShowTransactions(showOptions); break; case "cancelar": CancelationOption cancelation = baseCommand.DecodeCancelation(); AuthorizationCore.GetInstance() .Cancel(cancelation); break; case "sair": AuthorizationCore.GetInstance() .ClosePinpad(); return(true); } return(false); }