private void dgvAssessmentModules_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            var gridView = (DataGridView)sender;

            foreach (DataGridViewRow row in gridView.Rows)
            {
                if (!row.IsNewRow)
                {
                    AssessmentModule AssessmentModuleObj = (AssessmentModule)(row.DataBoundItem);
                    //var IndividualObj = ContactDetailObj.Individual;

                    row.Cells[colModuleName.Index].Value = AssessmentModuleObj.CurriculumCourseModule.Module.ModuleName.ToString();
                }
            }
        }
        private void SaveAssessment()
        {
            using (var Dbconnection = new MCDEntities())
            {
                using (System.Data.Entity.DbContextTransaction dbTran = Dbconnection.Database.BeginTransaction())
                {
                    try
                    {
                        //CRUD Operations
                        List <AssessmentModule> AMList = CurrentlySelectedAssessment.AssessmentModules.ToList <AssessmentModule>();
                        CurrentlySelectedAssessment.AssessmentModules.Clear();
                        CurrentlySelectedAssessment.AssessmentRecommendationID = GetRecommendation();
                        //check the ObjectState property and mark appropriate EntityState
                        if (CurrentlySelectedAssessment.ObjectState == EntityObjectState.Added)
                        {
                            Dbconnection.Entry(CurrentlySelectedAssessment).State = System.Data.Entity.EntityState.Added;
                        }
                        else if (CurrentlySelectedAssessment.ObjectState == EntityObjectState.Modified)
                        {
                            Dbconnection.Entry(CurrentlySelectedAssessment).State = System.Data.Entity.EntityState.Modified;
                        }
                        else if (CurrentlySelectedAssessment.ObjectState == EntityObjectState.Deleted)
                        {
                            Dbconnection.Entry(CurrentlySelectedAssessment).State = System.Data.Entity.EntityState.Deleted;
                        }
                        else
                        {
                            Dbconnection.Entry(CurrentlySelectedAssessment).State = System.Data.Entity.EntityState.Unchanged;
                        }

                        Dbconnection.SaveChanges();


                        foreach (AssessmentModule AssessmentModuleObj in AMList)
                        {
                            AssessmentModule AM = new AssessmentModule()
                            {
                                AssessmentModuleID       = 0,
                                AssessmentID             = CurrentlySelectedAssessment.AssessmentID,
                                CurriculumCourseModuleID = AssessmentModuleObj.CurriculumCourseModuleID,
                                ObjectState = EntityObjectState.Added,
                                PracticalAssessmentStatusID   = AssessmentModuleObj.PracticalAssessmentStatusID,
                                TheoriticalAssessmentStatusID = AssessmentModuleObj.TheoriticalAssessmentStatusID,
                                Notes = AssessmentModuleObj.Notes
                            };
                            CurrentlySelectedAssessment.AssessmentModules.Add(AM);
                            //check the ObjectState property and mark appropriate EntityState
                            if (AM.ObjectState == EntityObjectState.Added)
                            {
                                Dbconnection.Entry(AM).State = System.Data.Entity.EntityState.Added;
                            }
                            else if (AM.ObjectState == EntityObjectState.Modified)
                            {
                                Dbconnection.Entry(AM).State = System.Data.Entity.EntityState.Modified;
                            }
                            else if (AM.ObjectState == EntityObjectState.Deleted)
                            {
                                Dbconnection.Entry(AM).State = System.Data.Entity.EntityState.Deleted;
                            }
                            else
                            {
                                Dbconnection.Entry(AM).State = System.Data.Entity.EntityState.Unchanged;
                            }
                        }
                        ////saves all above operations within one transaction
                        Dbconnection.SaveChanges();

                        foreach (AssessmentReport AR in AssessmentReportList)
                        {
                            AR.AssessmentID = CurrentlySelectedAssessment.AssessmentID;
                            Dbconnection.AssessmentReports.Add(AR);
                        }
                        Dbconnection.SaveChanges();
                        //if (radConculsionCompetent.Checked)
                        //{
                        Dbconnection.CurriculumCourseEnrollments.Attach(CurrentlySelectedCurriculumCourseEnrollment);
                        CurrentlySelectedCurriculumCourseEnrollment.LookupEnrollmentProgressStateID = (int)Common.Enum.EnumEnrollmentProgressStates.Complete;
                        Dbconnection.SaveChanges();
                        Dbconnection.Entry(CurrentlySelectedCurriculumCourseEnrollment).Reference(a => a.LookupEnrollmentProgressState).Load();
                        //}
                        //else if (radConculsionNotYetCompetent.Checked)
                        //{

                        //}
                        //else if (radConculsionCourseInComplete.Checked)
                        //{

                        //}
                        //commit transaction
                        dbTran.Commit();
                    }
                    catch (Exception ex)
                    {
                        if (ex is DbEntityValidationException)
                        {
                            foreach (DbEntityValidationResult entityErr in ((DbEntityValidationException)ex).EntityValidationErrors)
                            {
                                foreach (DbValidationError error in entityErr.ValidationErrors)
                                {
                                    MessageBox.Show(error.ErrorMessage, "Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                }
                            }
                        }
                        else
                        {
                            MessageBox.Show(ex.Message, "Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        //Rollback transaction if exception occurs
                        dbTran.Rollback();
                    }
                }
            };
        }