// In der Methode wird das Business Objekt, welches in dieser Seite
        // visualisiert wird, geladen (wenn bestehendes Projekt) oder erzeugt (neues Projekt)
        protected void Page_Load(object sender, EventArgs e)
        {
            lblError.Text = "";
            if (!IsPostBack)
            {
                allCustomers = Main.getCustomers();
                try
                {
                    ddlCustomer.DataSource = allCustomers;
                    ddlCustomer.DataTextField = "name";
                    ddlCustomer.DataValueField = "id";
                    ddlCustomer.DataBind();
                }
                catch (Exception error)
                {
                    Console.Write(error.Message);
                }
                currentID = (string)Session["id"]; //wurde beim Aufruf übertragen
                if (currentID != "")
                {
                    //Objekt laden und Werte setzen
                    currentProject = Main.getProjectByID(currentID);

                    if (currentProject != null)
                    {
                        //kopiere die Properties des Objekts in die Felder der Maske
                        txtNameProject.Text = currentProject.name;
                        lblProjekttitle.Text = " - " + currentProject.name + " / " + currentProject.customerName;
                        ddlCustomer.SelectedValue = currentProject.customerID;
                        txtDateEnd.Text = currentProject.dateEnd;
                        lblDateCreate.Text = currentProject.dateCreate;
                        Session["Project"] = currentProject; //Projektobjekt in Session speichern
                        btnDeleteProject.Visible = true;
                        lblDateCreate.Visible = true;
                        tblNewComment.Visible = false;
                        updateTasks();
                    }
                    else
                    {
                        lblError.Text = "Projekt nicht gefunden - Sie können ein neues Projekt anlegen!";
                        btnDeleteProject.Visible = false;
                        tblNewTask.Visible = false;
                        tblNewComment.Visible = false;
                        lblDateCreate.Visible = false;
                        Session["Project"] = Main.newProject(); //neues leeres Kundenobjekt
                    }
                }
                else
                {
                    //leere ID? Dann ist das ein neues Projekt
                    btnDeleteProject.Visible = false;
                    tblNewTask.Visible = false;
                    lblDateCreate.Visible = false;

                    currentProject = Main.newProject();
                    Session["Project"] = currentProject; //neues leeres Projektobjekt
                }
            }
            else
                currentProject = (Projects)Session["Project"];
        }
Example #2
0
 // Laden aller Tasks als Liste von Objekten für ein Projekct - Funktion wird von Projects aufgerufen!
 internal static List<Tasks> LoadTasksForProject(Projects theProject)
 {
     SqlCommand cmd = new SqlCommand("select id, name, projectID from Tasks where projectID = @projectID", Main.GetConnection());
     cmd.Parameters.Add(new SqlParameter("projectID", theProject.id));
     SqlDataReader reader = cmd.ExecuteReader();
     List<Tasks> allTasks = new List<Tasks>(); //initialisiere lehre Liste von Tasks
     while (reader.Read())
     {
         Tasks oneTask = new Tasks();
         oneTask.id = reader.GetString(0);
         oneTask.name = reader.GetString(1);
         oneTask.projectID = reader.GetString(2);
         oneTask.comments = oneTask.getComments;
         allTasks.Add(oneTask);
     }
     return allTasks;
 }
Example #3
0
        /************************************************************************************************************
        STATISCHE METHODEN
        internal bedeutet, dass sie nur von Klassen aus BOKunden (aus dem eigenem Namespace) aufgerufen werden können
        - also nicht direkt aus dem PL

        Die Methoden sind im BOKunde-Objekt, damit der BO-Programmierer alle SQL-Statements, die Kunden betreffen, an einer Stelle hat
        Der PL-Programmierer sieht diese Implementation aber nicht. Er sieht die Methoden, von wo aus er diese Objekte "bekommt"
        (also entsprechend der Navigability). Man hätte diese Methoden technisch aber problemlos auch in die cMain geben können!
        */
        // Hilfsfunktion für die beiden unteren Methoden
        private static Projects fillProjectFromSQLDataReader(SqlDataReader reader)
        {
            Projects oneProject = new Projects();
            oneProject.id = reader.GetString(0);
            oneProject.name = reader.GetString(1);
            oneProject.customerID = reader.GetString(2);
            oneProject.dateCreate = reader.GetDateTime(3).ToString("dd.MM.yyyy");
            oneProject.dateEnd = reader.GetDateTime(4).ToString("dd.MM.yyyy");
            Customers projectCustomer = Customers.Load(oneProject.customerID);
            oneProject.customerName = projectCustomer.name;
            return oneProject;
        }