public ActionResult AddApplicantToJobOpening(int personId, int jobOpeningId, string email, string name, string comments) { if (Session[SessionConstants.Company] == null) { return(Json(null, JsonRequestBehavior.AllowGet)); } JobOfferDTO jobOpening = new JobOfferDTO(); jobOpening.JobOfferId = jobOpeningId; PersonDTO person = new PersonDTO(); person.PersonId = personId; person.Name = name; person.Email = email; RecruitmentProcessDTO process = new RecruitmentProcessDTO(); ApplicantDTO applicant = new ApplicantDTO(); applicant.JobOffer = jobOpening; applicant.Person = person; process.Applicant = applicant; RecruitmentProcessDTO result = processModel.Start(process, comments); if (result.State == RecruitmentProcessState.Started) { UpdateCompany(); } return(Json(new { state = result.State }, JsonRequestBehavior.AllowGet)); }
public void Start_ExistingEmail_PersonInProcessAlreadyReturn() { JobOfferDTO jobOpening = new JobOfferDTO(); jobOpening.JobOfferId = 1; PersonDTO person = new PersonDTO(); person.Name = "Carlos 2"; person.Email = "*****@*****.**"; RecruitmentProcessDTO process = new RecruitmentProcessDTO(); ApplicantDTO applicant = new ApplicantDTO(); applicant.JobOffer = jobOpening; applicant.Person = person; process.Applicant = applicant; string comments = "Tiene los conocimientos que se requieren para el Rol"; RecruitmentProcessDTO dto = new RecruitmentProcess().Start(process, comments); Assert.AreEqual(RecruitmentProcessState.PersonInProcessAlready, dto.State); }
public void Start_StartRecuitmentProcessWithNewPerson_ProcesStarted() { JobOfferDTO jobOpening = new JobOfferDTO(); jobOpening.JobOfferId = 1; PersonDTO person = new PersonDTO(); person.PersonId = 0; person.Name = "Juana Galindo"; person.Email = "*****@*****.**"; RecruitmentProcessDTO process = new RecruitmentProcessDTO(); ApplicantDTO applicant = new ApplicantDTO(); applicant.JobOffer = jobOpening; applicant.Person = person; process.Applicant = applicant; string comments = "Tiene los conocimientos que se requieren para el Rol"; RecruitmentProcessDTO dto = new RecruitmentProcess().Start(process, comments); Assert.AreEqual(RecruitmentProcessState.PersonInProcessAlready, dto.State); }
public void Start_JobOfferingIdIsNotSent_JobOpeningNotSentResult() { JobOfferDTO jobOpening = new JobOfferDTO(); jobOpening.JobOfferId = 0; RecruitmentProcessDTO process = new RecruitmentProcessDTO(); ApplicantDTO applicant = new ApplicantDTO(); applicant.JobOffer = jobOpening; process.Applicant = applicant; string comments = "Tiene los conocimientos que se requieren para el Rol"; RecruitmentProcessDTO dto = new RecruitmentProcess().Start(process, comments); Assert.AreEqual(RecruitmentProcessState.JobOpeningNotSent, dto.State); }
public RecruitmentProcessDTO Continue(int id, string comments) { RecruitmentProcessDTO element = (from p in db.RecruitmentProcesses where p.RecruitmentProcessId == id select p).FirstOrDefault(); if (element != null) { switch (element.State) { case RecruitmentProcessState.Started: state = new StartedRecruitmentState(); break; } element = state.Execute(element, comments); } return(element); }
public void Start_PersonDataIncomplete_IncompletePersonDataResult() { JobOfferDTO jobOpening = new JobOfferDTO(); jobOpening.JobOfferId = 1; PersonDTO person = new PersonDTO(); RecruitmentProcessDTO process = new RecruitmentProcessDTO(); ApplicantDTO applicant = new ApplicantDTO(); applicant.JobOffer = jobOpening; applicant.Person = person; process.Applicant = applicant; string comments = "Tiene los conocimientos que se requieren para el Rol"; RecruitmentProcessDTO dto = new RecruitmentProcess().Start(process, comments); Assert.AreEqual(RecruitmentProcessState.IncompletePersonData, dto.State); }
public abstract RecruitmentProcessDTO Execute(RecruitmentProcessDTO process, string comments);
public override RecruitmentProcessDTO Execute(RecruitmentProcessDTO process, string comments) { //Invalid Job Offer Id if (process.Applicant.JobOffer.JobOfferId <= 0) { process.State = RecruitmentProcessState.JobOpeningNotSent; return(process); } //Incomplete Person Data if ( (process.Applicant.Person.PersonId == 0 && String.IsNullOrEmpty(process.Applicant.Person.Email)) || (process.Applicant.Person.PersonId == 0 && !String.IsNullOrEmpty(process.Applicant.Person.Email) && !PersonEmailExistsAlready(process.Applicant.Person.Email) && String.IsNullOrEmpty(process.Applicant.Person.Name)) || (process.Applicant.Person.PersonId == 0 && String.IsNullOrEmpty(process.Applicant.Person.Email)) && String.IsNullOrEmpty(process.Applicant.Person.Name)) { process.State = RecruitmentProcessState.IncompletePersonData; return(process); } //New Person? Then we need to create it if (process.Applicant.Person.PersonId == 0 && !PersonEmailExistsAlready(process.Applicant.Person.Email)) { process.Applicant.Person.DateCreated = DateTime.Now; process.Applicant.Person.Title = ""; process.Applicant.Person = db.People.Add(process.Applicant.Person); db.SaveChanges(); } else { //Person Sent? Check that it exists if (process.Applicant.Person.PersonId > 0) { if (new Person().Get(process.Applicant.Person.PersonId) == null) { process.State = RecruitmentProcessState.PersonNotFound; return(process); } } //Person not sent & Email Sent? Check it exists if (process.Applicant.Person.PersonId == 0 && !String.IsNullOrEmpty(process.Applicant.Person.Email) && PersonEmailExistsAlready(process.Applicant.Person.Email)) { process.Applicant.Person = new Person().GetByEmail(process.Applicant.Person.Email); } //Check Person is not not Process already if (PersonIdInJobOpeningAlready(process.Applicant.Person.PersonId, process.Applicant.JobOffer.JobOfferId)) { process.State = RecruitmentProcessState.PersonInProcessAlready; return(process); } } ApplicantDTO applicant = new ApplicantDTO(); applicant.JobOfferId = process.Applicant.JobOffer.JobOfferId; applicant.PersonId = process.Applicant.Person.PersonId; applicant.DateCreated = DateTime.Now; applicant = db.Applicants.Add(applicant); db.SaveChanges(); process.Applicant = applicant; process.State = RecruitmentProcessState.Started; process.DateUpdated = DateTime.Now; process = db.RecruitmentProcesses.Add(process); RecruitmentProcessStepDTO step = new RecruitmentProcessStepDTO(); step.Name = "CandidateCreated"; step.DateCreated = DateTime.Now; step.RecruitmentProcessId = process.RecruitmentProcessId; db.RecruitmentProcessSteps.Add(step); db.SaveChanges(); return(process); }
public RecruitmentProcessDTO Start(RecruitmentProcessDTO process, string comments) { state = new UnstartedRecruitmentState(); return(state.Execute(process, comments)); }
public override RecruitmentProcessDTO Execute(RecruitmentProcessDTO process, string comments) { return(process); }