コード例 #1
0
        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());
        }
コード例 #2
0
        private era_essteamuser CreateTeamUser()
        {
            var newUser = new era_essteamuser {
                era_essteamuserid = Guid.NewGuid()
            };

            context.AddToera_essteamusers(newUser);
            return(newUser);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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;
        }
コード例 #6
0
        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);
                }
            }
        }