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(); }
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; }