public async Task UpdateCalculatedValues( IBookingProvider bookingProvider, ITenantCategoryProvider tenantCategoryProvider, BookingSettings settings) { Alert = null; if (IsCancelled) { Alert = AlertType.Cancelled; AlertMessage = "Aflyst."; BookingStateText = "Aflyst"; } else if (BookingState == BookingDataModel.BookingStateType.Requested) { Alert = AlertType.New; AlertMessage = "Ny reservation."; } else if (BookingState == BookingDataModel.BookingStateType.Approved) { if (!WelcomeLetterIsSent && DateTime.Now > ArrivalDate - TimeSpan.FromDays(settings.DaysBeforeArrivalForWelcomeLetter)) { Alert = AlertType.Key; AlertMessage = "Velkomstbrev skal udsendes."; } else if (DateTime.Now > DepartureDate) { if (!IsCheckedOut) { Alert = AlertType.AwaitingCheckout; AlertMessage = "Afventer slutafregning fra lejer."; } else { Alert = AlertType.Finalize; AlertMessage = "Lejemålet er overstået og skal afsluttes."; } } } Notifications = new List <Notification>(); var tenantCategory = await tenantCategoryProvider.GetTenantCategoryById(TenantCategoryId); DateTime lastAllowedArrivalDate = CreatedDate.AddMonths(tenantCategory.AllowedBookingFutureMonths); if (ArrivalDate >= lastAllowedArrivalDate) { AddNotification(NotificationLevelType.Warning, $"Bemærk at ankomstdatoen ligger mere end de tilladte {tenantCategory.AllowedBookingFutureMonths} måneder efter at ansøgningen blev oprettet. " + $"Datoen er beregnet på baggrund af lejerkategorien."); } if (RentalPrice == null) { AddNotification(NotificationLevelType.Warning, "Bemærk at der endnu ikke er aftalt nogen pris."); } // Look up overlap for active bookings (no need to add warning for historic bookings) if (BookingState != BookingDataModel.BookingStateType.Closed) { var overlappingBookings = await bookingProvider.FindBookingsInInterval(new Queries.SearchBookingSummariesQuery { Start = ArrivalDate, End = DepartureDate, IsCancelled = false }); foreach (var booking in overlappingBookings) { // Do not include self if (booking.Id != Id && booking.CollidesWith(this)) { AddNotification(NotificationLevelType.Warning, $"Denne reservation overlapper med reservation nr. {booking.BookingNumber} den {booking.ArrivalDate.ToShortDateString()} til {booking.DepartureDate.ToShortDateString()}."); } } } if (BookingState == BookingDataModel.BookingStateType.Closed) { AddNotification(NotificationLevelType.Information, $"Denne reservation er afsluttet ({GetSingleWordStateDescription()})."); } }