/// <summary>
        /// Insert the family invitation
        /// </summary>
        /// <param name="familyInvitation">Family invitation</param>
        /// <returns>The family invitation</returns>
        public FamilyInvitation AddInvitation(FamilyInvitation familyInvitation)
        {
            if (familyInvitation == null)
            {
                throw new InvalidParameterException("Invalid parameters!");
            }

            familyInvitation.PhoneNumber = familyInvitation.PhoneNumber.RemoveCountyCode();
            var member = Repository.Table <FamilyMember>().Where(p => p.PhoneNumber == familyInvitation.PhoneNumber);

            if (member.Any())
            {
                throw new InvalidParameterException("Entered phone number is already used by another user");
            }

            var invitation = new FamilyInvitation
            {
                PhoneNumber  = familyInvitation.PhoneNumber,
                Token        = Guid.NewGuid(),
                MemberType   = familyInvitation.MemberType,
                CreationDate = DateTime.UtcNow,
                Status       = InvitationStatus.WaitingForSignup,
                FamilyID     = _currentUserService.FamilyID
            };

            Repository.Insert(invitation);

            // Sms invitation
            var family  = Repository.Table <Family>().Where(p => p.Id.Equals(invitation.FamilyID)).SingleOrDefault();
            var url     = HttpContext.Current != null ? HttpContext.Current.Request.UrlReferrer.AbsoluteUri + "#/invite/" + invitation.Token : string.Empty;
            var message = string.Format(_appSettingsService.FamilyInvitationMessage, family != null ? family.Name : string.Empty, url);

            _textMessageService.Send(invitation.PhoneNumber, message);

            return(invitation);
        }
 public FamilyInvitation CreateInvitation([FromBody] FamilyInvitation invitation)
 {
     return(_invitationService.AddInvitation(invitation));
 }