private era_essteam CreateTeam(EssContext essContext, Guid id, string suffix = "") { var team = new era_essteam { era_essteamid = id, era_name = testPrefix + "-team" + suffix, }; essContext.AddToera_essteams(team); var assignedCommunities = essContext.era_essteamareas.Select(a => a._era_jurisdictionid_value).OrderBy(id => id).ToList(); if (this.testTeam != null) { assignedCommunities.Add(this.testTeam.era_ESSTeam_ESSTeamArea_ESSTeamID.FirstOrDefault()?._era_jurisdictionid_value); } var jurisdictionsToAssign = jurisdictions.Where(j => !assignedCommunities.Contains(j.era_jurisdictionid.GetValueOrDefault())).Take(1).ToArray(); foreach (var jurisdiction in jurisdictionsToAssign) { var teamArea = new era_essteamarea { era_essteamareaid = Guid.NewGuid() }; essContext.AddToera_essteamareas(teamArea); essContext.SetLink(teamArea, nameof(era_essteamarea.era_JurisdictionID), jurisdiction); essContext.SetLink(teamArea, nameof(era_essteamarea.era_ESSTeamID), team); essContext.AddLink(team, nameof(era_essteam.era_ESSTeam_ESSTeamArea_ESSTeamID), teamArea); teamArea._era_jurisdictionid_value = jurisdiction.era_jurisdictionid; team.era_ESSTeam_ESSTeamArea_ESSTeamID.Add(teamArea); } return(team); }
public async Task <string> SaveTeam(Team team) { var essTeam = EssTeam(team.Id); if (essTeam == null || essTeam.statuscode == DynamicsInactiveStatus) { throw new Exception($"team {team.Id} not found"); } var currentAssignments = context.era_essteamareas .Expand(a => a.era_JurisdictionID) .Where(a => a.era_ESSTeamID.era_essteamid == essTeam.era_essteamid) .ToArray(); var teamCommunities = team.AssignedCommunities.Select(c => Guid.Parse(c.Code)).Distinct().ToArray(); var assignementsToDelete = currentAssignments.Where(c => !teamCommunities.Contains(c.era_JurisdictionID.era_jurisdictionid.Value)).ToArray(); foreach (var assignmnent in assignementsToDelete) { context.DeleteObject(assignmnent); } var assignementsToAdd = teamCommunities.Where(c => !currentAssignments.Any(a => a.era_JurisdictionID.era_jurisdictionid == c)).ToArray(); foreach (var communityId in assignementsToAdd) { var jurisdiction = new era_jurisdiction { era_jurisdictionid = communityId }; var teamArea = new era_essteamarea { era_essteamareaid = Guid.NewGuid(), era_ESSTeamID = essTeam, }; context.AddToera_essteamareas(teamArea); context.AttachTo(nameof(context.era_jurisdictions), jurisdiction); context.SetLink(teamArea, nameof(era_essteamarea.era_JurisdictionID), jurisdiction); context.AddLink(essTeam, nameof(essTeam.era_ESSTeam_ESSTeamArea_ESSTeamID), teamArea); } context.UpdateObject(essTeam); await context.SaveChangesAsync(); context.DetachAll(); return(team.Id); }
public async Task <string> SaveTeam(Team team) { var context = essContextFactory.Create(); if (string.IsNullOrEmpty(team.Id)) { throw new ArgumentException($"Team ID cannot be empty", nameof(team.Id)); } var essTeam = EssTeam(context, Guid.Parse(team.Id)); if (essTeam == null) { throw new ArgumentException($"Team {team.Id} not found"); } await context.LoadPropertyAsync(essTeam, nameof(era_essteam.era_ESSTeam_ESSTeamArea_ESSTeamID)); //delete assigned communities not in updated list foreach (var community in essTeam.era_ESSTeam_ESSTeamArea_ESSTeamID.Where(ta => !team.AssignedCommunities.Any(c => c.Code == ta._era_jurisdictionid_value.ToString()))) { context.DeleteObject(community); } //add newly assigned communities foreach (var community in team.AssignedCommunities.Where(c => !essTeam.era_ESSTeam_ESSTeamArea_ESSTeamID.Any(ta => ta._era_jurisdictionid_value.ToString() == c.Code))) { var teamArea = new era_essteamarea { era_essteamareaid = Guid.NewGuid(), era_ESSTeamID = essTeam }; context.AddToera_essteamareas(teamArea); context.AddLink(essTeam, nameof(essTeam.era_ESSTeam_ESSTeamArea_ESSTeamID), teamArea); var jurisdiction = new era_jurisdiction { era_jurisdictionid = Guid.Parse(community.Code) }; context.AttachTo(nameof(context.era_jurisdictions), jurisdiction); context.SetLink(teamArea, nameof(era_essteamarea.era_JurisdictionID), jurisdiction); } await context.SaveChangesAsync(); context.DetachAll(); return(team.Id); }
public async Task <string> SaveTeam(Team team) { if (string.IsNullOrEmpty(team.Id)) { throw new ArgumentException($"Team ID cannot be empty", nameof(team.Id)); } var essTeam = EssTeam(Guid.Parse(team.Id)); if (essTeam == null) { throw new ArgumentException($"Team {team.Id} not found"); } await context.LoadPropertyAsync(essTeam, nameof(era_essteam.era_ESSTeam_ESSTeamArea_ESSTeamID)); //delete current assigned communities foreach (var community in essTeam.era_ESSTeam_ESSTeamArea_ESSTeamID) { context.DeleteObject(community); } //add all assigned communities foreach (var community in team.AssignedCommunities) { var teamArea = new era_essteamarea { era_essteamareaid = Guid.NewGuid(), era_ESSTeamID = essTeam, createdon = community.DateAssigned }; context.AddToera_essteamareas(teamArea); context.AddLink(essTeam, nameof(essTeam.era_ESSTeam_ESSTeamArea_ESSTeamID), teamArea); var jurisdiction = new era_jurisdiction { era_jurisdictionid = Guid.Parse(community.Code) }; context.AttachTo(nameof(context.era_jurisdictions), jurisdiction); context.SetLink(teamArea, nameof(era_essteamarea.era_JurisdictionID), jurisdiction); } await context.SaveChangesAsync(); context.DetachAll(); return(team.Id); }