Ejemplo n.º 1
0
        public async Task <ApiResponse> Handle(CompleteHiringRequestCommand request, CancellationToken cancellationToken)
        {
            ApiResponse response = new ApiResponse();

            try
            {
                ProjectHiringRequestDetail projectHiringRequestDetail = new ProjectHiringRequestDetail();
                if (request.hiringRequestId != 0)
                {
                    projectHiringRequestDetail = await _dbContext.ProjectHiringRequestDetail
                                                 .FirstOrDefaultAsync(x => x.IsDeleted == false &&
                                                                      x.HiringRequestId == request.hiringRequestId);

                    projectHiringRequestDetail.IsCompleted  = true;
                    projectHiringRequestDetail.ModifiedById = request.ModifiedById;
                    projectHiringRequestDetail.ModifiedDate = request.ModifiedDate;
                    await _dbContext.SaveChangesAsync();
                }
                response.ResponseData = projectHiringRequestDetail;
                response.StatusCode   = StaticResource.successStatusCode;
                response.Message      = "Success";
            }
            catch (Exception ex)
            {
                response.StatusCode = StaticResource.failStatusCode;
                response.Message    = ex.Message;
            }
            return(response);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        public async Task <ApiResponse> Handle(AddProjectHiringRequestCommand request, CancellationToken cancellationToken)
        {
            ApiResponse response = new ApiResponse();

            try
            {
                ProjectHiringRequestDetail hiringRequestDeatil = new ProjectHiringRequestDetail()
                {
                    BasicPay        = request.BasicPay,
                    BudgetLineId    = request.BudgetLineId,
                    CreatedById     = request.CreatedById,
                    CreatedDate     = DateTime.UtcNow,
                    CurrencyId      = request.CurrencyId,
                    Description     = request.Description,
                    EmployeeID      = request.EmployeeID,
                    FilledVacancies = request.FilledVacancies,
                    GradeId         = request.GradeId,
                    IsCompleted     = request.IsCompleted,
                    IsDeleted       = false,
                    OfficeId        = request.OfficeId,
                    Position        = request.Position,
                    ProfessionId    = request.ProfessionId,
                    ProjectId       = request.ProjectId,
                    TotalVacancies  = request.TotalVacancies
                };
                await _dbContext.ProjectHiringRequestDetail.AddAsync(hiringRequestDeatil);

                await _dbContext.SaveChangesAsync();

                if (hiringRequestDeatil.HiringRequestId != 0)
                {
                    string           description = string.Empty;
                    JobHiringDetails jobDetail   = new JobHiringDetails();
                    if (!string.IsNullOrEmpty(request.Description))
                    {
                        description = request.Description.ToLower().Trim();
                        jobDetail   = await _dbContext.JobHiringDetails.FirstOrDefaultAsync(x => x.IsDeleted == false &&
                                                                                            x.JobDescription.ToLower().Trim() == description);
                    }
                    if (jobDetail == null)
                    {
                        jobDetail = new JobHiringDetails()
                        {
                            JobDescription  = request.Description,
                            ProfessionId    = request.ProfessionId,
                            OfficeId        = request.OfficeId,
                            IsActive        = true,
                            GradeId         = request.GradeId,
                            HiringRequestId = hiringRequestDeatil.HiringRequestId,
                            IsDeleted       = false,
                            CreatedById     = request.CreatedById,
                            CreatedDate     = DateTime.UtcNow,
                            Unit            = request.TotalVacancies.Value
                        };
                        await _dbContext.JobHiringDetails.AddAsync(jobDetail);

                        await _dbContext.SaveChangesAsync();

                        if (jobDetail.JobId != 0)
                        {
                            jobDetail.JobCode = "JC" + String.Format("{0:D4}", jobDetail.JobId);
                            await _dbContext.SaveChangesAsync();
                        }
                    }
                    else
                    {
                        throw new Exception("Job is already exist");
                    }
                }
                response.StatusCode = StaticResource.successStatusCode;
                response.Message    = "Success";
            }
            catch (Exception ex)
            {
                response.StatusCode = StaticResource.failStatusCode;
                response.Message    = ex.Message;
            }
            return(response);
        }
Ejemplo n.º 4
0
        public async Task <ApiResponse> Handle(EditHiringRequestDetailCommand request, CancellationToken cancellationToken)
        {
            ApiResponse response = new ApiResponse();

            try
            {
                string description = request.Description.ToLower().Trim();

                bool recordExists = await _dbContext.ProjectHiringRequestDetail.AnyAsync(x => x.IsDeleted == false &&
                                                                                         x.Description.ToLower().Trim() == description && x.HiringRequestId != request.HiringRequestId);

                if (!recordExists)
                {
                    ProjectHiringRequestDetail projectHiringRequest = await _dbContext.ProjectHiringRequestDetail
                                                                      .FirstOrDefaultAsync(x => x.HiringRequestId == request.HiringRequestId &&
                                                                                           x.IsDeleted == false);

                    projectHiringRequest.BasicPay        = request.BasicPay;
                    projectHiringRequest.BudgetLineId    = request.BudgetLineId;
                    projectHiringRequest.ModifiedById    = request.ModifiedById;
                    projectHiringRequest.ModifiedDate    = DateTime.UtcNow;
                    projectHiringRequest.CurrencyId      = request.CurrencyId;
                    projectHiringRequest.Description     = request.Description;
                    projectHiringRequest.EmployeeID      = request.EmployeeID;
                    projectHiringRequest.FilledVacancies = request.FilledVacancies;
                    projectHiringRequest.GradeId         = request.GradeId;
                    projectHiringRequest.IsCompleted     = request.IsCompleted;
                    projectHiringRequest.OfficeId        = request.OfficeId;
                    projectHiringRequest.Position        = request.Position;
                    projectHiringRequest.ProfessionId    = request.ProfessionId;
                    projectHiringRequest.ProjectId       = request.ProjectId;
                    projectHiringRequest.TotalVacancies  = request.TotalVacancies;
                    await _dbContext.SaveChangesAsync();

                    // Note : edit ProjectJob in old Ui
                    if (projectHiringRequest.HiringRequestId != 0)
                    {
                        JobHiringDetails jobDetail = await _dbContext.JobHiringDetails.FirstOrDefaultAsync(x => x.HiringRequestId == request.HiringRequestId &&
                                                                                                           x.IsDeleted == false);

                        if (jobDetail != null)
                        {
                            jobDetail.JobDescription  = request.Description;
                            jobDetail.ProfessionId    = request.ProfessionId;
                            jobDetail.OfficeId        = request.OfficeId;
                            jobDetail.IsActive        = true;
                            jobDetail.GradeId         = request.GradeId;
                            jobDetail.HiringRequestId = projectHiringRequest.HiringRequestId;
                            jobDetail.IsDeleted       = false;
                            jobDetail.ModifiedById    = request.ModifiedById;
                            jobDetail.ModifiedDate    = DateTime.UtcNow;
                            jobDetail.Unit            = request.TotalVacancies.Value;
                            await _dbContext.SaveChangesAsync();
                        }
                    }
                }
                else
                {
                    throw new Exception("Hiring Request is already exist");
                }
                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);
        }