public async Task <IActionResult> PlaceReservations(int id)
        {
            var user = await this.userManager.GetUserAsync(this.User);

            var place = this.placesService.GetById <PlaceViewModel>(id);

            if (place == null || place.User.Id != user.Id)
            {
                return(this.NotFound());
            }

            var viewModel = new ListReservationViewModel
            {
                Place        = place,
                Reservations =
                    this.reservationsService.GetAllByPlace <ReservationViewModel>(id).ToList(),
            };

            if (viewModel == null)
            {
                return(this.NotFound());
            }

            return(this.View(viewModel));
        }
        public ActionResult Create(int?pagina)
        {
            if (User.IsInRole("Admin"))
            {
                return(RedirectToAction("Index"));
            }

            var po = ListReservationViewModel.createListItems(db);

            ViewBag.ListRegions   = ListRegionsFilter.createListItems(db);
            ViewBag.TimeBreakList = ListTimeBreakFilter.createListItems(db);

            int pag = (pagina ?? 1);

            return(View(po.ToPagedList(pag, 5)));
        }
        public async Task <IActionResult> UserReservations()
        {
            var user = await this.userManager.GetUserAsync(this.User);

            var viewModel = new ListReservationViewModel
            {
                Reservations =
                    this.reservationsService.GetAllByUser <ReservationViewModel>(user.Id).ToList(),
            };

            if (viewModel == null)
            {
                return(this.NotFound());
            }

            return(this.View(viewModel));
        }
 public ListReservationWindow()
 {
     InitializeComponent();
     DataContext = new ListReservationViewModel();
 }
        public ActionResult Create(double?Price,
                                   DateTime?submitdate, int?TimeBreakId, int?pagina, string procura, string regiao, string intervalo)
        {
            int pag = 0;

            ViewBag.ListRegions   = ListRegionsFilter.createListItems(db);
            ViewBag.TimeBreakList = ListTimeBreakFilter.createListItems(db);

            if (!String.IsNullOrEmpty(procura) || !String.IsNullOrEmpty(regiao) || !String.IsNullOrEmpty(intervalo))
            {
                var po = ListReservationViewModel.createListItems(db);

                if (!String.IsNullOrEmpty(procura))
                {
                    po = po.Where(f => f.FillStationTimeBreak.FillStation.Name.Contains(procura)).ToList();
                }

                if (!String.IsNullOrEmpty(regiao) && !regiao.Contains("*"))
                {
                    int regionId = Int32.Parse(regiao);
                    po = po.Where(f => f.FillStationTimeBreak.FillStation.Station.RegionId == regionId).ToList();
                }

                if (!String.IsNullOrEmpty(intervalo) && !intervalo.Contains("*"))
                {
                    int timeBreakId = Int32.Parse(intervalo);
                    po = po.Where(f => f.FillStationTimeBreak.TimeBreakId == timeBreakId).ToList();
                }

                pag = (pagina ?? 1);
                return(View(po.ToPagedList(pag, 5)));
            }

            Reservation reservation = new Reservation();

            if (TimeBreakId != null)
            {
                reservation.FillStationTimeBreakId = (int)TimeBreakId;
            }
            else
            {
                return(View(ListReservationViewModel.createListItems(db)));
            }

            int fillStationId = db.FillStationTimeBreaks.Find(TimeBreakId).FillStationId;

            if (Price != null)
            {
                reservation.Price = VerifyPromotion.verifyPrice(db, (DateTime)submitdate, fillStationId);
            }
            else
            {
                return(View(ListReservationViewModel.createListItems(db)));
            }

            if (submitdate != null)
            {
                reservation.Day = (DateTime)submitdate;
            }
            else
            {
                return(View(ListReservationViewModel.createListItems(db)));
            }

            if (User.IsInRole("User"))
            {
                reservation.UserId = User.Identity.GetUserId();
            }

            if (ModelState.IsValid && !ValidateReservation.AlreadyExistsReservation(reservation))
            {
                // ver se o utilizador tem dinheiro suficiente
                var userId = User.Identity.GetUserId();
                foreach (BankInfo item in db.BankInfos.ToList())
                {
                    if (item.UserId == userId)
                    {
                        if (reservation.Price < item.Quant)
                        {
                            item.Quant = item.Quant - reservation.Price;

                            //// atualizar a base de dados
                            db.Reservations.Add(reservation);
                            db.SaveChanges();
                        }
                        else
                        {
                            ModelState.AddModelError(string.Empty, "Não tem dinheiro suficiente.");
                            pag = (pagina ?? 1);
                            return(View(ListReservationViewModel.createListItems(db).ToPagedList(pag, 5)));
                        }

                        break;
                    }
                }

                //// atualizar a base de dados
                //db.Reservations.Add(reservation);
                //db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            else
            {
                ModelState.AddModelError(string.Empty, "A reserva já existe na base de dados.");
            }



            pag = (pagina ?? 1);
            return(View(ListReservationViewModel.createListItems(db).ToPagedList(pag, 5)));
        }