public ProjCritAssign_View(Form parentView, int projectId)
 {
     this.parentView = parentView;
     ProjectId = projectId;
     this.projCritCont = new ProjectCriterionController();
     InitializeComponent();
 }
 public ProjCritStruUpdate_View(Form parentView, int projectID)
 {
     this.parentView = parentView;
     ProjectId = projectID;
     this.projCritCont = new ProjectCriterionController();
     InitializeComponent();
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="ProjectExporter"/> class.
        /// </summary>
        /// <param name="projectIdToExport">The project identifier to export.</param>
        /// <param name="exportDirectoryPath">The export file path.</param>
        /// Erstellt von Joshua Frey, am 13.01.2016
        public ProjectExporter(int projectIdToExport, string exportDirectoryPath)
        {
            // initialize db controller
            ExportProjectController = new ProjectController();
            ExportCriterionController = new CriterionController();
            ExportProductController = new ProductController();
            ExportProjectCriterionController = new ProjectCriterionController();
            ExportProjectProductController = new ProjectProductController();
            ExportFulfillmentController = new FulfillmentController();

            this.ExportFilePaths = new List<string>();

            ProjectId = projectIdToExport;
            ProjectName = ExportProjectController.GetProjectById(projectIdToExport).Name;
            Timestamp = CommonMethods.GetTimestamp();

            ExportFilePath = exportDirectoryPath;

            FileBaseName = String.Format(@"{0}\{1}_Project_{2}", ExportFilePath, Timestamp, ProjectName);

            string logFilePath = this.FileBaseName + ".log";
            this.ExportFilePaths.Add(logFilePath);

            // Create Logfile
            this.ArchiveLogWriter = new LogWriter(logFilePath, "Archivierungslog");
        }
        /// <summary>
        /// Deletes the criterion from database.
        /// </summary>
        /// <param name="criterionId">The criterion identifier.</param>
        /// <returns>
        /// bool if deletion was successfull<
        /// /returns>
        /// Erstellt von Joshua Frey, am 14.12.2015
        /// <exception cref="NWATException">
        /// "Das Kriterium mit der Id X existiert nicht in der Datenbank."
        /// or
        /// SqlException if you try to delete a criterion, which is a parent criterion in project criterion table
        /// </exception>
        public bool DeleteCriterionFromDb(int criterionId)
        {
            //Criterion delCriterion = (from crit in base.DataContext.Criterion
            //                            where crit.Criterion_Id == criterionId
            //                            select crit).FirstOrDefault();

            Criterion delCriterion = GetCriterionById(criterionId);

            if (delCriterion != null)
            {
                // check if criterion is parent Id in any project
                using (ProjectCriterionController tempProjCritContr = new ProjectCriterionController())
                {
                    List <ProjectCriterion> projectCriterionChildren =
                        tempProjCritContr.GetAllProjectCriterionsWhichHaveGivenCriterionAsParent(delCriterion.Criterion_Id);
                    if (projectCriterionChildren.Count > 0)
                    {
                        string caption = "Löschen der untergeordneten Kriterien";
                        var    result  = MessageBox.Show(MessageDeleteAllChildProjectCriterions(projectCriterionChildren, delCriterion), caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                        // User interaction --> User can decide if export files outside the zip archive should be deleted
                        if (result == DialogResult.Yes)
                        {
                            foreach (ProjectCriterion childProjCritToDelete in projectCriterionChildren)
                            {
                                bool forceDeallocationOfAllChildren = false;
                                tempProjCritContr.DeallocateCriterionAndAllChildCriterions(childProjCritToDelete.Project_Id, childProjCritToDelete, forceDeallocationOfAllChildren);
                            }
                        }
                        // if user declines deallocation of all children, the criterion will not be removed from master table.
                        else
                        {
                            return(false);
                        }
                    }
                }

                base.DataContext.Criterion.DeleteOnSubmit(delCriterion);
                base.DataContext.SubmitChanges();
            }
            else
            {
                throw(new NWATException(MessageCriterionDoesNotExist(criterionId)));
            }

            return(GetCriterionById(criterionId) == null);
        }
示例#5
0
        /// <summary>
        /// Allocates the product.
        /// </summary>
        /// <param name="projectId">The project identifier.</param>
        /// <param name="projProd">The proj product.</param>
        /// <returns>
        /// boolean, if allocation to ProjectProduct and Fulfillment table was successful
        /// </returns>
        /// Erstellt von Joshua Frey, am 12.01.2016
        /// <exception cref="NWATException"></exception>
        private bool AllocateProduct(int projectId, ProjectProduct projProd)
        {
            bool insertionProjectProductSuccessful = true;
            bool insertionFulfillmentSuccessful    = true;

            int productId = projProd.Product_Id;

            if (productId != 0 && projProd.Project_Id != 0)
            {
                insertionProjectProductSuccessful = InsertProjectProductIntoDb(projProd);

                // get all project criterions to create new fulfillment entries
                List <ProjectCriterion> allProjectCriterions;
                using (ProjectCriterionController projCritCont = new ProjectCriterionController())
                {
                    allProjectCriterions = projCritCont.GetAllProjectCriterionsForOneProject(projectId);
                }

                // create fulfillment entry for this product and each project criterion
                using (FulfillmentController fulfillCont = new FulfillmentController())
                {
                    foreach (ProjectCriterion projCrit in allProjectCriterions)
                    {
                        int criterionId = projCrit.Criterion_Id;

                        // new fulfillment which will be inserted into fulfillment table.
                        // default values for Fulfilled and Comment (false and null)
                        Fulfillment newFulfillment = new Fulfillment()
                        {
                            Project_Id   = projectId,
                            Product_Id   = productId,
                            Criterion_Id = criterionId,
                            Fulfilled    = false,
                            Comment      = null
                        };

                        if (!fulfillCont.InsertFullfillmentInDb(newFulfillment))
                        {
                            insertionFulfillmentSuccessful = false;
                            throw (new NWATException(CommonMethods.MessageInsertionToFulFillmentTableFailed(productId, criterionId)));
                        }
                    }
                }
            }
            return(insertionFulfillmentSuccessful && insertionProjectProductSuccessful);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ProjectImporter"/> class.
        /// </summary>
        /// <param name="archiveFilePath">The archive file path.</param>
        /// Erstellt von Joshua Frey, am 13.01.2016
        public ProjectImporter(string archiveFilePath)
        {
            // initialize db controller
            ImportProjectController = new ProjectController();
            ImportCriterionController = new CriterionController();
            ImportProductController = new ProductController();
            ImportProjectCriterionController = new ProjectCriterionController();
            ImportProjectProductController = new ProjectProductController();
            ImportFulfillmentController = new FulfillmentController();
            this.ZipArchiveFilePath = archiveFilePath;

            this.ImportFilesDirectory = CreateImportDirectory();

            // Create Logfile
            string logFilePath = this.ImportFilesDirectory + @"\Import.log";
            this.ImportLogWriter = new LogWriter(logFilePath, "Import Log");
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ProjectImporter"/> class.
        /// </summary>
        /// <param name="archiveFilePath">The archive file path.</param>
        /// Erstellt von Joshua Frey, am 13.01.2016
        public ProjectImporter(string archiveFilePath)
        {
            // initialize db controller
            ImportProjectController          = new ProjectController();
            ImportCriterionController        = new CriterionController();
            ImportProductController          = new ProductController();
            ImportProjectCriterionController = new ProjectCriterionController();
            ImportProjectProductController   = new ProjectProductController();
            ImportFulfillmentController      = new FulfillmentController();
            this.ZipArchiveFilePath          = archiveFilePath;

            this.ImportFilesDirectory = CreateImportDirectory();

            // Create Logfile
            string logFilePath = this.ImportFilesDirectory + @"\Import.log";

            this.ImportLogWriter = new LogWriter(logFilePath, "Import Log");
        }
        /// <summary>
        /// Refreshes the grid l.
        /// </summary>
        /// Erstellt von Veit Berg, am 27.01.16
        private void refreshGridL()
        {
            try{

                dataGridView_CritAvail.Columns["Criterion_Id"].HeaderText = "ID";
                dataGridView_CritAvail.Columns["Criterion_Id"].Width = 30;
                dataGridView_CritAvail.Columns["Criterion_Id"].DisplayIndex = 0;
                dataGridView_CritAvail.Columns["Criterion_Id"].ReadOnly = true;
                dataGridView_CritAvail.Columns["Name"].HeaderText = "Name";
                dataGridView_CritAvail.Columns["Name"].Width = 200;
                dataGridView_CritAvail.Columns["Name"].DisplayIndex = 1;
                dataGridView_CritAvail.Columns["Name"].ReadOnly = true;
                dataGridView_CritAvail.Columns["Description"].HeaderText = "Beschreibung";
                dataGridView_CritAvail.Columns["Description"].Width = 240;
                dataGridView_CritAvail.Columns["Description"].DisplayIndex = 2;
                dataGridView_CritAvail.Columns["Description"].ReadOnly = true;

            dataGridView_ProjCrits.DataSource = null;
            using (ProjectCriterionController proCriCon = new ProjectCriterionController())
            {
                ProjCrits = proCriCon.GetAllProjectCriterionsForOneProject(ProjectId);
            }

            using (CriterionController critCon = new CriterionController())
            {
                foreach (ProjectCriterion projCrit in ProjCrits)
                {
                    var singleCritId = critCon.GetCriterionById(projCrit.Criterion_Id);
                    projCrit.Name = singleCritId.Name.ToString();
                }
            }

            dataGridView_ProjCrits.DataSource = ProjCrits;
            dataGridView_ProjCrits.Columns.Remove("Project_Id");
            dataGridView_ProjCrits.Columns.Remove("Layer_Depth");
            dataGridView_ProjCrits.Columns.Remove("Weighting_Cardinal");
            dataGridView_ProjCrits.Columns.Remove("Weighting_Percentage_Layer");
            dataGridView_ProjCrits.Columns.Remove("Weighting_Percentage_Project");
            dataGridView_ProjCrits.Columns.Remove("Criterion");
            dataGridView_ProjCrits.Columns.Remove("ParentCriterion");
            dataGridView_ProjCrits.Columns.Remove("Project");
            int i = 0;
            foreach (ProjectCriterion ProCri in ProjCrits)
            {

                dataGridView_ProjCrits["Beschreibung", i].Value = ProCri.Criterion.Description;
                i++;
            }
            //dataGridView_ProjCrits.Columns["Criterion_Id"].HeaderText = "ID";
            //dataGridView_ProjCrits.Columns["Name"].HeaderText = "Name";
            //dataGridView_ProjCrits.Columns["Description"].HeaderText = "Beschreibung";
            //dataGridView_ProjCrits.Columns["Criterion_Id"].DisplayIndex = 0;
            //dataGridView_ProjCrits.Columns["Name"].DisplayIndex = 1;
            //dataGridView_ProjCrits.Columns["Description"].DisplayIndex = 2;
            dataGridView_ProjCrits.Columns[0].DisplayIndex = 3;
            dataGridView_ProjCrits.Columns[1].HeaderText = "ID";
            dataGridView_ProjCrits.Columns[1].Width = 40;
            dataGridView_ProjCrits.Columns[2].HeaderText = "P-ID";
            dataGridView_ProjCrits.Columns[2].Width = 40;
            dataGridView_ProjCrits.Columns[3].Width = 200;
            dataGridView_ProjCrits.Columns[0].ReadOnly = true;
            dataGridView_ProjCrits.Columns[1].ReadOnly = true;
            dataGridView_ProjCrits.Columns[2].ReadOnly = true;
            dataGridView_ProjCrits.Columns[3].ReadOnly = true;
            //dataGridView_ProjCrits.Columns["Criterion_Id"].Width = 40;
            //dataGridView_ProjCrits.Columns["Name"].Width = 100;
            //dataGridView_ProjCrits.Columns["Description"].Width = 200;
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message);
            }
        }
 /// <summary>
 /// Handles the Click event of the btn_ProjCritSave control.
 /// </summary>
 /// <param name="sender">The source of the event.</param>
 /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
 /// Erstellt von Veit Berg, am 27.01.16
 private void btn_ProjCritSave_Click(object sender, EventArgs e)
 {
     try
     {
         using (ProjectCriterionController projCritCon = new ProjectCriterionController())
         {
             projCritCon.ChangeAllocationOfProjectCriterionsInDb(ProjectId, ProjCrits);
         }
         this.Close();
     }
     catch (Exception x)
     {
         MessageBox.Show(x.Message);
     }
 }
        /// <summary>
        /// Handles the Load event of the ProjCritAssign_Form control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        /// Erstellt von Veit Berg, am 27.01.16
        private void ProjCritAssign_Form_Load(object sender, EventArgs e)
        {
            try{
            using (ProjectCriterionController proCriCont = new ProjectCriterionController())
            {
                ProjCrits = proCriCont.GetAllProjectCriterionsForOneProject(ProjectId);

            }
            using (CriterionController critCont = new CriterionController())
            {
                AllCrits = critCont.GetAllCriterionsFromDb();

                if (ProjCrits.Count != 0)
                {
                    foreach (ProjectCriterion projCrit in ProjCrits)
                    {
                        Criterion allocatedCrit = AllCrits.Single(crit => crit.Criterion_Id == projCrit.Criterion_Id);
                        AllCrits.Remove(allocatedCrit);
                    }
                }
            }
            dataGridView_CritAvail.Rows.Clear();
            var CritBindingList = new BindingList<Criterion>(AllCrits);
            var CritSource = new BindingSource(CritBindingList, null);
            dataGridView_CritAvail.DataSource = AllCrits;
            dataGridView_CritAvail.Columns[0].HeaderText = "ID";
            dataGridView_CritAvail.Columns[0].Width = 30;
            dataGridView_CritAvail.Columns[1].Width = 200;
            dataGridView_CritAvail.Columns[2].Width = 240;
            dataGridView_CritAvail.Columns["Description"].HeaderText = "Beschreibung";
            dataGridView_CritAvail.Columns[0].ReadOnly = true;
            dataGridView_CritAvail.Columns[1].ReadOnly = true;
            dataGridView_CritAvail.Columns[2].ReadOnly = true;
            dataGridView_ProjCrits.Rows.Clear();
              using(CriterionController critCon = new CriterionController())
              {
            foreach (ProjectCriterion projCrit in ProjCrits)
            {
              var singleCritId = critCon.GetCriterionById(projCrit.Criterion_Id);
              projCrit.Name = singleCritId.Name.ToString();
            }
              }

            var ProjCritBindingList = new BindingList<ProjectCriterion>(ProjCrits);
            var projCritSource = new BindingSource(ProjCritBindingList, null);
            dataGridView_ProjCrits.DataSource = ProjCrits;
            dataGridView_ProjCrits.Columns.Remove("Project_Id");
            dataGridView_ProjCrits.Columns.Remove("Layer_Depth");
            dataGridView_ProjCrits.Columns.Remove("Weighting_Cardinal");
            dataGridView_ProjCrits.Columns.Remove("Weighting_Percentage_Layer");
            dataGridView_ProjCrits.Columns.Remove("Weighting_Percentage_Project");
            dataGridView_ProjCrits.Columns.Remove("Criterion");
            dataGridView_ProjCrits.Columns.Remove("ParentCriterion");
            dataGridView_ProjCrits.Columns.Remove("Project");
            dataGridView_ProjCrits.Columns.Add("Beschreibung", "Beschreibung");
            int i = 0;
            foreach (ProjectCriterion ProCri in ProjCrits)
            {

                dataGridView_ProjCrits["Beschreibung", i].Value = ProCri.Criterion.Description;
                i++;
            }
            dataGridView_ProjCrits.Columns[0].HeaderText = "ID";
            dataGridView_ProjCrits.Columns[0].Width = 40;
            dataGridView_ProjCrits.Columns[1].HeaderText = "P-ID";
            dataGridView_ProjCrits.Columns[1].Width = 40;
            dataGridView_ProjCrits.Columns[2].Width = 200;
            dataGridView_ProjCrits.Columns[3].Width = 190;
            dataGridView_ProjCrits.Columns[0].ReadOnly = true;
            dataGridView_ProjCrits.Columns[1].ReadOnly = true;
            dataGridView_ProjCrits.Columns[2].ReadOnly = true;
            dataGridView_ProjCrits.Columns[3].ReadOnly = true;
            this.FormClosing += new FormClosingEventHandler(ProjCritAssign_View_FormClosing);
            }
            catch (Exception i)
            {
                MessageBox.Show(i.Message);
            }
        }
        /// <summary>
        /// Refreshes the grid.
        /// </summary>
        /// Erstellt von Veit Berg, am 27.01.16
        private void refreshGrid()
        {
            try{
            dataGridView_ProjCritBalance.DataSource = null;
            using (ProjectCriterionController proCriCont = new ProjectCriterionController())
            {
                ProjCrits = proCriCont.GetSortedCriterionStructure(ProjectId);
                using (CriterionController critCon = new CriterionController())
                {
                    foreach (ProjectCriterion projCrit in ProjCrits)
                    {
                        var singleCritId = critCon.GetCriterionById(projCrit.Criterion_Id);
                        projCrit.Name = singleCritId.Name.ToString();
                    }
                }

                var CritBindingList = new BindingList<ProjectCriterion>(ProjCrits);
                var CritSource = new BindingSource(CritBindingList, null);
                dataGridView_ProjCritBalance.DataSource = ProjCrits;

                dataGridView_ProjCritBalance.Columns.Remove("Project_Id");
                dataGridView_ProjCritBalance.Columns.Remove("Criterion");
                dataGridView_ProjCritBalance.Columns.Remove("ParentCriterion");
                dataGridView_ProjCritBalance.Columns.Remove("Project");
                int i = 0;
                foreach (ProjectCriterion ProCri in ProjCrits)
                {

                    dataGridView_ProjCritBalance["Beschreibung1", i].Value = ProCri.Criterion.Description;
                    i++;
                }
                dataGridView_ProjCritBalance.Columns["Criterion_Id"].HeaderText = "ID";
                dataGridView_ProjCritBalance.Columns[1].Width = 40;
                dataGridView_ProjCritBalance.Columns[1].ReadOnly = true;
                dataGridView_ProjCritBalance.Columns["Parent_Criterion_Id"].HeaderText = "P-ID";
                dataGridView_ProjCritBalance.Columns[2].Width = 40;
                dataGridView_ProjCritBalance.Columns[2].ReadOnly = true;
                dataGridView_ProjCritBalance.Columns["Weighting_Cardinal"].HeaderText = "G(C)";
                dataGridView_ProjCritBalance.Columns["Weighting_Cardinal"].Width = 40;
                dataGridView_ProjCritBalance.Columns["Weighting_Percentage_Layer"].HeaderText = "G(PL)";
                dataGridView_ProjCritBalance.Columns["Criterion_Id"].ReadOnly = true;
                dataGridView_ProjCritBalance.Columns["Weighting_Cardinal"].Width = 40;
                dataGridView_ProjCritBalance.Columns["Weighting_Percentage_Layer"].Width = 100;
                dataGridView_ProjCritBalance.Columns["Weighting_Percentage_Project"].Width = 100;
                dataGridView_ProjCritBalance.Columns["Weighting_Percentage_Project"].HeaderText = "G(PP)";
                dataGridView_ProjCritBalance.Columns[5].ReadOnly = true;
                dataGridView_ProjCritBalance.Columns["Layer_Depth"].HeaderText = "Layer";
                dataGridView_ProjCritBalance.Columns["Layer_Depth"].DisplayIndex = 0;
                dataGridView_ProjCritBalance.Columns["Layer_Depth"].Width = 50;
                dataGridView_ProjCritBalance.Columns["Criterion_Id"].DisplayIndex = 1;
                dataGridView_ProjCritBalance.Columns["Parent_Criterion_Id"].DisplayIndex = 2;
                dataGridView_ProjCritBalance.Columns["Weighting_Cardinal"].DisplayIndex = 3;
                dataGridView_ProjCritBalance.Columns["Weighting_Percentage_Layer"].DisplayIndex = 4;
                dataGridView_ProjCritBalance.Columns["Weighting_Percentage_Project"].DisplayIndex = 5;
                dataGridView_ProjCritBalance.Columns["Name"].DisplayIndex = 6;
                dataGridView_ProjCritBalance.Columns["Name"].Width = 150;
                dataGridView_ProjCritBalance.Columns["Beschreibung1"].DisplayIndex = 7;
                dataGridView_ProjCritBalance.Columns["Beschreibung1"].Width = 350;
                dataGridView_ProjCritBalance.Columns["Parent_Criterion_Id"].Width = 40;
                dataGridView_ProjCritBalance.Columns["Beschreibung1"].ReadOnly = true;
                dataGridView_ProjCritBalance.Columns["Name"].ReadOnly = true;
                dataGridView_ProjCritBalance.Columns["Criterion_Id"].ReadOnly = true;
                dataGridView_ProjCritBalance.Columns["Parent_Criterion_Id"].ReadOnly = true;
                dataGridView_ProjCritBalance.Columns["Weighting_Percentage_Project"].ReadOnly = true;
            }
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message);
            }
        }
        /// <summary>
        /// Handles the Click event of the btn_CritToPool control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        /// Erstellt von Veit Berg, am 27.01.16
        private void btn_CritToPool_Click(object sender, EventArgs e)
        {
            try{
            if ((int)dataGridView_ProjCrits.SelectedRows[0].Index >= 0)
            {
                DataGridViewRow row = dataGridView_ProjCrits.SelectedRows[0];
                int CritId = (int)row.Cells["Criterion_Id"].Value;
                int index = dataGridView_ProjCrits.CurrentCell.RowIndex;
                ProjCrits.RemoveAt(index);
                projCritCont.ChangeAllocationOfProjectCriterionsInDb(ProjectId, ProjCrits);
                using (ProjectCriterionController proCriCont = new ProjectCriterionController())
                {
                    ProjCrits = proCriCont.GetAllProjectCriterionsForOneProject(ProjectId);

                }
                using (CriterionController critCont = new CriterionController())
                {
                    AllCrits = critCont.GetAllCriterionsFromDb();

                    if (ProjCrits.Count != 0)
                    {
                        foreach (ProjectCriterion projCrit in ProjCrits)
                        {
                            Criterion allocatedCrit = AllCrits.Single(crit => crit.Criterion_Id == projCrit.Criterion_Id);
                            AllCrits.Remove(allocatedCrit);
                        }
                    }
                }

                dataGridView_CritAvail.DataSource = null;
                dataGridView_CritAvail.DataSource = AllCrits;
                refreshGridL();
            }
            else
            {
                MessageBox.Show("Bitte erst eine Zeile auswählen");
            }
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message);
            }
        }
        /// <summary>
        /// Handles the Load event of the ProjCritBalance_View control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        /// Erstellt von Veit Berg, am 27.01.16
        private void ProjCritBalance_View_Load(object sender, EventArgs e)
        {
            try
            {
                using (ProjectCriterionController proCriCont = new ProjectCriterionController())
                {
                    ProjCrits = proCriCont.GetSortedCriterionStructure(ProjectId);
                    using (CriterionController critCon = new CriterionController())
                    {
                        foreach (ProjectCriterion projCrit in ProjCrits)
                        {
                            var singleCritId = critCon.GetCriterionById(projCrit.Criterion_Id);
                            projCrit.Name = singleCritId.Name.ToString();
                        }
                    }
                    dataGridView_ProjCritBalance.Rows.Clear();
                    var CritBindingList = new BindingList<ProjectCriterion>(ProjCrits);
                    var CritSource = new BindingSource(CritBindingList, null);
                    dataGridView_ProjCritBalance.DataSource = ProjCrits;
                    dataGridView_ProjCritBalance.Columns.Remove("Project_Id");
                    dataGridView_ProjCritBalance.Columns.Remove("Strukture");
                    dataGridView_ProjCritBalance.Columns.Remove("Criterion");
                    dataGridView_ProjCritBalance.Columns.Remove("ParentCriterion");
                    dataGridView_ProjCritBalance.Columns.Remove("Project");
                    dataGridView_ProjCritBalance.Columns.Add("Beschreibung1", "Beschreibung");
                    int i = 0;
                    foreach (ProjectCriterion ProCri in ProjCrits)
                    {

                        dataGridView_ProjCritBalance["Beschreibung1", i].Value = ProCri.Criterion.Description;
                        i++;
                    }
                    dataGridView_ProjCritBalance.Columns["Name"].Width = 150;
                    dataGridView_ProjCritBalance.Columns["Criterion_ID"].HeaderText = "ID";
                    dataGridView_ProjCritBalance.Columns["Criterion_ID"].Width = 40;
                    dataGridView_ProjCritBalance.Columns["Layer_Depth"].DisplayIndex = 0;
                    dataGridView_ProjCritBalance.Columns["Layer_Depth"].HeaderText = "Layer";
                    dataGridView_ProjCritBalance.Columns[1].Width = 40;
                    dataGridView_ProjCritBalance.Columns[1].ReadOnly = true;
                    dataGridView_ProjCritBalance.Columns[2].HeaderText = "P-ID";
                    dataGridView_ProjCritBalance.Columns[2].Width = 40;
                    dataGridView_ProjCritBalance.Columns[2].ReadOnly = true;
                    dataGridView_ProjCritBalance.Columns[3].HeaderText = "G(C)";
                    dataGridView_ProjCritBalance.Columns[3].Width = 40;
                    dataGridView_ProjCritBalance.Columns["Parent_Criterion_Id"].Width = 40;

                    dataGridView_ProjCritBalance.Columns[4].HeaderText ="G(PL)";
                    dataGridView_ProjCritBalance.Columns[4].Width = 100;
                    dataGridView_ProjCritBalance.Columns["Weighting_Percentage_Project"].HeaderText = "G(PP)";
                    dataGridView_ProjCritBalance.Columns["Weighting_Percentage_Project"].Width = 100;
                    dataGridView_ProjCritBalance.Columns["Weighting_Percentage_Project"].DisplayIndex = 5;
                    dataGridView_ProjCritBalance.Columns["Weighting_Percentage_Project"].ReadOnly = true;
                    dataGridView_ProjCritBalance.Columns[4].ReadOnly = true;
                    dataGridView_ProjCritBalance.Columns[5].ReadOnly = true;
                    dataGridView_ProjCritBalance.Columns[5].Width = 100;
                    dataGridView_ProjCritBalance.Columns["Beschreibung1"].DisplayIndex = 7;
                    dataGridView_ProjCritBalance.Columns["Beschreibung1"].Width = 350;
                    dataGridView_ProjCritBalance.Columns["Layer_Depth"].Width = 50;
                    dataGridView_ProjCritBalance.Columns["Beschreibung1"].ReadOnly = true;
                    dataGridView_ProjCritBalance.Columns["Name"].ReadOnly = true;
                    dataGridView_ProjCritBalance.Columns["Criterion_Id"].ReadOnly = true;
                    dataGridView_ProjCritBalance.Columns["Parent_Criterion_Id"].ReadOnly = true;
                }
            }
            catch (FormatException){
            MessageBox.Show("Bitte nur Zahlen eingeben");
            }
            this.dataGridView_ProjCritBalance.CellValidating += new
             DataGridViewCellValidatingEventHandler(dataGridView_ProjCritBalance_CellValidating);
            this.FormClosing += new FormClosingEventHandler(ProjCritBalance_View_FormClosing);
        }
        /// <summary>
        /// Allocates the product.
        /// </summary>
        /// <param name="projectId">The project identifier.</param>
        /// <param name="projProd">The proj product.</param>
        /// <returns>
        /// boolean, if allocation to ProjectProduct and Fulfillment table was successful
        /// </returns>
        /// Erstellt von Joshua Frey, am 12.01.2016
        /// <exception cref="NWATException"></exception>
        private bool AllocateProduct(int projectId, ProjectProduct projProd)
        {
            bool insertionProjectProductSuccessful = true;
            bool insertionFulfillmentSuccessful = true;

            int productId = projProd.Product_Id;

            if (productId != 0 && projProd.Project_Id != 0)
            {
                insertionProjectProductSuccessful = InsertProjectProductIntoDb(projProd);

                // get all project criterions to create new fulfillment entries
                List<ProjectCriterion> allProjectCriterions;
                using (ProjectCriterionController projCritCont = new ProjectCriterionController())
                {
                    allProjectCriterions = projCritCont.GetAllProjectCriterionsForOneProject(projectId);
                }

                // create fulfillment entry for this product and each project criterion
                using (FulfillmentController fulfillCont = new FulfillmentController())
                {
                    foreach (ProjectCriterion projCrit in allProjectCriterions)
                    {
                        int criterionId = projCrit.Criterion_Id;

                        // new fulfillment which will be inserted into fulfillment table.
                        // default values for Fulfilled and Comment (false and null)
                        Fulfillment newFulfillment = new Fulfillment()
                        {
                            Project_Id = projectId,
                            Product_Id = productId,
                            Criterion_Id = criterionId,
                            Fulfilled = false,
                            Comment = null
                        };

                        if (!fulfillCont.InsertFullfillmentInDb(newFulfillment))
                        {
                            insertionFulfillmentSuccessful = false;
                            throw (new NWATException(CommonMethods.MessageInsertionToFulFillmentTableFailed(productId, criterionId)));
                        }
                    }
                }
            }
            return insertionFulfillmentSuccessful && insertionProjectProductSuccessful;
        }
        /// <summary>
        /// Allocates the new project criterion.
        /// </summary>
        /// <param name="projCritToAllocate">The proj crit to allocate.</param>
        /// <param name="index">The index.</param>
        /// Erstellt von Veit Berg, am 27.01.16
        public void AllocateNewProjectCriterion(ProjectCriterion projCritToAllocate, int index)
        {
            try{
            ProjCrits.Add(projCritToAllocate);
            projCritCont.ChangeAllocationOfProjectCriterionsInDb(ProjectId, ProjCrits);
             //          AllCrits.Remove((Criterion)projCritToAllocate);
            //foreach (ProjectCriterion projCrit in ProjCrits)
            //{
            //    Criterion allocatedCrit = AllCrits.Single(crit => crit.Criterion_Id == projCrit.Criterion_Id);
            //    AllCrits.Remove(allocatedCrit);
            //}

            using (CriterionController critCont = new CriterionController())
            {
                AllCrits = critCont.GetAllCriterionsFromDb();

                if (ProjCrits.Count != 0)
                {
                    foreach (ProjectCriterion projCrit in ProjCrits)
                    {
                        Criterion allocatedCrit = AllCrits.Single(crit => crit.Criterion_Id == projCrit.Criterion_Id);
                        AllCrits.Remove(allocatedCrit);
                    }
                }
            }

            using (ProjectCriterionController proCriCont = new ProjectCriterionController())
            {
                ProjCrits = proCriCont.GetAllProjectCriterionsForOneProject(ProjectId);

            }
            using (CriterionController critCont = new CriterionController())
            {
                AllCrits = critCont.GetAllCriterionsFromDb();

                if (ProjCrits.Count != 0)
                {
                    foreach (ProjectCriterion projCrit in ProjCrits)
                    {
                        Criterion allocatedCrit = AllCrits.Single(crit => crit.Criterion_Id == projCrit.Criterion_Id);
                        AllCrits.Remove(allocatedCrit);
                    }
                }
            }
            dataGridView_CritAvail.DataSource = null;
            dataGridView_CritAvail.DataSource = AllCrits;

            refreshGridL();
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message);
            }
        }
        /// <summary>
        /// Deletes the criterion from database.
        /// </summary>
        /// <param name="criterionId">The criterion identifier.</param>
        /// <returns>
        /// bool if deletion was successfull<
        /// /returns>
        /// Erstellt von Joshua Frey, am 14.12.2015
        /// <exception cref="NWATException">
        /// "Das Kriterium mit der Id X existiert nicht in der Datenbank."
        /// or
        /// SqlException if you try to delete a criterion, which is a parent criterion in project criterion table
        /// </exception>
        public bool DeleteCriterionFromDb(int criterionId)
        {
            //Criterion delCriterion = (from crit in base.DataContext.Criterion
            //                            where crit.Criterion_Id == criterionId
            //                            select crit).FirstOrDefault();

            Criterion delCriterion = GetCriterionById(criterionId);
            if (delCriterion != null)
            {
                // check if criterion is parent Id in any project
                using (ProjectCriterionController tempProjCritContr = new ProjectCriterionController())
                {
                    List<ProjectCriterion> projectCriterionChildren =
                        tempProjCritContr.GetAllProjectCriterionsWhichHaveGivenCriterionAsParent(delCriterion.Criterion_Id);
                    if (projectCriterionChildren.Count > 0)
                    {

                        string caption = "Löschen der untergeordneten Kriterien";
                        var result = MessageBox.Show(MessageDeleteAllChildProjectCriterions(projectCriterionChildren, delCriterion), caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                        // User interaction --> User can decide if export files outside the zip archive should be deleted
                        if (result == DialogResult.Yes)
                        {
                            foreach (ProjectCriterion childProjCritToDelete in projectCriterionChildren)
                            {
                                bool forceDeallocationOfAllChildren = false;
                                tempProjCritContr.DeallocateCriterionAndAllChildCriterions(childProjCritToDelete.Project_Id, childProjCritToDelete, forceDeallocationOfAllChildren);
                            }
                        }
                        // if user declines deallocation of all children, the criterion will not be removed from master table.
                        else
                        {
                            return false;
                        }
                    }

                }

                base.DataContext.Criterion.DeleteOnSubmit(delCriterion);
                base.DataContext.SubmitChanges();
            }
            else
            {
                throw(new NWATException(MessageCriterionDoesNotExist(criterionId)));
            }

            return GetCriterionById(criterionId) == null;
        }
        /// <summary>
        /// Handles the Load event of the ProjCritStruUpdate_Form control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        /// Erstellt von Veit Berg, am 27.01.16
        private void ProjCritStruUpdate_Form_Load(object sender, EventArgs e)
        {
            try{
            using (ProjectCriterionController proCriCont = new ProjectCriterionController())
            {
                ProjCrits = proCriCont.GetSortedCriterionStructure(ProjectId);
                using (CriterionController critCon = new CriterionController())
                {
                    foreach (ProjectCriterion projCrit in ProjCrits)
                    {
                        var singleCritId = critCon.GetCriterionById(projCrit.Criterion_Id);
                        projCrit.Name = singleCritId.Name.ToString();
                    }
                }

                var CritBindingList = new BindingList<ProjectCriterion>(ProjCrits);
                this.CritSource = new BindingSource(CritBindingList, null);
                dataGridView_CritStruUpd.DataSource = ProjCrits;
                dataGridView_CritStruUpd.Columns.Remove("Project_Id");
                dataGridView_CritStruUpd.Columns.Remove("Criterion");
                dataGridView_CritStruUpd.Columns.Remove("ParentCriterion");
                dataGridView_CritStruUpd.Columns.Remove("Project");
                dataGridView_CritStruUpd.Columns[0].ReadOnly = true;
                dataGridView_CritStruUpd.Columns[0].Width = 40;
                dataGridView_CritStruUpd.Columns[1].ReadOnly = true;
                dataGridView_CritStruUpd.Columns[1].HeaderText = "Layer";
                dataGridView_CritStruUpd.Columns[1].Width = 40;
                dataGridView_CritStruUpd.Columns[2].HeaderText = "P-ID";
                dataGridView_CritStruUpd.Columns[2].Width = 40;
                dataGridView_CritStruUpd.Columns[3].ReadOnly = true;
                dataGridView_CritStruUpd.Columns[3].HeaderText = "W(C)";
                dataGridView_CritStruUpd.Columns[4].ReadOnly = true;
                dataGridView_CritStruUpd.Columns[4].HeaderText = "W(PL)";
                dataGridView_CritStruUpd.Columns[5].ReadOnly = true;
                dataGridView_CritStruUpd.Columns[5].HeaderText = "W(PP)";
                dataGridView_CritStruUpd.Columns["Weighting_Percentage_Project"].Width = 40;
                dataGridView_CritStruUpd.Columns[6].ReadOnly = true;
                dataGridView_CritStruUpd.Columns[6].HeaderText = "Name";
                dataGridView_CritStruUpd.Columns.Add("Beschreibung", "Beschreibung");
                dataGridView_CritStruUpd.Columns["Beschreibung"].ReadOnly = true;
                int i = 0;
                foreach (ProjectCriterion ProCri in ProjCrits)
                {

                    dataGridView_CritStruUpd["Beschreibung", i].Value = ProCri.Criterion.Description;
                    i++;
                }

                dataGridView_CritStruUpd.Columns[1].DisplayIndex = 0;
                dataGridView_CritStruUpd.Columns[2].DisplayIndex = 1;
                dataGridView_CritStruUpd.Columns[6].DisplayIndex = 3;
                dataGridView_CritStruUpd.Columns[6].Width = 200;
                dataGridView_CritStruUpd.Columns[7].DisplayIndex = 4;
                dataGridView_CritStruUpd.Columns[7].Width = 200;
                dataGridView_CritStruUpd.Columns["Criterion_Id"].HeaderText = "ID";
                dataGridView_CritStruUpd.Columns["Name"].ReadOnly = true;
                dataGridView_CritStruUpd.Columns["Weighting_Percentage_Project"].Width = 100;

                dataGridView_CritStruUpd.Show();
            }
            this.dataGridView_CritStruUpd.CellValidating += new
            DataGridViewCellValidatingEventHandler(dataGridView_CritStruUpd_CellValidating);

            this.FormClosing += new FormClosingEventHandler(ProjCritStruUpdate_View_FormClosing);
            }
            catch (Exception i)
            {
                MessageBox.Show(i.Message);
            }
        }
        /// <summary>
        /// Handles the Load event of the ProjCritProdFulfilment_Form control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        /// Erstellt von Veit Berg, am 27.01.16
        private void ProjCritProdFulfilment_Form_Load(object sender, EventArgs e)
        {
            try{
            formloaded = 1;
            using (ProjectProductController Projverw = new ProjectProductController())
            {
                ProjectProduct projprod = (ProjectProduct)comboBox_ProjCritProdFulf.SelectedItem;
                List<ProjectProduct> ProdList = Projverw.GetAllProjectProductsForOneProject(Project.Project_Id);
                List<Product> productsList = new List<Product>();
                foreach (ProjectProduct projProd in ProdList)
                {
                    productsList.Add(projProd.Product);
                }
                comboBox_ProjCritProdFulf.DataSource = productsList;

                comboBox_ProjCritProdFulf.DisplayMember = "Name";
                comboBox_ProjCritProdFulf.SelectedIndex = -1;
            }
                    using (ProjectCriterionController proCriCont = new ProjectCriterionController())
                     {
                         ProjCrits = proCriCont.GetSortedCriterionStructure(Project.Project_Id);
                         using (CriterionController critCon = new CriterionController())
                         {
                             foreach (ProjectCriterion projCrit in ProjCrits)
                             {
                                 var singleCritId = critCon.GetCriterionById(projCrit.Criterion_Id);
                                 projCrit.Name = singleCritId.Name.ToString();
                             }
                         }
                         var CritBindingList = new BindingList<ProjectCriterion>(ProjCrits);
                         var CritSource = new BindingSource(CritBindingList, null);
                         dataGridView_ProjCritProdFulf.DataSource = ProjCrits;
                         dataGridView_ProjCritProdFulf.Columns.Remove("Project_Id");
                         dataGridView_ProjCritProdFulf.Columns.Remove("Weighting_Cardinal");
                         dataGridView_ProjCritProdFulf.Columns.Remove("Weighting_Percentage_Layer");
                         dataGridView_ProjCritProdFulf.Columns.Remove("Weighting_Percentage_Project");
                         dataGridView_ProjCritProdFulf.Columns.Remove("Criterion");
                         dataGridView_ProjCritProdFulf.Columns.Remove("ParentCriterion");
                         dataGridView_ProjCritProdFulf.Columns.Remove("Project");
                         DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn();
                         dataGridView_ProjCritProdFulf.Columns.Add(chk);
                         chk.Name = "Erfüllung";
                         DataGridViewTextBoxColumn bem = new DataGridViewTextBoxColumn();
                         bem.Name = "Bemerkung";
                         dataGridView_ProjCritProdFulf.Columns.Add(bem);
                         dataGridView_ProjCritProdFulf.Columns[4].DisplayIndex = 0;
                         dataGridView_ProjCritProdFulf.Columns[3].DisplayIndex = 1;
                         dataGridView_ProjCritProdFulf.Columns[5].DisplayIndex = 2;
                         dataGridView_ProjCritProdFulf.Columns[1].DisplayIndex = 3;
                         dataGridView_ProjCritProdFulf.Columns[0].DisplayIndex = 4;
                         dataGridView_ProjCritProdFulf.Columns[2].DisplayIndex = 5;
                         dataGridView_ProjCritProdFulf.Columns[0].HeaderText = "C-ID";
                         dataGridView_ProjCritProdFulf.Columns[1].HeaderText = "Layer";
                         dataGridView_ProjCritProdFulf.Columns[2].HeaderText = "P-ID";
                         dataGridView_ProjCritProdFulf.Columns[3].HeaderText = "Name";
                         dataGridView_ProjCritProdFulf.Columns[4].Name = "Erfüllung";
                         dataGridView_ProjCritProdFulf.Columns["Name"].ReadOnly = true;
                         dataGridView_ProjCritProdFulf.Columns["Layer_Depth"].ReadOnly = true;
                         dataGridView_ProjCritProdFulf.Columns["Criterion_ID"].ReadOnly = true;
                         dataGridView_ProjCritProdFulf.Columns["Parent_Criterion_Id"].ReadOnly = true;
                        dataGridView_ProjCritProdFulf.Columns[0].Width = 50;
                         dataGridView_ProjCritProdFulf.Columns[1].Width = 50;
                         dataGridView_ProjCritProdFulf.Columns[2].Width = 50;
                         dataGridView_ProjCritProdFulf.Columns[4].Width = 50;
                         dataGridView_ProjCritProdFulf.Columns[3].Width = 150;
                         dataGridView_ProjCritProdFulf.Columns[5].Width = 200;
                         foreach (DataGridViewRow row in dataGridView_ProjCritProdFulf.Rows)
                         {
                             row.Cells["Erfüllung"].Value = false;
                         }

                     }
            }
            catch (Exception i)
            {
                MessageBox.Show(i.Message);
            }
            this.dataGridView_ProjCritProdFulf.CellValidating += new
            DataGridViewCellValidatingEventHandler(dataGridView_ProjCritProdFulf_CellValidating);
            this.FormClosing += new FormClosingEventHandler(ProjCritProdFulfillment_View_FormClosing);
        }
 public ProjCritShow_View()
 {
     this.projCritCont = new ProjectCriterionController();
     InitializeComponent();
 }