internal static string StoreInvitedUser(string email, string firstName, string lastName, string roleName)
        {
            var invitedPlatformUser = new PlatformInvitationsTableEntity();

            invitedPlatformUser.Email     = email;
            invitedPlatformUser.FirstName = firstName;
            invitedPlatformUser.LastName  = lastName;
            invitedPlatformUser.Role      = roleName;

            TableOperation operation = TableOperation.Insert((invitedPlatformUser as TableEntity));

            invitedPlatformUser.cloudTable.Execute(operation);

            return(invitedPlatformUser.InvitationKey);
        }
        public static PlatformInvitation TransformToPlatformInvitation(PlatformInvitationsTableEntity platformInvitationTableEntity)
        {
            PlatformInvitation userInvitation = null;

            if (platformInvitationTableEntity != null)
            {
                userInvitation = new PlatformInvitation
                {
                    Email         = platformInvitationTableEntity.Email,
                    FirstName     = platformInvitationTableEntity.FirstName,
                    LastName      = platformInvitationTableEntity.LastName,
                    Role          = platformInvitationTableEntity.Role,
                    InvitationKey = platformInvitationTableEntity.InvitationKey
                };
            }

            return(userInvitation);
        }
        internal static PlatformInvitationsTableEntity GetInvitedUser(string invitationKey)
        {
            CloudTableClient cloudTableClient = Sahara.Core.Settings.Azure.Storage.StorageConnections.PlatformStorage.CreateCloudTableClient();

            //Create and set retry policy
            //IRetryPolicy exponentialRetryPolicy = new ExponentialRetry(TimeSpan.FromSeconds(1), 4);
            IRetryPolicy linearRetryPolicy = new LinearRetry(TimeSpan.FromSeconds(1), 3);

            cloudTableClient.DefaultRequestOptions.RetryPolicy = linearRetryPolicy;

            CloudTable cloudTable = cloudTableClient.GetTableReference(PlatformInvitationsTableName);

            cloudTable.CreateIfNotExists();

            TableQuery <PlatformInvitationsTableEntity> query = new TableQuery <PlatformInvitationsTableEntity>()
                                                                .Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, invitationKey));

            PlatformInvitationsTableEntity invitedAccountUser = cloudTable.ExecuteQuery(query).FirstOrDefault();

            return(invitedAccountUser);
        }