public static bool ContactAction(HuntingEntities dataContext, TerritoryUserContact contact, bool accept, AclUser user)
 {
     try
     {
         if (accept)
         {
             var territoryUser = new TerritoryUser()
             {
                 AclUserId  = contact.AclUserId,
                 UserRoleEx = TerritoryUserRoleEnum.Member,
             };
             contact.Territory.TerritoryUsers.Add(territoryUser);
         }
         contact.IsDeleted  = true;
         contact.SysEditor  = user.Id;
         contact.SysUpdated = DateTime.Now;
         dataContext.SaveChanges();
         return(true);
     }
     catch (Exception exception)
     {
         logger.Error(exception, "GetTerritoryUserContact");
         return(false);
     }
 }
示例#2
0
        public IActionResult Invitation(TerritoryUserInvitation invitation)
        {
            try
            {
                if (!IsUser())
                {
                    return(Forbid());
                }

                if (database.TerritoryUser.Count(u => BasicStrings.StringsEqual(u.Email, invitation.Email)) > 0)
                {
                    return(RedirectToAction(nameof(AlreadyInvited), invitation));
                }

                var now = DateTime.Now;

                var user = new TerritoryUser
                {
                    Id        = Guid.NewGuid(),
                    Email     = invitation.Email,
                    Surname   = invitation.Surname,
                    GivenName = invitation.GivenName,
                    Created   = now,
                    Updated   = now,
                    Role      = "Invited"
                };

                database.TerritoryUser.Add(user);

                if (string.Equals(invitation.AlbaAccount, "this-account"))
                {
                    Guid albaAccountId = albaCredentialService.GetAlbaAccountIdFor(User.Identity.Name);

                    database
                    .TerritoryUserAlbaAccountLink
                    .Add(
                        new TerritoryUserAlbaAccountLink()
                    {
                        TerritoryUserId = user.Id,
                        AlbaAccountId   = albaAccountId,
                        Role            = "Invited",
                        Created         = DateTime.Now,
                        Updated         = DateTime.Now
                    });
                }

                database.SaveChanges();

                return(Ok());
            }
            catch (AlbaCredentialException e)
            {
                return(Redirect($"~/Home/LoginError?message={e.Message}"));
            }
            catch (Exception)
            {
                throw;
            }
        }
 public TerritoryUserModel(TerritoryUser territoryUser, int languageId)
 {
     this.Id             = territoryUser.Id;
     this.Email          = territoryUser.AclUser.Email;
     this.Fullname       = territoryUser.AclUser.Fullname;
     this.Role           = territoryUser.UserRoleEx;
     this.RoleText       = TerritoryUserRoleEnumConvertor.GetString(this.Role);
     this.RoleSelectList = TerritoryUserRoleEnumConvertor.GetSelectList(this.Role, languageId);
 }
        public static bool InviteUser(HuntingEntities dataContext, Territory territory, string email, string name, AclUser sender)
        {
            var isNewUser     = false;
            var lowerUserName = email.Trim().ToLower();

            var aclUser = dataContext.AclUsers.FirstOrDefault(item => item.IsDeleted == false && item.Email == lowerUserName);

            if (aclUser == null)
            {
                if (string.IsNullOrWhiteSpace(name))
                {
                    return(false);
                }
                aclUser = new AclUser()
                {
                    AccountTypeEx     = AccountTypeEnum.Standard,
                    Email             = email,
                    EmailCode         = Guid.NewGuid().ToString(),
                    Fullname          = name,
                    MaxTerritoryCount = 0,
                    SysCreated        = DateTime.Now,
                    SysEditor         = sender.Id,
                    SysUpdated        = DateTime.Now,
                };
                dataContext.AclUsers.Add(aclUser);
                EmailContext.CreateInviteEmail(dataContext, aclUser, sender);

                isNewUser = true;
            }

            if (territory.TerritoryUsers.Any(item => item.AclUserId == aclUser.Id))
            {
                return(true);
            }

            var territoryUser = new TerritoryUser()
            {
                AclUser    = aclUser,
                UserRoleEx = isNewUser ? TerritoryUserRoleEnum.Invited : TerritoryUserRoleEnum.Member,
            };

            territory.TerritoryUsers.Add(territoryUser);
            dataContext.SaveChanges();
            return(true);
        }
