Exemplo n.º 1
0
        public virtual IActionResult Execute(FinService service, ITanSource tanSource)
        {
            order = OnCreateOrder(service);
            if (order == null)
            {
                return(new ActionResult(Status.CouldNotCreateOrder));
            }

            FinServiceResult result = service.SendOrder(order);

            if (result == FinServiceResult.NeedTan)
            {
                string tan = tanSource.GetTan(service);
                if (tan == null)
                {
                    return(new ActionResult(Status.CouldNotCreateOrder));
                }

                result = service.SendTan(tan);
            }

            if (result == FinServiceResult.NeedTanMediaName)
            {
                Io.Write("Bezeichnung des TAN-Mediums erforderlich!");
                FinTanMedia[] vTanMedias = service.TanMedias;
                if (vTanMedias != null)
                {
                    Io.Write("Bitte geben Sie einen der folgenden Parameter an:");
                    foreach (FinTanMedia t in vTanMedias)
                    {
                        Io.Write("-tanmedianame \"" + t.TanMediaName + "\"");
                    }
                }

                return(new ActionResult(Status.NeedTanMediaName));
            }

            if (result == FinServiceResult.Fatal)
            {
                return(new ActionResult(Status.FatalResult));
            }

            // Als Rückgabewert wird der höchste Rückmeldecode aus dem HIRMS genommen.
            // Wurde kein HIRMS übermittelt wird als Rückgabewert 0 eingesetzt.
            int orderStatusCode = 0;

            if (order.StatusSegment != null)
            {
                int nIndex = order.StatusSegment.FindMax();
                orderStatusCode = order.StatusSegment.GetStatusCode(nIndex);
            }

            if (result == FinServiceResult.Error)
            {
                return(new ActionResult(Status.ErrorResult, orderStatusCode));
            }

            if (result == FinServiceResult.Success)
            {
                return(new ActionResult(Status.Success, orderStatusCode));
            }

            throw new Exception("The enum FinServiceResult has been changed! " +
                                "Known states: NeedTan, NeedTanMediaName, Fatal, Error, Success " +
                                "New: " + result);
        }
Exemplo n.º 2
0
        public virtual IActionResult Execute(FinService service, ITanSource tanSource)
        {
            order = OnCreateOrder(service);
            if (order == null)
            {
                return new ActionResult(Status.CouldNotCreateOrder);
            }

            FinServiceResult result = service.SendOrder(order);

            if (result == FinServiceResult.NeedTan)
            {
                string tan = tanSource.GetTan(service);
                if (tan == null)
                {
                    return new ActionResult(Status.CouldNotCreateOrder);
                }

                result = service.SendTan(tan);
            }

            if (result == FinServiceResult.NeedTanMediaName)
            {
                Io.Write("Bezeichnung des TAN-Mediums erforderlich!");
                FinTanMedia[] vTanMedias = service.TanMedias;
                if (vTanMedias != null)
                {
                    Io.Write("Bitte geben Sie einen der folgenden Parameter an:");
                    foreach (FinTanMedia t in vTanMedias)
                    {
                        Io.Write("-tanmedianame \"" + t.TanMediaName + "\"");
                    }
                }

                return new ActionResult(Status.NeedTanMediaName);
            }

            if (result == FinServiceResult.Fatal)
            {
                return new ActionResult(Status.FatalResult);
            }

            // Als Rückgabewert wird der höchste Rückmeldecode aus dem HIRMS genommen.
            // Wurde kein HIRMS übermittelt wird als Rückgabewert 0 eingesetzt.
            int orderStatusCode = 0;
            if (order.StatusSegment != null)
            {
                int nIndex = order.StatusSegment.FindMax();
                orderStatusCode = order.StatusSegment.GetStatusCode(nIndex);
            }

            if (result == FinServiceResult.Error)
            {
                return new ActionResult(Status.ErrorResult, orderStatusCode);
            }

            if (result == FinServiceResult.Success)
            {
                return new ActionResult(Status.Success, orderStatusCode);
            }

            throw new Exception("The enum FinServiceResult has been changed! " +
                                "Known states: NeedTan, NeedTanMediaName, Fatal, Error, Success " +
                                "New: " + result);
        }