private static void MergeDutySkills(PersonExperienceDuty duty, PersonExpDutySkillDto[] skills) { var toAdd = from r in skills ?? System.Array.Empty <PersonExpDutySkillDto>() join e in duty.PersonExperienceDutySkill on r.SkillId equals e.SkillId into ge from e in ge.DefaultIfEmpty() where e == null || !r.IsRelevant select(r, e); foreach (var(skill, existing) in toAdd) { if (existing == null) { if (skill.IsRelevant) { duty.PersonExperienceDutySkill.Add(new PersonExperienceDutySkill() { SkillId = skill.SkillId }); } } else { duty.PersonExperienceDutySkill.Remove(existing); } } }
private void AssertPersonExperienceDuty(PersonExperienceDuty exp, UpsertPersonExperienceDutyCommand sut) { Assert.NotNull(exp); Assert.Equal(1, sut.ExperienceId); Assert.Equal(sut.Name, exp.Name); }
internal static async Task SeedExperience(this ILifetimeScope scope, int experienceId = 1, int personId = Defaults.PersonId, bool seedDuty = true, bool seedSkill = true) { var db = scope.Resolve <AppDbContext>(); var toAdd = new PersonExperience() { ExperienceId = experienceId, PersonId = personId, CompanyName = "CompanyName", FromDate = Defaults.Today.AddDays(-10), ToDate = Defaults.Today.AddDays(-1), Location = "Location", ModifyDate = Defaults.Today, Position = "Position", }; if (seedDuty) { var duty = new PersonExperienceDuty() { DutyId = 1, Name = "DutyName" }; if (seedSkill) { duty.PersonExperienceDutySkill = new List <PersonExperienceDutySkill>() { new PersonExperienceDutySkill() { Id = 1, Skill = SkillHelper.CreateSkill() } }; } toAdd.PersonExperienceDuty = new List <PersonExperienceDuty>() { duty }; } db.PersonExperience.Add(toAdd); await db.SaveChangesAsync(); }