public PaginatedList <Person> GetEmailByName(Guid organizationId, string startsWith, int skip, int take, bool isOrgMember = true) { PaginatedList <OrganizationMember> orgMems = null; PaginatedList <Person> people = new PaginatedList <Person>(); _organzationMemberRepo.ForceIgnoreSecurity(); orgMems = _organzationMemberRepo.Find(null, om => om.OrganizationId.Equals(organizationId)); foreach (var member in orgMems?.Items) { var person = _personRepo.Find(null, p => p.Id.Equals(member.PersonId))?.Items.FirstOrDefault(); //var emails = _personEmailRepository.Find(null, pem => pem.PersonId.Equals(person.Id))?.Items; var user = _aspNetUsersRepository.Find(null, pem => pem.PersonId.Equals(person.Id))?.Items.FirstOrDefault(); person.OrgEmail = user.Email; people?.Items.Add(person); } var matches = people.Items.FindAll(p => p.Name.StartsWith(startsWith, StringComparison.OrdinalIgnoreCase)); people.Items.Clear(); foreach (var match in matches) { people.Items.Add(match); } return(people); }
/// <summary> /// Deletes all dependencies for the specified agent /// </summary> /// <param name="agentId"></param> public void DeleteAgentDependencies(Agent agent) { bool childExists = CheckReferentialIntegrity(agent.Id.ToString()); if (childExists) { throw new EntityOperationException("Referential Integrity in Schedule or job table, please remove those before deleting this agent"); } _personRepo.ForceIgnoreSecurity(); Person person = _personRepo.Find(0, 1).Items?.Where(p => p.IsAgent && p.Name == agent.Name && !(p.IsDeleted ?? false))?.FirstOrDefault(); if (person != null) { _personRepo.SoftDelete((Guid)person.Id); } _personRepo.ForceSecurity(); var aspUser = _usersRepo.Find(0, 1).Items?.Where(u => u.PersonId == person.Id)?.FirstOrDefault(); if (aspUser != null) { var user = _userManager.FindByIdAsync(aspUser.Id).Result; var deleteResult = _userManager.DeleteAsync(user).Result; if (!deleteResult.Succeeded) { throw new EntityOperationException("Something went wrong, unable to delete agent user"); } } //delete all group members with this agent id var allAgentMembers = GetAllMembersInGroup(agent.Id.ToString()).Items; foreach (var member in allAgentMembers) { _agentGroupMemberRepository.SoftDelete(member.Id ?? Guid.Empty); } DeleteExistingHeartbeats(agent.Id ?? Guid.Empty); }
public AgentViewModel GetAgentDetails(AgentViewModel agentView) { agentView.UserName = usersRepo.Find(null, u => u.Name == agentView.Name).Items?.FirstOrDefault()?.UserName; agentView.CredentialName = credentialRepo.GetOne(agentView.CredentialId ?? Guid.Empty)?.Name; AgentHeartbeat agentHeartBeat = agentHeartbeatRepo.Find(0, 1).Items?.Where(a => a.AgentId == agentView.Id).OrderByDescending(a => a.CreatedOn).FirstOrDefault(); if (agentHeartBeat != null) { agentView.LastReportedOn = agentHeartBeat.LastReportedOn; agentView.LastReportedStatus = agentHeartBeat.LastReportedStatus; agentView.LastReportedWork = agentHeartBeat.LastReportedWork; agentView.LastReportedMessage = agentHeartBeat.LastReportedMessage; agentView.IsHealthy = agentHeartBeat.IsHealthy; } return(agentView); }
public string GetOrganizationId() { string identity = _caller.Identity.Name; var user = usersRepository.Find(null, u => u.UserName == identity).Items?.FirstOrDefault(); organizationMemberRepository.ForceIgnoreSecurity(); var orgMember = organizationMemberRepository.Find(null, om => om.PersonId.Equals(user.PersonId))?.Items?.FirstOrDefault(); string organizationId; if (orgMember == null) { organizationId = organizationManager.GetDefaultOrganization().Id.ToString(); } else { organizationId = orgMember.OrganizationId.ToString(); } return(organizationId); }
public async Task <IActionResult> Delete(string id) { AgentModel agent = agentRepo.GetOne(new Guid(id)); if (agent == null) { ModelState.AddModelError("Delete Agent", "No Agent was found with the specified Agent ID"); return(NotFound(ModelState)); } bool isChildExists = agentManager.CheckReferentialIntegrity(id); if (isChildExists) { ModelState.AddModelError("Delete Agent", "Referential Integrity in Schedule or Job table, please remove those before deleting this agent."); return(BadRequest(ModelState)); } Person person = personRepo.Find(0, 1).Items?.Where(p => p.IsAgent && p.Name == agent.Name && !(p.IsDeleted ?? false))?.FirstOrDefault(); var aspUser = usersRepo.Find(0, 1).Items?.Where(u => u.PersonId == person.Id)?.FirstOrDefault(); if (aspUser == null) { ModelState.AddModelError("Delete Agent", "Something went wrong, could not find Agent User"); return(BadRequest(ModelState)); } var user = await userManager.FindByIdAsync(aspUser.Id); var deleteResult = await userManager.DeleteAsync(user); if (!deleteResult.Succeeded) { ModelState.AddModelError("Delete Agent", "Something went wrong, unable to Delete Agent User"); return(BadRequest(ModelState)); } personRepo.SoftDelete(person.Id ?? Guid.Empty); return(await base.DeleteEntity(id)); }
public async Task <IActionResult> Put(string id, [FromBody] Agent request) { try { Guid entityId = new Guid(id); var existingAgent = repository.GetOne(entityId); if (existingAgent == null) { return(NotFound()); } var namedAgent = repository.Find(null, d => d.Name.ToLower(null) == request.Name.ToLower(null) && d.Id != entityId)?.Items?.FirstOrDefault(); if (namedAgent != null && namedAgent.Id != entityId) { ModelState.AddModelError("Agent", "Agent Name Already Exists"); return(BadRequest(ModelState)); } if (existingAgent.Name != request.Name) { personRepo.ForceIgnoreSecurity(); Person person = personRepo.Find(0, 1).Items?.Where(p => p.Name == existingAgent.Name && p.IsAgent && p.IsDeleted == false)?.FirstOrDefault(); if (person != null) { person.UpdatedBy = string.IsNullOrWhiteSpace(applicationUser?.Name) ? person.UpdatedBy : applicationUser?.Name; person.Name = request.Name; personRepo.Update(person); usersRepo.ForceIgnoreSecurity(); var aspUser = usersRepo.Find(0, 1).Items?.Where(u => u.PersonId == person.Id)?.FirstOrDefault(); if (aspUser != null) { var existingUser = await userManager.FindByIdAsync(aspUser.Id).ConfigureAwait(false); existingUser.Name = request.Name; var result = await userManager.UpdateAsync(existingUser).ConfigureAwait(true); } usersRepo.ForceSecurity(); } personRepo.ForceSecurity(); } existingAgent.Name = request.Name; existingAgent.MachineName = request.MachineName; existingAgent.MacAddresses = request.MacAddresses; existingAgent.IPAddresses = request.IPAddresses; existingAgent.IsEnabled = request.IsEnabled; existingAgent.CredentialId = request.CredentialId; existingAgent.IPOption = request.IPOption; existingAgent.IsEnhancedSecurity = request.IsEnhancedSecurity; await webhookPublisher.PublishAsync("Agents.AgentUpdated", existingAgent.Id.ToString(), existingAgent.Name).ConfigureAwait(false); return(await base.PutEntity(id, existingAgent)); } catch (Exception ex) { ModelState.AddModelError("Agent", ex.Message); return(BadRequest(ModelState)); } }