public ActionResult Edit(long?id) { var viewmodel = new SubjectRow(); if (id.HasValue) { viewmodel.subject = repository.GetSchoolSubject(id.Value).ToModel(); viewmodel.schoolList = repository.GetSchools().Select( x => new SelectListItem() { Text = x.name, Value = x.id.ToString(), Selected = (x.id == viewmodel.subject.schoolid) }); } else { viewmodel.schoolList = repository.GetSchools().Select( x => new SelectListItem() { Text = x.name, Value = x.id.ToString() }); } return(View(viewmodel)); }
/// <summary> /// Capability to render the body of a training participants list /// to PDF and HTML /// </summary> internal override void RenderBodyInternal(HtmlTemplateEngine sink) { /* get data */ var dt = Data.Tables[ReportDatatableIdentifiers.REPORT_DATATABLE_HARDCOPY_EMPLOYEE].Rows[0]; /* load the report body template */ var s = HtmlTemplateEngine.LoadTemplate("hardcopy_proofoftraining-1employee.ent", m); /* populate it fully */ s.Set("persnr", dt["PersNr"].ToString()); s.Set("employeename", dt["fEmployeeName"].ToString()); s.Set("employeeaddress", dt["fEmployeeAddress"].ToString()); s.Set("employeeplaceofbirth", dt["PlaceOfBirth"].ToString()); s.Set("orgcap", dt["OrgCap"].ToString()); s.Set("participations", dt["fParticipations"].ToString()); /* commit */ sink.SubmitPart(s.AsStringBuilder); /* cache the training subjects part */ int audienceid; var subjects = new Dictionary <int, List <SubjectRow> >(); var subs = Data.Tables[ReportDatatableIdentifiers.REPORT_DATATABLE_HARDCOPY_EMPLOYEE_TRAININGSUBJECTS]; foreach (DataRow sub in subs.Rows) { audienceid = Convert.ToInt32(sub["AudienceID"]); var subject_row = new SubjectRow(sub); if (subjects.ContainsKey(audienceid)) { subjects[audienceid].Add(subject_row); } else { subjects.Add(audienceid, new List <SubjectRow>() { subject_row }); } } /* populate the training participations part */ clsTemplate p = HtmlTemplateEngine.LoadTemplate("hardcopy_proofoftraining-2participations.ent", m); var partis = Data.Tables[ReportDatatableIdentifiers.REPORT_DATATABLE_HARDCOPY_EMPLOYEE_TRAININGHISTORY]; foreach (DataRow part in partis.Rows) { /* we re-use the same template */ p.ClearDynamic(); /* populate one instance */ p.Set("motivation", part["fMotivation"]); p.Set("nrcomposite", part["NrComposite"]); p.Set("orgcap", part["OrgCap"]); p.Set("workplace", part["Workplace"]); p.Set("trainer", part["fTrainerName"]); p.Set("responsible", part["fResponsibleName"]); p.Set("duration", part["fDuration"]); p.Set("remarks", part["ParticipationRemark"]); var room = part["fResource"].ToString(); var partner = part["TrainerPartnername"].ToString(); if (String.IsNullOrWhiteSpace(room) && String.IsNullOrWhiteSpace(partner)) { p.Set("roomorpartner_commentstart", Html.cstHTMLCommentStart); p.Set("roomorpartner_commentend", Html.cstHTMLCommentEnd); } else { p.Set("room", room); p.Set("partner", partner); } p.Set("date", part["fDate"]); p.Set("datetime", part["fDatetime"]); p.Set("tra_cap", part["fCaption"]); p.Set("topic", part["TopicCaption"]); var topic_description = part["TopicDescription"].ToString(); if (String.IsNullOrWhiteSpace(topic_description)) { p.Set("topicdescription_commentstart", Html.cstHTMLCommentStart); p.Set("topicdescription_commentend", Html.cstHTMLCommentEnd); } else { p.Set("description", topic_description); } /* get the subjects which apply, and append */ audienceid = Convert.ToInt32(part["AudienceID"]); var anysubjects = false; if (subjects.ContainsKey(audienceid)) { var ssubj = String.Empty; foreach (var subj in subjects[audienceid]) { ssubj = ssubj.ConcatWith(Environment.NewLine, subj.Text); } if (!String.IsNullOrWhiteSpace(ssubj)) { p.Set("subjects", ssubj); anysubjects = true; } } if (!anysubjects) { p.Set("anysubjects_commentstart", Html.cstHTMLCommentStart); p.Set("anysubjects_commentend", Html.cstHTMLCommentEnd); } /* send one instance */ sink.SubmitPart(p.AsStringBuilder); } }