// **************************************
        // GetInviteModel
        // **************************************
        private static InviteViewModel GetInviteModel(InviteViewModel model)
        {
            var user = Account.User();
            var quotas = user.MyBalances();

            model.NavigationLocation = new string[] { "Admin" };
            model.InviteId = model.InviteId ?? Guid.Empty.ToString();
            model.IsPlanInvitation = !user.IsSuperAdmin();
            model.ShowInviteForm = !quotas.NumberOfInvitedUsers.IsAtTheLimit;
            model.ShowPlanMessage = user.IsSuperAdmin() ||
                                    (quotas.NumberOfCatalogAdmins.Allowed.HasValue &&
                                    quotas.NumberOfCatalogAdmins.Remaining > 0);
            model.ShowBalanceWidget = user.IsPlanOwner;

            return model;
        }
        // **************************************
        // SendInvites
        // **************************************
        private void SendInvites(string[] recipients, string sender)
        {
            foreach (string recipient in recipients) {
                string address = recipient.ToLower().Trim();

                if (address != "*****@*****.**") {

                    var inviteId = UserManagementService.CreateNewInvitation(address);

                    if ((inviteId != null) && (!inviteId.Equals(Guid.Empty))) {
                        var inviteMsg = new InviteViewModel();
                        inviteMsg.NavigationLocation = new string[] { "Admin" };
                        inviteMsg.InviteId = inviteId.ToString();
                        inviteMsg.Sender = sender;
                        inviteMsg.Recipient = address;
                        inviteMsg.BaseUrl = SystemConfig.BaseUrl;
                        inviteMsg.InviteUrl = String.Format("{0}/{1}", inviteMsg.BaseUrl, "Account/Register");
                        inviteMsg.InvitingUser = User.User();

                        //string inviteLink = String.Format("{0}", baseUrl);
                        string subject = String.Format("{0} {1}", "WorldSongNet.com", //SiteProfileData.SiteProfile().CompanyName,
                            SystemMessages.InvitationSubjectLine);
                        string message = this.RenderViewToString("InviteMessage", inviteMsg);

                        Mail.SendMail(sender, address, subject, message);
                        UserEventLogService.LogUserEvent(UserActions.SentInvite);
                    }

                }
            }
        }
        public virtual ActionResult Invite(InviteViewModel model)
        {
            model = GetInviteModel(model);
            if (ModelState.IsValid) {
                string[] recipients = model.Recipients;
                if (recipients.Count() == 0) {
                    ModelState.AddModelError("Recipient", "Please enter a valid email address");
                    this.FeedbackError("There was an error processing your invites...");
                    return View(model);

                }
                string sender = String.Format("{0} <{1}>", this.Friendly(), SystemConfig.AdminEmailAddress);//this.UserName()); // Configuration.Get("AdminAddress");

                foreach (string recipient in recipients) {
                    string address = recipient.ToLower().Trim();

                    if (!Regex.Match(address, @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}").Success) {
                        ModelState.AddModelError("Recipient", "'" + address + "' is not a valid email address");
                        this.FeedbackError("There was an error processing your invites...");
                        return View(model);
                    }
                }

                SendInvites(recipients, sender);

                return View(Views.InviteComplete, model);
            } else {
                ModelState.AddModelError("", "There was an error processing your invites");
                this.FeedbackError("There was an error processing your invites...");
                return View(model);
            }
        }