예제 #1
0
 public void TestAddAngebot()
 {
     Angebot a = new Angebot();
     a.Chance = 65;
     a.Titel = "Angebot 5";
     a.Datum = DateTime.Parse("16-04-2013");
     a.Dauer = 98;
     a.Kundenid = 1;
     a.Projektid = 2;
     a.Summe = 334;
     a.Status = ObjectStates.New;
     int oldlength = BL.getAngebote().Count;
     BL.saveAngebot(a);
     int index = BL.getAngebote().Count;
     Assert.That(BL.getAngebot(index).Angebotid, Is.EqualTo(index));
     Assert.That(BL.getAngebote().Count, Is.EqualTo(oldlength + 1));
     Assert.That(BL.getAngebot(index).Titel, Is.EqualTo("Angebot 5"));
     Assert.That(BL.getAngebot(index).Dauer, Is.EqualTo(98));
     Assert.That(BL.getAngebot(index).Chance, Is.EqualTo(65));
     Assert.That(BL.getAngebot(index).Kundenid, Is.EqualTo(1));
     Assert.That(BL.getAngebot(index).Projektid, Is.EqualTo(2));
     Assert.That(BL.getAngebot(index).Summe, Is.EqualTo(334));
     Assert.That(BL.getAngebot(index).Datum, Is.EqualTo(DateTime.Parse("16-04-2013")));
     Assert.That(BL.getAngebot(index).Status, Is.EqualTo(ObjectStates.Modified));
 }
예제 #2
0
 public void TestGetAngeboteByProjektid()
 {
     Angebot a = new Angebot(15, "test", -0.4, DateTime.Now, 5, 2, 1, 1, ObjectStates.New);
     BL.saveAngebot(a);
     Assert.That(BL.getAngeboteByProjektId(1).Count, Is.EqualTo(2));
     BL.deleteAngebot(a);
 }
예제 #3
0
        public static void deleteAngebot(Angebot a)
        {
            var tmp = new List<Angebot>();
            try
            {
                if (a.Projektid != null)
                {
                    tmp = DALFactory.getDAL().getAngebotViewListByProjektId(a.Projektid.Value);
                }

                if (tmp.Count == 1)
                {
                    Logger.Warn("Angebot mit ID " + a.Angebotid + " kann nicht gelöscht werden, da das Projekt mit ID " + a.Projektid.Value + " sonst kein Angebot zugeordnet hat!");
                    throw new BLException("Angebot kann nicht gelöscht werden, da das Projekt " + DALFactory.getDAL().getProjekt(a.Projektid.Value).Name + " sonst kein Angebot mehr zugeordnet hat!");
                }
                else
                {
                    DALFactory.getDAL().deleteAngebot(a);
                    Logger.Info("Angebot mit ID " + a.Angebotid + " gelöscht!");
                }
            }
            catch (DALException ex)
            {
                Logger.Error("Angebot mit ID " + a.Angebotid + " konnte nicht gelöscht werden!", ex);
                throw new BLException("Angebot konnte nicht gelöscht werden!");
            }
        }
예제 #4
0
 public void TestDeleteAngebot()
 {
     Angebot a = new Angebot();
     a = BL.getAngebot(4);
     int oldlength = BL.getAngebote().Count;
     BL.deleteAngebot(a);
     Assert.That(BL.getAngebote().Count, Is.EqualTo(oldlength - 1));
     Assert.That(BL.getAngebote().Last(), Is.Not.EqualTo(a));
 }
예제 #5
0
 public void TestAddAngebotMin()
 {
     Angebot a = new Angebot(15, "test", -0.4, DateTime.Now, 5, 2, 1, 1, ObjectStates.New);
     BL.saveAngebot(a);
     Assert.That(BL.getAngebotByProjektId(1).Titel, Is.EqualTo("test"));
     Assert.That(BL.getAngebotByProjektId(1).Dauer, Is.EqualTo(5));
     Assert.That(BL.getAngebotByProjektId(1).Kundenid, Is.Not.EqualTo(-1));
     BL.deleteAngebot(a);
 }
