public IActionResult Login(LoginViewModel login)
        {
            if (ModelState.IsValid)
            {
                User user = _context.Users.FirstOrDefault(u => u.Email == login.Email);

                if (user != null)
                {
                    if (Crypto.VerifyHashedPassword(user.Password, login.Password))
                    {
                        user.Token = Guid.NewGuid().ToString();
                        _context.SaveChanges();

                        Response.Cookies.Append("token", user.Token, new Microsoft.AspNetCore.Http.CookieOptions
                        {
                            Expires  = DateTime.Now.AddDays(5),
                            HttpOnly = true
                        });

                        return(RedirectToAction("index", "places"));
                    }
                }

                ModelState.AddModelError("Password", "Email or password is incorrect");
            }

            return(View("~/Views/Login/index.cshtml"));
        }
        public IActionResult Register(RegisterViewModel Register)
        {
            if (ModelState.IsValid)
            {
                if (!_context.Users.Any(u => u.Email == Register.Email))
                {
                    User user = new User
                    {
                        Email    = Register.Email,
                        Fullname = Register.Fullname,
                        Password = Crypto.HashPassword(Register.Password),
                        Token    = Guid.NewGuid().ToString()
                    };

                    _context.Users.Add(user);
                    _context.SaveChanges();


                    Response.Cookies.Append("token", user.Token, new Microsoft.AspNetCore.Http.CookieOptions
                    {
                        Expires  = DateTime.Now.AddDays(5),
                        HttpOnly = true
                    });

                    return(RedirectToAction("index", "Places"));
                }

                ModelState.AddModelError("Email", "This Email is already registered");
            }

            return(View("~/Views/Places/Index.cshtml"));
        }
        public IActionResult MakeReservation(Reservation reservationModel)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("details", "Places", new { id = reservationModel.PlaceId }, "reservations"));
            }

            Reservation reservation = new Reservation
            {
                PlaceId      = reservationModel.PlaceId,
                Fullname     = reservationModel.Fullname,
                Phone        = reservationModel.Phone,
                numOfPersons = reservationModel.numOfPersons,
                Date         = reservationModel.Date,
                Time         = reservationModel.Time
            };

            _context.Reservations.Add(reservation);
            _context.SaveChanges();

            return(RedirectToAction("Success", "Places"));
        }