public BookingMailService(
     IBookingProvider bookingProvider,
     ITemplateProvider templateProvider)
 {
     BookingProvider  = bookingProvider;
     TemplateProvider = templateProvider;
 }
Beispiel #2
0
 public SearchBookingSummariesQueryHandler(
     ICustomEntityDefinitionRepository customEntityDefinitionRepository,
     IBookingProvider bookingProvider)
 {
     CustomEntityDefinitionRepository = customEntityDefinitionRepository;
     BookingProvider = bookingProvider;
 }
Beispiel #3
0
 public CalendarApiController(
     IBookingProvider bookingService,
     IPermissionValidationService permissionValidationService,
     IExecutionContextFactory executionContextFactory)
 {
     BookingService = bookingService;
     PermissionValidationService = permissionValidationService;
     ExecutionContextFactory     = executionContextFactory;
 }
 public DeleteAllBookingsCommandHandler(
     IBookingProvider bookingProvider,
     ICommandExecutor executor,
     IPermissionValidationService permissionValidationService)
 {
     BookingProvider             = bookingProvider;
     CommandExecutor             = executor;
     PermissionValidationService = permissionValidationService;
 }
 public StatusMailProvider(
   IBookingProvider bookingProvider,
   ITemplateProvider templateProvider,
   IEloverblikAPI eloverblikAPI)
 {
   BookingProvider = bookingProvider;
   TemplateProvider = templateProvider;
   EloverblikAPI = eloverblikAPI;
 }
Beispiel #6
0
 public AnonymizeBookingsCommandHandler(
     IBookingProvider bookingProvider,
     IAdvancedContentRepository domainRepository,
     ICommandExecutor executor,
     IPermissionValidationService permissionValidationService)
 {
     BookingProvider             = bookingProvider;
     DomainRepository            = domainRepository;
     CommandExecutor             = executor;
     PermissionValidationService = permissionValidationService;
 }
Beispiel #7
0
 public BookingApiController(
     IBookingProvider bookingProvider,
     IPermissionValidationService permissionValidationService,
     IExecutionContextFactory executionContextFactory,
     IApiResponseHelper apiResponseHelper)
 {
     BookingProvider             = bookingProvider;
     PermissionValidationService = permissionValidationService;
     ExecutionContextFactory     = executionContextFactory;
     ApiResponseHelper           = apiResponseHelper;
 }
Beispiel #8
0
 public UpdateBookingCommandHandler(
     IAdvancedContentRepository domainRepository,
     IBookingProvider bookingProvider,
     IPermissionValidationService permissionValidationService,
     ITenantCategoryProvider tenantCategoryProvider)
 {
     DomainRepository            = domainRepository;
     BookingProvider             = bookingProvider;
     PermissionValidationService = permissionValidationService;
     TenantCategoryProvider      = tenantCategoryProvider;
 }
Beispiel #9
0
 public DeleteBookingCommandHandler(
     IAdvancedContentRepository domainRepository,
     ICommandExecutor commandExecutor,
     IBookingProvider bookingProvider,
     IPermissionValidationService permissionValidationService)
 {
     DomainRepository            = domainRepository;
     CommandExecutor             = commandExecutor;
     BookingProvider             = bookingProvider;
     PermissionValidationService = permissionValidationService;
 }
 public SendWelcomeLetterCommandHandler(
     IAdvancedContentRepository domainRepository,
     IBookingProvider bookingProvider,
     IPermissionValidationService permissionValidationService,
     ICurrentUserProvider currentUserProvider)
 {
     DomainRepository            = domainRepository;
     BookingProvider             = bookingProvider;
     PermissionValidationService = permissionValidationService;
     CurrentUserProvider         = currentUserProvider;
 }
