public async Task <IActionResult> Create([Bind("ProgressiveTaxID,Rate,From,To")] ProgressiveTax progressiveTax)
        {
            if (_context.ProgressiveTaxes.Where(x => x.Rate == progressiveTax.Rate && x.IsDeleted == false).FirstOrDefault() != null)
            {
                return(Forbid()); //Duplicate Rate
            }
            if (ModelState.IsValid)
            {
                progressiveTax.CreatedDate = progressiveTax.LastModifiedDate = DateTime.Now;
                progressiveTax.CreatedBy   = progressiveTax.LastModifiedBy = "System";
                progressiveTax.IsDeleted   = false;

                _context.Add(progressiveTax);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }

            return(View(progressiveTax));
        }
Exemple #2
0
        public void Calculate_ProgressiveTax_expectedValuesCalculates(
            double percentage,
            double grossSalary,
            double lowerLimit,
            double upperLimit,
            double expectedSumm)
        {
            // arrange
            decimal percentageDec   = (decimal)percentage;
            decimal grossSalaryDec  = (decimal)grossSalary;
            decimal lowerLimitDec   = (decimal)lowerLimit;
            decimal?upperLimitDec   = upperLimit == 0 ? null : (decimal?)upperLimit;
            decimal expectedSummDec = (decimal)expectedSumm;

            var progressiveTax = new ProgressiveTax(percentageDec, lowerLimitDec, upperLimitDec);

            // act
            progressiveTax.Calculate(grossSalaryDec);
            decimal actualTaxSumm = progressiveTax.Summ;

            // assert
            Assert.AreEqual(expectedSummDec, actualTaxSumm);
        }
        public async Task <IActionResult> Edit(int id, [Bind("ProgressiveTaxID,Rate,From,To")] ProgressiveTax progressiveTax)
        {
            ProgressiveTax updateRec = _context.ProgressiveTaxes.Where(x => x.ProgressiveTaxID == id && x.IsDeleted == false).FirstOrDefault();

            if (id != progressiveTax.ProgressiveTaxID | updateRec == null)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    updateRec.Rate             = progressiveTax.Rate;
                    updateRec.From             = progressiveTax.From;
                    updateRec.To               = progressiveTax.To;
                    updateRec.LastModifiedBy   = "System";
                    updateRec.LastModifiedDate = DateTime.Now;

                    _context.Update(updateRec);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ProgressiveTaxExists(progressiveTax.ProgressiveTaxID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(progressiveTax));
        }
        public static void Initialize(TaxCalculatorContext context)
        {
            context.Database.EnsureCreated();

            if (context.TaxTypes.Any())
            {
                return;// DB has been seeded
            }
            var progressiveTaxes = new ProgressiveTax[]
            {
                new ProgressiveTax {
                    Rate = 0.1, From = 0, To = 8350, CreatedBy = "System", LastModifiedBy = "System", CreatedDate = DateTime.Now, LastModifiedDate = DateTime.Now, IsDeleted = false
                },
                new ProgressiveTax {
                    Rate = 0.15, From = 8351, To = 33950, CreatedBy = "System", LastModifiedBy = "System", CreatedDate = DateTime.Now, LastModifiedDate = DateTime.Now, IsDeleted = false
                },
                new ProgressiveTax {
                    Rate = 0.25, From = 33951, To = 82250, CreatedBy = "System", LastModifiedBy = "System", CreatedDate = DateTime.Now, LastModifiedDate = DateTime.Now, IsDeleted = false
                },
                new ProgressiveTax {
                    Rate = 0.28, From = 82251, To = 171550, CreatedBy = "System", LastModifiedBy = "System", CreatedDate = DateTime.Now, LastModifiedDate = DateTime.Now, IsDeleted = false
                },
                new ProgressiveTax {
                    Rate = 0.33, From = 171551, To = 372950, CreatedBy = "System", LastModifiedBy = "System", CreatedDate = DateTime.Now, LastModifiedDate = DateTime.Now, IsDeleted = false
                },
                new ProgressiveTax {
                    Rate = 0.35, From = 372951, To = double.MaxValue, CreatedBy = "System", LastModifiedBy = "System", CreatedDate = DateTime.Now, LastModifiedDate = DateTime.Now, IsDeleted = false
                }
            };

            progressiveTaxes.ToList().ForEach(x => context.ProgressiveTaxes.Add(x));
            context.SaveChanges();

            var taxTypes = new TaxType[]
            {
                new TaxType {
                    Description = "Progressive", Code = "PGRSV", CreatedBy = "System", LastModifiedBy = "System", CreatedDate = DateTime.Now, LastModifiedDate = DateTime.Now, IsDeleted = false
                },
                new TaxType {
                    Description = "Flat Value", Code = "FLVL", CreatedBy = "System", LastModifiedBy = "System", CreatedDate = DateTime.Now, LastModifiedDate = DateTime.Now, IsDeleted = false
                },
                new TaxType {
                    Description = "Flat Rate", Code = "FLRT", CreatedBy = "System", LastModifiedBy = "System", CreatedDate = DateTime.Now, LastModifiedDate = DateTime.Now, IsDeleted = false
                }
            };

            taxTypes.ToList().ForEach(x => context.TaxTypes.Add(x));
            context.SaveChanges();

            var postalCodes = new PostalCode[]
            {
                new PostalCode {
                    Value = "7441", TaxTypeID = context.TaxTypes.ToList().Where(x => x.Code.Equals("PGRSV")).FirstOrDefault().TaxTypeID, CreatedBy = "System", LastModifiedBy = "System", CreatedDate = DateTime.Now, LastModifiedDate = DateTime.Now, IsDeleted = false
                },
                new PostalCode {
                    Value = "A100", TaxTypeID = context.TaxTypes.ToList().Where(x => x.Code.Equals("FLVL")).FirstOrDefault().TaxTypeID, CreatedBy = "System", LastModifiedBy = "System", CreatedDate = DateTime.Now, LastModifiedDate = DateTime.Now, IsDeleted = false
                },
                new PostalCode {
                    Value = "7000", TaxTypeID = context.TaxTypes.ToList().Where(x => x.Code.Equals("FLRT")).FirstOrDefault().TaxTypeID, CreatedBy = "System", LastModifiedBy = "System", CreatedDate = DateTime.Now, LastModifiedDate = DateTime.Now, IsDeleted = false
                },
                new PostalCode {
                    Value = "1000", TaxTypeID = context.TaxTypes.ToList().Where(x => x.Code.Equals("PGRSV")).FirstOrDefault().TaxTypeID, CreatedBy = "System", LastModifiedBy = "System", CreatedDate = DateTime.Now, LastModifiedDate = DateTime.Now, IsDeleted = false
                }
            };

            postalCodes.ToList().ForEach(x => context.PostalCodes.Add(x));
            context.SaveChanges();
        }