예제 #6
0
 public void deleteAngebot(Angebot a)
 {
     buildconnection();
     NpgsqlCommand comm = null;
     try
     {
         string sql = "Delete from angebote where angebotid = @angebotid";
         comm = new NpgsqlCommand(sql, conn);
         comm.Parameters.AddWithValue("@angebotid", a.Angebotid);
         comm.Prepare();
         comm.ExecuteNonQuery();
         a.Status = ObjectStates.Deleted;
     }
     catch (NpgsqlException exp)
     {
         throw new DALException("DAL: Angebot konnte nicht gelöscht werden!", exp);
     }
     finally
     {
         comm.Dispose();
         conn.Close();
     }
 }
예제 #7
0
 public void saveAngebot(Angebot a)
 {
     if (a.Status == ObjectStates.New)
     {
         a.Status = ObjectStates.Unmodified;
         a.Angebotid = angebote.Count + 1;
         angebote.Add(a);
     }
     else if (a.Status == ObjectStates.Modified)
     {
         int index = angebote.IndexOf(a);
         angebote[index].Angebotid = a.Angebotid;
         angebote[index].Titel = a.Titel;
         angebote[index].Chance = a.Chance;
         angebote[index].Datum = a.Datum;
         angebote[index].Dauer = a.Dauer;
         angebote[index].Kundenid = a.Kundenid;
         angebote[index].Projektid = a.Projektid;
         angebote[index].Summe = a.Summe;
         angebote[index].Status = ObjectStates.Unmodified;
     }
 }
예제 #8
0
 public Angebot getAngebotByProjektId(int projektid)
 {
     Angebot a = new Angebot();
     foreach (var item in angebote)
     {
         if (item.Projektid == projektid)
             a = item;
     }
     return a;
 }
예제 #9
0
 public Angebot getAngebot(int angebotid)
 {
     var tmp = new Angebot();
     foreach (var item in angebote)
     {
         if (item.Angebotid == angebotid)
         {
             tmp = item;
             break;
         }
     }
     return tmp;
 }
예제 #10
0
 public void deleteAngebot(Angebot a)
 {
     angebote.Remove(a);
 }
예제 #11
0
        public static void saveAngebot(Angebot a)
        {
            try
            {
                if (a.Chance < 0 || a.Chance > 100)
                {
                    Logger.Warn("Wert von Chance außerhalb der Grenzen!");
                    throw new BLException("Angebot: Wert von Chance außerhalb der Grenzen!");
                }
                var tmpang = DALFactory.getDAL().getAngebot(a.Angebotid);

                if (!a.Projektid.HasValue)
                {
                    DALFactory.getDAL().saveAngebot(a);
                    Logger.Info("Angebot mit ID " + a.Angebotid + " gespeichert!");
                }
                else
                {
                    if (!tmpang.Projektid.HasValue)
                        tmpang.Projektid = a.Projektid;
                    if (DALFactory.getDAL().getAngebotViewListByProjektId(tmpang.Projektid.Value).Count <= 1 && a.Status == ObjectStates.Modified && tmpang.Projektid != a.Projektid)
                    {
                        Logger.Warn("Angebot mit ID " + a.Angebotid + " kann nicht gespeichert werden, da ein Projekt sonst kein Angebot hat");
                        throw new BLException("Angebot kann nicht gespeichert werden, da ein Projekt sonst kein Angebot hat!");
                    }
                    else
                    {
                        DALFactory.getDAL().saveAngebot(a);
                        Logger.Info("Angebot mit ID " + a.Angebotid + " gespeichert!");
                    }
                }
            }
            catch (DALException ex)
            {
                Logger.Error("Angebot mit ID " + a.Angebotid + " konnte nicht gespeichert werden!", ex);
                throw new BLException("Angebot konnte nicht gespeichert werden!");
            }
        }
예제 #12
0
        public static Angebot getAngebotByProjektId(int projektid)
        {
            var tmp = new Angebot();

            try
            {
                tmp = DALFactory.getDAL().getAngebotByProjektId(projektid);
            }
            catch (DALException ex)
            {
                throw;
            }

            return tmp;
        }
