public HttpResponseMessage UpdateFeedbackFromEmployer([FromBody] JobApplicationEntity applicationEntity) { Result result = new Result(); //Employer vertification object objemployer = null; Request.Properties.TryGetValue("employer", out objemployer); var employer = objemployer as EmployerEntity; if (objemployer == null || employer.EmployerId != applicationEntity.EmployerId) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, new Result(false))); } if (String.IsNullOrEmpty(applicationEntity.FeedbackFromEmployer) || String.IsNullOrWhiteSpace(applicationEntity.FeedbackFromEmployer)) { result.Message = "Feedback cannot be empty"; return(Request.CreateResponse(HttpStatusCode.BadRequest, result)); } result = _jobApplicationManager.UpdateFeedbackFromEmployer(applicationEntity); // return failed if (!result.Success) { return(Request.CreateResponse(HttpStatusCode.BadRequest, result)); } // if success return(Request.CreateResponse(HttpStatusCode.Created, result)); }
public async Task SeedDefaultUserAndRoles(bool isDevelopmentEnvironment) { _context.Database.EnsureCreated(); if (_context.Users.Any()) { // database has been seeded return; } if (isDevelopmentEnvironment) { await CreateUserAndRole(Roles.AdministratorRole, "*****@*****.**", "admin").ConfigureAwait(false); } for (var i = 0; i < NumberOfTestUsersToAdd; i++) { var user = await CreateUserAndRole(Roles.FreeUserRole, $"test{i}@test.com", $"test{i}").ConfigureAwait(false); for (var j = 0; j < NumberOfCompaniesToAdd; j++) { var jobApplication = new JobApplicationEntity { CompanyName = $"{user.UserName} Company {j}", ApplicationDate = new DateTime(2017, 11, 13), CurrentStatus = Status.Applied, Owner = user }; _context.JobApplications.Add(jobApplication); } } await _context.SaveChangesAsync().ConfigureAwait(false); }
public async void Create_ApplicationExists_ThrowException() { // Arrange var jobApplication = new JobApplicationEntity { Id = _jobApplicationEntities[0].Id, CompanyName = "New company", ApplicationDate = new DateTime(2017, 12, 20), CurrentStatus = Status.Offer }; _jobApplicationDbContext.JobApplications.Add(_jobApplicationEntities[0]); _jobApplicationDbContext.SaveChanges(); JobApplicationDbContext context = ContextFixture.GetContext(_guid); _jobApplicationRepository = new JobApplicationRepository(context); // Act Exception ex = await Record.ExceptionAsync(async() => await _jobApplicationRepository.Create(jobApplication).ConfigureAwait(false)) .ConfigureAwait(false); // Assert JobApplicationEntity entity = ContextFixture.GetContext(_guid).JobApplications.FirstOrDefault(x => x.Id == jobApplication.Id); Assert.Equal(entity, _jobApplicationEntities[0]); Assert.IsType <ArgumentException>(ex); Assert.NotNull(ex); }
public Result ShortlistOrDeclineJobApplication(JobApplicationEntity jobApplication) { Result result = new Result(); try { var con = new DapperConnectionManager(); var query = new QueryEntity(); query.Entity = jobApplication; query.Query = @" UPDATE JobApplications SET ApplicationStatus = @ApplicationStatus , IsShortlisted = @IsShortlisted, IsDeclined = @IsDeclined, ShortListedDate = ISNULL(@ShortListedDate, NULL), DeclinedDate = ISNULL(@DeclinedDate, NULL) WHERE JobApplicationId = @JobApplicationId AND JobListingId = @JobListingId AND UserId = @UserId; SELECT * FROM JobApplications WHERE JobApplicationId = @JobApplicationId AND JobListingId = @JobListingId and UserId = @UserId; "; result = con.ExecuteGetOneItemQuery <JobApplicationEntity>(query); return(result); } catch (Exception ex) { Logger.Log(ex); result.Success = false; result.Message = ex.Message; } return(result); }
public async void Update_ApplicationExists_UpdatesJobApplication() { // Arrange var jobApplication = new JobApplicationEntity { Id = _jobApplicationEntities[0].Id, CompanyName = "New company", ApplicationDate = new DateTime(2017, 12, 20), CurrentStatus = Status.Offer }; _jobApplicationDbContext.JobApplications.Add(_jobApplicationEntities[0]); _jobApplicationDbContext.SaveChanges(); JobApplicationDbContext context = ContextFixture.GetContext(_guid); _jobApplicationRepository = new JobApplicationRepository(context); // Act await _jobApplicationRepository.Update(jobApplication).ConfigureAwait(false); // Assert JobApplicationEntity entity = ContextFixture.GetContext(_guid).JobApplications.FirstOrDefault(x => x.Id == jobApplication.Id); Assert.Equal(jobApplication, entity); }
public Result UpdateFeedbackFromEmployer(JobApplicationEntity entity) { Result result = new Result(); try { var con = new DapperConnectionManager(); var query = new QueryEntity(); query.Entity = entity; query.Query = @" BEGIN TRAN Update JobApplications SET FeedbackFromEmployer = @FeedbackFromEmployer WHERE JobApplicationId = @JobApplicationId; Select * From JobApplications WHERE JobApplicationId = @JobApplicationId; COMMIT TRAN "; result = con.ExecuteGetOneItemQuery <JobApplicationEntity>(query); return(result); } catch (Exception ex) { Logger.Log(ex); result.Success = false; result.Message = ex.Message; } return(result); }
public async Task <JobApplication> AddNewApplication(JobApplication jobApplication) { JobApplicationUser user = await _userResolver.GetCurrentUser().ConfigureAwait(false); JobApplicationEntity jobApplicationEntity = _mapper.Map <JobApplication, JobApplicationEntity>(jobApplication, opt => opt.AfterMap((src, dest) => dest.Owner = user)); await _repository.Create(jobApplicationEntity).ConfigureAwait(false); return(_mapper.Map <JobApplication>(jobApplicationEntity)); }
public void GetOne_ApplicationwithCompanyNameDoesNotExist_ReturnsNull() { // Arrange // Act JobApplicationEntity jobApplication = _jobApplicationRepository.GetOne(x => x.CompanyName.Equals(_jobApplicationEntities[0].CompanyName)); // Assert Assert.Null(jobApplication); }
public JobApplication GetApplication(string companyName) { JobApplicationUser user = _userResolver.GetCurrentUser().Result; JobApplicationEntity jobApplication = _repository.GetOne(f => f.Owner.Equals(user) && f.CompanyName.Equals(companyName, StringComparison.Ordinal)); if (jobApplication != null) { return(_mapper.Map <JobApplication>(jobApplication)); } return(null); }
public void GetOne_SingleApplicationExists_Application() { // Arrange foreach (JobApplicationEntity jobApplication in _jobApplicationEntities) { _jobApplicationDbContext.JobApplications.Add(jobApplication); } _jobApplicationDbContext.SaveChanges(); // Act JobApplicationEntity result = _jobApplicationRepository.GetOne(x => x.CompanyName.Equals(_jobApplicationEntities[0].CompanyName)); // Assert Assert.Equal(_jobApplicationEntities[0], result); }
public Result UpdateJobApplication(JobApplicationEntity jobApplication) { Result result = new Result(); try { var con = new DapperConnectionManager(); var query = new QueryEntity(); query.Entity = jobApplication; query.Query = @" BEGIN TRAN IF EXISTS (SELECT * FROM JobApplications WHERE JobListingId = @JobListingId and UserId = @UserId ) BEGIN UPDATE JobApplications SET Summary = @Summary , IsDraft = @IsDraft, ApplicationStatus = @ApplicationStatus , LastModifiedDate= @LastModifiedDate WHERE JobListingId = @JobListingId and UserId = @UserId END ELSE BEGIN INSERT INTO JobApplications (JobListingId, UserId, Summary, IsDraft, ApplicationStatus, LastModifiedDate) VALUES (@JobListingId, @UserId, @Summary, @IsDraft, @ApplicationStatus, @LastModifiedDate ) END COMMIT TRAN "; result = con.ExecuteQuery(query); return(result); } catch (Exception ex) { Logger.Log(ex); result.Success = false; result.Message = ex.Message; } return(result); }
public async void Update_ApplicationDoesNotExist_ThrowException() { var jobApplication = new JobApplicationEntity { Id = _jobApplicationEntities[0].Id, CompanyName = "New company", ApplicationDate = new DateTime(2017, 12, 20), CurrentStatus = Status.Offer }; // Act Exception ex = await Record.ExceptionAsync(async() => await _jobApplicationRepository.Update(jobApplication).ConfigureAwait(false)) .ConfigureAwait(false); // Assert Assert.IsType <DbUpdateConcurrencyException>(ex); Assert.NotNull(ex); }
public async Task <JobApplication> UpdateApplication(string companyName, JobApplication newApplication) { JobApplicationUser user = await _userResolver.GetCurrentUser().ConfigureAwait(false); JobApplicationEntity oldJobApplication = _repository.GetOne(f => f.Owner.Equals(user) && f.CompanyName.Equals(companyName, StringComparison.Ordinal)); if (oldJobApplication == null) { return(null); } _mapper.Map(newApplication, oldJobApplication); await _repository.Update(oldJobApplication).ConfigureAwait(false); return(_mapper.Map <JobApplication>(oldJobApplication)); }
public async void Create_ApplicationDoesNotExist_InsertJobApplication() { // Arrange var jobApplication = new JobApplicationEntity { CompanyName = "Company 1", ApplicationDate = new DateTime(2017, 11, 13), CurrentStatus = Status.Interview }; // Act await _jobApplicationRepository.Create(jobApplication).ConfigureAwait(false); // Assert Assert.Equal(1, _jobApplicationDbContext.JobApplications.Count()); JobApplicationEntity entity = _jobApplicationDbContext.JobApplications.FirstOrDefault(); Assert.Equal(jobApplication, entity); }
public async Task AddNewApplication_ApplicationExists_ThrowException() { // Arrange var jobApplicationEntity = new JobApplicationEntity { CompanyName = _jobApplications[0].CompanyName, ApplicationDate = _jobApplications[0].ApplicationDate, CurrentStatus = _jobApplications[0].Status }; _jobApplicationRepository.Create(jobApplicationEntity).Returns(x => throw new ArgumentException("Could not create a new application")); _mapper.Map <JobApplication, JobApplicationEntity>(Arg.Any <JobApplication>(), opt => { }).ReturnsForAnyArgs(jobApplicationEntity); // Act Task <Exception> ex = Record.ExceptionAsync(() => _jobApplicationService.AddNewApplication(_jobApplications[0])); // Assert await _jobApplicationRepository.Received().Create(jobApplicationEntity).ConfigureAwait(false); Assert.NotNull(ex.Result); }
public async void AddNewApplication_ApplicationDoesNotExist_InsertJobApplication() { // Arrange _userResolver.GetCurrentUser().Returns(_user); var jobApplicationEntity = new JobApplicationEntity { Owner = _user, CompanyName = _jobApplications[0].CompanyName, ApplicationDate = _jobApplications[0].ApplicationDate, CurrentStatus = _jobApplications[0].Status }; _mapper.Map(_jobApplications[0], Arg.Any <Action <IMappingOperationOptions <JobApplication, JobApplicationEntity> > >()) .Returns(jobApplicationEntity); // Act await _jobApplicationService.AddNewApplication(_jobApplications[0]).ConfigureAwait(false); // Assert await _jobApplicationRepository.Received().Create(jobApplicationEntity).ConfigureAwait(false); }
public HttpResponseMessage UpdateFeedbackFromNurse([FromBody] JobApplicationEntity applicationEntity) { Result result = new Result(); // Authentication verify block object objuser = null; Request.Properties.TryGetValue("user", out objuser); if (objuser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, new Result(false))); } var user = objuser as UserEntity; if (applicationEntity.UserId != user.UserId) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, new Result(false))); } if (String.IsNullOrEmpty(applicationEntity.FeedbackFromNurse) || String.IsNullOrWhiteSpace(applicationEntity.FeedbackFromNurse)) { result.Message = "Feedback cannot be empty"; return(Request.CreateResponse(HttpStatusCode.BadRequest, result)); } result = _jobApplicationManager.UpdateFeedbackFromNurse(applicationEntity); //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)); } //If it is good return(Request.CreateResponse(HttpStatusCode.OK, result)); }
public JobApplicationServiceTest() { _jobApplicationRepository = Substitute.For <IRepository <JobApplicationEntity> >(); _mapper = Substitute.For <IMapper>(); _userResolver = Substitute.For <IUserResolverService>(); _user = new JobApplicationUser("*****@*****.**"); _jobApplicationService = new JobApplicationService(_jobApplicationRepository, _mapper, _userResolver); _jobApplications = new[] { new JobApplication { CompanyName = "Company 1", ApplicationDate = new DateTime(2017, 11, 13), Status = Status.Rejected }, new JobApplication { CompanyName = "Company 2", ApplicationDate = new DateTime(2017, 11, 14), Status = Status.Applied }, new JobApplication { CompanyName = "Company 3", ApplicationDate = new DateTime(2017, 11, 14), Status = Status.Interview }, new JobApplication { CompanyName = "Company 4", ApplicationDate = new DateTime(2017, 10, 9), Status = Status.Offer } }; _jobApplicationEntities = new List <JobApplicationEntity>(); foreach (var jobApplication in _jobApplications) { var jobApplicationEntity = new JobApplicationEntity { Owner = _user, CompanyName = jobApplication.CompanyName, ApplicationDate = jobApplication.ApplicationDate, CurrentStatus = jobApplication.Status }; _jobApplicationEntities.Add(jobApplicationEntity); } }
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)); }