public async Task <ActionResult <string> > AuthenticateWebAdminAsync([FromBody] AuthenticateModelWebAdmin model)
        {
            var authenticateResponse = await _accountService.AuthenticateAsync(model.username, model.password);

            if (authenticateResponse == null)
            {
                return(null);
            }
            return(Ok(authenticateResponse));
        }
        public async Task <string> AuthenticateAsync(AuthenticateModelWebAdmin model)
        {
            FirebaseToken decodedToken = null;

            try
            {
                decodedToken = await FirebaseAuth.DefaultInstance
                               .VerifyIdTokenAsync(model.IdToken);
            }
            catch (Exception)
            {
                throw new FirebaseException(HttpStatusCode.Forbidden, "Unauthorized access to TradeZoneMap!!!");
            }
            string firebaseUid = decodedToken.Uid;
            string email       = "";
            string phoneNumber = "";
            string imageUrl    = "";

            decodedToken.Claims.TryGetValue("firebase", out object tmp);
            decodedToken.Claims.TryGetValue("email", out tmp);
            if (tmp != null)
            {
                email = tmp.ToString();
            }

            decodedToken.Claims.TryGetValue("phoneNumber", out tmp);
            if (tmp != null)
            {
                phoneNumber = tmp.ToString();
            }

            decodedToken.Claims.TryGetValue("picture", out tmp);
            if (tmp != null)
            {
                imageUrl = tmp.ToString();
            }

            decodedToken.Claims.TryGetValue("name", out tmp);
            string  name    = tmp.ToString();
            Account account = await _unitOfWork.Repository <Account>().GetAll().Where(x => x.Email == email && x.Active == true).FirstOrDefaultAsync();

            if (account == null)
            {
                throw new FirebaseException(HttpStatusCode.Forbidden, "Unauthorized access to TradeZoneMap!!!");
            }
            else
            {
                account.FcmToken = model.FcmToken;
                if (string.IsNullOrEmpty(account.Fullname))
                {
                    account.Fullname = name;
                }

                if (string.IsNullOrEmpty(account.PhoneNumber))
                {
                    account.PhoneNumber = phoneNumber;
                }

                if (string.IsNullOrEmpty(account.ImageUrl))
                {
                    account.ImageUrl = imageUrl;
                }

                await _unitOfWork.Repository <Account>().UpdateGuid(account, account.Id);

                await _unitOfWork.CommitAsync();
            }
            var jwt = GenerateJwtToken(account);

            return(jwt);
        }