Example #1
0
        public List <JobApplicationStatus> SelectAllStatuses()
        {
            List <JobApplicationStatus> statusList = null;

            DataProvider.ExecuteCmd(GetConnection, "dbo.JobApplicationStatus_SelectAll",
                                    inputParamMapper : null,
                                    map : delegate(IDataReader reader, short set)
            {
                JobApplicationStatus status = new JobApplicationStatus();

                int ord = 0;

                status.Id   = reader.GetSafeInt32(ord++);
                status.Name = reader.GetSafeString(ord++);

                if (statusList == null)
                {
                    statusList = new List <JobApplicationStatus>();
                }
                statusList.Add(status);
            }
                                    );

            return(statusList);
        }
Example #2
0
        public JobApplication Find(int TableID, bool byPrimary = true, bool recursive = true)
        {
            string sql = "SELECT * FROM JobApplication WHERE " + (byPrimary ? " JobApplicationID " : " Applicant ")
                         + " = " + TableID;

            using (DataTable dt = this.DBHandler.Execute <DataTable>(CRUD.READ, sql))
            {
                if (dt.Rows.Count > 0)
                {
                    DataRow row = dt.Rows[0];

                    this.JobApplicationID = Int32.Parse(row["JobApplicationID"].ToString());
                    this.Status           = (JobApplicationStatus)Int32.Parse(row["Status"].ToString());

                    if (recursive)
                    {
                        this.Applicant = new Applicant(Int32.Parse(row["Applicant"].ToString()), byPrimary: true);

                        this.JobPosting = new JobPosting(Int32.Parse(row["JobPosting"].ToString()));
                    }

                    this.Schedule = this.GetSchedule(this.JobApplicationID);
                }
                else
                {
                    throw new Exception("Cannot find Job Posting with ID: " + TableID);
                }
            }
            return(this);
        }
Example #3
0
    JobApplicationEvent CreateEvent(JobApplicationStatus status)
    {
        var userId = this.GetSession().UserAuthId;

        return(new JobApplicationEvent
        {
            AppUserId = userId.ToInt(),
            Status = status,
            Description = status.ToDescription(),
            EventDate = DateTime.UtcNow,
        }.WithAudit(userId));
    }
Example #4
0
        public async Task <ActionResult> Apply(Guid jobId)
        {
            if (User.IsInRole(UserRoles.CanApplyForJobs))
            {
                var userId = User.Identity.GetUserId();
                Job job    = _jobRepo.ReadItem(jobId);

                //save job application to applications table
                JobApplicationStatus isApplicationSuccessful = _applicationsRepo.SaveJobApplication(userId, job);

                if (isApplicationSuccessful == JobApplicationStatus.Successuful)
                {
                    //update no of applicants in jobs table
                    _jobRepo.UpdateNoOfApplicantsCount(jobId);

                    //Notify Admin of application

                    ApplicationUser applicant = _applicationsRepo.GetApplicantDetails(userId);
                    await MailService.NotifyAdminOfApplicantion(applicant.FullName, job.Title);
                }

                if (isApplicationSuccessful == JobApplicationStatus.AlreadyApplied)
                {
                    return(View("ReApply", new ReApplyViewModel()
                    {
                        ApplicantName = _jobRepo.GetUserFullName(userId),
                        JobId = jobId,
                        JobTitle = job.Title,
                        ApplicantId = User.Identity.GetUserId()
                    }
                                ));
                }
                //Display Application status View
                var viewModel = new JobApplicationStatusViewModel()
                {
                    ApplicantName        = User.Identity.Name,
                    JobTitle             = _jobRepo.ReadItem(jobId).Title,
                    JobApplicationStatus = isApplicationSuccessful,
                };
                return(View("ApplicationStatus", viewModel));
            }
            else
            {
                return(RedirectToAction("Login", "Account", new { message = "Please Login as Applicant to continue." }));
            }
        }
