Esempio n. 1
0
        public IHttpActionResult PutTavleBooking(int id, TavleBooking tavleBooking)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != tavleBooking.Tavle_Id)
            {
                return(BadRequest());
            }

            db.Entry(tavleBooking).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!TavleBookingExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Esempio n. 2
0
        /// <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");
                }
            }
        }
Esempio n. 3
0
        public IHttpActionResult GetTavleBooking(int id)
        {
            TavleBooking tavleBooking = db.TavleBookings.Find(id);

            if (tavleBooking == null)
            {
                return(NotFound());
            }

            return(Ok(tavleBooking));
        }
Esempio n. 4
0
        public IHttpActionResult PostTavleBooking(TavleBooking tavleBooking)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.TavleBookings.Add(tavleBooking);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = tavleBooking.Tavle_Id }, tavleBooking));
        }
Esempio n. 5
0
        public IHttpActionResult DeleteTavleBooking(int id)
        {
            TavleBooking tavleBooking = db.TavleBookings.Find(id);

            if (tavleBooking == null)
            {
                return(NotFound());
            }

            db.TavleBookings.Remove(tavleBooking);
            db.SaveChanges();

            return(Ok(tavleBooking));
        }
Esempio n. 6
0
        /// <summary>
        /// Method that checks for preconditions, before calling the BookTavle Method.
        /// </summary>
        public static async Task BookTavleMethodAsync()
        {
            TavleBooking myNewTavleBooking = null;
            TimeSpan     tavleEndTime      = Reference.SelectedTavleStartTime.Add(TimeSpan.Parse(Reference.SelectedDuration));

            if (Reference.SelectedTavleStartTime >= Reference.SelectedBooking.BookingStart && tavleEndTime <= Reference.SelectedBooking.BookingEnd)
            {
                if (tavleEndTime > Reference.SelectedBooking.BookingEnd)
                {
                    var endTimeExceedsBookingEnd = await DialogHandler.GenericYesNoDialog("Tiden kan ikke overstige sluttiden for denne booking.\nEr du sikker på du vil forsætte?\nDin tavletid vil blive begrænset!", "Begrænset Tavletid!", "Acceptér", "Fortryd");

                    if (endTimeExceedsBookingEnd)
                    {
                        tavleEndTime      = Reference.SelectedBooking.BookingEnd;
                        myNewTavleBooking = new TavleBooking()
                        {
                            Booking_Id = Reference.SelectedBooking.Booking_Id, Time_start = Reference.SelectedTavleStartTime, Time_end = tavleEndTime
                        };
                        await BookTavle(tavleEndTime, myNewTavleBooking);
                    }
                    else
                    {
                        return;
                    }
                }
                else if (Reference.SelectedTavleStartTime < Reference.SelectedBooking.BookingStart)
                {
                    DialogHandler.Dialog("Vælg venligt en anden starttid\nStarttiden kan ikke være mindre end start-tiden for denne booking", "Ugyldig tid");
                    return;
                }
                else
                {
                    myNewTavleBooking = new TavleBooking()
                    {
                        Booking_Id = Reference.SelectedBooking.Booking_Id, Time_start = Reference.SelectedTavleStartTime, Time_end = tavleEndTime
                    };
                    await BookTavle(tavleEndTime, myNewTavleBooking);
                }
            }
            else
            {
                DialogHandler.Dialog("Den valgte tavletid skal være inden for den bookede periode\nVælg venligst en anden tavletid", "Ugyldig tid");
            }
        }
Esempio n. 7
0
        /// <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;
        }