public async Task <IActionResult> Login(LoginViewModel model)
        {
            var role = string.Empty;

            if (ModelState.IsValid)
            {
                TblLoginDetails user = ChkLoginCredentials(model);
                if (user != null)
                {
                    ViewData["msg"] = "Valid User";

                    role = await LoginRedirect(user);

                    if (role == "Admin")
                    {
                        return(RedirectToAction("Admin", "User"));
                    }
                    else
                    {
                        return(RedirectToAction("Userdetails", "User"));
                    }
                }
                else
                {
                    ViewData["msg"] = "InValid User";
                }
            }
            ModelState.Clear();
            return(View("Login"));
        }
        public async Task <IActionResult> Register(Registration model, string mode)
        {
            ViewData["mode"] = string.Empty;
            if (ModelState.IsValid)
            {
                if (mode == "update")
                {
                    UpdateUser(uid, model);
                    return(RedirectToAction("Admin", "User"));
                }
                else
                {
                    CreateUser(model);
                    TblLoginDetails user = new TblLoginDetails {
                        UserName = model.EmailID, Password = model.Password, IsAdmin = model.IsAdmin ? "Y" : "N", IsApproved = "N"
                    };
                    var role = await LoginRedirect(user);

                    if (role == "Admin")
                    {
                        return(RedirectToAction("Admin", "User"));
                    }
                    else
                    {
                        return(RedirectToAction("Userdetails", "User"));
                    }
                }
            }

            return(View("Registration"));
        }
        private async Task <string> LoginRedirect(TblLoginDetails user)
        {
            string role;

            if (user.IsAdmin == "Y")
            {
                role = "Admin";
            }
            else
            {
                role = "NormalUser";
            }

            var claims = new List <Claim> {
                new Claim(ClaimTypes.Name, user.UserName),
                new Claim(ClaimTypes.Role, role)
            };

            var userIdentity  = new ClaimsIdentity(claims, "Passport");
            var userPrincipal = new ClaimsPrincipal(userIdentity);

            await HttpContext.Authentication.SignInAsync("MyCookieMiddlewareInstance", userPrincipal, new AuthenticationProperties
            {
                ExpiresUtc   = DateTime.UtcNow.AddMinutes(20),
                IsPersistent = false,
                AllowRefresh = false
            }
                                                         );

            return(role);
        }
        public async Task <IActionResult> Reject(int id)
        {
            TblLoginDetails login = context.TblLoginDetails.Find(id);

            login.IsApproved = "N";
            context.SaveChanges();

            userstatus = await this.RetrieveApprovalStatus();

            return(RedirectToAction("Admin"));
        }
        private void ApproveOrReject(int id, string operation)
        {
            TblLoginDetails login = context.TblLoginDetails.Find(id);

            if (operation == "approve" && login.IsApproved == "N")
            {
                login.IsApproved = "Y";
            }
            else if (operation == "reject" && login.IsApproved == "Y")
            {
                login.IsApproved = "N";
            }

            context.SaveChanges();
        }
        public void CreateUser(Registration model)
        {
            using (var transaction = context.Database.BeginTransaction())
            {
                TblUserDetails user = new TblUserDetails {
                    Fname = model.Fname, Lname = model.Lname, EmailId = model.EmailID, Phone = Convert.ToDecimal(model.Phone), Address = model.Address
                };
                context.TblUserDetails.Add(user);
                context.SaveChanges();

                string adminchk = model.IsAdmin ? "Y" : "N";

                TblLoginDetails login = new TblLoginDetails {
                    UserName = model.EmailID, Password = model.Password, IsAdmin = adminchk, UserId = user.UserId
                };
                context.TblLoginDetails.Add(login);
                context.SaveChanges();
                transaction.Commit();
            }
        }
        public void UpdateUser(int id, Registration model)
        {
            using (var transaction = context.Database.BeginTransaction())
            {
                TblUserDetails user = context.TblUserDetails.Where(u => u.UserId == id).FirstOrDefault();
                user.Fname   = model.Fname;
                user.Lname   = model.Lname;
                user.EmailId = model.EmailID;
                user.Phone   = Convert.ToDecimal(model.Phone);
                user.Address = model.Address;

                context.SaveChanges();

                string adminchk = model.IsAdmin ? "Y" : "N";

                TblLoginDetails login = context.TblLoginDetails.Where(u => u.UserId == id).FirstOrDefault();
                login.UserName = model.EmailID;
                login.Password = model.Password;
                login.IsAdmin  = adminchk;

                context.SaveChanges();
                transaction.Commit();
            }
        }