Beispiel #1
0
        /// <summary>
        /// Private method that converts the form data to XML
        /// </summary>
        /// <param name="vm"></param>
        /// <returns>An <see cref="XElement"/></returns>
        private XElement ViewModelToXML(PAFFormViewModel vm)
        {
            XElement root = new XElement("SmartPAF");

            PropertyInfo[] properties = typeof(PAFFormViewModel).GetProperties();
            foreach (PropertyInfo property in properties)
            {
                if (property.Name != "Components" && property.Name != "job" && property.Name != "JobList" && property.Name != "Users" && property.Name != "DocumentId" && property.Name != "PAFTypeChoices")
                {
                    root.Add(new XElement(property.Name, property.GetValue(vm), new XAttribute("id", property.Name)));
                }
            }
            SmartUser      author   = _repository.Users.FirstOrDefault(x => x.UserId == vm.AuthorUserId);
            SmartJob       smartJob = _repository.Jobs.FirstOrDefault(x => x.JobId == vm.JobId);
            JobDescription job      = new JobDescription(smartJob);

            root.Add(new XElement("AuthorName", author?.DisplayName ?? "Unknown", new XAttribute("AuthorName", author?.DisplayName ?? "Unknown")));
            XElement xJob = new XElement("JobDescription");

            xJob.Add(new XElement("ClassTitle", job.ClassTitle, new XAttribute("id", "ClassTitle")));
            xJob.Add(new XElement("WorkingTitle", job.WorkingTitle, new XAttribute("id", "WorkingTitle")));
            xJob.Add(new XElement("Grade", job.Grade, new XAttribute("id", "Grade")));
            xJob.Add(new XElement("WorkingHours", job.WorkingHours, new XAttribute("id", "WorkingHours")));
            xJob.Add(new XElement("JobId", job.SmartJobId, new XAttribute("id", "JobId")));
            root.Add(xJob);
            return(root);
        }
 public ActionResult Create([Bind(
                                 "SelectedPAFType," +
                                 "FirstName," +
                                 "LastName," +
                                 "DepartmentIdNumber," +
                                 "PayrollIdNumber," +
                                 "DepartmentIdNumber," +
                                 "DepartmentDivision," +
                                 "DepartmentDivisionCode," +
                                 "WorkPlaceAddress," +
                                 "AuthorUserId," +
                                 "StartDate," +
                                 "EndDate," +
                                 "JobId," +
                                 "Assessment," +
                                 "Recommendation")] PAFFormViewModel form)
 {
     if (!ModelState.IsValid)
     {
         // next, re-populate the VM drop down lists
         form.HydrateLists(_repository.Jobs.Select(x => new JobDescriptionListItem(x)).ToList(), _repository.Components.ToList(), _repository.Users.Select(x => new UserListItem(x)).ToList());
         // return the View with the validation messages
         ViewData["Title"] = "Create PAF: Error";
         return(View(form));
     }
     else
     {
         // validation success, create new generator and pass repo
         SmartPAFFactory factory = new SmartPAFFactory(_repository);
         // call generator method to pass form data
         factory.CreatePAF(form);
         // redirect to success view with PPA as querystring param
         return(RedirectToAction("SaveSuccess", new { id = factory.PAF.DocumentId }));
     }
 }
        /// <summary>
        /// Shows the view to create a new SmartPAF.
        /// </summary>
        /// <returns>An <see cref="ActionResult"/></returns>
        public ActionResult Create()
        {
            // create a new, empty ViewModel
            int currentUserId   = Convert.ToInt32(((ClaimsIdentity)User.Identity).FindFirst("UserId").Value);
            PAFFormViewModel vm = new PAFFormViewModel(currentUserId);

            vm.HydrateLists(_repository.Jobs.Select(x => new JobDescriptionListItem(x)).ToList(), _repository.Components.ToList(), _repository.Users.Select(x => new UserListItem(x)).ToList());
            ViewData["Title"] = "Create PAF";
            return(View(vm));
        }
        public ActionResult Edit(int id)
        {
            // pull the PAF from the repo
            SmartDocument   paf     = _repository.PerformanceAssessmentForms.FirstOrDefault(x => x.DocumentId == id);
            SmartPAFFactory factory = new SmartPAFFactory(_repository, paf);
            // pass the PPA to the factory method takes a SmartPPA parameter
            PAFFormViewModel vm = factory.GetViewModelFromXML();

            // populate the VM <select> lists
            vm.HydrateLists(_repository.Jobs.Select(x => new JobDescriptionListItem(x)).ToList(), _repository.Components.ToList(), _repository.Users.Select(x => new UserListItem(x)).ToList());
            // return the view
            ViewData["Title"] = "Edit PAF";
            return(View(vm));
        }