Example #5
0
        public string GetOverrideEmail(ref JobApplicationStatus status, ref ApplicantInfo applicantInfo, bool isSocialMedia = false)
        {
            string ovverideEmail = null;

            if (SitefinityHelper.IsUserLoggedIn()) // User already logged in
            {
                var currUser = SitefinityHelper.GetUserById(ClaimsManager.GetCurrentIdentity().UserId);
                if (currUser != null)
                {
                    Log.Write("User is already logged In " + currUser.Email, ConfigurationPolicy.ErrorLog);
                    return(currUser.Email);
                }
            }

            // User not looged in
            if (!string.IsNullOrEmpty(applicantInfo.Email))
            {
                Telerik.Sitefinity.Security.Model.User existingUser = SitefinityHelper.GetUserByEmail(applicantInfo.Email);

                if (existingUser != null)
                {
                    #region Entered Email exists in Sitefinity User list
                    Log.Write("User is already exists in portal " + existingUser.Email, ConfigurationPolicy.ErrorLog);
                    ovverideEmail = existingUser.Email;
                    // check user exists in the JXT next DB
                    var memberResponse = _blConnector.GetMemberByEmail(applicantInfo.Email);
                    if (memberResponse.Member == null)
                    {
                        UserProfileManager userProfileManager = UserProfileManager.GetManager();
                        UserProfile        profile            = userProfileManager.GetUserProfile(existingUser.Id, typeof(SitefinityProfile).FullName);
                        var fName = Telerik.Sitefinity.Model.DataExtensions.GetValue(profile, "FirstName");
                        var lName = Telerik.Sitefinity.Model.DataExtensions.GetValue(profile, "LastName");
                        JXTNext_MemberRegister memberReg = new JXTNext_MemberRegister
                        {
                            Email     = existingUser.Email,
                            FirstName = fName.ToString(),
                            LastName  = lName.ToString(),
                            Password  = existingUser.Password
                        };

                        if (_blConnector.MemberRegister(memberReg, out string errorMessage))
                        {
                            Log.Write("User created JXT next DB" + existingUser.Email, ConfigurationPolicy.ErrorLog);
                        }
                    }
                    return(ovverideEmail);

                    #endregion
                }
                else
                {
                    #region Entered email does not exists in sitefinity User list
                    var membershipCreateStatus = SitefinityHelper.CreateUser(applicantInfo.Email, applicantInfo.Password, applicantInfo.FirstName, applicantInfo.LastName, applicantInfo.Email, applicantInfo.PhoneNumber,
                                                                             null, null, true, true);
                    applicantInfo.IsNewUser = true;
                    if (membershipCreateStatus != MembershipCreateStatus.Success)
                    {
                        Log.Write("User is created in portal " + existingUser.Email, ConfigurationPolicy.ErrorLog);
                        status = JobApplicationStatus.NotAbleToCreateUser;
                        return(ovverideEmail);
                    }
                    else
                    {
                        //instantiate the Sitefinity user manager
                        //if you have multiple providers you have to pass the provider name as parameter in GetManager("ProviderName") in your case it will be the asp.net membership provider user
                        UserManager userManager = UserManager.GetManager();
                        if (userManager.ValidateUser(applicantInfo.Email, applicantInfo.Password))
                        {
                            //if you need to get the user instance use the out parameter
                            Telerik.Sitefinity.Security.Model.User userToAuthenticate = null;
                            SecurityManager.AuthenticateUser(userManager.Provider.Name, applicantInfo.Email, applicantInfo.Password, false, out userToAuthenticate);
                            if (userToAuthenticate == null)
                            {
                                status = JobApplicationStatus.NotAbleToLoginCreatedUser;
                                return(ovverideEmail);
                            }
                            else
                            {
                                ovverideEmail = userToAuthenticate.Email;
                            }
                        }
                    }
                    #endregion
                }
            }

            return(ovverideEmail);
        }
        public ActionResult Index(string code, string state, int?JobId)
        {
            SocialMediaJobViewModel viewModel = new SocialMediaJobViewModel();

            try
            {
                // Logging this info for Indeed test
                Log.Write("Social Handler Index Action Start : ", ConfigurationPolicy.ErrorLog);

                // This is the CSS classes enter from More Options
                ViewBag.CssClass = this.CssClass;

                if (string.IsNullOrWhiteSpace(this.TemplateName))
                {
                    this.TemplateName = "SocialHandler.Simple";
                }

                viewModel.Status = JobApplicationStatus.Available;

                if (_socialHandlerLogics != null)
                {
                    Log.Write("_socialHandlerLogics not null", ConfigurationPolicy.ErrorLog);
                    if (Request.InputStream != null)
                    {
                        Request.InputStream.Position = 0;
                    }

                    StreamReader reader = new StreamReader(Request.InputStream);
                    string       indeedJsonStringData  = String.Empty;
                    string       indeedJsonStringData2 = null;
                    if (reader != null)
                    {
                        indeedJsonStringData = reader.ReadToEnd();
                    }

                    using (StreamReader reader2 = new StreamReader(Request.InputStream, Encoding.UTF8))
                    {
                        indeedJsonStringData2 = reader.ReadToEnd();
                    }
                    SocialMediaProcessedResponse result = null;
                    if (!code.IsNullOrEmpty())
                    {
                        result = _processSocialMediaSeekData.ProcessData(code, state, indeedJsonStringData);
                        if (TempData["source"] != null && !string.IsNullOrWhiteSpace(TempData["source"].ToString()))
                        {
                            result.UrlReferral = TempData["source"].ToString();
                        }
                    }
                    else if (code.IsNullOrEmpty() && !indeedJsonStringData.IsNullOrEmpty())
                    {
                        result             = _processSocialMediaIndeedData.ProcessData(code, state, indeedJsonStringData);
                        result.UrlReferral = result.JobSource;
                    }
                    else
                    {
                        Log.Write("Social Handler code,sate and indeed data is null", ConfigurationPolicy.ErrorLog);
                    }


                    var jobDetails = GetJobDetails(result.JobId.Value);
                    //var result = _socialHandlerLogics.ProcessSocialHandlerData(code, state, indeedJsonStringData);
                    if (result != null && result.ResumeLinkNotExists)
                    {
                        if (!jobDetails.JobSEOUrl.IsNullOrEmpty())
                        {
                            return(Redirect(string.Format("job-application/{0}/{1}?error=resume", jobDetails.JobSEOUrl, int.Parse(state))));
                        }
                        else
                        {
                            return(Redirect(string.Format("job-application/{0}?error=resume", int.Parse(state))));
                        }
                    }


                    if (result != null && result.Success == true && result.JobId.HasValue)
                    {
                        JobApplicationStatus status = JobApplicationStatus.Available;
                        if (_jobApplicationService != null)
                        {
                            ApplicantInfo applicantInfo = new ApplicantInfo()
                            {
                                FirstName   = result.FirstName,
                                LastName    = result.LastName,
                                Email       = result.Email,
                                Password    = "******",
                                PhoneNumber = result.PhoneNumber,
                                IsNewUser   = false
                            };

                            string overrideEmail = string.Empty;
                            if (SitefinityHelper.IsUserLoggedIn())
                            {
                                var currUser = SitefinityHelper.GetUserById(ClaimsManager.GetCurrentIdentity().UserId);
                                if (currUser != null)
                                {
                                    Log.Write("User is already logged In " + currUser.Email, ConfigurationPolicy.ErrorLog);
                                    overrideEmail = currUser.Email;
                                }
                                else
                                {
                                    Log.Write("CurUser is null", ConfigurationPolicy.ErrorLog);
                                    overrideEmail = _jobApplicationService.GetOverrideEmail(ref status, ref applicantInfo, true);
                                }
                                Log.Write("SitefinityHelper.IsUserLoggedIn() =" + SitefinityHelper.IsUserLoggedIn(), ConfigurationPolicy.ErrorLog);
                            }
                            else if (!string.IsNullOrEmpty(result.LoginUserEmail))
                            {
                                overrideEmail = result.LoginUserEmail;
                            }
                            else
                            {
                                Log.Write("SitefinityHelper.IsUserLoggedIn() is false ", ConfigurationPolicy.ErrorLog);
                                overrideEmail = _jobApplicationService.GetOverrideEmail(ref status, ref applicantInfo, true);
                            }

                            Log.Write("overrideEmail is : " + overrideEmail, ConfigurationPolicy.ErrorLog);
                            if (overrideEmail != null && status == JobApplicationStatus.Available)
                            {
                                Log.Write("overrideEmail is in: ", ConfigurationPolicy.ErrorLog);

                                //Create Application
                                var response = CreateJobApplication(result, jobDetails, applicantInfo, overrideEmail);

                                if (response.MemberApplicationResponse.Success && response.MemberApplicationResponse.ApplicationID.HasValue)
                                {
                                    if (!response.FilesUploaded)
                                    {
                                        viewModel.Status  = response.Status; // Unable to attach files
                                        viewModel.Message = response.Message;
                                    }
                                    else
                                    {
                                        viewModel.Status  = response.Status;
                                        viewModel.Message = response.Message;
                                        if (!this.JobApplicationSuccessPageId.IsNullOrEmpty())
                                        {
                                            Log.Write("JobApplicationSuccessPageId is not null: ", ConfigurationPolicy.ErrorLog);
                                            var successPageUrl = SitefinityHelper.GetPageUrl(this.JobApplicationSuccessPageId);
                                            Log.Write("successPageUrl : " + successPageUrl, ConfigurationPolicy.ErrorLog);
                                            return(Redirect(successPageUrl));
                                        }
                                    }
                                }
                                else
                                {
                                    if (viewModel.Status == JobApplicationStatus.Already_Applied)
                                    {
                                        if (!jobDetails.JobSEOUrl.IsNullOrEmpty())
                                        {
                                            return(Redirect(string.Format("job-application/{0}/{1}?error=exists", jobDetails.JobSEOUrl, result.JobId.Value)));
                                        }
                                        else
                                        {
                                            return(Redirect(string.Format("job-application/{0}?error=exists", result.JobId.Value)));
                                        }
                                    }
                                    viewModel.Status  = response.Status;
                                    viewModel.Message = response.Message;
                                }
                            }
                            else
                            {
                                Log.Write("overrideEmail is null: ", ConfigurationPolicy.ErrorLog);

                                if (status == JobApplicationStatus.NotAbleToLoginCreatedUser)
                                {
                                    viewModel.Message = "Unable to process your job application. Please try logging in and re-apply for the job.";
                                }
                                else if (status == JobApplicationStatus.NotAbleToCreateUser)
                                {
                                    viewModel.Message = "Unable to create user. Please register from";
                                }

                                viewModel.Status = status;
                            }
                        }
                        else
                        {
                            Log.Write("_jobApplicationService is null", ConfigurationPolicy.ErrorLog);
                        }
                    }
                }
            }

            catch (Exception ex)
            {
                Log.Write("Social Handler : Exception Caught" + ex.Message, ConfigurationPolicy.ErrorLog);
            }



            // To catch access denied error for seek
            int jobId;

            if (!string.IsNullOrEmpty(this.Request.QueryString["error"]) && this.Request.QueryString["error"].ToLower().Contains("denied") && state != null && int.TryParse(state, out jobId))
            {
                var jobDetails = GetJobDetails(jobId);
                if (!jobDetails.JobSEOUrl.IsNullOrEmpty())
                {
                    return(Redirect(string.Format("job-application/{0}/{1}?error=denied", jobDetails.JobSEOUrl, jobId)));
                }
                else
                {
                    return(Redirect(string.Format("job-application/{0}?error=resume", jobId)));
                }
            }


            if (!this.JobSearchResultsPageId.IsNullOrEmpty())
            {
                ViewBag.JobSearchResultsUrl = SitefinityHelper.GetPageUrl(this.JobSearchResultsPageId);
            }

            var fullTemplateName = this.templateNamePrefix + this.TemplateName;

            return(View(fullTemplateName, viewModel));
        }