コード例 #1
0
        //Används endast i AddBooking
        public bool CheckAvailability(string bookingDate, LaundryTime laundryTime)
        {
            try
            {
                List <BookingList> list = con.BookingList.Where(r => r.bookedDate == bookingDate && r.bookedLaundryTime == laundryTime.bookedLaundryTime).ToList();

                if (list.Count == 0)
                {
                    return(true);
                }
                return(false);
            }
            catch (InvalidOperationException)
            {
                throw new DatabaseException("Databasfel, kontakta systemadminstratör");
            }
        }
コード例 #2
0
        //Används endast i AddBooking, utför bokningen
        public void AddBookingMethod(Apartment apartment, string bookingDate, LaundryTime laundryTime)
        {
            BookingList newBooking = new BookingList();

            newBooking.Apartment   = apartment;
            newBooking.bookedDate  = bookingDate;
            newBooking.LaundryTime = laundryTime;

            try
            {
                con.BookingList.Add(newBooking);
                con.SaveChanges();
            }
            catch (InvalidOperationException)
            {
                con.BookingList.Remove(newBooking);
                throw new DatabaseException("Databasfel, kontakta systemadminstratör!");
            }
        }
コード例 #3
0
        //Bokningsgenomförande (kontroll av regler), själva bokningen sker i metoden AddBookingMethod
        public string AddBooking(Apartment apartment, string bookingDate, string laundryTimeString)
        {
            string      message     = "";
            bool        hasBooking  = false;
            LaundryTime laundryTime = new LaundryTime();

            try
            {
                laundryTime = con.LaundryTime.First(r => r.bookedLaundryTime == laundryTimeString);

                //Hämta info från databasen
                DateTime           newBooking = DateTime.ParseExact(bookingDate + " " + laundryTime.bookedLaundryTime + "", "dd-MM-yyyy HH:mm", null);
                List <BookingList> oldList    = con.BookingList.Where(r => r.Apartment.apartmentNr == apartment.apartmentNr).ToList();

                //1 - finns det en existerande bokning
                if (oldList.Count() != 0)
                {
                    var      oldDate    = oldList[0];
                    DateTime oldBooking = DateTime.ParseExact(oldDate.bookedDate + " " + oldDate.bookedLaundryTime + "", "dd-MM-yyyy HH:mm", null);

                    //1.1 Om bokningen har passerat dagens datum = radera
                    if (oldBooking < DateTime.Now)
                    {
                        RemoveBooking(apartment.apartmentNr);
                    }
                    //1.2 Om bokningen fortfarande är aktiv, alltså inte passerat dagens datum
                    else
                    {
                        hasBooking = true;
                    }
                }

                //2 Meddalande vid fel

                if (hasBooking)
                {
                    message = "Meddelande: Bokningen kunde ej genomföras, lägenheten har redan en aktiv bokning!";
                }
                if (!CheckAvailability(bookingDate, laundryTime))
                {
                    message = "Meddelande: Bokningen kunde ej genomföras, passet är redan bokat";
                }
                if (newBooking < DateTime.Now)
                {
                    message = "Meddelande: Bokningen kunde ej genomföras, tiden för passet har passerat";
                }

                //2.1 Bokar ny bokning
                if (newBooking > DateTime.Now && !hasBooking && CheckAvailability(bookingDate, laundryTime))
                {
                    AddBookingMethod(apartment, bookingDate, laundryTime);
                    message = "Meddelande: Bokningen genomförd!";
                }

                return(message);
            }
            catch (InvalidOperationException)
            {
                throw new DatabaseException("Databasfel, kontakta systemadmistratör");
            }
        }