/// <summary>
        /// Async method that calls the async delete method from the persistancyService that deletes the selected booking from the database
        /// </summary>
        public static async Task CancelBookingMethodAsync()
        {
            // Checks if the user wants to delete the booking, or not
            var result = await DialogHandler.GenericYesNoDialog("Er du sikker på du vil Aflyse denne bookning?\nTilhørende tavlebookings vil også blive Aflyst.\nDer vil blive tilsendt kvittering på denne aflysning på din mail", "Aflys Bookning?", "Ja, Aflys booking", "Fortryd");

            // If user wants to delete the booking.
            if (result)
            {
                var query = (from q in BookingCatalogSingleton.Instance.Bookings
                             where q.Booking_Id == Reference.SelectedBooking.Booking_Id
                             select q).ToList();
                foreach (var item in query)
                {
                    BookingCatalogSingleton.Instance.Bookings.Remove(item);
                }

                // The async delete method from PersistancyService.
                PersistancyService.DeleteFromDatabaseAsync("Bookings", Reference.SelectedBooking.Booking_Id);
                MailService.MailSenderAsync(LoginHandler.SelectedUser.User_Email, "Kvittering på aflysning af booking", $"Du har aflyst din bookning for {Reference.SelectedBooking.RoomName} " +
                                            $"d. {Reference.SelectedBooking.Date.ToString("dd/MM/yyyy")} " +
                                            $"mellem {new DateTime(Reference.SelectedBooking.BookingStart.Ticks).ToString("HH:mm")} og {new DateTime(Reference.SelectedBooking.BookingEnd.Ticks).ToString("HH:mm")}.", true);
                // Deletes the selected object from the singleton observable collection
                Reference.AllUserBookingsFromSingleton.Remove(Reference.SelectedBooking);
                // Update the view
                Reference.ElementIsChosenVisibility  = Visibility.Collapsed;
                Reference.NoElementsChosenVisibility = Visibility.Visible;
            }
        }
Beispiel #2
0
 //constructor
 public EventHandlerClass(EventViewModel evm)
 {
     _getEvents       = new PersistancyService();
     _frameNAvigation = new FrameNAvigationClass();
     _catalog         = EventCatalogSingleton.GetInstance();
     Evm = evm;
 }
        /// <summary>
        /// Async method that calls the async delete method from the persistancyService that deletes the selected booking's Tavle booking from the database
        /// </summary>
        public static async Task CancelTavleBookingMethodAsync()
        {
            // Checks if the user wants to delete the TavleBooking, or not
            var result = await DialogHandler.GenericYesNoDialog("Er du sikker på du vil Aflyse tavlen for denne bookning?\nDin Booking på rummet vil ikke blive slettet\nEn kvittering vil blive tilsendt for aflysning af denne tavle tid", "Aflys Tavle?", "Ja, Aflys Tavle", "Fortryd");

            // If user wants to delete the booking.
            if (result)
            {
                // Try and run the code, if the code cant run, catch the exception and notify the user that something went wrong.
                try
                {
                    // Gets the selected booking's tavlebooking as an object.
                    TavleBooking _selectedTavleBooking = TavleBookingCatalogSingleton.Instance.TavleBookings.Single(t => t.Booking_Id == Reference.SelectedBooking.Booking_Id);
                    // The async delete method from PersistancyService.
                    PersistancyService.DeleteFromDatabaseAsync("TavleBookings", _selectedTavleBooking.Tavle_Id);
                    // Deletes the selected object from the singleton observable collection, which in turn updates the view.
                    TavleBookingCatalogSingleton.Instance.TavleBookings.Remove(_selectedTavleBooking);

                    MailService.MailSenderAsync(LoginHandler.SelectedUser.User_Email, "Kvittering på aflysning af tavle booking", $"Du har aflyst din tavletid for rum: {Reference.SelectedBooking.RoomName} " +
                                                $"d. {Reference.SelectedBooking.Date.ToString("dd/MM/yyyy")} " +
                                                $"mellem {new DateTime(_selectedTavleBooking.Time_start.Ticks).ToString("HH:mm")} og {new DateTime(_selectedTavleBooking.Time_end.Ticks).ToString("HH:mm")}.", true);
                    //Update the viewpage
                    Reference.AflysTavleBtnVisibility = Visibility.Collapsed;
                    Reference.BookTavleBtnVisibility  = Visibility.Visible;
                    Reference.SelectedTavleBooking    = null;
                    Reference.CheckIfTavleBookingExists();
                }
                catch (Exception)
                {
                    // Informs the user that something went wrong with the deletion of a tavle booking
                    DialogHandler.Dialog("Noget gik galt med aflysning af tavle, kontakt Zealands IT-Helpdesk for mere information.", "Fejl i aflysning");
                }
            }
        }
 public void AddItemToSelectedShoppinglistProductlistMethod()
 {
     ShoppingListSingleton.Instance.AddItemToSelectedShoppingList(_selectedShoppingList, new ProductModel(ItemNameVM, StoreVM, ItemAmountVM, ItemAmountTypeVM, ItemPriceVM, ItemCatagoryVM));
     PersistancyService.SaveShopListAsJsonAsync(ShoppingListSingleton.Instance.ShoppingListList);
     RefreshTotalPrice();
     ShowViewShoppinglistPageMethod();
 }
