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)); }
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")); }
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)); }