private void GeldEingezahlt(EinzahlResult einzahlResult)
        {
            string message = "";

            if (einzahlResult.Restbetrag <= 0m && einzahlResult.EinzahlvorgangErfolgreich)
            {
                message = string.Format(Resources.BankPresenter_GeldEingezahlt_VorgangsAbbezahlt_Message,
                                        einzahlResult.Restbetrag);
            }
            else
            {
                if (einzahlResult.EinzahlvorgangErfolgreich)
                {
                    message = string.Format(Resources.BankPresenter_GeldEingezahlt_VorgangBezahltUndRest_Message,
                                            einzahlResult.Restbetrag);
                }
                else
                {
                    switch (einzahlResult.Error)
                    {
                    case EinzahlError.VorgangBereitsBezahlt:
                        message = Resources.BankPresenter_GeldEingezahlt_VorgangIstBereitsKomplettAbbezahlt_Message;
                        break;

                    case EinzahlError.VorgangExistiertNicht:
                        message = Resources.BankPresenter_GeldEingezahlt_Dieser_Vorgang_existiert_nicht_mehr_Message;
                        break;
                    }
                }
            }

            _einzahlungsView.EinzahlungAbgeschlossenResult(message);
        }
        public static EinzahlResult EinzahlvorgangFehlerhaft(EinzahlError error)
        {
            EinzahlResult einzahlResult = new EinzahlResult {
                Error = error, EinzahlvorgangErfolgreich = false
            };

            return(einzahlResult);
        }
 public static EinzahlResult EinzahlungenErfolgreich(decimal restbetrag)
 {
     EinzahlResult einzahlResult = new EinzahlResult
                                       {
                                           EinzahlvorgangErfolgreich = true,
                                           Restbetrag = restbetrag
                                       };
     return einzahlResult;
 }
        public static EinzahlResult EinzahlungenErfolgreich(decimal restbetrag)
        {
            EinzahlResult einzahlResult = new EinzahlResult
            {
                EinzahlvorgangErfolgreich = true,
                Restbetrag = restbetrag
            };

            return(einzahlResult);
        }
        public void GeldEinzahlen(Guid vorgangsNummer, decimal betrag)
        {
            AusleihVorgang ausleihVorgang = _bankService.GetAusleihvorgangByVorgangsnummer(vorgangsNummer);

            decimal zuZahlenderBetrag = _zinsRechner.BetragMitZinsenFuerZeitraumBerechnen(ausleihVorgang.Betrag,
                                                                                          ausleihVorgang.ZinsSatz,
                                                                                          ausleihVorgang.VorgangsNummer,
                                                                                          new ZeitSpanne
            {
                StartDatum = ausleihVorgang.Datum,
                EndDatum   = DateTime.Now
            });

            EinzahlResult result = EingezahltenBetragVomZuZahlendenBetragAbziehen(zuZahlenderBetrag, betrag, vorgangsNummer);

            GeldEingezahlt(result);
        }
        public EinzahlResult EingezahltenBetragVomZuZahlendenBetragAbziehen(decimal zuZahlenderBetrag, decimal eingezahlterBetrag, Guid vorgangsNummer)
        {
            if (IstBetragAbgezahlt(zuZahlenderBetrag))
            {
                return(EinzahlResult.EinzahlvorgangFehlerhaft(EinzahlError.VorgangBereitsBezahlt));
            }

            decimal restBetrag = zuZahlenderBetrag - eingezahlterBetrag;

            if (restBetrag < 0.0m)
            {
                decimal tatsaechlichZuZahlenderBetrag = eingezahlterBetrag + restBetrag;
                _bankService.GeldEinzahlen(vorgangsNummer, tatsaechlichZuZahlenderBetrag);
                return(EinzahlResult.EinzahlungenErfolgreich(restBetrag));
            }

            _bankService.GeldEinzahlen(vorgangsNummer, eingezahlterBetrag);

            return(EinzahlResult.EinzahlungenErfolgreich(restBetrag));
        }
 public static EinzahlResult EinzahlvorgangFehlerhaft(EinzahlError error)
 {
     EinzahlResult einzahlResult = new EinzahlResult {Error = error, EinzahlvorgangErfolgreich = false};
     return einzahlResult;
 }
        private void GeldEingezahlt(EinzahlResult einzahlResult)
        {
            string message = "";

            if (einzahlResult.Restbetrag <= 0m && einzahlResult.EinzahlvorgangErfolgreich)
                message = string.Format(Resources.BankPresenter_GeldEingezahlt_VorgangsAbbezahlt_Message,
                                        einzahlResult.Restbetrag);
            else
            {
                if (einzahlResult.EinzahlvorgangErfolgreich)
                    message = string.Format(Resources.BankPresenter_GeldEingezahlt_VorgangBezahltUndRest_Message,
                                            einzahlResult.Restbetrag);
                else
                    switch (einzahlResult.Error)
                    {
                        case EinzahlError.VorgangBereitsBezahlt:
                            message = Resources.BankPresenter_GeldEingezahlt_VorgangIstBereitsKomplettAbbezahlt_Message;
                            break;
                        case EinzahlError.VorgangExistiertNicht:
                            message = Resources.BankPresenter_GeldEingezahlt_Dieser_Vorgang_existiert_nicht_mehr_Message;
                            break;
                    }
            }

            _einzahlungsView.EinzahlungAbgeschlossenResult(message);
        }