/// <summary> /// Handles the Click event of the btnSave control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void btnSave_Click(object sender, EventArgs e) { ResidencyService <CompetencyPersonProjectAssessment> service = new ResidencyService <CompetencyPersonProjectAssessment>(); int competencyPersonProjectAssessmentId = hfCompetencyPersonProjectAssessmentId.ValueAsInt(); CompetencyPersonProjectAssessment competencyPersonProjectAssessment = service.Get(competencyPersonProjectAssessmentId); competencyPersonProjectAssessment.ResidentComments = tbResidentComments.Text; if (!competencyPersonProjectAssessment.IsValid) { // Controls will render the error messages return; } RockTransactionScope.WrapTransaction(() => { service.Save(competencyPersonProjectAssessment, CurrentPersonId); }); var qryParams = new Dictionary <string, string>(); qryParams["competencyPersonProjectAssessmentId"] = competencyPersonProjectAssessment.Id.ToString(); NavigateToPage(this.CurrentPage.Guid, qryParams); }
/// <summary> /// Handles the Click event of the btnCancel control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> protected void btnCancel_Click( object sender, EventArgs e ) { SetEditMode( false ); if ( hfCompetencyPersonProjectAssessmentId.ValueAsInt().Equals( 0 ) ) { // Cancelling on Add. Return to Grid // if this page was called from the Project Detail page, return to that string competencyPersonProjectId = PageParameter( "competencyPersonProjectId" ); if ( !string.IsNullOrWhiteSpace( competencyPersonProjectId ) ) { Dictionary<string, string> qryString = new Dictionary<string, string>(); qryString["competencyPersonProjectId"] = competencyPersonProjectId; NavigateToParentPage( qryString ); } else { NavigateToParentPage(); } } else { // Cancelling on Edit. Return to Details ResidencyService<CompetencyPersonProjectAssessment> service = new ResidencyService<CompetencyPersonProjectAssessment>(); CompetencyPersonProjectAssessment item = service.Get( hfCompetencyPersonProjectAssessmentId.ValueAsInt() ); ShowReadonlyDetails( item ); } }
/// <summary> /// Shows the edit details. /// </summary> /// <param name="competencyPersonProjectAssessment">The competency person project assessment.</param> private void ShowEditDetails( CompetencyPersonProjectAssessment competencyPersonProjectAssessment ) { if ( competencyPersonProjectAssessment.Id > 0 ) { lActionTitle.Text = ActionTitle.Edit( "Project Assessment" ); } else { lActionTitle.Text = ActionTitle.Add( "Project Assessment" ); } SetEditMode( true ); lblEditDetails.Text = new DescriptionList() .Add( "Resident", competencyPersonProjectAssessment.CompetencyPersonProject.CompetencyPerson.Person ) .Add( "Competency", competencyPersonProjectAssessment.CompetencyPersonProject.CompetencyPerson.Competency.Name ) .Add( "Project", string.Format( "{0} - {1}", competencyPersonProjectAssessment.CompetencyPersonProject.Project.Name, competencyPersonProjectAssessment.CompetencyPersonProject.Project.Description ) ) .Html; ppAssessor.SetValue( competencyPersonProjectAssessment.AssessorPerson ); dtpAssessmentDateTime.SelectedDateTime = competencyPersonProjectAssessment.AssessmentDateTime; lblOverallRating.Text = competencyPersonProjectAssessment.OverallRating.ToString(); tbRatingNotes.Text = competencyPersonProjectAssessment.RatingNotes; tbResidentComments.Text = competencyPersonProjectAssessment.ResidentComments; }
/// <summary> /// Handles the Click event of the btnEdit control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void btnEdit_Click(object sender, EventArgs e) { ResidencyService <CompetencyPersonProjectAssessment> service = new ResidencyService <CompetencyPersonProjectAssessment>(); CompetencyPersonProjectAssessment item = service.Get(hfCompetencyPersonProjectAssessmentId.ValueAsInt()); ShowEditDetails(item); }
/// <summary> /// Handles the Click event of the btnSave control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> protected void btnSave_Click(object sender, EventArgs e) { int projectPointOfAssessmentId = hfProjectPointOfAssessmentId.ValueAsInt(); int competencyPersonProjectAssessmentId = hfCompetencyPersonProjectAssessmentId.ValueAsInt(); var competencyPersonProjectAssessmentPointOfAssessmentService = new ResidencyService <CompetencyPersonProjectAssessmentPointOfAssessment>(); CompetencyPersonProjectAssessmentPointOfAssessment competencyPersonProjectAssessmentPointOfAssessment = null; competencyPersonProjectAssessmentPointOfAssessment = competencyPersonProjectAssessmentPointOfAssessmentService.Queryable() .Where(a => a.ProjectPointOfAssessmentId.Equals(projectPointOfAssessmentId) && a.CompetencyPersonProjectAssessmentId.Equals(competencyPersonProjectAssessmentId)) .FirstOrDefault(); if (competencyPersonProjectAssessmentPointOfAssessment == null) { // Create a record to store the rating for this PointOfAssessment if one doesn't already exist competencyPersonProjectAssessmentPointOfAssessment = new CompetencyPersonProjectAssessmentPointOfAssessment { Id = 0 }; competencyPersonProjectAssessmentPointOfAssessment.ProjectPointOfAssessmentId = projectPointOfAssessmentId; competencyPersonProjectAssessmentPointOfAssessment.CompetencyPersonProjectAssessmentId = competencyPersonProjectAssessmentId; competencyPersonProjectAssessmentPointOfAssessmentService.Add(competencyPersonProjectAssessmentPointOfAssessment, CurrentPersonId); } competencyPersonProjectAssessmentPointOfAssessment.Rating = tbRating.Text.AsInteger(); competencyPersonProjectAssessmentPointOfAssessment.RatingNotes = tbRatingNotes.Text; if (!competencyPersonProjectAssessmentPointOfAssessment.IsValid) { // Controls will render the error messages return; } RockTransactionScope.WrapTransaction(() => { competencyPersonProjectAssessmentPointOfAssessmentService.Save(competencyPersonProjectAssessmentPointOfAssessment, CurrentPersonId); // get the CompetencyPersonProjectAssessment using the same dbContext var competencyPersonProjectAssessmentService = new ResidencyService <CompetencyPersonProjectAssessment>(competencyPersonProjectAssessmentPointOfAssessmentService.ResidencyContext); CompetencyPersonProjectAssessment competencyPersonProjectAssessment = competencyPersonProjectAssessmentService.Get(competencyPersonProjectAssessmentId); // set Overall Rating based on average of POA ratings competencyPersonProjectAssessment.OverallRating = (decimal?)competencyPersonProjectAssessment.CompetencyPersonProjectAssessmentPointOfAssessments.Average(a => a.Rating); competencyPersonProjectAssessmentService.Save(competencyPersonProjectAssessment, CurrentPersonId); }); if (competencyPersonProjectAssessmentId != 0) { Dictionary <string, string> qryString = new Dictionary <string, string>(); qryString["competencyPersonProjectAssessmentId"] = competencyPersonProjectAssessmentId.ToString(); NavigateToParentPage(qryString); } else { NavigateToParentPage(); } }
/// <summary> /// Handles the Click event of the btnCancel control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void btnCancel_Click(object sender, EventArgs e) { SetEditMode(false); // Cancelling on Edit. Return to Details ResidencyService <CompetencyPersonProjectAssessment> service = new ResidencyService <CompetencyPersonProjectAssessment>(); CompetencyPersonProjectAssessment item = service.Get(hfCompetencyPersonProjectAssessmentId.ValueAsInt()); ShowReadonlyDetails(item); }
/// <summary> /// Shows the detail. /// </summary> /// <param name="itemKey">The item key.</param> /// <param name="itemKeyValue">The item key value.</param> /// <param name="competencyPersonProjectId">The competency person project id.</param> public void ShowDetail( string itemKey, int itemKeyValue, int? competencyPersonProjectId ) { // return if unexpected itemKey if ( itemKey != "competencyPersonProjectAssessmentId" ) { return; } pnlDetails.Visible = true; // Load depending on Add(0) or Edit CompetencyPersonProjectAssessment competencyPersonProjectAssessment = null; if ( !itemKeyValue.Equals( 0 ) ) { competencyPersonProjectAssessment = new ResidencyService<CompetencyPersonProjectAssessment>().Get( itemKeyValue ); } else { competencyPersonProjectAssessment = new CompetencyPersonProjectAssessment { Id = 0 }; competencyPersonProjectAssessment.CompetencyPersonProjectId = competencyPersonProjectId ?? 0; competencyPersonProjectAssessment.CompetencyPersonProject = new ResidencyService<CompetencyPersonProject>().Get( competencyPersonProjectAssessment.CompetencyPersonProjectId ); } hfCompetencyPersonProjectAssessmentId.Value = competencyPersonProjectAssessment.Id.ToString(); hfCompetencyPersonProjectId.Value = competencyPersonProjectAssessment.CompetencyPersonProjectId.ToString(); // render UI based on Authorized and IsSystem bool readOnly = false; nbEditModeMessage.Text = string.Empty; if ( !IsUserAuthorized( "Edit" ) ) { readOnly = true; nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed( CompetencyPersonProjectAssessment.FriendlyTypeName ); } if ( readOnly ) { btnEdit.Visible = false; ShowReadonlyDetails( competencyPersonProjectAssessment ); } else { btnEdit.Visible = true; if ( competencyPersonProjectAssessment.Id > 0 ) { ShowReadonlyDetails( competencyPersonProjectAssessment ); } else { ShowEditDetails( competencyPersonProjectAssessment ); } } }
/// <summary> /// Determines whether this instance can delete the specified item. /// </summary> /// <param name="item">The item.</param> /// <param name="errorMessage">The error message.</param> /// <returns> /// <c>true</c> if this instance can delete the specified item; otherwise, <c>false</c>. /// </returns> public bool CanDelete(CompetencyPersonProjectAssessment item, out string errorMessage) { errorMessage = string.Empty; if (new ResidencyService <CompetencyPersonProjectAssessmentPointOfAssessment>().Queryable().Any(a => a.CompetencyPersonProjectAssessmentId == item.Id)) { errorMessage = string.Format("This {0} is assigned to a {1}.", CompetencyPersonProjectAssessment.FriendlyTypeName, CompetencyPersonProjectAssessmentPointOfAssessment.FriendlyTypeName); return(false); } return(true); }
/// <summary> /// Shows the readonly details. /// </summary> /// <param name="competencyPersonProjectAssessment">The competency person project assessment.</param> private void ShowReadonlyDetails( CompetencyPersonProjectAssessment competencyPersonProjectAssessment ) { SetEditMode( false ); string projectText = string.Format( "{0} - {1}", competencyPersonProjectAssessment.CompetencyPersonProject.Project.Name, competencyPersonProjectAssessment.CompetencyPersonProject.Project.Description ); lblMainDetails.Text = new DescriptionList() .Add( "Resident", competencyPersonProjectAssessment.CompetencyPersonProject.CompetencyPerson.Person ) .Add( "Competency", competencyPersonProjectAssessment.CompetencyPersonProject.Project.Competency.Name ) .Add( "Project", projectText ) .StartSecondColumn() .Add( "Assessor", competencyPersonProjectAssessment.AssessorPerson ) .Add( "Assessment Date/Time", competencyPersonProjectAssessment.AssessmentDateTime ) .Add( "Rating", competencyPersonProjectAssessment.OverallRating.ToString() ) .Html; }
/// <summary> /// Shows the assessment details. /// </summary> /// <param name="competencyPersonProjectAssessment">The competency person project assessment.</param> private void ShowAssessmentDetails(CompetencyPersonProjectAssessment competencyPersonProjectAssessment) { string projectText = string.Format("{0} - {1}", competencyPersonProjectAssessment.CompetencyPersonProject.Project.Name, competencyPersonProjectAssessment.CompetencyPersonProject.Project.Description); lblProjectDetails.Text = new DescriptionList() .Add("Resident", competencyPersonProjectAssessment.CompetencyPersonProject.CompetencyPerson.Person) .Add("Competency", competencyPersonProjectAssessment.CompetencyPersonProject.Project.Competency.Name) .Add("Project", projectText) .StartSecondColumn() .Add("Assessor", competencyPersonProjectAssessment.AssessorPerson) .Add("Assessment Date/Time", competencyPersonProjectAssessment.AssessmentDateTime) .Add("Rating", competencyPersonProjectAssessment.OverallRating.ToString()) .Add("Rating Notes", competencyPersonProjectAssessment.RatingNotes) .Html; tbResidentComments.Text = competencyPersonProjectAssessment.ResidentComments; lblResidentComments.Text = new DescriptionList() .Add("Resident Comments", (competencyPersonProjectAssessment.ResidentComments ?? string.Empty).Replace("\n", "<br />")) .Html; BindGrid(); }
/// <summary> /// Handles the Click event of the btnSave control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> protected void btnSave_Click( object sender, EventArgs e ) { CompetencyPersonProjectAssessment competencyPersonProjectAssessment; ResidencyService<CompetencyPersonProjectAssessment> competencyPersonProjectAssessmentService = new ResidencyService<CompetencyPersonProjectAssessment>(); int competencyPersonProjectAssessmentId = int.Parse( hfCompetencyPersonProjectAssessmentId.Value ); if ( competencyPersonProjectAssessmentId == 0 ) { competencyPersonProjectAssessment = new CompetencyPersonProjectAssessment(); competencyPersonProjectAssessmentService.Add( competencyPersonProjectAssessment, CurrentPersonId ); } else { competencyPersonProjectAssessment = competencyPersonProjectAssessmentService.Get( competencyPersonProjectAssessmentId ); } competencyPersonProjectAssessment.CompetencyPersonProjectId = hfCompetencyPersonProjectId.ValueAsInt(); competencyPersonProjectAssessment.AssessorPersonId = ppAssessor.PersonId; competencyPersonProjectAssessment.AssessmentDateTime = dtpAssessmentDateTime.SelectedDateTime; competencyPersonProjectAssessment.RatingNotes = tbRatingNotes.Text; competencyPersonProjectAssessment.ResidentComments = tbResidentComments.Text; if ( !competencyPersonProjectAssessment.IsValid ) { // Controls will render the error messages return; } RockTransactionScope.WrapTransaction( () => { competencyPersonProjectAssessmentService.Save( competencyPersonProjectAssessment, CurrentPersonId ); } ); var qryParams = new Dictionary<string, string>(); qryParams["competencyPersonProjectAssessmentId"] = competencyPersonProjectAssessment.Id.ToString(); NavigateToPage( this.CurrentPage.Guid, qryParams ); }
/// <summary> /// Handles the Delete event of the gList control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="RowEventArgs"/> instance containing the event data.</param> protected void gList_Delete(object sender, RowEventArgs e) { RockTransactionScope.WrapTransaction(() => { var competencyPersonProjectAssessmentService = new ResidencyService <CompetencyPersonProjectAssessment>(); CompetencyPersonProjectAssessment competencyPersonProjectAssessment = competencyPersonProjectAssessmentService.Get((int)e.RowKeyValue); if (competencyPersonProjectAssessment != null) { string errorMessage; if (!competencyPersonProjectAssessmentService.CanDelete(competencyPersonProjectAssessment, out errorMessage)) { mdGridWarning.Show(errorMessage, ModalAlertType.Information); return; } competencyPersonProjectAssessmentService.Delete(competencyPersonProjectAssessment, CurrentPersonId); competencyPersonProjectAssessmentService.Save(competencyPersonProjectAssessment, CurrentPersonId); } }); BindGrid(); }
/// <summary> /// Shows the detail. /// </summary> /// <param name="itemKey">The item key.</param> /// <param name="itemKeyValue">The item key value.</param> public void ShowDetail(string itemKey, int itemKeyValue) { // return if unexpected itemKey if (itemKey != "competencyPersonProjectId") { return; } pnlDetails.Visible = true; hfCompetencyPersonProjectId.Value = this.PageParameter("competencyPersonProjectId"); int competencyPersonProjectId = hfCompetencyPersonProjectId.ValueAsInt(); // first try to get the key from the url (in case it from an emailed request) string emailedKey = Server.UrlDecode(this.PageParameter("gradeKey")); if (!string.IsNullOrWhiteSpace(emailedKey)) { // if they got here from email, put the key in session, and reload page without the key in the url to minimize chance of problems Session["residentGraderSessionKey"] = emailedKey; Dictionary <string, string> qryParams = new Dictionary <string, string>(); qryParams.Add("competencyPersonProjectId", competencyPersonProjectId.ToString()); NavigateToPage(this.CurrentPage.Guid, qryParams); return; } string encryptedKey = Session["residentGraderSessionKey"] as string; // clear the residentGraderSessionKey so they don't accidently grade this again with a stale grader login Session["residentGraderSessionKey"] = null; string residentGraderSessionKey = string.Empty; if (!string.IsNullOrWhiteSpace(encryptedKey)) { residentGraderSessionKey = Rock.Security.Encryption.DecryptString(encryptedKey); } string[] residentGraderSessionKeyParts = residentGraderSessionKey.Split(new char[] { '|' }); Person assessorPerson = null; bool fromEmailedRequest = false; // verify that the residentGraderSessionKey is for this Project, has a valid Person, and isn't stale (helps minimize the chance of incorrect teacher from a previous teacher login) if (residentGraderSessionKeyParts.Length == 3) { string userLoginGuid = residentGraderSessionKeyParts[1]; if (residentGraderSessionKeyParts[0].Equals(competencyPersonProjectId.ToString())) { //// a live (via Facilitator Login) request goes stale if it has been 10 minutes between the Login and this page loading //// an emailed request just sets Ticks to 0 since we can't really do anything to prevent it assessorPerson = new UserLoginService().Get(new Guid(userLoginGuid)).Person; string ticks = residentGraderSessionKeyParts[2]; if (ticks.Equals("0")) { // if ticks is 0, that means this is from an emailed request. fromEmailedRequest = true; } else { TimeSpan elapsed = DateTime.Now - new DateTime(long.Parse(ticks)); if (elapsed.TotalMinutes > 10) { // somehow, the session key is stale, so don't trust it assessorPerson = null; } } } } if (assessorPerson == null) { NavigateToGraderLogin(); return; } int assessorPersonId = assessorPerson.Id; hfAssessorPersonId.Value = assessorPerson.Id.ToString(); CompetencyPersonProject competencyPersonProject = new ResidencyService <CompetencyPersonProject>().Get(competencyPersonProjectId); if (competencyPersonProject.CompetencyPerson.PersonId != CurrentPersonId) { if (!fromEmailedRequest) { // somebody besides the Resident is logged in and this isn't an emailed grade request NavigateToParentPage(); return; } } hfCompetencyPersonProjectId.Value = competencyPersonProject.Id.ToString(); competencyPersonProject.CompetencyPersonProjectAssessments = competencyPersonProject.CompetencyPersonProjectAssessments ?? new List <CompetencyPersonProjectAssessment>(); // look for an incomplete assessment, or start a new one CompetencyPersonProjectAssessment competencyPersonProjectAssessment = competencyPersonProject.CompetencyPersonProjectAssessments .Where(a => a.AssessmentDateTime == null).FirstOrDefault(); if (competencyPersonProjectAssessment == null) { competencyPersonProjectAssessment = new CompetencyPersonProjectAssessment { CompetencyPersonProject = competencyPersonProject }; } hfCompetencyPersonProjectAssessmentId.Value = competencyPersonProjectAssessment.Id.ToString(); // populate page lblMainDetails.Text = new DescriptionList() .Add("Student", competencyPersonProject.CompetencyPerson.Person) .Add("Competency", competencyPersonProject.CompetencyPerson.Competency.Name) .Add("Project", string.Format("{0} - {1}", competencyPersonProject.Project.Name, competencyPersonProject.Project.Description)) .Html; List <ProjectPointOfAssessment> projectPointOfAssessmentList = new ResidencyService <ProjectPointOfAssessment>().Queryable() .Where(a => a.ProjectId == competencyPersonProject.ProjectId).ToList(); // get any POA Ratings that might exist List <CompetencyPersonProjectAssessmentPointOfAssessment> competencyPersonProjectAssessmentPointOfAssessmentList = new ResidencyService <CompetencyPersonProjectAssessmentPointOfAssessment>().Queryable() .Where(a => a.CompetencyPersonProjectAssessmentId == competencyPersonProjectAssessment.Id).ToList(); var competencyPersonProjectAssessmentPointOfAssessmentListJoined = from projectPointOfAssessment in projectPointOfAssessmentList join poa in competencyPersonProjectAssessmentPointOfAssessmentList on projectPointOfAssessment.Id equals poa.ProjectPointOfAssessmentId into groupJoin from qryResult in groupJoin.DefaultIfEmpty() select(qryResult ?? new CompetencyPersonProjectAssessmentPointOfAssessment { ProjectPointOfAssessmentId = projectPointOfAssessment.Id, ProjectPointOfAssessment = projectPointOfAssessment, CompetencyPersonProjectAssessmentId = competencyPersonProjectAssessment.Id, CompetencyPersonProjectAssessment = competencyPersonProjectAssessment }); rptPointOfAssessment.DataSource = competencyPersonProjectAssessmentPointOfAssessmentListJoined.OrderBy(a => a.ProjectPointOfAssessment.AssessmentOrder).ToList(); rptPointOfAssessment.DataBind(); tbRatingNotesOverall.Text = competencyPersonProjectAssessment.RatingNotes; }
/// <summary> /// Handles the Click event of the btnSave control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> protected void btnSave_Click(object sender, EventArgs e) { CompetencyPersonProject competencyPersonProject; ResidencyService <CompetencyPersonProject> competencyPersonProjectService = new ResidencyService <CompetencyPersonProject>(); CompetencyPersonProjectAssessment competencyPersonProjectAssessment; ResidencyService <CompetencyPersonProjectAssessment> competencyPersonProjectAssessmentService = new ResidencyService <CompetencyPersonProjectAssessment>(); ResidencyService <CompetencyPersonProjectAssessmentPointOfAssessment> competencyPersonProjectAssessmentPointOfAssessmentService = new ResidencyService <CompetencyPersonProjectAssessmentPointOfAssessment>(); int competencyPersonProjectId = hfCompetencyPersonProjectId.ValueAsInt(); if (competencyPersonProjectId == 0) { competencyPersonProject = new CompetencyPersonProject(); competencyPersonProjectService.Add(competencyPersonProject, CurrentPersonId); } else { competencyPersonProject = competencyPersonProjectService.Get(competencyPersonProjectId); } int competencyPersonProjectAssessmentId = hfCompetencyPersonProjectAssessmentId.ValueAsInt(); if (competencyPersonProjectAssessmentId == 0) { competencyPersonProjectAssessment = new CompetencyPersonProjectAssessment(); competencyPersonProjectAssessmentService.Add(competencyPersonProjectAssessment, CurrentPersonId); } else { competencyPersonProjectAssessment = competencyPersonProjectAssessmentService.Get(competencyPersonProjectAssessmentId); competencyPersonProjectAssessment.CompetencyPersonProjectAssessmentPointOfAssessments = new List <CompetencyPersonProjectAssessmentPointOfAssessment>(); } // set competencyPersonProjectAssessment.CompetencyPersonProjectId after saving competencyPersonProject in case it is new competencyPersonProjectAssessment.AssessmentDateTime = DateTime.Now; competencyPersonProjectAssessment.RatingNotes = tbRatingNotesOverall.Text; competencyPersonProjectAssessment.AssessorPersonId = hfAssessorPersonId.ValueAsInt(); if (!competencyPersonProjectAssessment.IsValid) { // Controls will render the error messages return; } List <CompetencyPersonProjectAssessmentPointOfAssessment> competencyPersonProjectAssessmentPointOfAssessmentList = new List <CompetencyPersonProjectAssessmentPointOfAssessment>(); foreach (RepeaterItem item in rptPointOfAssessment.Items.OfType <RepeaterItem>()) { HiddenField hfProjectPointOfAssessmentId = item.FindControl("hfProjectPointOfAssessmentId") as HiddenField; int projectPointOfAssessmentId = hfProjectPointOfAssessmentId.ValueAsInt(); CompetencyPersonProjectAssessmentPointOfAssessment competencyPersonProjectAssessmentPointOfAssessment = competencyPersonProjectAssessmentPointOfAssessmentService.Queryable() .Where(a => a.ProjectPointOfAssessmentId == projectPointOfAssessmentId) .Where(a => a.CompetencyPersonProjectAssessmentId == competencyPersonProjectAssessmentId).FirstOrDefault(); if (competencyPersonProjectAssessmentPointOfAssessment == null) { competencyPersonProjectAssessmentPointOfAssessment = new CompetencyPersonProjectAssessmentPointOfAssessment(); //// set competencyPersonProjectAssessmentPointOfAssessment.CompetencyPersonProjectAssessmentId = competencyPersonProjectAssessment.Id in save in case it's new competencyPersonProjectAssessmentPointOfAssessment.ProjectPointOfAssessmentId = projectPointOfAssessmentId; } LabeledDropDownList ddlPointOfAssessmentRating = item.FindControl("ddlPointOfAssessmentRating") as LabeledDropDownList; TextBox tbRatingNotesPOA = item.FindControl("tbRatingNotesPOA") as TextBox; competencyPersonProjectAssessmentPointOfAssessment.Rating = ddlPointOfAssessmentRating.SelectedValueAsInt(); competencyPersonProjectAssessmentPointOfAssessment.RatingNotes = tbRatingNotesPOA.Text; competencyPersonProjectAssessmentPointOfAssessmentList.Add(competencyPersonProjectAssessmentPointOfAssessment); } RockTransactionScope.WrapTransaction(() => { competencyPersonProjectService.Save(competencyPersonProject, CurrentPersonId); competencyPersonProjectAssessment.CompetencyPersonProjectId = competencyPersonProject.Id; // set Overall Rating based on average of POA ratings competencyPersonProjectAssessment.OverallRating = (decimal?)competencyPersonProjectAssessmentPointOfAssessmentList.Average(a => a.Rating); competencyPersonProjectAssessmentService.Save(competencyPersonProjectAssessment, CurrentPersonId); foreach (var competencyPersonProjectAssessmentPointOfAssessment in competencyPersonProjectAssessmentPointOfAssessmentList) { competencyPersonProjectAssessmentPointOfAssessment.CompetencyPersonProjectAssessmentId = competencyPersonProjectAssessment.Id; if (competencyPersonProjectAssessmentPointOfAssessment.Id == 0) { competencyPersonProjectAssessmentPointOfAssessmentService.Add(competencyPersonProjectAssessmentPointOfAssessment, CurrentPersonId); } competencyPersonProjectAssessmentPointOfAssessmentService.Save(competencyPersonProjectAssessmentPointOfAssessment, CurrentPersonId); } }); Rock.Model.Page page = null; string personProjectDetailPageGuid = this.GetAttributeValue("PersonProjectDetailPage"); if (!string.IsNullOrWhiteSpace(personProjectDetailPageGuid)) { page = new PageService().Get(new Guid(personProjectDetailPageGuid)); } if (page != null) { Dictionary <string, string> qryString = new Dictionary <string, string>(); qryString["competencyPersonProjectId"] = hfCompetencyPersonProjectId.Value; NavigateToPage(page.Guid, qryString); } else { throw new Exception("PersonProjectDetailPage not configured correctly"); } }
/// <summary> /// Shows the readonly details. /// </summary> /// <param name="competencyPersonProjectAssessment">The competency person project assessment.</param> private void ShowReadonlyDetails(CompetencyPersonProjectAssessment competencyPersonProjectAssessment) { SetEditMode(false); ShowAssessmentDetails(competencyPersonProjectAssessment); }
/// <summary> /// Shows the edit details. /// </summary> /// <param name="competencyPersonProjectAssessment">The competency person project assessment.</param> private void ShowEditDetails(CompetencyPersonProjectAssessment competencyPersonProjectAssessment) { SetEditMode(true); ShowAssessmentDetails(competencyPersonProjectAssessment); }