public AdcsTemplateGetModel UpdateTemplate(AdcsTemplateUpdateModel updateEntity)
        {
            if (updateEntity.Name == "error")
            {
                throw new PrivateCertificateAuthorityDoesNotExistException("A certificate authority must exist before adding a template");
            }

            AdcsTemplate template = configurationRepository.Get <AdcsTemplate>(updateEntity.Id);

            template.Name = updateEntity.Name;
            template.RolesAllowedToIssue = dataTransform.ParseGuidList(updateEntity.RolesAllowedToIssue);
            template.KeyUsage            = updateEntity.KeyUsage;
            template.WindowsApi          = updateEntity.WindowsApi;
            template.Cipher = updateEntity.Cipher;

            configurationRepository.Update <AdcsTemplate>(template);


            AdcsTemplateGetModel response = new AdcsTemplateGetModel();

            response.Name       = template.Name;
            response.Cipher     = template.Cipher;
            response.KeyUsage   = template.KeyUsage;
            response.WindowsApi = template.WindowsApi;
            response.Id         = template.Id;

            response.RolesAllowedToIssueSelectView = new List <SecurityRoleSelectView>();
            foreach (Guid roleId in template.RolesAllowedToIssue)
            {
                var role = configurationRepository.Get <SecurityRole>(roleId);

                response.RolesAllowedToIssueSelectView.Add(
                    new SecurityRoleSelectView()
                {
                    Id   = roleId,
                    Name = role.Name
                });
            }

            return(response);
        }
        public List <AdcsTemplateGetModel> GetTemplates()
        {
            IEnumerable <AdcsTemplate>  result   = configurationRepository.GetAll <AdcsTemplate>();
            List <AdcsTemplateGetModel> response = new List <AdcsTemplateGetModel>();

            foreach (var template in result)
            {
                AdcsTemplateGetModel item = new AdcsTemplateGetModel();
                item.Name       = template.Name;
                item.Cipher     = template.Cipher;
                item.KeyUsage   = template.KeyUsage;
                item.WindowsApi = template.WindowsApi;
                item.Id         = template.Id;

                item.RolesAllowedToIssueSelectView = this.GetSecrityRoleListView(template.RolesAllowedToIssue);

                response.Add(item);
            }

            return(response);
        }