Esempio n. 1
0
        public async Task UpdateMunicipalityTaxSchedule(IUpdateMunicipalityTaxScheduleRequest request)
        {
            // TODO Consider use of AutoMapper or eq. to map
            MunicipalityTaxScheduleDbModel modelToUpdate = CreateUpdateModel(request);
            IMunicipalityTaxScheduleModel  existingModel = await context.Set <MunicipalityTaxScheduleDbModel>().AsNoTracking().Where(RetrieveByKeyPredicate(modelToUpdate)).SingleOrDefaultAsync();

            if (existingModel != null)
            {
                context.Set <MunicipalityTaxScheduleDbModel>().Update(modelToUpdate);
            }
            else
            {
                context.Set <MunicipalityTaxScheduleDbModel>().Add(modelToUpdate);
            }
            await context.SaveChangesAsync();
        }
Esempio n. 2
0
 private Expression <Func <IMunicipalityTaxScheduleModel, bool> > RetrieveByKeyPredicate(IMunicipalityTaxScheduleModel taxSchedule)
 {
     return(entity => entity.Municipality.Equals(taxSchedule.Municipality) &&
            entity.ValidFrom.Equals(taxSchedule.ValidFrom) &&
            entity.TaxScheduleType.Equals(taxSchedule.TaxScheduleType));
 }
        private bool ValidateTaxSchedule(IMunicipalityTaxScheduleModel taxSchedule)
        {
            if (string.IsNullOrEmpty(taxSchedule.Municipality))
            {
                return(false);
            }
            switch (taxSchedule.TaxScheduleType)
            {
            case TaxScheduleType.DAY:
                return(taxSchedule.ValidFrom.Equals(taxSchedule.ValidTo));

            case TaxScheduleType.WEEK:
                // Week in Denmark starts on mondays
                if (taxSchedule.ValidFrom.DayOfWeek != DayOfWeek.Monday)
                {
                    return(false);
                }
                if (taxSchedule.ValidFrom.Date.AddDays(6) != taxSchedule.ValidTo)
                {
                    return(false);
                }
                return(true);

            case TaxScheduleType.MONTH:
                if (taxSchedule.ValidFrom.Day != 1)
                {
                    return(false);
                }
                if (taxSchedule.ValidFrom.Month != taxSchedule.ValidTo.Month)
                {
                    return(false);
                }
                if (taxSchedule.ValidFrom.Year != taxSchedule.ValidTo.Year)
                {
                    return(false);
                }
                // Day after validto should be next month to ensure validto are last day in month
                if (taxSchedule.ValidTo.AddDays(1).Month == taxSchedule.ValidTo.Month)
                {
                    return(false);
                }
                return(true);

            case TaxScheduleType.YEAR:
                if (taxSchedule.ValidFrom.Year != taxSchedule.ValidTo.Year)
                {
                    return(false);
                }
                int scheduleYear = taxSchedule.ValidFrom.Year;
                if (!taxSchedule.ValidFrom.Equals(new DateTime(scheduleYear, 1, 1)))
                {
                    return(false);
                }
                if (!taxSchedule.ValidTo.Equals(new DateTime(scheduleYear, 12, 31)))
                {
                    return(false);
                }
                return(true);

            default:
                return(false);
            }
        }
 private void RemoveTuimePartFromDate(IMunicipalityTaxScheduleModel taxSchedule)
 {
     taxSchedule.ValidFrom = taxSchedule.ValidFrom.Date;
     taxSchedule.ValidTo   = taxSchedule.ValidTo.Date;
 }