public HttpResponseMessage GetApplicationById(int id) { Result result = new Result(); result = _jobApplicationManager.GetJobApplicationByApplicationId(id); //If failed if (!result.Success) { return(Request.CreateResponse(HttpStatusCode.BadRequest, result)); } //If if not found if (result.Entity == null) { return(Request.CreateResponse(HttpStatusCode.NotFound, result)); } // Authentication verify block object objuser = null; Request.Properties.TryGetValue("user", out objuser); var user = objuser as UserEntity; object objemployer = null; Request.Properties.TryGetValue("employer", out objemployer); var employer = objemployer as EmployerEntity; var application = (JobApplicationEntity)result.Entity; var response = new ApplicationWithInfo(); response.jobApplicationEntity = application; if (user != null) { // User logged in if (user.UserId != application.UserId) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, result)); } } else if (employer != null) { var listing = (JobListingEntity)_jobListingManager.GetListingById(application.JobListingId).Entity; if (employer.EmployerId != listing.EmployerId || application.IsDraft) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, new Result(false))); } } if (!application.IsDraft && (application.IsShortlisted == true) && (application.IsDeclined != true)) { // get details only if the application is shortlisted; var nurseEntity = (UserEntity)_usersManager.GetSecuredUserDetails(application.UserId).Entity; var nurseDetails = new UserModelSecured(); PropertyCopier <UserEntity, UserModelSecured> .Copy(nurseEntity, nurseDetails); var employerEntity = (EmployerEntity)_employersManager.GetEmployerById(application.EmployerId).Entity; var employerDetails = new EmployerModelSecured(); PropertyCopier <EmployerEntity, EmployerModelSecured> .Copy(employerEntity, employerDetails); var quizAnswers = (List <NurseSelfAssessmentAnswersEntity>)_nurseSelfAssessmentAnswersManager.GetAnswersbyUserQuizzId(nurseEntity.defaultQuizId).Entity; response.jobApplicationEntity.PreferedQuizz = quizAnswers; response.employerInfo = employerDetails; response.nurseInfo = nurseDetails; } //If it is good result.Entity = response; return(Request.CreateResponse(HttpStatusCode.OK, result)); }
public HttpResponseMessage Post([FromBody] JobApplicationEntity jobApplication) { Result result = new Result(); // Authentication verify block object objuser = null; Request.Properties.TryGetValue("user", out objuser); if (objuser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, result)); } var user = objuser as UserEntity; // check if listing is valid var jobListingEntity_Result = _jobListingManager.GetListingById(jobApplication.JobListingId); if (!jobListingEntity_Result.Success || jobListingEntity_Result.Entity == null) { result.Entity = null; result.Message = "Job Listing not exists"; result.Success = false; return(Request.CreateResponse(HttpStatusCode.BadRequest, result)); } var jobListingEntity = (JobListingEntity)jobListingEntity_Result.Entity; // check if listing expired if (DateTime.Compare(jobListingEntity.ApplicationDeadline, DateTime.Now) < 0) { result.Entity = null; result.Message = "Job Listing expired"; result.Success = false; return(Request.CreateResponse(HttpStatusCode.BadRequest, result)); } if (jobApplication.IsDraft) { jobApplication.ApplicationStatus = ApplicationStatus.Draft.ToString(); } else { jobApplication.ApplicationStatus = ApplicationStatus.Submitted.ToString(); } jobApplication.EmployerId = jobListingEntity.EmployerId; jobApplication.UserId = user.UserId; jobApplication.AppliedDate = DateTime.Now; jobApplication.LastModifiedDate = jobApplication.AppliedDate; jobApplication.IsShortlisted = false; jobApplication.IsDeclined = false; result = _jobApplicationManager.CreateJobApplication(jobApplication); // return failed if (!result.Success) { return(Request.CreateResponse(HttpStatusCode.BadRequest, result)); } // if success var response = new ApplicationWithInfo(); response.jobApplicationEntity = (JobApplicationEntity)result.Entity; result.Entity = response; return(Request.CreateResponse(HttpStatusCode.Created, result)); }