Beispiel #11
0
 public SendStatusMailCommandHandler(
     IStatusMailProvider statusMailProvider,
     ITemplateProvider templateProvider,
     IMailDispatchService mailDispatchService,
     StatusMailSettings statusMailSettings,
     IBookingProvider bookingProvider)
 {
     StatusMailProvider  = statusMailProvider;
     TemplateProvider    = templateProvider;
     MailDispatchService = mailDispatchService;
     Settings            = statusMailSettings;
     BookingProvider     = bookingProvider;
 }
 public SendBookingMailCommandHandler(
     IAdvancedContentRepository domainRepository,
     IBookingProvider bookingProvider,
     IMailDispatchService mailDispatchService,
     ICommandExecutor commandExecutor,
     IPermissionValidationService permissionValidationService,
     ICurrentUserProvider currentUserProvider)
 {
     DomainRepository            = domainRepository;
     BookingProvider             = bookingProvider;
     MailDispatchService         = mailDispatchService;
     CommandExecutor             = commandExecutor;
     PermissionValidationService = permissionValidationService;
     CurrentUserProvider         = currentUserProvider;
 }
Beispiel #13
0
 public CheckoutBookingCommandHandler(
     IAdvancedContentRepository domainRepository,
     IBookingProvider bookingProvider,
     ITemplateProvider templateProvider,
     IMailDispatchService mailDispatchService,
     ICommandExecutor commandExecutor,
     BookingSettings bookingSettings,
     ICurrentUserProvider currentUserProvider)
 {
     DomainRepository    = domainRepository;
     BookingProvider     = bookingProvider;
     TemplateProvider    = templateProvider;
     MailDispatchService = mailDispatchService;
     CommandExecutor     = commandExecutor;
     BookingSettings     = bookingSettings;
     CurrentUserProvider = currentUserProvider;
 }
Beispiel #14
0
 public BookingController(IBookingProvider bookingProvider)
 {
     this._BookingProvider = bookingProvider;
 }
Beispiel #15
0
        private async Task <BoookingNextAvailabilityEntity> RetrieveNextAvailability(IElement bookingElement, IBookingProvider bookingProvider, AppointmentType appointmentType)
        {
            var bookingNextAvailabilityCachedKey      = $"{bookingElement.Properties.BookingProvider}-{appointmentType.AppointmentId}{appointmentType.OptionalResources.CreateKeyFromResources()}";
            var bookingNextAvailabilityCachedResponse = _distributedCache.GetString(bookingNextAvailabilityCachedKey);

            if (bookingNextAvailabilityCachedResponse is not null)
            {
                return(JsonConvert.DeserializeObject <BoookingNextAvailabilityEntity>(bookingNextAvailabilityCachedResponse));
            }

            AvailabilityDayResponse        nextAvailability;
            BoookingNextAvailabilityEntity result;

            try
            {
                nextAvailability = await bookingProvider
                                   .NextAvailability(new AvailabilityRequest
                {
                    StartDate         = DateTime.Now,
                    EndDate           = DateTime.Now.AddMonths(bookingElement.Properties.SearchPeriod),
                    AppointmentId     = appointmentType.AppointmentId,
                    OptionalResources = appointmentType.OptionalResources
                });
            }
            catch (BookingNoAvailabilityException)
            {
                result = new BoookingNextAvailabilityEntity {
                    BookingHasNoAvailableAppointments = true
                };
                await _distributedCache.SetStringAsync(bookingNextAvailabilityCachedKey, JsonConvert.SerializeObject(result), _distributedCacheExpirationConfiguration.BookingNoAppointmentsAvailable);

                return(result);
            }

            result = new BoookingNextAvailabilityEntity {
                DayResponse = nextAvailability
            };
            await _distributedCache.SetStringAsync(bookingNextAvailabilityCachedKey, JsonConvert.SerializeObject(result), _distributedCacheExpirationConfiguration.Booking);

            return(result);
        }
Beispiel #16
0
 public Scheduler(IBookingProvider bookingProvider, IRuleProvider ruleProvider, ITimeProvider timeProvider)
 {
     this.bookingProvider = bookingProvider;
     this.ruleProvider    = ruleProvider;
     this.timeProvider    = timeProvider;
 }
Beispiel #17
0
 public BookingController(IBookingProvider bookingProvider)
 {
     _bookingProvider = bookingProvider;
 }
Beispiel #18
0
 public BookingCheckoutViewComponent(IBookingProvider bookingProvider)
 {
     BookingProvider = bookingProvider;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="BookingController" /> class.
 /// </summary>
 public BookingController(IBookingProvider bookingProvider, IMapper mapper)
 {
     _bookingProvider = bookingProvider;
     _mapper          = mapper;
 }
        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()}).");
            }
        }