예제 #13
0
        public List<Angebot> getAngebotViewListByProjektId(int projektid)
        {
            buildconnection();
            List<Angebot> alist = new List<Angebot>();
            NpgsqlCommand comm = null;
            NpgsqlDataReader reader = null;
            try
            {

                string sql = @"Select angebotid, summe, datum, dauer, chance,
                kundenid, projektid, titel from angebote where projektid = @projektid;";
                comm = new NpgsqlCommand(sql, conn);

                comm.Parameters.AddWithValue("@projektid", projektid);
                reader = comm.ExecuteReader();
                while (reader.Read())
                {
                    Angebot a = new Angebot();
                    a.Angebotid = reader.GetInt32(0);
                    a.Summe = reader.GetDouble(1);
                    a.Datum = reader.GetDateTime(2);
                    a.Dauer = reader.GetInt32(3);
                    a.Chance = reader.GetInt32(4);
                    a.Kundenid = reader.GetInt32(5);
                    a.Projektid = reader.ReadNullableInt(6);
                    a.Titel = reader.GetString(7).Trim();
                    a.Status = ObjectStates.Unmodified;
                    alist.Add(a);
                }
                return alist;

            }
            catch (NpgsqlException exp)
            {
                throw new DALException("DAL: Angebot konnte nicht gefunden werden!", exp);
            }
            finally
            {
                comm.Dispose();
                conn.Close();
                reader.Close();
            }
        }
예제 #14
0
        public List<Angebot> getAngebote()
        {
            buildconnection();
            List<Angebot> alist = new List<Angebot>();
            NpgsqlCommand comm = null;
            NpgsqlDataReader reader = null;
            try
            {
                string sql = "Select angebotid,summe,datum,dauer,chance,kundenid,projektid,titel from angebote;";
                comm = new NpgsqlCommand(sql, conn);
                reader = comm.ExecuteReader();
                while (reader.Read())
                {
                    Angebot a = new Angebot();
                    a.Angebotid = reader.GetInt32(0);
                    a.Summe = reader.GetDouble(1);
                    a.Datum = reader.GetDateTime(2);
                    a.Dauer = reader.GetInt32(3);
                    a.Chance = reader.GetInt32(4);
                    a.Kundenid = reader.GetInt32(5);
                    a.Projektid = reader.ReadNullableInt(6);
                    a.Titel = reader.GetString(7).Trim();
                    a.Status = ObjectStates.Unmodified;
                    if (a.Chance > 0 && !a.Projektid.HasValue)
                    {
                        alist.Add(a);
                    }
                }

            }
            catch (NpgsqlException exp)
            {
                throw new DALException("DAL: Angebotliste konnte aus der Datenbank nicht geladen werden!", exp);
            }
            finally
            {
                reader.Close();
                comm.Dispose();
                conn.Close();
            }

            return alist;
        }
예제 #15
0
 public void saveAngebot(Angebot a)
 {
     buildconnection();
     NpgsqlCommand comm = null;
     try
     {
         string sql = "";
         if (a.Status == ObjectStates.New)
         {
             sql = @"Insert into angebote (titel,summe,datum,dauer,chance,kundenid, projektid)
                 values (@titel,@summe,@datum,@dauer,@chance,@kundenid, @projektid)";
             comm = new NpgsqlCommand(sql, conn);
         }
         else if (a.Status == ObjectStates.Modified)
         {
             sql = @"Update angebote set titel = @titel, summe = @summe, datum = @datum, dauer=@dauer,chance = @chance,
                    kundenid = @kundenid, projektid = @projektid where angebotid = @angebotid";
             comm = new NpgsqlCommand(sql, conn);
             comm.Parameters.AddWithValue("@angebotid", a.Angebotid);
         }
         comm.Parameters.AddWithValue("@titel", a.Titel);
         comm.Parameters.AddWithValue("@summe", a.Summe);
         comm.Parameters.AddWithValue("@datum", a.Datum);
         comm.Parameters.AddWithValue("@dauer", a.Dauer);
         comm.Parameters.AddWithValue("@chance", a.Chance);
         comm.Parameters.AddWithValue("@kundenid", a.Kundenid);
         comm.Parameters.AddWithValue("@projektid", a.Projektid);
         comm.Prepare();
         comm.ExecuteNonQuery();
         a.Status = ObjectStates.Unmodified;
     }
     catch (NpgsqlException exp)
     {
         throw new DALException("DAL: Angebot konnte nicht gepspeichert werden!", exp);
     }
     finally
     {
         comm.Dispose();
         conn.Close();
     }
 }