Beispiel #5
0
        public async void LoadLocationsAsync()
        {
            ObservableCollection <Location> locations = await PersistancyService.LoadTableFromJsonAsync <Location>("Locations");

            foreach (var item in locations)
            {
                this.Locations.Add(item);
            }
        }
Beispiel #6
0
        public async Task LoadAllBookingsAsync()
        {
            ObservableCollection <AllBookingsView> allBookings = await PersistancyService.LoadTableFromJsonAsync <AllBookingsView>("AllBookingsViews");

            foreach (var item in allBookings)
            {
                this.AllBookings.Add(item);
            }
        }
        public async void LoadTavleBookingsAsync()
        {
            ObservableCollection <TavleBooking> tavleBookings = await PersistancyService.LoadTableFromJsonAsync <TavleBooking>("TavleBookings");

            foreach (var item in tavleBookings)
            {
                this.TavleBookings.Add(item);
            }
        }
        public async Task LoadbookingsAsync()
        {
            ObservableCollection <Booking> bookings = await PersistancyService.LoadTableFromJsonAsync <Booking>("Bookings");

            foreach (var item in bookings)
            {
                this.Bookings.Add(item);
            }
        }
 public void DeleteShoppingList()
 {
     if (_selectedShoppingList != null)
     {
         ShoppingListSingleton.Instance.ShoppingListList.Remove(_selectedShoppingList);
         PersistancyService.SaveShopListAsJsonAsync(ShoppingListSingleton.Instance.ShoppingListList);
         StartPageVisibility();
     }
 }
 public void DeleteShoppingListItem()
 {
     if (_selectedShoppingList != null)
     {
         BoughtProductOnSelectedShoppingList.Remove(SelectedBoughtProductListItem);
         PersistancyService.SaveShopListAsJsonAsync(ShoppingListSingleton.Instance.ShoppingListList);
         RefreshTotalPrice();
     }
 }
Beispiel #11
0
        public async void LoadRoomsViewAsync()
        {
            ObservableCollection <RoomsView> roomsView = await PersistancyService.LoadTableFromJsonAsync <RoomsView>("RoomsViews");

            foreach (var item in roomsView)
            {
                this.RoomsView.Add(item);
            }
        }
Beispiel #12
0
 public void BeforeTest()
 {
     //Arrange
     evm     = new EventViewModel();
     ehc     = new EventHandlerClass(evm);
     eventt  = new Event("Name", "Type", "Description", DateTime.Parse("2018.02.08 12:00"), "Location");
     ecs     = new EventCatalogSingleton();
     getItem = new PersistancyService();
     getItem.EventsCatalog = new ObservableCollection <Event>();
     dateTimeCon           = new DataTimeConvertor();
 }
