public async Task <ApiResponse> Handle(EditEmployeeAccountSalaryCommand request, CancellationToken cancellationToken) { ApiResponse response = new ApiResponse(); try { var existrecord = await _dbContext.EmployeePayrollAccountHead.Where(x => x.EmployeeId == request.EmployeePayrollAccount.FirstOrDefault().EmployeeId).ToListAsync(); if (existrecord.Any()) { _dbContext.EmployeePayrollAccountHead.RemoveRange(existrecord); await _dbContext.SaveChangesAsync(); } List <EmployeePayrollAccountHead> employeepayrollAccountlist = new List <EmployeePayrollAccountHead>(); foreach (var list in request.EmployeePayrollAccount) { EmployeePayrollAccountHead obj = new EmployeePayrollAccountHead(); obj.EmployeeId = list.EmployeeId; obj.AccountNo = list.AccountNo; obj.Description = list.Description; obj.PayrollHeadName = list.PayrollHeadName; obj.PayrollHeadTypeId = list.PayrollHeadTypeId; obj.TransactionTypeId = list.TransactionTypeId; obj.PayrollHeadId = list.PayrollHeadId; obj.IsDeleted = false; employeepayrollAccountlist.Add(obj); } await _dbContext.EmployeePayrollAccountHead.AddRangeAsync(employeepayrollAccountlist); await _dbContext.SaveChangesAsync(); 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(EditEmployeeProfessionalDetailCommand request, CancellationToken cancellationToken) { ApiResponse response = new ApiResponse(); try { EmployeeProfessionalDetail existrecord = await _dbContext.EmployeeProfessionalDetail.FirstOrDefaultAsync(x => x.IsDeleted == false && x.EmployeeId == request.EmployeeId); if (existrecord == null) { throw new Exception(StaticResource.RecordNotFound); } existrecord.EmployeeTypeId = request.EmployeeTypeId; existrecord.OfficeId = request.OfficeId; existrecord.DepartmentId = request.DepartmentId; existrecord.DesignationId = request.DesignationId; existrecord.EmployeeContractTypeId = request.EmployeeContractTypeId; existrecord.HiredOn = request.HiredOn; existrecord.FiredOn = request.FiredOn; existrecord.FiredReason = request.FiredReason; existrecord.ResignationOn = request.ResignationOn; existrecord.TrainingBenefits = request.TrainingBenefits; existrecord.JobDescription = request.JobDescription; existrecord.ResignationReason = request.ResignationReason; existrecord.AttendanceGroupId = request.AttendanceGroupId; existrecord.MembershipSupportInPoliticalParty = request.MembershipSupportInPoliticalParty; existrecord.ModifiedById = request.ModifiedById; existrecord.ModifiedDate = request.ModifiedDate; await _dbContext.SaveChangesAsync(); var employeeinfo = await _dbContext.EmployeeDetail.FirstOrDefaultAsync(x => x.EmployeeID == request.EmployeeId && x.IsDeleted == false); if (employeeinfo != null) { employeeinfo.EmployeeTypeId = request.EmployeeTypeId; await _dbContext.SaveChangesAsync();; } //when employee is active if (request.EmployeeTypeId == (int)EmployeeTypeStatus.Active) { bool employeeSalaryHeadAlreadyExists = _dbContext.EmployeePayroll.Any(x => x.IsDeleted == false && x.EmployeeID == request.EmployeeId); // add salary head and payroll heads only if it does not already exists for an employee if (!employeeSalaryHeadAlreadyExists) { //Get Default payrollaccountheads and save it to the newly created employee List <SalaryHeadDetails> salaryHeadDetails = await _dbContext.SalaryHeadDetails.Where(x => x.IsDeleted == false).ToListAsync(); List <EmployeePayroll> EmployeePayrollList = new List <EmployeePayroll>(); foreach (SalaryHeadDetails salaryHead in salaryHeadDetails) { EmployeePayroll employeePayroll = new EmployeePayroll(); employeePayroll.AccountNo = salaryHead.AccountNo; employeePayroll.HeadTypeId = salaryHead.HeadTypeId; employeePayroll.SalaryHeadId = salaryHead.SalaryHeadId; employeePayroll.IsDeleted = false; employeePayroll.TransactionTypeId = salaryHead.TransactionTypeId; employeePayroll.EmployeeID = request.EmployeeId.Value; EmployeePayrollList.Add(employeePayroll); } await _dbContext.EmployeePayroll.AddRangeAsync(EmployeePayrollList); await _dbContext.SaveChangesAsync(); //Get Default payrollaccountheads and save it to the newly created employee List <PayrollAccountHead> payrollAccountHeads = await _dbContext.PayrollAccountHead.Where(x => x.IsDeleted == false).ToListAsync(); List <EmployeePayrollAccountHead> employeePayrollAccountHeads = new List <EmployeePayrollAccountHead>(); foreach (var employeePayrollAccount in payrollAccountHeads) { EmployeePayrollAccountHead employeePayrollAccountHead = new EmployeePayrollAccountHead(); employeePayrollAccountHead.IsDeleted = false; employeePayrollAccountHead.AccountNo = employeePayrollAccount.AccountNo; employeePayrollAccountHead.Description = employeePayrollAccount.Description; employeePayrollAccountHead.EmployeeId = request.EmployeeId.Value; employeePayrollAccountHead.PayrollHeadId = employeePayrollAccount.PayrollHeadId; employeePayrollAccountHead.PayrollHeadName = employeePayrollAccount.PayrollHeadName; employeePayrollAccountHead.PayrollHeadTypeId = employeePayrollAccount.PayrollHeadTypeId; employeePayrollAccountHead.TransactionTypeId = employeePayrollAccount.TransactionTypeId; employeePayrollAccountHeads.Add(employeePayrollAccountHead); } await _dbContext.EmployeePayrollAccountHead.AddRangeAsync(employeePayrollAccountHeads); await _dbContext.SaveChangesAsync(); } } 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(UpdatePayrollAccountHeadAllEmployeesCommand request, CancellationToken cancellationToken) { ApiResponse response = new ApiResponse(); try { //NOTE: Do not remove code for saving payroll heads for employees that do not exist in EmployeePayrollAccountHead table //List<EmployeeProfessionalDetail> employeesNotInPayrollAccountHeadTable = new List<EmployeeProfessionalDetail>(); //List<EmployeeProfessionalDetail> employeeList = await _uow.GetDbContext().EmployeeProfessionalDetail.Where(x => x.IsDeleted == false).ToListAsync(); IEnumerable <int> employeeIds = _dbContext.EmployeeDetail .Where(x => x.IsDeleted == false).Select(x => x.EmployeeID).ToList(); IEnumerable <int> employeeWithNoPayrollHead; IEnumerable <int> employeeWithPayrollHead; List <EmployeePayrollAccountHead> xEmployeePayrollAccountHead = await _dbContext.EmployeePayrollAccountHead.Where(x => x.IsDeleted == false).ToListAsync(); employeeWithPayrollHead = xEmployeePayrollAccountHead.Select(x => x.EmployeeId).Distinct().ToList(); employeeWithNoPayrollHead = employeeIds.Except(employeeWithPayrollHead); foreach (PayrollHeadModel payrollHead in request.PayrollHead) { PayrollAccountHead xPayrollAccountHead = _dbContext.PayrollAccountHead.FirstOrDefault(x => x.PayrollHeadId == payrollHead.PayrollHeadId); xPayrollAccountHead.AccountNo = payrollHead.AccountNo; xPayrollAccountHead.Description = payrollHead.Description; xPayrollAccountHead.PayrollHeadId = payrollHead.PayrollHeadId; xPayrollAccountHead.PayrollHeadName = payrollHead.PayrollHeadName; xPayrollAccountHead.PayrollHeadTypeId = payrollHead.PayrollHeadTypeId; xPayrollAccountHead.TransactionTypeId = payrollHead.TransactionTypeId; xPayrollAccountHead.ModifiedById = request.ModifiedById; xPayrollAccountHead.ModifiedDate = request.ModifiedDate; xPayrollAccountHead.IsDeleted = false; await _dbContext.SaveChangesAsync(); List <EmployeePayrollAccountHead> xEmployeePayrollAccount = xEmployeePayrollAccountHead.Where(x => x.IsDeleted == false && x.PayrollHeadId == payrollHead.PayrollHeadId).ToList(); if (xEmployeePayrollAccount.Any()) { xEmployeePayrollAccount.ForEach(x => { x.AccountNo = payrollHead.AccountNo; x.Description = payrollHead.Description; x.PayrollHeadTypeId = payrollHead.PayrollHeadTypeId; x.TransactionTypeId = payrollHead.TransactionTypeId; }); _dbContext.EmployeePayrollAccountHead.UpdateRange(xEmployeePayrollAccountHead); await _dbContext.SaveChangesAsync(); } List <EmployeePayrollAccountHead> employeePayrollHeads = new List <EmployeePayrollAccountHead>(); //Adding New Payroll Heads for Employees not having Payroll Head already saved foreach (int employeeId in employeeWithNoPayrollHead) { EmployeePayrollAccountHead employeePayrollAccountHead = new EmployeePayrollAccountHead(); employeePayrollAccountHead.AccountNo = payrollHead.AccountNo; employeePayrollAccountHead.CreatedById = request.ModifiedById; employeePayrollAccountHead.Description = payrollHead.Description; employeePayrollAccountHead.EmployeeId = employeeId; employeePayrollAccountHead.IsDeleted = false; employeePayrollAccountHead.PayrollHeadId = payrollHead.PayrollHeadId; employeePayrollAccountHead.PayrollHeadName = payrollHead.PayrollHeadName; employeePayrollAccountHead.PayrollHeadTypeId = payrollHead.PayrollHeadTypeId; employeePayrollAccountHead.TransactionTypeId = payrollHead.TransactionTypeId; employeePayrollHeads.Add(employeePayrollAccountHead); } _dbContext.EmployeePayrollAccountHead.AddRange(employeePayrollHeads); await _dbContext.SaveChangesAsync(); } response.StatusCode = StaticResource.successStatusCode; response.Message = "Success"; } catch (Exception ex) { response.StatusCode = StaticResource.failStatusCode; response.Message = ex.Message; } return(response); }