예제 #1
0
        public IHttpActionResult UserAccountBooking(UserAccountBookingDTO booking) // BOOKING WITH USER ACCOUNT, NOT FINISHED
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            TextResult          httpResponse = new TextResult("", msg);
            SeatManager         smgr         = new SeatManager();
            CustomerManager     cmgr         = new CustomerManager();
            BookingManager      bmgr         = new BookingManager();
            UserAccountsManager umgr         = new UserAccountsManager();
            DateTime            currentDate  = DateTime.Now;
            string token   = umgr.CreateToken(booking.AccountName);
            var    loginOk = umgr.CheckIfUserIsLoggedIn(booking.LoginToken, token); // token passed from frontend to check if user is logged in, token variabel content?

            if (loginOk.Equals(false))
            {
                httpResponse.ChangeHTTPMessage("User is not logged in!", msg);
                return(httpResponse);
            }
            ;
            var convertedForDate = bmgr.DateTimeConverter(booking.BookingForDate); // Converting dates into DateTime objects

            if (convertedForDate.Equals(null))                                     // checking if date input is valid
            {
                httpResponse.ChangeHTTPMessage("Date input is not correct!", msg);
                return(httpResponse);
            }
            ;
            int?allSeatsId = smgr.GetSeatPlacementId(booking.RowNumber, booking.SeatNumber); // Gets the allSeatsId from AllSeats from row and seatnumber
            int bookingId  = smgr.CheckIfSeatIsTaken(convertedForDate, allSeatsId);          // checks if seat is taken, returns bookingId

            if (bookingId != 0)
            {
                httpResponse.ChangeHTTPMessage("That seat is taken!", msg); // http response if seat is taken
                return(httpResponse);
            }
            var custId        = umgr.GetCustomerIdFromUserAccountName(booking.AccountName);
            var email         = cmgr.GetCustomerEmailFromAccountName(custId);
            var bookingEntity = bmgr.UserAccountBooking(allSeatsId, custId, convertedForDate, currentDate);

            db.Bookings.Add(bookingEntity);
            db.SaveChanges();

            httpResponse.ChangeHTTPMessage("Booking has been made!", msg); // HTTP response if fails to savechanges to DB
            return(httpResponse);
        }