public IActionResult LogInSyn([FromBody] DTO.Principal principal)
        {
            PrincipalDAO dao  = new PrincipalDAO(_context);
            string       role = dao.CheckLogin(principal.Username, principal.Password);

            if (role == "admin" || role == "user")
            {
                HttpContext.Session.SetString("USER", principal.Username);
                HttpContext.Session.SetString("ROLE", role);
                if (role == "user")
                {
                    ShoppingCartDAO      scDAO              = new ShoppingCartDAO(_context);
                    List <DTO.Accessory> listAccCart        = scDAO.FindAllAccCartByUsername(principal.Username);
                    Dictionary <string, DTO.Accessory> cart = new Dictionary <string, DTO.Accessory>();
                    foreach (var item in listAccCart)
                    {
                        DTO.ShoppingCart.AddCart(item, cart);
                    }
                    HttpContext.Session.SetCollectionAsJson("cart", cart);
                }
                TempData["msg"]         = "Register successful";
                TempData["msg-details"] = "System automatically log in your account.";
            }
            else
            {
                TempData["msg"] = "Register failed";
            }
            return(RedirectToAction("Index", "Home"));;
        }
        public IActionResult Index()
        {
            PrincipalDAO dao      = new PrincipalDAO(_context);
            string       username = HttpContext.Session.GetString("USER");
            Principal    dto      = dao.FindByUsername(username);

            if (dto != null)
            {
                ViewData["deliveryAddress"] = dto.Address;
                ViewData["deliveryPhone"]   = dto.Phone;
            }
            else
            {
                ViewData["msg"] = "Load checkout failed";
                return(View("Error Page"));
            }
            Dictionary <string, DTO.Accessory> shoppingCart = HttpContext.Session.GetCollectionFromJson <Dictionary <string, DTO.Accessory> >("cart");
            Dictionary <string, DTO.Accessory> cart         = new Dictionary <string, DTO.Accessory>();

            foreach (var item in shoppingCart)
            {
                string        id         = item.Key;
                DTO.Accessory dtoSession = item.Value;
                AccessoryDAO  accDAO     = new AccessoryDAO(_context);
                DTO.Accessory accDTO     = accDAO.FindByPrimaryKey(id);
                accDTO.Quantity = dtoSession.Quantity;
                cart.Add(id, accDTO);
            }
            return(View(cart));
        }
        public IActionResult LogIn([FromBody] DTO.Principal principal)
        {
            PrincipalDAO dao  = new PrincipalDAO(_context);
            string       role = dao.CheckLogin(principal.Username, principal.Password);

            if (role == "admin" || role == "user")
            {
                HttpContext.Session.SetString("USER", principal.Username);
                HttpContext.Session.SetString("ROLE", role);
                if (role == "user")
                {
                    ShoppingCartDAO      scDAO              = new ShoppingCartDAO(_context);
                    List <DTO.Accessory> listAccCart        = scDAO.FindAllAccCartByUsername(principal.Username);
                    Dictionary <string, DTO.Accessory> cart = new Dictionary <string, DTO.Accessory>();
                    foreach (var item in listAccCart)
                    {
                        DTO.ShoppingCart.AddCart(item, cart);
                    }
                    HttpContext.Session.SetCollectionAsJson("cart", cart);
                    var a = HttpContext.Session.GetCollectionFromJson <Dictionary <string, DTO.Accessory> >("cart");
                }
                TempData["msg"] = "Login successfully";
            }
            else
            {
                TempData["msg"] = "Login failed";
            }
            return(new JsonResult(role));
        }
        public IActionResult CheckUsername([FromBody] string txtUsernameRg)
        {
            PrincipalDAO dao       = new PrincipalDAO(_context);
            bool         isExisted = dao.CheckExisted(txtUsernameRg);

            return(new JsonResult(isExisted));
        }
        public IActionResult LoadProfile([FromBody] string txtUsernameLg)
        {
            PrincipalDAO dao = new PrincipalDAO(_context);
            Principal    dto = dao.FindByUsername(txtUsernameLg);

            return(new JsonResult(dto));
        }
        public IActionResult Register([Bind("Username,Password,Fullname,Phone,Address")] DTO.Principal principal)
        {
            PrincipalDAO dao = new PrincipalDAO(_context);

            principal.Role = "user";
            if (dao.Register(principal).Result)
            {
                return(LogInSyn(principal));
            }
            else
            {
                return(RedirectToAction("Index", "Home"));
            }
        }
        public IActionResult UpdateProfile([FromBody] DTO.Principal principal)
        {
            PrincipalDAO dao = new PrincipalDAO(_context);
            string       msg;

            if (dao.Update(principal))
            {
                msg = "Update profile success";
            }
            else
            {
                msg = "Nothing has changed or Update profile failed ";
            }
            return(new JsonResult(msg));
        }