コード例 #1
0
        public ActionResult Details(int applicationId)
        {
            // get application
            Application application = _applicationsRepository.GetApplicationById(applicationId);

            // get current user logged in
            int userIdCurrentlyLoggedIn = Int32.Parse(User.Claims.FirstOrDefault(uc => uc.Type == ClaimTypes.NameIdentifier).Value);

            // check if application does not exists
            if (application == null)
            {
                return(NotFound());
            }

            // check if application is not made by the applicant
            if (User.IsInRole("candidate"))
            {
                ViewBag.SelectedNav = "Profile";
                if (application.JobFinderUser.UserId != userIdCurrentlyLoggedIn)
                {
                    return(NotFound());
                }
            }

            // check if company user is not assigned to see the job listing
            if (User.IsInRole("hr"))
            {
                ViewBag.SelectedNav = "Dashboard";
                int companyId = application.JobListing.Company.CompanyId;
                if (!_companyUsersRepository.CompanyUserExists(userIdCurrentlyLoggedIn, companyId))
                {
                    return(NotFound());
                }
            }

            // retrieve data for application
            ApplicationEducation      applicationEducation      = _applicationEducationsRepository.GetApplicationEducationForApplication(applicationId);
            ApplicationWorkExperience applicationWorkExperience = _applicationWorkExperience.GetApplicationWorkExperienceForApplication(applicationId);
            ApplicationSkill          applicationSkill          = _applicationSkillsRepository.GetApplicationSkillForApplication(applicationId);

            // build a list for potential application statuses
            List <string> ApplicationStatuses = new List <string> {
                "Pending", "Contacted", "Accepted", "Rejected"
            };

            // build up a view model with all the data required to see an application
            ViewApplicationViewModel viewApplicationViewModel = new ViewApplicationViewModel
            {
                Application               = application,
                ApplicationEducation      = applicationEducation,
                ApplicationSkill          = applicationSkill,
                ApplicationWorkExperience = applicationWorkExperience,
                OtherNotes           = application.OtherNotes,
                Status               = application.Status,
                ApplicationWrittenAt = application.ApplicationWrittenAt
            };

            ViewBag.ApplicationStatuses = new SelectList(ApplicationStatuses, ApplicationStatuses);
            return(View(viewApplicationViewModel));
        }
コード例 #2
0
        public ActionResult Create(int jobId, IFormCollection collection)
        {
            Template jobTemplate             = _templatesRepository.GetTemplateByJobId(jobId);
            int      userIdCurrentlyLoggedIn = Int32.Parse(User.Claims.FirstOrDefault(uc => uc.Type == ClaimTypes.NameIdentifier).Value);

            Application application = new Application
            {
                Status = "Pending",
                UserId = userIdCurrentlyLoggedIn,
                ApplicationWrittenAt = DateTime.Now,
                JobListingId         = jobId
            };

            if (jobTemplate.OtherNotes == 1)
            {
                application.OtherNotes = collection["otherNotes"];
            }

            int ApplicationId = _applicationsRepository.AddApplication(application);

            if (jobTemplate.WorkExperience == 1)
            {
                ApplicationWorkExperience newApplicationWorkExperience = new ApplicationWorkExperience
                {
                    CompanyName      = collection["workExpCompanyName"],
                    StartDate        = DateTime.Parse(collection["workExpStartDate"]),
                    EndDate          = DateTime.Parse(collection["workExpEndDate"]),
                    Position         = collection["workExpPosition"],
                    Responsibilities = collection["workExpResponsibilities"],
                    Duties           = collection["workExpDuties"],
                    ApplicationId    = ApplicationId
                };
                _dbContext.ApplicationWorkExperiences.Add(newApplicationWorkExperience);
                _dbContext.SaveChanges();
            }
            if (jobTemplate.Skills == 1)
            {
                ApplicationSkill newApplicationSkill = new ApplicationSkill
                {
                    Name          = collection["skillName"],
                    Rating        = Int16.Parse(collection["skillRating"]),
                    Description   = collection["skillDescription"],
                    ApplicationId = ApplicationId
                };
                _dbContext.ApplicationSkills.Add(newApplicationSkill);
                _dbContext.SaveChanges();
            }
            if (jobTemplate.Education == 1)
            {
                ApplicationEducation newApplicationEducation = new ApplicationEducation
                {
                    SchoolName    = collection["schoolName"],
                    StartDate     = DateTime.Parse(collection["educationStartDate"]),
                    EndDate       = DateTime.Parse(collection["educationEndDate"]),
                    Degree        = collection["educationDegree"],
                    ApplicationId = ApplicationId
                };
                _dbContext.ApplicationEducations.Add(newApplicationEducation);
                _dbContext.SaveChanges();
            }

            ViewBag.SelectedNav = "Jobs";
            return(RedirectToAction("Index", "Jobs"));
        }
コード例 #3
0
        public ActionResult Create([Bind(Include = "ID,Priority,Comment,PostingID,ApplicantID")] Application application, int?id, IEnumerable <HttpPostedFileBase> theFiles, string[] selectedQualification, string[] selectedSkill)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            bool Valid = true;
            var  applicationToCheck = db.Applications.Where(a => a.PostingID == application.PostingID && a.ApplicantID == application.ApplicantID).SingleOrDefault();

            try
            {
                if (selectedQualification != null)                                  // null exception
                {
                    foreach (var q in selectedQualification)                        // loop through each value of the array
                    {
                        var qualificateToAdd = db.Qualification.Find(int.Parse(q)); // receive record from dataset by the id
                        // create new ApplicationQualification Object to add to the ApplicationQualification table
                        ApplicationQualification applicationQualification = new ApplicationQualification
                        {
                            Application     = application,
                            ApplicationID   = application.ID,
                            Qualification   = qualificateToAdd,
                            QualificationID = qualificateToAdd.ID
                        };
                        db.ApplicationQualification.Add(applicationQualification);
                    }
                }
                if (selectedSkill != null)
                {
                    foreach (var s in selectedSkill)
                    {
                        var skillToAdd = db.Skills.Find(int.Parse(s));
                        ApplicationSkill applicationSkill = new ApplicationSkill
                        {
                            Application   = application,
                            ApplicationId = application.ID,
                            Skill         = skillToAdd,
                            skillID       = skillToAdd.ID
                        };
                        db.ApplicationSkills.Add(applicationSkill);
                    }
                }
                if (ModelState.IsValid)
                {
                    AddDocuments(ref application, out Valid, theFiles);

                    if (Valid)
                    {
                        if (applicationToCheck != null)
                        {
                            db.Applications.Remove(applicationToCheck);
                        }


                        db.Applications.Add(application);
                        db.SaveChanges();
                        return(RedirectToAction("Index", "Postings"));
                    }
                    ModelState.AddModelError("", "You only be able to submit PDF or MS Word files.");
                }
            }
            catch (DataException dex)
            {
                ModelState.AddModelError("", "Unable to save changes.");
                if (dex.InnerException.InnerException.Message.Contains("ApplicantID"))
                {
                    return(RedirectToAction("Create", new { UserFlag = true }));
                }
            }


            var posting = (from p in db.Postings
                           where p.ID == id
                           select p).ToList();
            var applicant = db.Applicants.Where(a => a.apEMail == User.Identity.Name).Select(a => a.ID).SingleOrDefault();

            ViewBag.posting     = posting;
            ViewBag.applicantID = applicant;
            ViewBag.postingId   = id;
            return(View(application));
        }