Beispiel #13
0
        /// <summary>
        /// Creates new booking object in the database and sends an email with confirmation of the booking, if the conditions are met.
        /// </summary>
        public async void CreateBookingAsync()
        {
            bool bookedAlready = true;

            foreach (var item in BookingCatalogSingleton.Instance.Bookings)
            {
                if (item.User_Id == LoginHandler.SelectedUser.User_Id && item.Date ==
                    RoomReference.Date && item.Time_end >= RoomReference.TimeStart && item.Time_start <= RoomReference.TimeEnd && LoginHandler.SelectedUser.Teacher == false)
                {
                    DialogHandler.Dialog("Du har allerede booket et lokale på denne dato i samme tidsinterval. Vælg venligst et nyt tidspunkt.", "Overlappende booking");
                    bookedAlready = false;
                    break;
                }
            }

            if (LoginHandler.SelectedUser.Teacher)
            {
                if (ThreeRoomsBookingLimit() == false)
                {
                    bookedAlready = false;
                    DialogHandler.Dialog("Du kan ikke have mere end tre bookinger af gangen, hvis du vil booke dette rum må du slette en anden booking", "Kun tre bookinger");
                }
            }
            if (bookedAlready)
            {
                // I don't know why, but we need this reference to get the RoomName property in the RoomsView model.
                RoomsView selectedRoomsViewRef = RoomReference.SelectedRoomsView;
                var       result = await DialogHandler.GenericYesNoDialog("Er du sikker på du vil booke dette lokale?", "Book lokale?", "Ja, tak", "Nej, tak");

                if (CompareDatesAndTime() && result)
                {
                    Booking booking = new Booking()
                    {
                        Date       = RoomReference.Date.Date,
                        Room_Id    = selectedRoomsViewRef.Room_Id,
                        Time_start = new TimeSpan(RoomReference.TimeStart.Hours, RoomReference.TimeStart.Minutes, 0),
                        Time_end   = new TimeSpan(RoomReference.TimeEnd.Hours, RoomReference.TimeEnd.Minutes, 0),
                        User_Id    = LoginHandler.SelectedUser.User_Id
                    };

                    await PersistancyService.SaveInsertAsJsonAsync(booking, "Bookings");

                    BookingCatalogSingleton.Instance.Bookings.Clear();
                    await BookingCatalogSingleton.Instance.LoadbookingsAsync();

                    FilterSearchMethodAsync();
                    // Does not need to be awaited, since it doesn't disrupt the flow of the program.
                    MailService.MailSenderAsync(LoginHandler.SelectedUser.User_Email, "Kvittering på booking", $"Du har booket {selectedRoomsViewRef.RoomName} " +
                                                $"d. {RoomReference.Date.ToString("dd/MM/yyyy")} " +
                                                $"mellem {new DateTime(RoomReference.TimeStart.Ticks).ToString("HH:mm")} og {new DateTime(RoomReference.TimeEnd.Ticks).ToString("HH:mm")}.", true);
                    RoomReference.SelectedRoomsView = null;
                }
            }
        }
