public IActionResult Edit(int id)
        {
            SmartDocument smartJob = _repository.JobDescriptionForms.FirstOrDefault(x => x.DocumentId == id);
            SmartJobDescriptionFactory   factory = new SmartJobDescriptionFactory(_repository, smartJob);
            SmartJobDescriptionViewModel vm      = factory.GetViewModelFromXML();

            vm.JobList    = _repository.Jobs.Select(x => new JobDescriptionListItem(x)).ToList();
            vm.Users      = _repository.Users.Select(x => new UserListItem(x)).ToList();
            vm.Components = _repository.Components.ToList();

            // return the view
            ViewData["Title"] = "Edit Job Description";
            return(View(vm));
        }
Пример #2
0
        private XElement ViewModelToXML(SmartJobDescriptionViewModel vm)
        {
            XElement root = new XElement("SmartJobDescription");

            PropertyInfo[] properties = typeof(SmartJobDescriptionViewModel).GetProperties();
            root.Add(new XElement("DocumentId", _jobDescription?.DocumentId ?? vm.DocumentId, new XAttribute("DocumentId", _jobDescription?.DocumentId ?? vm.DocumentId)));
            foreach (PropertyInfo property in properties)
            {
                if (property.Name != "Categories" && property.Name != "Components" && property.Name != "job" && property.Name != "JobList" && property.Name != "Users" && property.Name != "DocumentId")
                {
                    root.Add(new XElement(property.Name, property.GetValue(vm), new XAttribute("id", property.Name)));
                }
            }
            SmartUser author = _repository.Users.FirstOrDefault(x => x.UserId == vm.AuthorUserId);

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

            job.Add(new XElement("ClassTitle", vm.job.ClassTitle, new XAttribute("id", "ClassTitle")));
            job.Add(new XElement("WorkingTitle", vm.job.WorkingTitle, new XAttribute("id", "WorkingTitle")));
            job.Add(new XElement("Grade", vm.job.Grade, new XAttribute("id", "Grade")));
            job.Add(new XElement("WorkingHours", vm.job.WorkingHours, new XAttribute("id", "WorkingHours")));
            job.Add(new XElement("JobId", vm.job.SmartJobId, new XAttribute("id", "JobId")));

            XElement categories = new XElement("Categories", new XAttribute("id", "Categories"));

            foreach (JobDescriptionCategory c in vm.job.Categories)
            {
                XElement category = new XElement("Category", new XAttribute("id", "Category"));
                category.Add(new XElement("Letter", c.Letter, new XAttribute("id", "Letter")));
                category.Add(new XElement("Weight", c.Weight, new XAttribute("id", "Weight")));
                category.Add(new XElement("Title", c.Title, new XAttribute("id", "Title")));
                XElement positionDescriptionFields = new XElement("PositionDescriptionFields", new XAttribute("id", "PositionDescriptionFields"));
                foreach (PositionDescriptionItem p in c.PositionDescriptionItems)
                {
                    positionDescriptionFields.Add(new XElement("PositionDescriptionItem", p.Detail));
                }
                category.Add(positionDescriptionFields);
                XElement performanceStandardFields = new XElement("PerformanceStandardFields", new XAttribute("id", "PerformanceStandardFields"));
                foreach (PerformanceStandardItem p in c.PerformanceStandardItems)
                {
                    performanceStandardFields.Add(new XElement("PerformanceStandardItem", p.Detail, new XAttribute("initial", p.Initial)));
                }
                category.Add(performanceStandardFields);
                categories.Add(category);
            }
            job.Add(categories);
            root.Add(job);
            return(root);
        }
        public IActionResult Edit(int id, [Bind(
                                               "DocumentId," +
                                               "FirstName," +
                                               "LastName," +
                                               "DepartmentIdNumber," +
                                               "PositionNumber," +
                                               "DepartmentDivision," +
                                               "DepartmentDivisionCode," +
                                               "WorkPlaceAddress," +
                                               "AuthorUserId," +
                                               "SupervisedByEmployee," +
                                               "JobId"
                                               )] SmartJobDescriptionViewModel form)
        {
            // if the querystring parameter id doesn't match the POSTed DcocumentId, return 404
            if (id != form.DocumentId)
            {
                return(NotFound());
            }
            if (!ModelState.IsValid)
            {
                // Model Validation failed
                // next, re-populate the VM drop down lists
                form.JobList      = _repository.Jobs.Select(x => new JobDescriptionListItem(x)).ToList();
                form.Users        = _repository.Users.Select(x => new UserListItem(x)).ToList();
                form.Components   = _repository.Components.ToList();
                ViewData["Title"] = "Edit Job Description: Error";
                return(View(form));
            }
            else
            {
                // validation success, create new generator and pass repo
                SmartJobDescriptionFactory factory = new SmartJobDescriptionFactory(_repository);
                if (form.JobId != 0)
                {
                    JobDescription job = new JobDescription(_repository.Jobs.FirstOrDefault(x => x.JobId == form.JobId));
                    form.job = job;
                }
                else
                {
                    return(NotFound());
                }

                // call generator method to pass form data
                factory.UpdateSmartJobDescription(form);
                // redirect to success view with PPA as querystring param
                return(RedirectToAction("SaveSuccess", new { id = factory._jobDescription.DocumentId }));
            }
        }
