public async Task <IViewComponentResult> InvokeAsync(int id)
        {
            bool checkin;
            var  reservations = RestaurantsManager.GetCheckinTodayReservationsByRestaurantID(id);
            List <ResCustomerModelView> viewReservations = new List <ResCustomerModelView>();

            foreach (ReservationEntry resAux in reservations)
            {
                var customer = CustomersManager.GetCustomerByCustomerId(resAux.CustomerId);
                if (resAux.CheckinDateTime == null)
                {
                    checkin = false;
                }
                else
                {
                    checkin = true;
                }
                var viewReservation = new ResCustomerModelView
                {
                    RestaurantID       = (int)resAux.RestaurantId,
                    CustomerId         = (int)resAux.CustomerId,
                    CustomerName       = $"{customer.User.FirstName} {customer.User.LastName}",
                    Restaurant         = resAux.Restaurant.RestaurantName,
                    ReservationEntryId = resAux.ReservationId,
                    PartySize          = resAux.PartySize,
                    ReservationStatus  = resAux.ReservationStatus,
                    EntryOrigin        = resAux.EntryOrigin,
                    ReservationDate    = resAux.ReservationDateTime,
                    Checkin            = checkin
                };
                viewReservations.Add(viewReservation);
            }
            return(View(viewReservations));
        }
Example #2
0
        //Edit Reservation
        public IActionResult ReservationEdit(int id)
        {
            LogRestaurant();
            if (TempData["ErrorMessage"] != null)
            {
                ViewBag.ErrorMessage = TempData["ErrorMessage"];
            }
            if (TempData["Message"] != null)
            {
                ViewBag.Message = TempData["Message"];
            }

            var    reservation     = RestaurantsManager.GetReservationById(id);
            var    userId          = CustomersManager.GetUserIdByCustomerId(reservation.CustomerId);
            var    customerUser    = UsersManager.GetUserByUserId(userId);
            string fullName        = $"{customerUser.FirstName} {customerUser.LastName}";
            var    viewreservation = new ResCustomerModelView
            {
                CustomerName       = fullName,
                EntryOrigin        = reservation.EntryOrigin,
                PartySize          = reservation.PartySize,
                ReservationStatus  = reservation.ReservationStatus,
                ReservationDate    = reservation.ReservationDateTime,
                ReservationEntryId = reservation.ReservationId,
                RestaurantID       = reservation.RestaurantId
            };

            ViewBag.ReservationStatus = GetReservationStatus();
            return(View(viewreservation));
        }
Example #3
0
        //Edit Reservation
        public IActionResult ReservationEdit(int id)
        {
            LogRestaurant();
            if (TempData["ErrorMessage"] != null)
            {
                ViewBag.ErrorMessage = TempData["ErrorMessage"];
            }
            if (TempData["Message"] != null)
            {
                ViewBag.Message = TempData["Message"];
            }
            var reservation     = RestaurantsManager.GetReservationById(id);
            var viewReservation = new ResCustomerModelView
            {
                RestaurantID       = (int)reservation.RestaurantId,
                CustomerId         = (int)reservation.CustomerId,
                Restaurant         = reservation.Restaurant.RestaurantName,
                ReservationEntryId = reservation.ReservationId,
                PartySize          = reservation.PartySize,
                ReservationStatus  = reservation.ReservationStatus,
                EntryOrigin        = reservation.EntryOrigin,
                ReservationDate    = reservation.ReservationDateTime
            };

            return(View(viewReservation));
        }
