public async Task <string> SaveMember(TeamMember teamMember) { var essTeam = EssTeam(Guid.Parse(teamMember.TeamId)); if (essTeam == null || essTeam.statuscode == DynamicsInactiveStatus) { throw new ArgumentException($"team {teamMember.TeamId} not found"); } era_essteamuser essTeamUser; if (teamMember.Id == null) { essTeamUser = new era_essteamuser { era_essteamuserid = Guid.NewGuid() }; context.AddToera_essteamusers(essTeamUser); } else { essTeamUser = context.era_essteamusers .Where(u => u._era_essteamid_value == Guid.Parse(teamMember.TeamId) && u.era_essteamuserid == Guid.Parse(teamMember.Id)) .SingleOrDefault(); if (essTeamUser == null) { throw new ArgumentException($"team member {teamMember.Id} not found in team {teamMember.TeamId}"); } } //TODO: move to automapper profile essTeamUser.era_firstname = teamMember.FirstName; essTeamUser.era_lastname = teamMember.LastName; essTeamUser.era_email = teamMember.Email; essTeamUser.era_phone = teamMember.Phone; essTeamUser.era_externalsystemuser = teamMember.ExternalUserId; essTeamUser.era_externalsystemtype = (int)ExternalSystemOptionSet.Bceid; essTeamUser.era_externalsystemusername = teamMember.UserName; essTeamUser.era_electronicaccessagreementaccepteddate = teamMember.AgreementSignDate; essTeamUser.era_label = string.IsNullOrEmpty(teamMember.Label) ? (int?)null : (int)Enum.Parse <TeamUserLabelOptionSet>(teamMember.Label); essTeamUser.era_role = string.IsNullOrEmpty(teamMember.Role) ? (int?)null : (int)Enum.Parse <TeamUserRoleOptionSet>(teamMember.Role); essTeamUser.era_lastsuccessfullogin = teamMember.LastSuccessfulLogin; if (teamMember.IsActive) { context.ActivateObject(essTeamUser, (int)TeamMemberStatus.Active); } else { context.ActivateObject(essTeamUser, (int)TeamMemberStatus.Inactive); } context.UpdateObject(essTeamUser); context.AddLink(essTeam, nameof(era_essteam.era_essteamuser_ESSTeamId), essTeamUser); await context.SaveChangesAsync(); context.DetachAll(); return(essTeamUser.era_essteamuserid.Value.ToString()); }
private era_essteamuser CreateTeamUser() { var newUser = new era_essteamuser { era_essteamuserid = Guid.NewGuid() }; context.AddToera_essteamusers(newUser); return(newUser); }
private era_essteamuser CreateTeamMember(EssContext essContext, era_essteam team, Guid id, string suffix = "", EMBC.ESS.Resources.Teams.TeamUserRoleOptionSet role = EMBC.ESS.Resources.Teams.TeamUserRoleOptionSet.Tier4) { var member = new era_essteamuser { era_essteamuserid = id, era_firstname = this.testPrefix + "-first" + suffix, era_lastname = this.testPrefix + "-last" + suffix, era_role = (int)role, era_externalsystemusername = this.testPrefix + "-" + Guid.NewGuid().ToString("N").Substring(0, 4) }; essContext.AddToera_essteamusers(member); essContext.SetLink(member, nameof(era_essteamuser.era_ESSTeamId), team); return(member); }
private era_referralprint CreateReferralPrint(era_evacuationfile file, era_essteamuser member, IEnumerable <era_evacueesupport> supports) { var referralPrint = new era_referralprint() { era_referralprintid = Guid.NewGuid(), era_name = testPrefix + "-referral", }; essContext.AddToera_referralprints(referralPrint); essContext.SetLink(referralPrint, nameof(era_referralprint.era_ESSFileId), file); essContext.SetLink(referralPrint, nameof(era_referralprint.era_RequestingUserId), member); foreach (var support in supports) { essContext.AddLink(referralPrint, nameof(era_referralprint.era_era_referralprint_era_evacueesupport), support); } return(referralPrint); }
public DynamicsTestData(IEssContextFactory essContextFactory) { var essContext = essContextFactory.Create(); jurisdictions = essContext.era_jurisdictions.OrderBy(j => j.era_jurisdictionid).ToArray(); canada = essContext.era_countries.Where(c => c.era_countrycode == "CAN").Single(); bc = essContext.era_provinceterritorieses.Where(c => c.era_code == "BC").Single(); #if DEBUG this.testPrefix = $"autotest-dev"; #else this.testPrefix = $"autotest-{TestHelper.GenerateNewUniqueId(string.Empty)}"; #endif this.activeTaskId = testPrefix + "-active-task"; this.inactiveTaskId = testPrefix + "-inactive-task"; var existingTeam = essContext.era_essteams.Where(t => t.era_name == testPrefix + "-team").SingleOrDefault(); if (existingTeam != null) { essContext.LoadProperty(existingTeam, nameof(era_essteam.era_ESSTeam_ESSTeamArea_ESSTeamID)); this.testTeam = existingTeam; this.CreateTeamMember(essContext, testTeam, Guid.NewGuid(), "-second"); CreateTeamMember(essContext, testTeam, Guid.NewGuid(), "-third"); CreateTeamMember(essContext, testTeam, Guid.NewGuid(), "-fourth"); } else { this.testTeam = CreateTeam(essContext, Guid.NewGuid()); } var otherTeam = essContext.era_essteams.Where(t => t.era_name == testPrefix + "-team-other").SingleOrDefault(); if (otherTeam != null) { essContext.LoadProperty(otherTeam, nameof(era_essteam.era_ESSTeam_ESSTeamArea_ESSTeamID)); this.otherTestTeam = otherTeam; } else { this.otherTestTeam = CreateTeam(essContext, Guid.NewGuid(), "-other"); } this.activeTask = essContext.era_tasks.Where(t => t.era_name == activeTaskId).SingleOrDefault() ?? CreateTask(essContext, activeTaskId, DateTime.UtcNow); this.inactiveTask = essContext.era_tasks.Where(t => t.era_name == activeTaskId).SingleOrDefault() ?? CreateTask(essContext, inactiveTaskId, DateTime.UtcNow.AddDays(-7)); this.tier4TeamMember = essContext.era_essteamusers.Where(tu => tu.era_firstname == this.testPrefix + "-first" && tu.era_lastname == this.testPrefix + "-last").SingleOrDefault() ?? CreateTeamMember(essContext, testTeam, Guid.NewGuid()); this.otherTeamMember = essContext.era_essteamusers.Where(tu => tu.era_firstname == this.testPrefix + "-first-other" && tu.era_lastname == this.testPrefix + "-last-other").SingleOrDefault() ?? CreateTeamMember(essContext, this.otherTestTeam, Guid.NewGuid(), "-other", EMBC.ESS.Resources.Teams.TeamUserRoleOptionSet.Tier1); this.testContact = essContext.contacts.Where(c => c.firstname == this.testPrefix + "-first" && c.lastname == this.testPrefix + "-last").SingleOrDefault() ?? CreateContact(essContext); this.supplierA = essContext.era_suppliers.Where(c => c.era_name == testPrefix + "-supplier-A").SingleOrDefault() ?? CreateSupplier(essContext, "A", this.testTeam); this.supplierB = essContext.era_suppliers.Where(c => c.era_name == testPrefix + "-supplier-B").SingleOrDefault() ?? CreateSupplier(essContext, "B", this.testTeam); this.supplierC = essContext.era_suppliers.Where(c => c.era_name == testPrefix + "-supplier-C").SingleOrDefault() ?? CreateSupplier(essContext, "C", this.otherTestTeam); this.inactiveSupplier = essContext.era_suppliers.Where(c => c.era_name == testPrefix + "-supplier-inactive").SingleOrDefault() ?? CreateSupplier(essContext, "inactive", null); var evacuationfile = essContext.era_evacuationfiles .Expand(f => f.era_CurrentNeedsAssessmentid) .Expand(f => f.era_Registrant) .Where(f => f.era_name == testPrefix + "-digital").SingleOrDefault(); if (evacuationfile == null) { evacuationfile = CreateEvacuationFile(essContext, this.testContact, testPrefix + "-digital"); } else { essContext.LoadProperty(evacuationfile, nameof(era_evacuationfile.era_era_evacuationfile_era_householdmember_EvacuationFileid)); CreateEvacueeSupports(essContext, evacuationfile, this.testContact, this.tier4TeamMember, testPrefix); } var paperEvacuationfile = essContext.era_evacuationfiles .Expand(f => f.era_CurrentNeedsAssessmentid) .Expand(f => f.era_Registrant) .Where(f => f.era_name == testPrefix + "-paper").SingleOrDefault(); if (paperEvacuationfile == null) { paperEvacuationfile = CreateEvacuationFile(essContext, this.testContact, testPrefix + "-paper", testPrefix + "-paper"); CreateEvacueeSupports(essContext, paperEvacuationfile, this.testContact, this.tier4TeamMember, testPrefix); } else { essContext.LoadProperty(paperEvacuationfile, nameof(era_evacuationfile.era_era_evacuationfile_era_householdmember_EvacuationFileid)); } essContext.SaveChanges(); essContext.DeactivateObject(this.inactiveSupplier, 2); essContext.SaveChanges(); essContext.DetachAll(); this.testEvacuationfile = essContext.era_evacuationfiles .Expand(f => f.era_CurrentNeedsAssessmentid) .Expand(f => f.era_Registrant) .Where(f => f.era_evacuationfileid == evacuationfile.era_evacuationfileid).Single(); essContext.LoadProperty(this.testEvacuationfile, nameof(era_evacuationfile.era_era_evacuationfile_era_evacueesupport_ESSFileId)); essContext.LoadProperty(this.testEvacuationfile, nameof(era_evacuationfile.era_era_evacuationfile_era_householdmember_EvacuationFileid)); this.testPaperEvacuationFile = essContext.era_evacuationfiles .Expand(f => f.era_CurrentNeedsAssessmentid) .Expand(f => f.era_Registrant) .Where(f => f.era_evacuationfileid == paperEvacuationfile.era_evacuationfileid).Single(); essContext.LoadProperty(this.testPaperEvacuationFile, nameof(era_evacuationfile.era_era_evacuationfile_era_evacueesupport_ESSFileId)); essContext.LoadProperty(this.testPaperEvacuationFile, nameof(era_evacuationfile.era_era_evacuationfile_era_householdmember_EvacuationFileid)); essContext.DetachAll(); this.essContextFactory = essContextFactory; }
private void CreateEvacueeSupports(EssContext essContext, era_evacuationfile file, contact contact, era_essteamuser creator, string prefix) { var referralSupportTypes = new[] { 174360001, 174360002, 174360003, 174360004, 174360007 }; var etransferSupportTypes = new[] { 174360000, 174360005, 174360006, 174360008 }; var referrals = referralSupportTypes.Select((t, i) => new era_evacueesupport { era_evacueesupportid = Guid.NewGuid(), era_suppliernote = $"{prefix}-ref-{i}", era_validfrom = DateTime.UtcNow.AddDays(-3), era_validto = DateTime.UtcNow.AddDays(3), era_supporttype = t, era_supportdeliverytype = 174360000, //referral statuscode = 1, //active statecode = 0 }).ToArray(); var etransfers = etransferSupportTypes.Select((t, i) => new era_evacueesupport { era_evacueesupportid = Guid.NewGuid(), era_suppliernote = $"{prefix}-etr-{i}", era_validfrom = DateTime.UtcNow.AddDays(-3), era_validto = DateTime.UtcNow.AddDays(3), era_supporttype = t, era_supportdeliverytype = 174360001, //etransfer era_totalamount = 100m, statuscode = 174360002, //approved statecode = 0 }).ToArray(); foreach (var support in referrals) { essContext.AddToera_evacueesupports(support); essContext.AddLink(file, nameof(era_evacuationfile.era_era_evacuationfile_era_evacueesupport_ESSFileId), support); essContext.SetLink(support, nameof(era_evacueesupport.era_IssuedById), creator); } foreach (var support in etransfers) { essContext.AddToera_evacueesupports(support); essContext.AddLink(file, nameof(era_evacuationfile.era_era_evacuationfile_era_evacueesupport_ESSFileId), support); essContext.SetLink(support, nameof(era_evacueesupport.era_IssuedById), creator); essContext.SetLink(support, nameof(era_evacueesupport.era_PayeeId), contact); } var supports = referrals.Concat(etransfers).ToArray(); var householdMembers = file.era_era_evacuationfile_era_householdmember_EvacuationFileid.ToArray(); foreach (var support in supports) { var supportHouseholdMembers = householdMembers.TakeRandom(); foreach (var member in supportHouseholdMembers) { essContext.AddLink(member, nameof(era_householdmember.era_era_householdmember_era_evacueesupport), support); } } }