public ActionResult Delete(int id)
        {
            var service = new JobPositionTypeProvider();

            service.Delete(id);
            return(new HttpStatusCodeResult(System.Net.HttpStatusCode.OK));
        }
        private void AssignToReviewer(Models.JobApplication applicant)
        {
            if (applicant == null || applicant.ReviewStatus != ReviewStatus.New)
            {
                return;
            }
            var applicantService    = new JobApplicationProvider();
            var positionTypeService = new JobPositionTypeProvider();
            var reviewerService     = new ReviewerProvider();
            var ghDataStore         = GreenHouseDataStore.Instance;
            var job = ghDataStore.GetJobById(applicant.JobId);

            if (job == null || job.Status != JobStates.Open)
            {
                applicant.ReviewStatus = ReviewStatus.JobClosed;
                applicantService.Update(applicant);

                _logger.InfoFormat("Applicant {0} is closed because it's job ({1}) is either deleted or not opened", applicant.Id, job?.Id);
                return;
            }

            if (applicant.Source == ApplicantSources.Referral && AppConfigsProvider.ReferralsHandlingConfigs.IsEnabled)
            {
                applicant.ReviewStatus = ReviewStatus.HandledAsReferral;
                applicantService.Update(applicant);
                SendEmailForReferral(applicant, job);

                _logger.InfoFormat("Applicant {0} of job {1} has been handled as a referral", applicant.Id, job.Id);
                return;
            }

            var positionTypeStr = job.GetCustomFieldValue(JobCustomFields.PositionType);
            var positionType    = positionTypeService.GetList(p => p.Name == positionTypeStr).FirstOrDefault();

            if (positionType == null)
            {
                _logger.WarnFormat("Position Type '{0}' is not available.", positionTypeStr);
                return;
            }
            var selectedReviewer = GetNextReviewer(positionType);

            if (selectedReviewer == null)
            {
                _logger.WarnFormat("Can not get any reviewers for the applicant {0}. It's either because there is no reviewers configured for this position type or all reviewers all not in working hours.", applicant.Id);
                return;
            }

            selectedReviewer.RecentAssignedAt = DateTime.UtcNow;
            selectedReviewer.AssignedCount++;

            applicant.ReviewerId           = selectedReviewer.Id;
            applicant.ReviewStatus         = ReviewStatus.Assigned;
            applicant.AssignedToReviewerAt = DateTime.UtcNow;

            applicantService.Update(applicant);
            reviewerService.Update(selectedReviewer);

            _logger.InfoFormat("Applicant {0} has been assigned to reviewer {1}", applicant.Id, selectedReviewer.Id);
            SendAssignmentEmail(selectedReviewer, applicant, job);
        }
 public ActionResult Create(JobPositionType jobCatg)
 {
     if (ModelState.IsValid)
     {
         var service = new JobPositionTypeProvider();
         var results = service.Add(jobCatg);
         return(Json(results));
     }
     return(new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest));
 }
        public ActionResult Edit(int id)
        {
            var service      = new JobPositionTypeProvider();
            var positionType = service.Get(id);

            if (positionType == null)
            {
                return(new HttpStatusCodeResult(System.Net.HttpStatusCode.NotFound));
            }
            return(Json(positionType));
        }
        public ActionResult Get(int id)
        {
            var service = new JobPositionTypeProvider();
            var results = service.Get(id);

            if (results == null)
            {
                return(new HttpStatusCodeResult(System.Net.HttpStatusCode.NotFound));
            }

            return(Json(results, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Index()
        {
            var service = new JobPositionTypeProvider();

            return(View(service.GetList()));
        }