public async Task <IActionResult> AuthenticateAsync([FromBody] Users userParam)
        {
            try
            {
                var user = await _userService.Authenticate(userParam.Username, userParam.Password, userParam.TenantID);

                if (user == null)
                {
                    return(BadRequest("Username atau Password anda Salah !!"));
                }
                // kenapa menggunkan user yang merupaka output dari authenticate ? supaya tau klo usernya ada //doublecheck
                // menggunakan handler bahwa 1 usernama hanya akan ada di 1 tenant yang sama tetpi bisa  di tenant yang lain ...
                var tenant = await _userService.tenantforusername(userParam.TenantID, user.Username);

                if (tenant == null)
                {
                    return(BadRequest("Anda tidak terdaftar di tenant ini "));
                }
                else
                {
                    user.TenantID   = tenant.TenantID;
                    user.TenantName = tenant.Tenant.TenantName;
                    Pengguna updatetenant = new Pengguna();
                    updatetenant.Username = user.Username;
                    updatetenant.TenantID = tenant.TenantID;
                    await _Pengguna.Updatetenant(updatetenant);
                }

                return(Ok(user));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <IActionResult> AuthenticateAsync([FromBody] User userParam)
        {
            try
            {
                var user = await _userService.Authenticate(userParam.Username, userParam.Password, userParam.TenantID);

                if (user == null)
                {
                    return(BadRequest("Username atau Password anda Salah !!"));
                }
                // kenapa menggunkan user yang merupaka output dari authenticate ? supaya tau klo usernya ada //doublecheck
                // menggunakan handler bahwa 1 usernama hanya akan ada di 1 tenant yang sama tetpi bisa  di tenant yang lain ...
                //var tenant = await _userService.tenantforusername(userParam.TenantID, user.Username);
                var tenantpengguna = _context.TenantPengguna.Where(r => r.Username == user.Username && r.TenantID == userParam.TenantID).Include(r => r.Tenant).SingleOrDefault();
                if (tenantpengguna == null)
                {
                    return(BadRequest("Username tidak terdaftar di tenant ini !!"));
                }
                if (tenantpengguna.StatusTenant == false)
                {
                    return(BadRequest("User " + user.Username + " di tenant ini tidak aktif"));
                }
                else
                {
                    //sebagai pertanda user login di tenant mana
                    user.TenantID   = tenantpengguna.TenantID;
                    user.TenantName = tenantpengguna.Tenant.TenantName;
                    Pengguna updatetenant = new Pengguna();
                    updatetenant.Username = user.Username;
                    updatetenant.TenantID = tenantpengguna.TenantID;
                    await _Pengguna.Updatetenant(updatetenant);
                }

                var message = new Message(new String[] { user.Email }, "Notifikasi login", "<h1>Hey!  " + userParam.Username + ", Anda login di akun ini !</h1><p> Anda login di waktu " + DateTime.Now + "</p>");
                _emailSender.SendEmail(message);
                return(Ok(user));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }