public async Task <CalculationsCreateResponse> Handle(CalculationsCreateCommand request, CancellationToken cancellationToken)
        {
            var postalCodeEntity = await _dbContext.PostalCodes.FirstOrDefaultAsync(
                x => x.Code == request.PostalCode
                , cancellationToken);

            var calculationType =
                await _dbContext.CalculationRuleTypes.FirstOrDefaultAsync(
                    x => x.PostalCodeId == postalCodeEntity.Id,
                    cancellationToken : cancellationToken);

            var payableTax = calculationType.TaxCalculationTypeId switch
            {
                1 => CalculationBuilder.CalculateProgressive(request.AnnualIncome),
                2 => CalculationBuilder.CalculateFlatValue(request.AnnualIncome),
                3 => CalculationBuilder.CalculateFlatRate(request.AnnualIncome),
                _ => throw new NotImplementedException(),
            };

            var entity = new CalculationResult
            {
                AnnualIncome       = request.AnnualIncome,
                PostalCodeId       = postalCodeEntity.Id,
                TaxCalculationType = calculationType.Id,
                DateCreated        = DateTime.Now,
                TotalTax           = payableTax,
                NetPay             = request.AnnualIncome - payableTax
            };

            await _dbContext.CalculationResults.AddAsync(entity, cancellationToken);

            await _dbContext.SaveChangesAsync(cancellationToken);

            return(entity.ToCreateResponse());
        }