private void UpdateMemberCallings(string[] selectedCallings, Member memberToUpdate)
        {
            if (selectedCallings == null)
            {
                memberToUpdate.Calling_Members = new List <Calling_Member>();
                return;
            }

            var selectedCallingsHS = new HashSet <string>(selectedCallings);
            var memberCallings     = new HashSet <int>(memberToUpdate.Calling_Members.Select(c => c.Calling.CallingId));

            foreach (var calling in _context.Callings)
            {
                if (selectedCallingsHS.Contains(calling.CallingId.ToString()))
                {
                    if (!memberCallings.Contains(calling.CallingId))
                    {
                        memberToUpdate.Calling_Members.Add(new Calling_Member {
                            MemberId = memberToUpdate.MemberId, CallingId = calling.CallingId
                        });
                    }
                }
                else
                {
                    if (memberCallings.Contains(calling.CallingId))
                    {
                        Calling_Member callingToRemove = memberToUpdate.Calling_Members.FirstOrDefault(i => i.CallingId == calling.CallingId);
                        _context.Remove(callingToRemove);
                    }
                }
            }
        }
        public async Task <IActionResult> Create([Bind("MemberId,MemberFull,Birth")] Member member, int[] selectedCallings)
        {
            if (selectedCallings.Length > 0)
            {
                member.Calling_Members = new List <Calling_Member>();
                foreach (var calling in selectedCallings)
                {
                    var callingToAdd = new Calling_Member {
                        MemberId = member.MemberId, CallingId = calling
                    };
                    member.Calling_Members.Add(callingToAdd);
                }
            }
            if (ModelState.IsValid)
            {
                _context.Add(member);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            PopulateAssignedCallingData(member);
            return(View(member));
        }