Beispiel #5
0
        /// <summary>
        /// Creates a new <see cref="SmartDocument"/> from the user-provided form data.
        /// </summary>
        /// <param name="vm">A <see cref="PAFFormViewModel"/></param>
        public void CreatePAF(PAFFormViewModel vm)
        {
            SmartDocument newDoc = new SmartDocument
            {
                AuthorUserId = vm.AuthorUserId,
                Type         = SmartDocument.SmartDocumentType.PAF,
                Created      = DateTime.Now,
                Edited       = DateTime.Now,
                FileName     = $"{vm.LastName}, {vm.FirstName} {vm.SelectedPAFType} {DateTime.Now:MM-dd-yy}.docx",
                Template     = _repository.Templates.FirstOrDefault(x => x.Name == ACTIVE_TEMPLATE_NAME),
                FormDataXml  = ViewModelToXML(vm)
            };

            PAF = _repository.SaveSmartDoc(newDoc);
        }
 public ActionResult Edit(int id, [Bind(
                                       "DocumentId," +
                                       "SelectedPAFType," +
                                       "FirstName," +
                                       "LastName," +
                                       "DepartmentIdNumber," +
                                       "PayrollIdNumber," +
                                       "DepartmentIdNumber," +
                                       "DepartmentDivision," +
                                       "DepartmentDivisionCode," +
                                       "WorkPlaceAddress," +
                                       "AuthorUserId," +
                                       "StartDate," +
                                       "EndDate," +
                                       "JobId," +
                                       "Assessment," +
                                       "Recommendation")] PAFFormViewModel form)
 {
     // if the querystring parameter id doesn't match the POSTed PAFId, return 404
     if (id != form.DocumentId)
     {
         return(NotFound());
     }
     if (!ModelState.IsValid)
     {
         // next, re-populate the VM drop down lists
         form.HydrateLists(_repository.Jobs.Select(x => new JobDescriptionListItem(x)).ToList(), _repository.Components.ToList(), _repository.Users.Select(x => new UserListItem(x)).ToList());
         ViewData["Title"] = "Edit PAF: Error";
         return(View(form));
     }
     else
     {
         if (form.JobId != 0)
         {
             JobDescription job = new JobDescription(_repository.Jobs.FirstOrDefault(x => x.JobId == form.JobId));
         }
         else
         {
             return(NotFound());
         }
         // validation success, create a new PAFGenerator and pass the repo as a parameter
         SmartPAFFactory factory = new SmartPAFFactory(_repository);
         // populate the form info into the generator
         factory.UpdatePAF(form);
         // redirect to the SaveSuccess view, passing the newly created PPA as a querystring param
         return(RedirectToAction("SaveSuccess", new { id = factory.PAF.DocumentId }));
     }
 }
Beispiel #7
0
        /// <summary>
        /// Updates an existing <see cref="SmartDocument"/> PAF from user-provided form data.
        /// </summary>
        /// <param name="vm">A <see cref="PAFFormViewModel"/></param>
        public void UpdatePAF(PAFFormViewModel vm)
        {
            SmartDocument toEdit = _repository.PerformanceAssessmentForms.FirstOrDefault(x => x.DocumentId == vm.DocumentId);

            if (toEdit != null)
            {
                toEdit.FormDataXml  = ViewModelToXML(vm);
                toEdit.AuthorUserId = vm.AuthorUserId;
                toEdit.Edited       = DateTime.Now;
                toEdit.FileName     = $"{vm.LastName}, {vm.FirstName} {vm.SelectedPAFType} {DateTime.Now:MM-dd-yy}.docx";
                toEdit.FormDataXml  = ViewModelToXML(vm);
                toEdit.Template     = _repository.Templates.FirstOrDefault(x => x.Name == ACTIVE_TEMPLATE_NAME);
                _repository.SaveSmartDoc(toEdit);
            }
            PAF = toEdit;
        }
Beispiel #8
0
        /// <summary>
        /// Converts an existing <see cref="SmartDocument"/>
        /// </summary>
        /// <returns></returns>
        public PAFFormViewModel GetViewModelFromXML()
        {
            XElement         root = PAF.FormDataXml;
            PAFFormViewModel vm   = new PAFFormViewModel()
            {
                DocumentId             = PAF.DocumentId,
                SelectedPAFType        = root.Element("SelectedPAFType").Value,
                FirstName              = root.Element("FirstName").Value,
                LastName               = root.Element("LastName").Value,
                DepartmentIdNumber     = root.Element("DepartmentIdNumber").Value,
                PayrollIdNumber        = root.Element("PayrollIdNumber").Value,
                DepartmentDivision     = root.Element("DepartmentDivision").Value,
                DepartmentDivisionCode = root.Element("DepartmentDivisionCode").Value,
                StartDate              = DateTime.Parse(root.Element("StartDate").Value),
                EndDate        = DateTime.Parse(root.Element("EndDate").Value),
                JobId          = Convert.ToInt32(root.Element("JobId").Value),
                AuthorUserId   = Convert.ToInt32(root.Element("AuthorUserId").Value),
                Assessment     = root.Element("Assessment").Value,
                Recommendation = root.Element("Recommendation").Value,
            };

            vm.HydrateLists(_repository.Jobs.Select(x => new JobDescriptionListItem(x)).ToList(), _repository.Components.ToList(), _repository.Users.Select(x => new UserListItem(x)).ToList());
            return(vm);
        }