示例#5
0
        public IActionResult AddUsers([FromBody] List <UserInvitation> invitations)
        {
            try
            {
                var now = DateTime.Now;
                Console.WriteLine($"Adding Users...");
                Console.WriteLine($"    Adding User: {now.ToString("HH:mm:ss")}");
                Console.WriteLine($"    User Count: {invitations.Count}");

                if (!IsUser())
                {
                    return(Forbid());
                }

                Guid albaAccountId = albaCredentialService.GetAlbaAccountIdFor(User.Identity.Name);

                foreach (var invitation in invitations)
                {
                    Console.WriteLine($"    Adding User: {now.ToString("HH:mm:ss")}: {invitation.Email} {invitation.Name}");

                    if (!invitation.Selected || string.IsNullOrWhiteSpace(invitation.Email))
                    {
                        continue;
                    }

                    if (database.TerritoryUser.Any(u => BasicStrings.StringsEqual(u.Email, invitation.Email)))
                    {
                        continue; // Move to the next invite
                    }

                    var user = new TerritoryUser
                    {
                        Id        = Guid.NewGuid(),
                        Email     = invitation.Email,
                        GivenName = invitation.Name,
                        Created   = now,
                        Updated   = now,
                        Role      = "Added"
                    };

                    database.TerritoryUser.Add(user);
                    database
                    .TerritoryUserAlbaAccountLink
                    .Add(
                        new TerritoryUserAlbaAccountLink()
                    {
                        TerritoryUserId = user.Id,
                        AlbaAccountId   = albaAccountId,
                        Role            = "Added",
                        Created         = now,
                        Updated         = now
                    });
                }

                database.SaveChanges();

                return(Ok());
            }
            catch (AlbaCredentialException e)
            {
                return(Redirect($"~/Home/LoginError?message={e.Message}"));
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#6
0
        public IActionResult LinkAlbaAccount(LinkAlbaAccount link)
        {
            if (!IsUser())
            {
                return(Forbid());
            }

            var now = DateTime.Now;

            var user = database
                       .TerritoryUser
                       .FirstOrDefault(u => BasicStrings.StringsEqual(u.Email, link.TerritoryUserEmail));

            if (user == null)
            {
                user = new TerritoryUser
                {
                    Id      = Guid.NewGuid(),
                    Email   = link.TerritoryUserEmail,
                    Created = now,
                    Updated = now,
                };

                database.TerritoryUser.Add(user);
                database.SaveChanges();
            }

            var accountName = database
                              .AlbaAccounts
                              .FirstOrDefault(a => BasicStrings.StringsEqual(a.AccountName, link.AccountName));

            if (accountName != null)
            {
                throw new Exception($"Alba account '{link.AccountName}' already exists!");
            }

            // TODO: Check if credentials work

            var account = new AlbaAccount
            {
                Id          = Guid.NewGuid(),
                HostName    = link.Host,
                AccountName = link.AccountName,
                Created     = now,
                Updated     = now,
                LongName    = link.AccountName
            };

            database.AlbaAccounts.Add(account);
            database.SaveChanges();

            var credentials = new Credentials(
                account: link.AccountName,
                user: link.UserName,
                password: link.Password)
            {
                AlbaAccountId = account.Id
            };

            albaCredentialService.SaveCredentials(credentials);

            var userLink = new TerritoryUserAlbaAccountLink
            {
                AlbaAccountId   = account.Id,
                TerritoryUserId = user.Id,
                Created         = now,
                Updated         = now
            };

            database.TerritoryUserAlbaAccountLink.Add(userLink);
            database.SaveChanges();

            return(Ok());
        }
示例#7
0
 public UserPointShareModel(TerritoryUser territoryUser, bool isShared)
 {
     this.Id       = territoryUser.AclUser.Id;
     this.Name     = territoryUser.AclUser.Fullname;
     this.IsShared = isShared;
 }