Example #4
0
        public IActionResult ReservationManage()
        {
            LogRestaurant();
            ClaimsPrincipal             cp               = this.User;
            var                         claims           = cp.Claims.ToList();
            var                         restId           = Convert.ToInt32(claims.SingleOrDefault(p => p.Type == "RestaurantID").Value);
            var                         reservations     = RestaurantsManager.GetManageReservations(restId);
            List <ResCustomerModelView> viewReservations = new List <ResCustomerModelView>();

            foreach (ReservationEntry resAux in reservations)
            {
                if (resAux.ReservationStatus != "on Hold")
                {
                    var customer        = CustomersManager.GetCustomerByCustomerId(resAux.CustomerId);
                    var viewReservation = new ResCustomerModelView
                    {
                        RestaurantID       = (int)resAux.RestaurantId,
                        CustomerId         = (int)resAux.CustomerId,
                        CustomerName       = $"{customer.User.FirstName} {customer.User.LastName}",
                        Restaurant         = resAux.Restaurant.RestaurantName,
                        ReservationEntryId = resAux.ReservationId,
                        PartySize          = resAux.PartySize,
                        ReservationStatus  = resAux.ReservationStatus,
                        EntryOrigin        = resAux.EntryOrigin,
                        ReservationDate    = resAux.ReservationDateTime
                    };
                    viewReservations.Add(viewReservation);
                }
            }
            ViewBag.RestaurantID = restId;
            return(View(viewReservations));
        }
        public async Task <IViewComponentResult> InvokeAsync(int id)
        {
            var reservations = RestaurantsManager.GetManageReservations(id);

            List <ResCustomerModelView> viewReservations = new List <ResCustomerModelView>();

            foreach (ReservationEntry resAux in reservations)
            {
                if (resAux.ReservationStatus == "on Hold")
                {
                    var customer        = CustomersManager.GetCustomerByCustomerId(resAux.CustomerId);
                    var viewReservation = new ResCustomerModelView
                    {
                        RestaurantID       = (int)resAux.RestaurantId,
                        CustomerId         = (int)resAux.CustomerId,
                        CustomerName       = $"{customer.User.FirstName} {customer.User.LastName}",
                        Restaurant         = resAux.Restaurant.RestaurantName,
                        ReservationEntryId = resAux.ReservationId,
                        PartySize          = resAux.PartySize,
                        ReservationStatus  = resAux.ReservationStatus,
                        EntryOrigin        = resAux.EntryOrigin,
                        ReservationDate    = resAux.ReservationDateTime
                    };
                    viewReservations.Add(viewReservation);
                }
            }
            return(View(viewReservations));
        }
Example #6
0
        public IActionResult ReservationDeny(ResCustomerModelView viewreservation)
        {
            LogRestaurant();
            var reservation = RestaurantsManager.GetReservationById(viewreservation.ReservationEntryId);

            reservation.CustomerMessage   = viewreservation.Message;
            reservation.ReservationStatus = "denied";
            RestaurantsManager.UpdateReservation(reservation);
            return(RedirectToAction("ReservationManage"));
        }
Example #7
0
        public IActionResult ReservationEdit(ResCustomerModelView viewReservation)
        {
            LogRestaurant();
            var      reservation = RestaurantsManager.GetReservationById(viewReservation.ReservationEntryId);
            DateTime eDatetime   = Convert.ToDateTime("1/1/0001 12:00:00 AM");

            if (viewReservation.ReservationDate == eDatetime)
            {
                viewReservation.ReservationDate = reservation.ReservationDateTime;
            }
            if (viewReservation.ReservationDate.Date < DateTime.Today.Date && viewReservation.ReservationStatus == "confirmed")
            {
                TempData["Message"]      = null;
                TempData["ErrorMessage"] = "Sorry!!! Your Reservation couldn't be updated. Reservations are only for future dates.";
                return(RedirectToAction("ReservationEdit", viewReservation.ReservationEntryId));
            }
            else
            {
                if (viewReservation.PartySize <= 0)
                {
                    TempData["Message"]      = null;
                    TempData["ErrorMessage"] = "Sorry!!! Your Reservation couldn't be Updated. PartySize must be a non-zero positive number";
                    return(RedirectToAction("ReservationEdit", viewReservation.ReservationEntryId));
                }
                else
                {
                    if (viewReservation.PartySize >= 100)
                    {
                        TempData["Message"]      = null;
                        TempData["ErrorMessage"] = "Sorry!!! Your Reservation couldn't be Updated. PartySize not supported by the Restaurant.";
                        return(RedirectToAction("ReservationEdit", viewReservation.ReservationEntryId));
                    }
                    else
                    {
                        reservation.ReservationStatus   = GetReservationStatusValue(viewReservation.ReservationStatus);
                        reservation.ReservationDateTime = viewReservation.ReservationDate;
                        reservation.PartySize           = viewReservation.PartySize;
                        reservation.EntryOrigin         = viewReservation.EntryOrigin;
                        RestaurantsManager.UpdateReservation(reservation);
                        TempData["Message"]      = null;
                        TempData["ErrorMessage"] = null;
                        return(RedirectToAction("ReservationManage"));
                    }
                }
            }
        }
