private async Task AddExtUser(User user, UserDomainsEnum userDomainEnum, string externalUserId) { var userDomainsTable = MobileService.GetTable <UserDomain>(); var userDomains = await userDomainsTable.ToCollectionAsync(); var domain = userDomains.SingleOrDefault(d => d.DomainKey == (int)userDomainEnum); if (domain != null) { var externalUserstable = MobileService.GetTable <ExternalUser>(); var externalUsers = await externalUserstable.ToCollectionAsync(); var extUsers = externalUsers.Where(eu => eu.UserId == user.Id && eu.UserDomainId == domain.Id); if (extUsers.SingleOrDefault() == null) { ExternalUser extUser = new ExternalUser() { Id = Guid.NewGuid().ToString(), UserId = user.Id, ExternalUserId = externalUserId, UserDomainId = domain.Id }; await externalUserstable.InsertAsync(extUser); } } }
public async Task <bool> Insert(User user, UserDomainsEnum userDomainEnum, string externalUserId) { return(await this.ExecuteAuthenticated(async() => { var usersTable = await MobileService.GetTable <User>().ToCollectionAsync(); var existingUser = usersTable.Where(u => u.Email == user.Email); if (existingUser.SingleOrDefault() == null) { await MobileService.GetTable <User>().InsertAsync(user); } else { user = existingUser.Single(); } await AddExtUser(user, userDomainEnum, externalUserId); await AddUserGroup(user); return true; })); }
public async Task <string> GetUserInternalId(string externalUserId, UserDomainsEnum currentUserDomain) { return(await this.ExecuteAuthenticated(async() => { try { var domainsTable = MobileService.GetTable <UserDomain>(); var domains = await domainsTable.ToCollectionAsync(); var currentDomain = domains.Single(d => d.DomainKey == (int)currentUserDomain); var extUsers = await MobileService.GetTable <ExternalUser>().ToListAsync(); var currentExtUser = extUsers.Single(u => u.ExternalUserId == externalUserId && u.UserDomainId == currentDomain.Id); return currentExtUser.UserId; } catch (Exception ex) { } return ""; })); }