示例#1
0
        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));
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
 public abstract RecruitmentProcessDTO Execute(RecruitmentProcessDTO process, string comments);
示例#8
0
        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);
        }
示例#9
0
 public RecruitmentProcessDTO Start(RecruitmentProcessDTO process, string comments)
 {
     state = new UnstartedRecruitmentState();
     return(state.Execute(process, comments));
 }
示例#10
0
 public override RecruitmentProcessDTO Execute(RecruitmentProcessDTO process, string comments)
 {
     return(process);
 }