public async Task <IActionResult> Complete([FromBody] DTOs.InviteCompletion completionRequest)
        {
            ActionResponse actionResponse = new ActionResponse()
            {
                State = false
            };

            //check if inviation is active
            Mdls.Invite invite = await inviteRepository.Get(completionRequest.InvitationId);

            if (invite.InviteStatus == Mdls.InviteStatus.Pending)
            {
                string encryptedPassword = encryptionProvider.Encrypt(completionRequest.User.Password);
                string encryptionKey     = encryptionProvider.EncryiptionKey;

                completionRequest.User.Password      = encryptedPassword;
                completionRequest.User.EncryptionKey = encryptionKey;



                string userId = await userRepository.Add(completionRequest.User);

                #region Image
                if (completionRequest.User.Image != null && completionRequest.User.Image.StartsWith("data:image/png;base64,"))
                {
                    string path = await amazonS3ImageProvider.Add($"users/{userId}/profile.png", completionRequest.User.Image);

                    bool saved = await userRepository.UpdateImage(userId, path);
                }
                #endregion
                if (!String.IsNullOrEmpty(userId))
                {
                    bool updated = await inviteRepository.CompleteInvite(completionRequest.InvitationId);

                    actionResponse.State = updated;
                }
            }
            else if (invite.InviteStatus == Mdls.InviteStatus.Completed)
            {
                return(BadRequest(new DTOs.Error(ErrorResponses.INVITE_COMPLETED_EXIST)));
            }

            return(Ok(actionResponse));
        }