Beispiel #14
0
        /// <summary>
        /// This method replaces every booking on a room in between the selected timeend and timestart
        /// </summary>
        /// <returns></returns>
        public async Task TeacherSnatchRoom()
        {
            var query = (from b in BookingCatalogSingleton.Instance.Bookings
                         where b.Room_Id == TCPREF.BookingIsSelected.Room_Id && TCPREF.BookingIsSelected.Date.Date == b.Date.Date && b.Time_end >= TCPREF.InputTimeStart && b.Time_start <= TCPREF.InputTimeEnd
                         select b).ToList();

            if (query.Count > 0)
            {
                foreach (var item in query)
                {
                    PersistancyService.DeleteFromDatabaseAsync("Bookings", item.Booking_Id);

                    await GetMailToUser(item.User_Id, "En lærer aflyste din booking", $"Din booking den " + $"{TCPREF.BookingIsSelected.Date.ToString("dd/MM/yyyy")} fra " + $"{new DateTime(TCPREF.BookingIsSelected.BookingStart.Ticks).ToString("HH:mm")} til " + $"{new DateTime(TCPREF.BookingIsSelected.BookingEnd.Ticks).ToString("HH:mm")} i rum {TCPREF.BookingIsSelected.RoomName} " + $"er blevet aflyst af {LoginHandler.SelectedUser.User_Name}, vi beklager ulejligheden. " + $"Du er selvfølgelig velkommen til at booke et nyt rum i appen.", true);
                }
                await PersistancyService.SaveInsertAsJsonAsync(new Booking
                {
                    Date          = TCPREF.BookingIsSelected.Date.Date,
                    Room_Id       = TCPREF.BookingIsSelected.Room_Id,
                    TavleBookings = null,
                    Time_start    = new TimeSpan(TCPREF.InputTimeStart.Hours, TCPREF.InputTimeStart.Minutes, 0),
                    Time_end      = new TimeSpan(TCPREF.InputTimeEnd.Hours, TCPREF.InputTimeEnd.Minutes, 0),
                    User_Id       = LoginHandler.CurrentUserId
                }, "Bookings");

                MailService.MailSenderAsync(LoginHandler.SelectedUser.User_Email, "Kvittering på booking", $"Du har booket {TCPREF.BookingIsSelected.RoomName} " + $"d. {TCPREF.BookingIsSelected.Date.ToString("dd/MM/yyyy")} " + $"mellem {new DateTime(TCPREF.BookingIsSelected.BookingStart.Ticks).ToString("HH:mm")} og {new DateTime(TCPREF.BookingIsSelected.BookingEnd.Ticks).ToString("HH:mm")}.", true);
                ResetList();
                DialogHandler.Dialog("Din booking er nu oprettet. God dag!", "Booking Oprettet!");
            }

            if (query.Count <= 0)
            {
                var result = await DialogHandler.GenericYesNoDialog(
                    "Der er ikke nogen booking på dit valgte tidspunkt, er du sikker på at du valgte det rigtige tidspunkt?",
                    "Ingen booking på valgte tidspunkt", "Opret Ny booking i stedet", "Indtast tid igen");

                if (result)
                {
                    await PersistancyService.SaveInsertAsJsonAsync(new Booking
                    {
                        Date          = TCPREF.BookingIsSelected.Date.Date,
                        Room_Id       = TCPREF.BookingIsSelected.Room_Id,
                        TavleBookings = null,
                        Time_start    = new TimeSpan(TCPREF.InputTimeStart.Hours, TCPREF.InputTimeStart.Minutes, 0),
                        Time_end      = new TimeSpan(TCPREF.InputTimeEnd.Hours, TCPREF.InputTimeEnd.Minutes, 0),
                        User_Id       = LoginHandler.CurrentUserId
                    }, "Bookings");

                    MailService.MailSenderAsync(LoginHandler.SelectedUser.User_Email, "Kvittering på booking", $"Du har booket {TCPREF.BookingIsSelected.RoomName} " + $"d. {TCPREF.BookingIsSelected.Date.ToString("dd/MM/yyyy")} " + $"mellem {new DateTime(TCPREF.BookingIsSelected.BookingStart.Ticks).ToString("HH:mm")} og {new DateTime(TCPREF.BookingIsSelected.BookingEnd.Ticks).ToString("HH:mm")}.", true);
                    ResetList();
                    DialogHandler.Dialog("Din booking er nu oprettet. God dag!", "Booking Oprettet!");
                }
            }
        }
        /// <summary>
        /// Async method that saves the current changes to the user data to the database, and refreshes the User Singleton
        /// </summary>
        /// <returns>Task</returns>
        public async Task SaveChangesMethodAsync()
        {
            User userObj = new User()
            {
                User_Id = LoginHandler.CurrentUserId, User_Name = UserNameBinding, User_Email = UserEmailBinding, Password = PasswordBinding, Teacher = _teacher
            };
            await PersistancyService.UpdateAsJsonAsync(userObj, "Users", LoginHandler.CurrentUserId);

            refreshUserList();
            OnPropertyChanged(nameof(UserNameBinding));
            OnPropertyChanged(nameof(UserEmailBinding));
            NameCanBeEditted  = false;
            EmailCanBeEditted = false;
        }
Beispiel #16
0
        public void LoadingMethodTEst()
        {
            //arrange
            EventCatalogSingleton _ecs     = new EventCatalogSingleton();
            PersistancyService    _getItem = new PersistancyService();

            _getItem.EventsCatalog = new ObservableCollection <Event>();

            //act
            double expected = 12;
            double actual   = _getItem.EventsCatalog.Count;

            //assert
            Assert.AreEqual(expected, actual);
        }
Beispiel #17
0
        public void DoLoginUser()
        {
            var dataList = PersistancyService.LoadNotesFromJsonAsync();

            foreach (var UserModel in dataList.Result)
            {
                if ((UserModel.Email == Email) && (UserModel.Password == Password))
                {
                    // Do something if login succeeds
                    GlobalVars.Global_LoggedInBool = true;
                    GlobalVars.Global_LoggedInName = UserModel.Name;
                    MessageDialogHelper.Show("You have been logged in!", "Login Successfull");
                    break;
                }
                // Do something if login fails
            }
        }
