public async Task <HouseholdDto> AddFamilyMember(int id, FamilyMemberDto familyMemberDto)
        {
            var household = await _context.Household
                            .Include(p => p.FamilyMembers)
                            .FirstOrDefaultAsync(x => x.Id == id);

            FamilyMember spouse = null;

            if (familyMemberDto.Spouse != null)
            {
                spouse = await _familyMemberBc.GetFamilyMember(familyMemberDto.Spouse);

                if (spouse == null)
                {
                    throw new NotFoundException($"Spouse Id {familyMemberDto.Spouse} not found");
                }
            }

            var familyMember = familyMemberDto.ToFamilyMember();

            household.FamilyMembers.Add(familyMember);
            _context.Entry(household).State = EntityState.Modified;
            _householdBc.ComputeHouseholdStatistics(household);
            await _context.SaveChangesAsync();

            // spouse to be updated
            if (spouse != null)
            {
                spouse.Spouse = familyMember.Id;
                _context.Entry(spouse).State = EntityState.Modified;

                await _context.SaveChangesAsync();
            }

            return(new HouseholdDto(household));
        }
Exemple #2
0
        public async Task <ActionResult <HouseholdDto> > PostHouseholdFamilyMember(int id, FamilyMemberDto familyMemberDto)
        {
            try
            {
                var result = await _bc.AddFamilyMember(id, familyMemberDto);

                return(CreatedAtAction("GetHousehold", new { id = result.Id }, result));
            }
            catch (NotFoundException nfe)
            {
                return(NotFound(nfe.Message));
            }
        }