public static async Task <TeamDTO> ResetTeamCode(TeamDTO data) { var newCode = DomAssignment.GenAuthCode(data.TeamAssignment.TeamName); var res = await GetDomAssignment(data.Lab.LabCode, data.TeamAssignment.TeamAuth); res.TeamAssignment.TeamAuth = newCode; res.TeamAssignment = await UpdateTeamAssignment(res.TeamAssignment); return(res); }
public static async Task AddLabAssignments(LabSettings lab, int counter = 0) { var domGroup = (await DocDBRepo.DB <DomainResourceGroup> .GetItemsAsync(g => g.AzureSubscriptionId == lab.AzureSubscriptionId && g.DnsZoneRG == lab.DnsZoneRG)).SingleOrDefault(); var domains = domGroup.DomainList; string auth = null; using (var dns = new DnsAdmin()) { await dns.InitAsync(); dns.SetClient(domGroup); var itemsPerDomain = (lab.AttendeeCount / domains.Count()) + 1; foreach (var dom in domains) { if (counter == lab.AttendeeCount) { continue; } for (var x = 0; x < itemsPerDomain; x++) { if (counter == lab.AttendeeCount) { continue; } //create [itemsPerDomain] teams/child domains per parent domain name var team = string.Format("{0}{1}", lab.LabName, (counter + 1)); auth = DomAssignment.GenAuthCode(team); var newTeamItem = new DomAssignment { ParentZone = dom, TeamName = team, DomainName = string.Format("{0}.{1}", team, dom), TeamAuth = auth, LabCode = lab.LabCode, LabSettingsId = lab.Id }; await DocDBRepo.DB <DomAssignment> .CreateItemAsync(newTeamItem); await dns.CreateNewChildZone(newTeamItem.ParentZone, newTeamItem.TeamName, newTeamItem.DomainName); counter++; } } } //update lab lab.State = LabState.Ready; await DocDBRepo.DB <LabSettings> .UpdateItemAsync(lab); }