Example #8
0
        //Customer's Reservation details from History
        public IActionResult ReservationHistoryDetails(int id)
        {
            LogRestaurant();
            var reservation     = RestaurantsManager.GetReservationById(id);
            var viewReservation = new ResCustomerModelView
            {
                RestaurantID       = (int)reservation.RestaurantId,
                CustomerId         = (int)reservation.CustomerId,
                Restaurant         = reservation.Restaurant.RestaurantName,
                ReservationEntryId = reservation.ReservationId,
                PartySize          = reservation.PartySize,
                ReservationStatus  = reservation.ReservationStatus,
                EntryOrigin        = reservation.EntryOrigin,
                ReservationDate    = reservation.ReservationDateTime,
                Message            = reservation.CustomerMessage
            };

            return(View(viewReservation));
        }
Example #9
0
        //Deny Reservation
        public IActionResult ReservationDeny(int id)
        {
            LogRestaurant();
            var    reservation     = RestaurantsManager.GetReservationById(id);
            var    userId          = CustomersManager.GetUserIdByCustomerId(reservation.CustomerId);
            var    customerUser    = UsersManager.GetUserByUserId(userId);
            string fullName        = $"{customerUser.FirstName} {customerUser.LastName}";
            var    viewreservation = new ResCustomerModelView
            {
                CustomerName       = fullName,
                EntryOrigin        = reservation.EntryOrigin,
                PartySize          = reservation.PartySize,
                ReservationStatus  = "denied",
                ReservationDate    = reservation.ReservationDateTime,
                ReservationEntryId = reservation.ReservationId,
                RestaurantID       = reservation.RestaurantId,
            };

            return(View(viewreservation));
        }
Example #10
0
        //Add Reservation
        public IActionResult ReservationCreate()
        {
            LogRestaurant();
            if (TempData["ErrorMessage"] != null)
            {
                ViewBag.ErrorMessage = TempData["ErrorMessage"];
            }
            if (TempData["Message"] != null)
            {
                ViewBag.Message = TempData["Message"];
            }
            ViewBag.Restaurants = BasicGetRestaurants();
            var viewReservation = new ResCustomerModelView
            {
                ReservationDate = DateTime.Now,
                PartySize       = 1
            };

            return(View(viewReservation));
        }
        public async Task <IViewComponentResult> InvokeAsync(int id)
        {
            var reservations = RestaurantsManager.GetReservationsByCustomerID(id);
            List <ResCustomerModelView> viewReservations = new List <ResCustomerModelView>();

            foreach (ReservationEntry resAux in reservations)
            {
                var viewReservation = new ResCustomerModelView
                {
                    RestaurantID       = (int)resAux.RestaurantId,
                    CustomerId         = (int)resAux.CustomerId,
                    Restaurant         = resAux.Restaurant.RestaurantName,
                    ReservationEntryId = resAux.ReservationId,
                    PartySize          = resAux.PartySize,
                    ReservationStatus  = resAux.ReservationStatus,
                    EntryOrigin        = resAux.EntryOrigin,
                    ReservationDate    = resAux.ReservationDateTime,
                    Message            = resAux.CustomerMessage
                };
                viewReservations.Add(viewReservation);
            }

            return(View(viewReservations));
        }
Example #12
0
        public IActionResult ReservationCreate(ResCustomerModelView viewReservation)
        {
            LogRestaurant();
            ClaimsPrincipal cp     = this.User;
            var             claims = cp.Claims.ToList();
            var             custId = Convert.ToInt32(claims.SingleOrDefault(p => p.Type == "CustomerID").Value);

            if (viewReservation.PartySize <= 0)
            {
                TempData["Message"]      = null;
                TempData["ErrorMessage"] = "Sorry!!! Your Reservation couldn't be created. PartySize must be a non-zero positive number";
                return(RedirectToAction("ReservationCreate"));
            }
            else
            {
                if (viewReservation.PartySize >= 100)
                {
                    TempData["Message"]      = null;
                    TempData["ErrorMessage"] = "Sorry!!! Your Reservation couldn't be created. PartySize not supported by the Restaurant.";
                    return(RedirectToAction("ReservationCreate"));
                }
                else
                {
                    DateTime eDatetime = Convert.ToDateTime("1/1/0001 12:00:00 AM");
                    if (viewReservation.ReservationDate == eDatetime)
                    {
                        TempData["Message"]      = null;
                        TempData["ErrorMessage"] = "You must pick a date and time to complete your reservation.";
                        return(RedirectToAction("ReservationCreate"));
                    }
                    else
                    {
                        if (viewReservation.ReservationDate.Date <= DateTime.Today.Date)
                        {
                            if (viewReservation.ReservationDate.Date == DateTime.Today.Date)
                            {
                                TempData["Message"]      = null;
                                TempData["ErrorMessage"] = "Sorry!!! Your Reservation couldn't be created. Reservations for today are closed. Try the waitlist!";
                            }
                            else
                            {
                                TempData["Message"]      = null;
                                TempData["ErrorMessage"] = "Sorry!!! Your Reservation couldn't be created. Reservations are only for future dates.";
                            }
                            return(RedirectToAction("ReservationCreate"));
                        }
                        else
                        {
                            var reservation = new ReservationEntry
                            {
                                EntryOrigin         = "app",
                                PartySize           = viewReservation.PartySize,
                                CustomerId          = custId,
                                RestaurantId        = viewReservation.RestaurantID,
                                ReservationStatus   = "on Hold",
                                ReservationDateTime = viewReservation.ReservationDate,
                            };
                            try
                            {
                                TempData["Message"]      = "Your NEW Reservation was created. The restaurant's manager will evaluate the restaurant availability and will reply as soon as possible";
                                TempData["ErrorMessage"] = null;
                                RestaurantsManager.CreateReservation(reservation);
                                return(RedirectToAction(nameof(ReservationsShow)));
                            }
                            catch
                            {
                                return(View());
                            }
                        }
                    }
                }
            }
        }
