Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }