public async Task <IActionResult> GetPassword(string id)
        {
            try
            {
                if (!HttpContext.Request.IsHttps)//if request is not https, then throw unauthorized exception
                {
                    throw new UnauthorizedAccessException("Request must be HTTPS");
                }

                var        credentialId       = new Guid(id);
                Credential existingCredential = _credentialRepository.GetOne(credentialId);

                if (existingCredential == null)
                {
                    throw new EntityDoesNotExistException("No Credential was found for the specified id");
                }

                var passwordString = _credentialManager.GetPassword(existingCredential);

                return(Ok(passwordString));
            }
            catch (Exception ex)
            {
                return(ex.GetActionResult());
            }
        }
        public Credential DeleteCredential(string id)
        {
            var existingCredential = _repo.GetOne(Guid.Parse(id));

            if (existingCredential == null)
            {
                throw new EntityDoesNotExistException("Credential cannot be found or does not exist");
            }

            if (existingCredential.AgentId == null)//credential is a global credential
            {
                var childCredentials = _repo.Find(null, a => a.Name == existingCredential.Name && a.AgentId != null)?.Items;

                if (childCredentials.Count > 0)
                {
                    throw new EntityOperationException("Child credentials exist for this credential, please delete those first");
                }
            }

            return(existingCredential);
        }
        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);
        }