public void TestUpdateGeschaeftspartnerFailWegenOptimisticConcurrencyException()
        {
            EMailType testMail = new EMailType("*****@*****.**");
            GeschaeftspartnerDTO gpDTOOriginal = new GeschaeftspartnerDTO() { Vorname = "Maria", Nachname = "Mustermann", Email = testMail };
            gpK_AC.CreateGeschaeftspartner(ref gpDTOOriginal);
            Assert.IsTrue(gpDTOOriginal.GpNr > 0, "Id of Geschaeftspartner must not be 0.");
            Assert.IsTrue(gpDTOOriginal.Email == testMail, "EMail must be a valid EMail");

            AutoResetEvent syncEvent1 = new AutoResetEvent(false);
            AutoResetEvent syncEvent2 = new AutoResetEvent(false);
            Task task1 = Task.Factory.StartNew(() =>
            {
                GeschaeftspartnerDTO gpDTOTask = gpK_AC.FindGeschaeftspartner(gpDTOOriginal.GpNr);
                gpDTOTask.Nachname = "Musterfrau";
                gpK_AC.UpdateGeschaeftspartner(ref gpDTOTask);
                syncEvent1.WaitOne();
                syncEvent2.Set();
            });

            GeschaeftspartnerDTO gpDTO = gpK_AC.FindGeschaeftspartner(gpDTOOriginal.GpNr);
            gpDTO.Vorname = "Maria Janine";
            syncEvent1.Set();
            syncEvent2.WaitOne();
            gpK_AC.UpdateGeschaeftspartner(ref gpDTO);

            task1.Wait();
        }
 public void TestFindGeschaeftspartnerByIdSuccess()
 {
     EMailType testMail = new EMailType("*****@*****.**");
     GeschaeftspartnerDTO gpDTO1 = new GeschaeftspartnerDTO() { Vorname = "Heinz", Nachname = "Schmidt", Email = testMail };
     gpK_AC.CreateGeschaeftspartner(ref gpDTO1);
     GeschaeftspartnerDTO gpDTO2 = gpK_AC.FindGeschaeftspartner(gpDTO1.GpNr);
     Assert.IsTrue(gpDTO1.GpNr == gpDTO2.GpNr, "Geschaeftspartner must be the same.");
     Assert.IsTrue(gpDTO1.Email == testMail, "EMail must be a valid EMail");
 }
 public void TestCreateGeschaeftspartnerSuccess()
 {
     AdresseDTO adresse = new AdresseDTO() { Strasse = "Hamburger Straße", Hausnummer = "1a", PLZ = "2000", Wohnort = "Hamburg", Land = "Deutschland" };
     EMailType testMail = new EMailType("*****@*****.**");
     GeschaeftspartnerDTO gpDTO = new GeschaeftspartnerDTO() { Vorname = "Max", Nachname = "Mustermann", Email = testMail, Adressen = new List<AdresseDTO>() };
     gpDTO.Adressen.Add(adresse);
     Assert.IsTrue(gpDTO.GpNr == 0, "Id of Geschaeftspartner must be null.");
     gpK_AC.CreateGeschaeftspartner(ref gpDTO);
     Assert.IsTrue(gpDTO.Email == testMail, "EMail must be a valid EMail");
     Assert.IsTrue(gpDTO.GpNr > 0, "Id of Geschaeftspartner must not be 0.");
     Assert.IsTrue(gpDTO.Version > 0, "Version of Geschaeftspartner must not be 0.");
 }
        public void CreateGeschaeftspartner(ref GeschaeftspartnerDTO gpDTO)
        {
            Check.Argument(gpDTO != null, "gpDTO != null");
            Check.Argument(gpDTO.GpNr == 0, "gpDTO.Id == 0");
            Check.OperationCondition(!transactionService.IsTransactionActive, "Keine aktive Transaktion erlaubt.");

            Geschaeftspartner gp = gpDTO.ToEntity();
            transactionService.ExecuteTransactional(
                () => 
                {
                    this.gp_REPO.Save(gp);
                });
            gpDTO = this.FindGeschaeftspartner(gp.GpNr);
        }
      private void Btn_Save_Click(object sender, RoutedEventArgs e)
      {
          GeschaeftspartnerDTO gpDTO = new GeschaeftspartnerDTO()
          {
              Adressen = new List<AdresseDTO>(),
              Email = new EMailType(Tb_email.Text.Trim()),
              Vorname = Tb_firstName.Text.Trim(),
              Nachname = Tb_lastName.Text.Trim(),
          };
          geschaeftspartnerServices.CreateGeschaeftspartner(ref gpDTO);
 
          MessageBox.Show("Neuen Geschäftspartner gespeichert.", this.Name, MessageBoxButton.OK, MessageBoxImage.Information);
          Close();
      }
        public void TestUpdateGeschaeftspartnerSuccess()
        {
            EMailType testMail = new EMailType("*****@*****.**");
            GeschaeftspartnerDTO gpDTO = new GeschaeftspartnerDTO() { Vorname = "Max", Nachname = "Mustermann", Email = testMail };
            gpK_AC.CreateGeschaeftspartner(ref gpDTO);

            gpDTO.Vorname = "Maria";
            gpK_AC.UpdateGeschaeftspartner(ref gpDTO);

            gpDTO = gpK_AC.FindGeschaeftspartner(gpDTO.GpNr);
            Assert.IsTrue(gpDTO != null, "Geschaeftspartner nicht gefunden.");
            Assert.IsTrue(gpDTO.Vorname == "Maria", "Geschaeftspartner nicht geändert.");
            Assert.IsTrue(gpDTO.Nachname == "Mustermann", "Geschaeftspartner nicht geändert.");
            Assert.IsTrue(gpDTO.Email == testMail, "EMail must be a valid EMail");
        }
        public void UpdateGeschaeftspartner(ref GeschaeftspartnerDTO gpDTO)
        {
            Check.Argument(gpDTO != null, "gpDTO != null");
            Check.Argument(gpDTO.GpNr > 0, "gpDTO.Id > 0");
            Check.OperationCondition(!transactionService.IsTransactionActive, "Keine aktive Transaktion erlaubt.");
            int gpNr = gpDTO.GpNr;
            transactionService.ExecuteTransactional(() =>
            {
                if (this.gp_REPO.FindByGpNr(gpNr) == null)
                {
                    throw new GeschaeftspartnerNichtGefundenException(gpNr);
                }
            });

            Geschaeftspartner gp = gpDTO.ToEntity();
            transactionService.ExecuteTransactional(() =>
                {
                    this.gp_REPO.Save(gp);
                });
            gpDTO = this.FindGeschaeftspartner(gp.GpNr);
        }
 public void TestErstellePDFSuccess()
 {
     Adresse kundenadresse = new Adresse() { Strasse = "ABC-Strasse", Hausnummer = "123", Land = "Nimmerland", PLZ = "4567", Wohnort = "hinterm Baum" };
     IList<AdresseDTO> adressen = new List<AdresseDTO>();
     adressen.Add(kundenadresse.ToDTO());
     GeschaeftspartnerDTO gpDTO = new GeschaeftspartnerDTO()
     {
         Adressen = adressen,
         Email = new EMailType("*****@*****.**"),
         Vorname = "Hans",
         Nachname = "Peter",
     };
     geschaeftspartnerServices.CreateGeschaeftspartner(ref gpDTO);
     KundenrechnungDTO krDTO = new KundenrechnungDTO() 
     {
          RechnungBezahlt = false,
          Rechnungsadresse = 1, 
          Rechnungsbetrag = new WaehrungsType(987654321), 
     };
     IList<TransportplanSchrittDTO> tpSchritte = new List<TransportplanSchrittDTO>();
     pDFErzeungServicesFuerBuchhaltung.ErstelleKundenrechnungPDF(ref krDTO, tpSchritte);
 }
        public void TestErstelleSendungsanfrageUndOrdneRechungenZuSuccess()
        {
            Adresse kundenadresse = new Adresse() { Strasse = "ABC-Strasse", Hausnummer = "123", Land = "Nimmerland", PLZ = "4567", Wohnort = "hinterm Baum" };
            IList<AdresseDTO> adressen = new List<AdresseDTO>();
            adressen.Add(kundenadresse.ToDTO());
            GeschaeftspartnerDTO gpDTO = new GeschaeftspartnerDTO()
            {
                Adressen = adressen,
                Email = new EMailType("*****@*****.**"),
                Vorname = "Hans",
                Nachname = "Peter",
            };
            geschaeftspartnerServices.CreateGeschaeftspartner(ref gpDTO);
            SendungsanfrageDTO saDTO = new SendungsanfrageDTO();
            SendungspositionDTO sp1 = new SendungspositionDTO();
            saDTO.Sendungspositionen.Add(sp1);
            saDTO.AbholzeitfensterStart = DateTime.Parse("01.09.2013");
            saDTO.AbholzeitfensterEnde = DateTime.Parse("10.09.2013");
            saDTO.AngebotGültigBis = DateTime.Now.AddHours(1);
            saDTO.StartLokation = hamburgLokation.LokNr;
            saDTO.ZielLokation = shanghaiLokation.LokNr;
            saDTO.Auftraggeber = 1;

            auftragsServices.CreateSendungsanfrage(ref saDTO);
            auftragsServices.PlaneSendungsanfrage(saDTO.SaNr);
            List<TransportplanDTO> pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr);
            Assert.IsTrue(pläne.Count >= 1);

            TransportplanDTO planÜberBhv = pläne.Find((plan) =>
            {
                return plan.TransportplanSchritte.ToList().Find((tps) =>
                {
                    TransportAktivitaetDTO ta = tps as TransportAktivitaetDTO;
                    if (ta != null)
                    {
                        return ta.FuerTransportAufTransportbeziehung == hh_bhv.TbNr;
                    }
                    else
                    {
                        return false;
                    }
                }) != null; 
            });
            Assert.IsTrue(planÜberBhv != null);

            Assert.IsTrue(planÜberBhv.TransportplanSchritte.Count == 2);
            pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr);
            Assert.IsTrue(pläne.Count == 1);
            Assert.IsTrue(pläne[0].TpNr == planÜberBhv.TpNr);

            foreach (TransportplanDTO tpDTO in pläne)
            {
                Sendungsanfrage sa = auftragsServices.FindSendungsanfrage(tpDTO.SaNr).ToEntity();
                auftragsServices.NimmAngebotAn(sa.SaNr);
                sendungServices.ErstelleSendung(tpDTO.TpNr, saDTO.SaNr);
            }

            FrachtabrechnungDTO fab1DTO = new FrachtabrechnungDTO { Frachtauftrag = 1, IstBestaetigt = true };
            buchhaltungServices.PayFrachtabrechnung(ref fab1DTO);
            FrachtabrechnungDTO fab2DTO = new FrachtabrechnungDTO { Frachtauftrag = 2, IstBestaetigt = true };
            buchhaltungServices.PayFrachtabrechnung(ref fab2DTO);

            buchhaltungServiceFuerSendung.ErstelleKundenrechnung(1, 1);

            var tokenSource = new CancellationTokenSource();
            var token = tokenSource.Token;

            var t = Task.Factory.StartNew(
                () =>
                {
                    bankAdapter.EmpfangeZahlungseingaengenAusQueue();
                    token.ThrowIfCancellationRequested();
                },
                token);

            Thread.Sleep(10000);
            bankAdapter.EmpfangeZahlungseingaenge(false);
            Thread.Sleep(5000);

            tokenSource.Cancel();
        }