Пример #4
0
        public void UpdateSmartJobDescription(SmartJobDescriptionViewModel vm)
        {
            SmartDocument toEdit = _repository.JobDescriptionForms.FirstOrDefault(x => x.DocumentId == vm.DocumentId);

            if (toEdit != null)
            {
                toEdit.AuthorUserId = vm.AuthorUserId;
                toEdit.Edited       = DateTime.Now;
                toEdit.FileName     = $"{vm.LastName}, {vm.FirstName} Job Description {DateTime.Now.ToString("MM-dd-yy")}.docx";
                toEdit.FormDataXml  = ViewModelToXML(vm);
                toEdit.Template     = _repository.Templates.FirstOrDefault(x => x.Name == "SmartJobDescription");
                _repository.SaveSmartDoc(toEdit);
            }
            _jobDescription = toEdit;
        }
Пример #5
0
        public void CreateSmartJobDescription(SmartJobDescriptionViewModel vm)
        {
            SmartDocument newDoc = new SmartDocument
            {
                AuthorUserId = vm.AuthorUserId,
                Type         = SmartDocument.SmartDocumentType.JobDescription,
                Created      = DateTime.Now,
                Edited       = DateTime.Now,
                FileName     = $"{vm.LastName} {vm.FirstName} Job Description {DateTime.Now.ToString("MM-dd-yy")}.docx",
                Template     = _repository.Templates.FirstOrDefault(x => x.Name == "SmartJobDescription"),
                FormDataXml  = ViewModelToXML(vm)
            };

            _repository.SaveSmartDoc(newDoc);
            _jobDescription = newDoc;
        }
        public IActionResult Create()
        {
            int UserId = Convert.ToInt32(((ClaimsIdentity)User.Identity).FindFirst("UserId").Value);
            // create a new, empty ViewModel
            SmartJobDescriptionViewModel vm = new SmartJobDescriptionViewModel
            {
                // populate the ViewModel's lists that serve the <selects> on the form
                JobList    = _repository.Jobs.Select(x => new JobDescriptionListItem(x)).ToList(),
                Users      = _repository.Users.Select(x => new UserListItem(x)).ToList(),
                Components = _repository.Components.ToList(),
                // default the "Author" <select> with the session user
                AuthorUserId = UserId
            };

            ViewData["Title"] = "Create Job Description";
            return(View(vm));
        }
Пример #7
0
        public SmartJobDescriptionViewModel GetViewModelFromXML()
        {
            XElement root = _jobDescription.FormDataXml;
            SmartJobDescriptionViewModel vm = new SmartJobDescriptionViewModel
            {
                DocumentId             = _jobDescription.DocumentId,
                FirstName              = root.Element("FirstName").Value,
                LastName               = root.Element("LastName").Value,
                DepartmentIdNumber     = root.Element("DepartmentIdNumber").Value,
                PositionNumber         = root.Element("PositionNumber").Value,
                DepartmentDivision     = root.Element("DepartmentDivision").Value,
                DepartmentDivisionCode = root.Element("DepartmentDivisionCode").Value,
                WorkPlaceAddress       = root.Element("WorkPlaceAddress").Value,
                SupervisedByEmployee   = root.Element("SupervisedByEmployee").Value,
                JobId        = Convert.ToInt32(root.Element("JobId").Value),
                AuthorUserId = Convert.ToInt32(root.Element("AuthorUserId").Value),
            };

            vm.job = new JobDescription();

            XElement job = root.Element("JobDescription");

            vm.job.SmartJobId   = Convert.ToInt32(job.Element("JobId").Value);
            vm.job.ClassTitle   = job.Element("ClassTitle").Value;
            vm.job.WorkingTitle = job.Element("WorkingTitle").Value;
            vm.job.Grade        = job.Element("Grade").Value;
            vm.job.WorkingHours = job.Element("WorkingHours").Value;
            IEnumerable <XElement> CategoryList = job.Element("Categories").Elements("Category");

            foreach (XElement category in CategoryList)
            {
                JobDescriptionCategory cat = new JobDescriptionCategory
                {
                    Letter = category.Element("Letter").Value,
                    Weight = Convert.ToInt32(category.Element("Weight").Value),
                    Title  = category.Element("Title").Value
                };
                // each category contains a child element named "PositionDescriptionFields" that contains children named "PositionDescriptionItem"
                IEnumerable <XElement> positionDescriptionFields = category.Element("PositionDescriptionFields").Elements("PositionDescriptionItem");

                // loop through the PositionDescriptionItems and map to PositionDescriptionItem class objects
                foreach (XElement positionDescriptionItem in positionDescriptionFields)
                {
                    PositionDescriptionItem item = new PositionDescriptionItem {
                        Detail = positionDescriptionItem.Value
                    };
                    // add each object to the Category Object's collection
                    cat.PositionDescriptionItems.Add(item);
                }

                // each category contains a child element named "PerformanceStandardFields" that contains children named "PerformanceStandardItem"
                IEnumerable <XElement> performanceStandardFields = category.Element("PerformanceStandardFields").Elements("PerformanceStandardItem");

                // loop through the PerformanceStandardItems and map to PerformanceStandardItem class objects
                foreach (XElement performanceStandardItem in performanceStandardFields)
                {
                    PerformanceStandardItem item = new PerformanceStandardItem {
                        Initial = performanceStandardItem.Attribute("initial").Value, Detail = performanceStandardItem.Value
                    };
                    // add each object to the Category Object's collection
                    cat.PerformanceStandardItems.Add(item);
                }
                vm.job.Categories.Add(cat);
            }
            return(vm);
        }