Example #13
0
        public ActionResult ReservationEdit(ResCustomerModelView viewReservation)
        {
            LogRestaurant();
            if (viewReservation.PartySize <= 0)
            {
                TempData["Message"]      = null;
                TempData["ErrorMessage"] = "Sorry!!! Your Reservation couldn't be updated. PartySize must be a non-zero positive number";

                return(RedirectToAction("ReservationEdit", viewReservation.ReservationEntryId));
            }
            else
            {
                if (viewReservation.PartySize >= 100)
                {
                    TempData["Message"]      = null;
                    TempData["ErrorMessage"] = "Sorry!!! Your Reservation couldn't be updated. PartySize not supported by the Restaurant.";
                    return(RedirectToAction("ReservationEdit", viewReservation.ReservationEntryId));
                }
                else
                {
                    var      reservation = RestaurantsManager.GetReservationById(viewReservation.ReservationEntryId);
                    DateTime eDatetime   = Convert.ToDateTime("1/1/0001 12:00:00 AM");
                    if (viewReservation.ReservationDate == eDatetime)
                    {
                        viewReservation.ReservationDate = reservation.ReservationDateTime;
                    }
                    if (viewReservation.ReservationDate.Date < DateTime.Today.Date)
                    {
                        TempData["Message"]      = null;
                        TempData["ErrorMessage"] = "Sorry!!! Your Reservation couldn't be updated. Reservations are only for future dates.";
                        return(RedirectToAction("ReservationEdit", viewReservation.ReservationEntryId));
                    }
                    else
                    {
                        if (!(reservation.PartySize <= viewReservation.PartySize && reservation.ReservationDateTime == viewReservation.ReservationDate))
                        {
                            if (reservation.ReservationStatus == "confirmed")
                            {
                                TempData["Message"]      = "Your reservation will be processed again due to the new date or party size request. The restaurant's manager will evaluate the restaurant availability and will reply as soon as possible.";
                                TempData["ErrorMessage"] = null;
                            }
                            else
                            {
                                TempData["Message"]      = "Your Reservation was updated.  The restaurant's  manager will evaluate the restaurant availability and will reply as soon as possible.";
                                TempData["ErrorMessage"] = null;
                            }
                            reservation.ReservationStatus = "on Hold";
                        }
                        else
                        {
                            if (reservation.ReservationStatus == "confirmed")
                            {
                                TempData["Message"]      = "Your Reservation was updated and confirmed.";
                                TempData["ErrorMessage"] = null;
                            }
                            else
                            {
                                TempData["Message"]      = "Your Reservation was updated. The restaurant's manager will evaluate the restaurant availability and will reply as soon as possible";
                                TempData["ErrorMessage"] = null;
                            }
                        }
                        reservation.ReservationId       = viewReservation.ReservationEntryId;
                        reservation.PartySize           = viewReservation.PartySize;
                        reservation.ReservationDateTime = viewReservation.ReservationDate;
                        reservation.EntryOrigin         = "app";
                        try
                        {
                            RestaurantsManager.UpdateReservation(reservation);
                            return(RedirectToAction(nameof(ReservationsShow)));
                        }
                        catch
                        {
                            return(View());
                        }
                    }
                }
            }
        }