Beispiel #18
0
        public async void LoadShoppingListAsync()
        {
            PersistancyService.FileCreation();
            ObservableCollection <ShoppingListModel> shopLists = await PersistancyService.LoadShopListFromJsonAsync();

            ShoppingListSingleton.Instance.ShoppingListList.Clear();
            if (shopLists == null)
            {
                ShoppingListList.Add(new ShoppingListModel("FiskeFars", ViewModel.ViewModel.Category[0]));
                PersistancyService.SaveShopListAsJsonAsync(ShoppingListList);
            }
            else
            {
                foreach (var shopList in shopLists)
                {
                    ShoppingListList.Add(shopList);
                }
            }
        }
        public async void CreateShoppingList()
        {
            ContentDialog messageDialog = new ContentDialog()
            {
                Title           = "Fejl",
                Content         = "Mangler Information",
                CloseButtonText = "OK"
            };

            if (string.IsNullOrEmpty(ShoppingListNameVM) || string.IsNullOrEmpty(CategoryVM))
            {
                await messageDialog.ShowAsync();
            }
            else
            {
                ShoppingListSingleton.Instance.ShoppingListList.Add(new ShoppingListModel(ShoppingListNameVM, CategoryVM));
                StartPageVisibility();
                PersistancyService.SaveShopListAsJsonAsync(ShoppingListSingleton.Instance.ShoppingListList);
            }
        }
Beispiel #20
0
        public async void LoadUsersAsync()
        {
            ObservableCollection <User> users = await PersistancyService.LoadTableFromJsonAsync <User>("Users");

            try
            {
                if (users == null)
                {
                    throw new NullReferenceException();
                }
                else
                {
                    foreach (var item in users)
                    {
                        this.Users.Add(item);
                    }
                }
            }
            catch (Exception)
            {
                //Another catch catches this exception
            }
        }
