public async Task <Result <SaveSalaryConfigResponse> > SaveSalaryConfig(SaveSalaryConfigRequest request) { if (request == null) { _logger.LogError(Errors.SalaryConfig.SaveSalaryConfigRequestModelNullError.Message); return(Errors.SalaryConfig.SaveSalaryConfigRequestModelNullError); } var result = await Mediator.Send(request); return(result); }
public async Task <Result <SaveSalaryConfigResponse> > Handle(SaveSalaryConfigRequest request, CancellationToken cancellationToken) { var currency = new Currency(request.SalarySetting.Currency); var result = await _salaryConfigRepository.SaveAsync(new SalaryConfig ( id : request.SalarySetting.Id, commonMinimumWage : new Money(request.SalarySetting.CommonMinimumWage, currency), regionalMinimumWage : new Money(request.SalarySetting.RegionalMinimumWage, currency), coefficientSocialCare : request.SalarySetting.CoefficientSocialCare, employerSocialInsuranceRate : request.SalarySetting.EmployerSocialInsuranceRate, employeeSocialInsuranceRate : request.SalarySetting.EmployeeSocialInsuranceRate, healthCareInsuranceEmployerRate : request.SalarySetting.EmployerHealthCareInsuranceRate, healthCareInsuranceEmployeeRate : request.SalarySetting.EmployeeHealthCareInsuranceRate, unemploymentInsuranceEmployerRate : request.SalarySetting.EmployerUnemploymentInsuranceRate, unemploymentInsuranceEmployeeRate : request.SalarySetting.EmployeeUnemploymentInsuranceRate, foreignEmployerSocialInsuranceRate : request.SalarySetting.ForeignEmployerSocialInsuranceRate, foreignEmployeeSocialInsuranceRate : request.SalarySetting.ForeignEmployeeSocialInsuranceRate, foreignHealthCareInsuranceEmployeeRate : request.SalarySetting.ForeignEmployeeHealthCareInsuranceRate, foreignHealthCareInsuranceEmployerRate : request.SalarySetting.ForeignEmployerHealthCareInsuranceRate, foreignUnemploymentInsuranceEmployeeRate : request.SalarySetting.ForeignEmployeeUnemploymentInsuranceRate, foreignUnemploymentInsuranceEmployerRate : request.SalarySetting.ForeignEmployerUnemploymentInsuranceRate, minimumNonWorkingDay : request.SalarySetting.MinimumNonWorkingDay, employeeUnionFeeRate : request.SalarySetting.EmployeeUnionFeeRate, employerUnionFeeRate : request.SalarySetting.EmployerUnionFeeRate, maximumUnionFeeRate : request.SalarySetting.MaximumUnionFeeRate, personalDeduction : new Money(request.SalarySetting.PersonalDeduction, currency), dependantDeduction : new Money(request.SalarySetting.DependantDeduction, currency), defaultProbationTaxRate : request.SalarySetting.DefaultProbationTaxRate, isInsurancePaidFullSalary : request.SalarySetting.IsInsurancePaidFullSalary, insurancePaidAmount : new Money(request.SalarySetting.InsurancePaidAmount, currency), progressiveTaxRateLookUpTable : new ProgressiveTaxRateLookUpTable( request.ProgressiveTaxRates.Select( x => new ProgressiveTaxRate ( lowerBound : new Money(x.LowerBound, currency), upperBound : new Money(x.UpperBound, currency), rate : x.Rate, progressiveTaxRateLevel : x.TaxRateLevel )).ToArray() ) ) ); var markResult = await _empMonthlySalaryRepo.MarkNotLatestAsync(request.YearMonth); return(result.Map(() => markResult).Map(x => new SaveSalaryConfigResponse())); }