Example #1
0
        public static void removeById(LiteDatabaseContext _context, string id)
        {
            Reservation reservation = _context.Reservations.SingleOrDefault(e => e.ReservationId == id);

            _context.Reservations.Remove(reservation);
            _context.SaveChanges();
        }
Example #2
0
        public static List <Table> reserveTables(LiteDatabaseContext _context, int guests, TimeSlot timeslot)
        {
            //Reserve the needed amount of tables
            List <Table> availableTables = getAvailableTables(_context, timeslot);
            int          requiredTables  = (int)Math.Ceiling((double)guests / (double)Constants.TableSize);

            return(availableTables.Take(requiredTables).ToList());
        }
Example #3
0
 public Startup(IConfiguration configuration)
 {
     Configuration = configuration;
     using (var db = new LiteDatabaseContext())
     {
         db.Database.MigrateAsync();
     }
 }
Example #4
0
        private static List <Table> getAvailableTables(LiteDatabaseContext _context, TimeSlot timeslot)
        {
            //Get available tables in the given timeslot
            List <Reservation>      reservations   = getReservations(_context, timeslot);
            List <TableReservation> tablesReserved = reservations.SelectMany(d => d.TableReservations).ToList();
            List <Table>            usedTables     = tablesReserved.Select(d => d.Table).ToList();
            List <Table>            alltables      = _context.Tables.ToList();

            return(alltables.Where(table => !usedTables.Contains(table)).ToList());
        }
Example #5
0
        public static bool isAvailable(LiteDatabaseContext _context, int guests, int tables, TimeSlot timeslot)
        {
            List <Reservation> reservations = getReservations(_context, timeslot);
            //How many tables are booked for this timeslot?
            int usedtables = reservations.Sum(res => res.TableReservations.Count);
            //Decide if the slot available given the desired guest amount and current booked tables
            int tables_needed = guests / Constants.TableSize;

            return((tables - usedtables) >= tables_needed);
        }
Example #6
0
        private static List <Reservation> getReservations(LiteDatabaseContext _context, TimeSlot timeslot)
        {
            //Get reservations in the given timeslot
            List <Reservation> reservations = _context.Reservations
                                              .Include(x => x.TableReservations)
                                              .Where(res => res.ReservationTime.Date == timeslot.FullDate.Date)
                                              .ToList()
                                              //.Where(res => res.ReservationTime.Add(Constants.SlotSize) > timeslot.FullDate)
                                              //.Where(res => res.ReservationTime.Subtract(Constants.SlotSize) > timeslot.FullDate && res.ReservationTime.Add(Constants.SlotSize) > timeslot.FullDate)
                                              .Where(res => res.ReservationTime > timeslot.FullDate.Subtract(Constants.SlotSize) && res.ReservationTime < timeslot.FullDate.Add(Constants.SlotSize))
                                              .ToList();

            return(reservations);
        }
Example #7
0
 public BookingController(ILogger <BookingController> logger, LiteDatabaseContext context)
 {
     _logger  = logger;
     _context = context;
 }
Example #8
0
        public static List <Reservation> getAllReservations(LiteDatabaseContext _context)
        {
            List <Reservation> reservations = _context.Reservations.ToList();

            return(reservations);
        }
Example #9
0
 public static int getTableCount(LiteDatabaseContext _context)
 {
     return(_context.Tables.Count());
 }