Beispiel #21
0
        /// <summary>
        /// Creates a new account and it checks if everything has been filled in if it has it creates a new user
        /// and sends it to PersistancyService.SaveInsertAsJsonAsync then refreshes the UserCatalogSingleton
        /// and then navigates to PageLogin so the user can login.
        /// </summary>
        private async void CreateAccount()
        {
            if (UserName != null && Email != null && Password != null)
            {
                if (EmailAvailability(Email))
                {
                    DialogHandler.Dialog("Den email er allerede brugt", "Oprettelse fejlet");
                }
                else
                {
                    await PersistancyService.SaveInsertAsJsonAsync(new User()
                    {
                        User_Name = UserName, User_Email = Email, Password = Password, Teacher = IsTeacher
                    }, "Users");

                    UserCatalogSingleton.Instance.LoadUsersAsync();
                    ((Frame)Window.Current.Content).Navigate(typeof(PageLogin));
                }
            }
            else
            {
                DialogHandler.Dialog("Mangler at udfylde brugernavn, email eller password", "Fejlet oprettelse");
            }
        }
 private void BaseProductList_DragItemsCompleted(ListViewBase sender, DragItemsCompletedEventArgs args)
 {
     PersistancyService.SaveShopListAsJsonAsync(ShoppingListSingleton.Instance.ShoppingListList);
 }
        /// <summary>
        /// Method that posts the tavlebooking to the database, after it has checked if its possible in the chosen timespan.
        /// </summary>
        /// <param name="tavleEndTime">The total time for the selected tavlebooking (Comes from the Booktavle Method)</param>
        /// <param name="myTavleBooking">The chosen tavlebooking. This value comes from the SelectedDuration, and SelectedTavleStartTime properties</param>
        /// <returns></returns>
        public static async Task BookTavle(TimeSpan tavleEndTime, TavleBooking myNewTavleBooking)
        {
            AllBookingsView tempSelectedBooking = Reference.SelectedBooking;
            var             doesUserHaveAnyTavleBookingsForThisRoom = (from t in Reference.Tavlebookings
                                                                       select t).Where(x => x.Booking_Id == Reference.SelectedBooking.Booking_Id).ToList();

            if (doesUserHaveAnyTavleBookingsForThisRoom.Count > 0)
            {
                DialogHandler.Dialog("Det er ikke muligt at booke flere end 1 tavle\nSlet venligst eksisterende tavler og book derefter igen.", "For mange bookede tavler");
                return;
            }
            else
            {
                if (Reference.SelectedBooking.Type == "Klasselokale")
                {
                    var numberOfTavleBookingsForThisRoomOnThatDay = (from t in Reference.Tavlebookings
                                                                     join b in AllBookingsViewCatalogSingleton.Instance.AllBookings on t.Booking_Id equals b.Booking_Id
                                                                     select new
                    {
                        BookingId = t.Booking_Id,
                        UserId = b.User_Id,
                        RoomId = b.Room_Id,
                        BookingDate = b.Date,
                        BookingStart = b.BookingStart,
                        BookingEnd = b.BookingEnd,
                        TavleId = t.Tavle_Id,
                        TavleStart = t.Time_start,
                        TavleEnd = t.Time_end
                    }).Where(x => Reference.SelectedBooking.Room_Id == x.RoomId && Reference.SelectedBooking.Date == x.BookingDate).ToList();
                    if (numberOfTavleBookingsForThisRoomOnThatDay.Count > 0 && numberOfTavleBookingsForThisRoomOnThatDay.Count <= 2)
                    {
                        var checkTavleTime = (from t in numberOfTavleBookingsForThisRoomOnThatDay
                                              select t).Where(x => (Reference.SelectedTavleStartTime + TimeSpan.FromSeconds(1)) <= x.TavleEnd && (tavleEndTime - TimeSpan.FromSeconds(1)) >= x.TavleStart).ToList();
                        if (checkTavleTime.Count == 0)
                        {
                            // INSERT
                            if (await DialogHandler.GenericYesNoDialog("Er du sikker på du vil booke denne tavletid?\nKvittering på tavlen vil blive tilsendt via mail", "Book Book Tavle?", "Ja", "Fortryd"))
                            {
                                await PersistancyService.SaveInsertAsJsonAsync(myNewTavleBooking, "TavleBookings");

                                MailService.MailSenderAsync(LoginHandler.SelectedUser.User_Email, "Kvittering på booking af tavletid", $"Du har booked tavlen i rummet {Reference.SelectedBooking.RoomName}" +
                                                            $"d. {Reference.SelectedBooking.Date.ToString("dd/MM/yyyy")} " +
                                                            $"mellem {new DateTime(myNewTavleBooking.Time_start.Ticks).ToString("HH:mm")} og {new DateTime(myNewTavleBooking.Time_end.Ticks).ToString("HH:mm")}.", true);
                            }
                            else
                            {
                                return;
                            }
                        }
                        else
                        {
                            DialogHandler.Dialog("Denne tid modstrider en anden tavle booking\nVælg venligst en tidligere eller senere tid", "Modstridende tider");
                        }
                    }
                    else
                    {
                        // INSERT
                        if (await DialogHandler.GenericYesNoDialog("Er du sikker på du vil booke denne tavletid?\nKvittering på tavlen vil blive tilsendt via mail", "Book Book Tavle?", "Ja", "Fortryd"))
                        {
                            await PersistancyService.SaveInsertAsJsonAsync(myNewTavleBooking, "TavleBookings");

                            MailService.MailSenderAsync(LoginHandler.SelectedUser.User_Email, "Kvittering på booking af tavletid", $"Du har booked tavlen i rummet {Reference.SelectedBooking.RoomName}" +
                                                        $"d. {Reference.SelectedBooking.Date.ToString("dd/MM/yyyy")} " +
                                                        $"mellem {new DateTime(myNewTavleBooking.Time_start.Ticks).ToString("HH:mm")} og {new DateTime(myNewTavleBooking.Time_end.Ticks).ToString("HH:mm")}.", true);
                        }
                        else
                        {
                            return;
                        }
                    }
                }
            }
            RefreshLists();
            Reference.SelectedBooking = tempSelectedBooking;
        }
        /// <summary>
        /// This method books the selected room again tomorrow, if that is possible.
        /// </summary>
        public static async Task BookAgainTomorrowMethodAsync()
        {
            // Retrieves the day after the selected booking date
            DateTime tomorrow = Reference.SelectedBooking.Date.AddDays(1);
            // The copied booking that needs to be inserted into the database with the updated date.
            Booking updatedBooking = new Booking()
            {
                User_Id    = Reference.SelectedUser.User_Id,
                Room_Id    = Reference.SelectedBooking.Room_Id,
                Date       = tomorrow,
                Time_start = Reference.SelectedBooking.BookingStart,
                Time_end   = Reference.SelectedBooking.BookingEnd
            };
            // This object will be set to the returned booking that gets posted to the database and later used in the AllBookingsView object
            Booking returnedObj = null;
            // This object is the view object that gets added to the singleton, to that the view will be updated.-
            AllBookingsView viewToAdd = null;
            // Checks how many instances there is of this selectedbooking's specific room.
            var howManyOfThisRoomTomorrowQuery = (from b in AllBookingsViewCatalogSingleton.Instance.AllBookings
                                                  select b).Where(x => Reference.SelectedBooking.Room_Id == x.Room_Id && x.Date == tomorrow).ToList();

            if (howManyOfThisRoomTomorrowQuery.Count == 2)
            {
                // checks if there is any instances that overlaps the selectedbookings's time
                var checkTime = (from b in howManyOfThisRoomTomorrowQuery
                                 select b).Where(x => Reference.SelectedBooking.BookingStart > x.BookingStart && Reference.SelectedBooking.BookingStart <x.BookingEnd || Reference.SelectedBooking.BookingEnd> x.BookingStart && Reference.SelectedBooking.BookingEnd < x.BookingEnd).ToList();
                // If 0 or less
                if (checkTime.Count < 1)
                {
                    var result = await DialogHandler.GenericYesNoDialog("Er du sikker på du vil booke dette rum igen imorgen samme tid?\nKvittering på bookning af det nye rum vil blive tilsendt via mail", "Book igen imorgen?", "Ja", "Fortryd");

                    if (result)
                    {
                        // Inserts the selectedbooking into the database and updates the singleton
                        returnedObj = await PersistancyService.SaveInsertAsJsonAsync(updatedBooking, "Bookings");

                        MailService.MailSenderAsync(LoginHandler.SelectedUser.User_Email, "Kvittering på booking af rum", $"Du har booked rummet {Reference.SelectedBooking.RoomName} igen for " +
                                                    $"d. {returnedObj.Date.ToString("dd/MM/yyyy")} " +
                                                    $"mellem {new DateTime(returnedObj.Time_start.Ticks).ToString("HH:mm")} og {new DateTime(returnedObj.Time_end.Ticks).ToString("HH:mm")}.", true);
                    }
                    else
                    {
                        return;
                    }
                }
                else
                {
                    // Error message that displays if there already exists a booking in the database that overlaps with the selectedbooking on the day after the selectedbooking date
                    DialogHandler.Dialog("Denne booking kan ikke bookes imorgen\nda den overlapper eksisterende bookninger", "Overlappende Bookninger");
                }
            }
            else
            {
                var result = await DialogHandler.GenericYesNoDialog("Er du sikker på du vil booke dette rum igen imorgen samme tid?\nKvittering på bookning af det nye rum vil blive tilsendt via mail", "Book igen imorgen?", "Ja", "Fortryd");

                if (result)
                {
                    // Inserts the selectedbooking into the database and updates the singleton
                    returnedObj = await PersistancyService.SaveInsertAsJsonAsync(updatedBooking, "Bookings");

                    MailService.MailSenderAsync(LoginHandler.SelectedUser.User_Email, "Kvittering på booking af rum", $"Du har booked rummet {Reference.SelectedBooking.RoomName} igen for " +
                                                $"d. {returnedObj.Date.ToString("dd/MM/yyyy")} " +
                                                $"mellem {new DateTime(returnedObj.Time_start.Ticks).ToString("HH:mm")} og {new DateTime(returnedObj.Time_end.Ticks).ToString("HH:mm")}.", true);
                }
                else
                {
                    return;
                }
            }
            if (returnedObj != null)
            {
                viewToAdd = new AllBookingsView()
                {
                    RoomName        = Reference.SelectedBooking.RoomName,
                    Date            = tomorrow,
                    Booking_Id      = returnedObj.Booking_Id,
                    BookingStart    = Reference.SelectedBooking.BookingStart,
                    BookingEnd      = Reference.SelectedBooking.BookingEnd,
                    Room_Id         = Reference.SelectedBooking.Room_Id,
                    Floor           = Reference.SelectedBooking.Floor,
                    No              = Reference.SelectedBooking.No,
                    Name            = Reference.SelectedBooking.Name,
                    Building_Letter = Reference.SelectedBooking.Building_Letter,
                    Type            = Reference.SelectedBooking.Type,
                    User_Id         = Reference.SelectedBooking.User_Id
                };
                // Adds the viewToAdd object, to the singleton
                Reference.AllUserBookingsFromSingleton.Add(viewToAdd);
                // Refreshes the singleton, and re-queries the bookings for the selected user
                RefreshLists();
                // sets the selected booking to the newly added booking
                Reference.SelectedBooking = Reference.AllUserBookingsFromSingleton.First();
            }
        }