public async Task <ApiResponse> Handle(DeleteCandidateDetailCommand request, CancellationToken cancellationToken) { ApiResponse response = new ApiResponse(); try { HiringRequestCandidates projectCandidateDetail = new HiringRequestCandidates(); ProjectHiringRequestDetail hrDetail = new ProjectHiringRequestDetail(); if (request.HiringRequestId != 0) { projectCandidateDetail = await _dbContext.HiringRequestCandidates .FirstOrDefaultAsync(x => x.IsDeleted == false && x.HiringRequestId == request.HiringRequestId && x.CandidateId == request.CandidateId); if (projectCandidateDetail != null) { projectCandidateDetail.IsDeleted = true; projectCandidateDetail.ModifiedById = request.ModifiedById; projectCandidateDetail.ModifiedDate = request.ModifiedDate; await _dbContext.SaveChangesAsync(); // note: to update filled vacancire in hiring request detail page hrDetail = await _dbContext.ProjectHiringRequestDetail .FirstOrDefaultAsync(x => x.HiringRequestId == request.HiringRequestId && x.IsDeleted == false); if (hrDetail == null) { throw new Exception("Hiring Job not found"); } int count = await _dbContext.HiringRequestCandidates .CountAsync(x => x.HiringRequestId == request.HiringRequestId && x.IsDeleted == false && x.IsSelected); hrDetail.FilledVacancies = count; hrDetail.ModifiedById = request.ModifiedById; hrDetail.ModifiedDate = request.ModifiedDate; await _dbContext.SaveChangesAsync(); } else { throw new Exception("No Candidate found"); } } response.ResponseData = hrDetail; response.StatusCode = StaticResource.successStatusCode; response.Message = "Success"; } catch (Exception ex) { response.StatusCode = StaticResource.failStatusCode; response.Message = ex.Message; } return(response); }
public async Task <ApiResponse> Handle(AddHiringRequestCandidateCommand request, CancellationToken cancellationToken) { ApiResponse response = new ApiResponse(); try { var employeeExist = await _dbContext.HiringRequestCandidates .FirstOrDefaultAsync(x => x.EmployeeID == request.EmployeeID && x.HiringRequestId == request.HiringRequestId && x.IsDeleted == false); if (employeeExist == null) { HiringRequestCandidates candidateDeatil = new HiringRequestCandidates() { HiringRequestId = request.HiringRequestId, EmployeeID = request.EmployeeID, CreatedById = request.CreatedById, CreatedDate = request.CreatedDate, IsDeleted = false, }; await _dbContext.HiringRequestCandidates.AddAsync(candidateDeatil); await _dbContext.SaveChangesAsync(); } else { throw new Exception("Candidate already exists with a job in project"); } response.StatusCode = StaticResource.successStatusCode; response.Message = "Success"; } catch (Exception ex) { response.StatusCode = StaticResource.failStatusCode; response.Message = ex.Message; } return(response); }
public async Task <ApiResponse> Handle(HiringRequestSelectCandidateCommand request, CancellationToken cancellationToken) { ApiResponse response = new ApiResponse(); try { if (request != null) { HiringRequestCandidates hiringRequestCandidates = await _dbContext.HiringRequestCandidates .FirstOrDefaultAsync(x => x.IsDeleted == false && x.EmployeeID == request.EmployeeId && x.HiringRequestId == request.HiringRequestId); if (hiringRequestCandidates != null) { hiringRequestCandidates.IsSelected = true; hiringRequestCandidates.ModifiedById = request.ModifiedById; hiringRequestCandidates.ModifiedDate = request.ModifiedDate; hiringRequestCandidates.IsDeleted = false; await _dbContext.SaveChangesAsync(); } else { throw new Exception("Candidate not found"); } //update the hiring request table when candidate is selected ProjectHiringRequestDetail hrDetail = await _dbContext.ProjectHiringRequestDetail .FirstOrDefaultAsync(x => x.HiringRequestId == request.HiringRequestId && x.IsDeleted == false); if (hrDetail != null) { int count = await _dbContext.HiringRequestCandidates.Where(x => x.HiringRequestId == request.HiringRequestId && x.IsDeleted == false).CountAsync(x => x.IsSelected); hrDetail.FilledVacancies = count; await _dbContext.SaveChangesAsync(); } else { throw new Exception("Hiring Job not found"); } EmployeeSalaryAnalyticalInfo analyticalInfo = new EmployeeSalaryAnalyticalInfo(); analyticalInfo.IsDeleted = false; analyticalInfo.CreatedById = request.CreatedById; analyticalInfo.CreatedDate = request.CreatedDate; analyticalInfo.EmployeeID = request.EmployeeId; analyticalInfo.BudgetlineId = request.BudgetLineId; analyticalInfo.ProjectId = request.ProjectId; analyticalInfo.HiringRequestId = request.HiringRequestId; await _dbContext.EmployeeSalaryAnalyticalInfo.AddAsync(analyticalInfo); await _dbContext.SaveChangesAsync(); response.ResponseData = hrDetail; } response.StatusCode = StaticResource.successStatusCode; response.Message = "Success"; } catch (Exception ex) { response.StatusCode = StaticResource.failStatusCode; response.Message = ex.Message; } return(response); }