package com.l7tech.external.assertions.gatewaygraphql.server.resolver.mutation;

import com.l7tech.external.assertions.gatewaygraphql.EntityTypeInfo;
import com.l7tech.external.assertions.gatewaygraphql.server.data.EntityMappingInstruction;
import com.l7tech.external.assertions.gatewaygraphql.server.data.SimpleLdapIdpDTO;
import com.l7tech.external.assertions.gatewaygraphql.server.input.EntityPropertyInput;
import com.l7tech.external.assertions.gatewaygraphql.server.resolver.query.IdpResolverHelper;
import com.l7tech.external.assertions.gatewaygraphql.server.util.AssertionLocalBeanFactory;
import com.l7tech.external.assertions.gatewaygraphql.server.util.Util;
import com.l7tech.identity.IdentityProviderType;
import com.l7tech.identity.ldap.BindOnlyLdapIdentityProviderConfig;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.server.identity.ldap.BindOnlyLdapIdentityProvider;
import graphql.schema.DataFetchingEnvironment;
import java.util.List;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.transaction.PlatformTransactionManager;

public class SimpleLdapIdpMutationResolver
   extends IdpMutationResolver<BindOnlyLdapIdentityProvider, BindOnlyLdapIdentityProviderConfig, SimpleLdapIdpDTO, SimpleLdapIdpDTO.SimpleLdapIdpInput> {
   private static final String b;

   public SimpleLdapIdpMutationResolver(PlatformTransactionManager var1, BeanFactory var2, AssertionLocalBeanFactory var3) {
      super(EntityTypeInfo.SIMPLE_LDAP_IDP, var1, var2, var3.getRequired(IdpResolverHelper.class), IdentityProviderType.BIND_ONLY_LDAP);
   }

   public SimpleLdapIdpDTO.SimpleLdapIdpsPayload setSimpleLdapIdps(List<SimpleLdapIdpDTO.SimpleLdapIdpInput> var1, DataFetchingEnvironment var2) {
      SimpleLdapIdpDTO.SimpleLdapIdpsPayload var3 = new SimpleLdapIdpDTO.SimpleLdapIdpsPayload();
      this.transformNoDefEntityMappings(var1, var2);
      return var1.isEmpty() ? var3 : this.execute(var2, (var3x, var4) -> {
         var1.forEach(var4x -> this.doUpsertSilently(var4x, var3x, var3, var4));
         return var3;
      });
   }

   public SimpleLdapIdpDTO.SimpleLdapIdpsPayload deleteSimpleLdapIdps(List<String> var1, DataFetchingEnvironment var2) {
      SimpleLdapIdpDTO.SimpleLdapIdpsPayload var3 = new SimpleLdapIdpDTO.SimpleLdapIdpsPayload();
      return var1.isEmpty() ? var3 : this.execute(var2, (var3x, var4) -> {
         var1.forEach(var4x -> this.doDeleteSilently(var4x, var3x, var3, var4));
         return var3;
      });
   }

   protected BindOnlyLdapIdentityProviderConfig toEntity(SimpleLdapIdpDTO.SimpleLdapIdpInput var1) {
      return new BindOnlyLdapIdentityProviderConfig();
   }

   protected SimpleLdapIdpDTO toEntityDTO(BindOnlyLdapIdentityProviderConfig var1) {
      return new SimpleLdapIdpDTO(var1, this.idpHelper);
   }

   protected SimpleLdapIdpDTO.SimpleLdapIdpInput toEntityInput(EntityMappingInstruction var1) {
      SimpleLdapIdpDTO.SimpleLdapIdpInput var2 = new SimpleLdapIdpDTO.SimpleLdapIdpInput();
      var2.setName(var1.getIdentityValue());
      return var2;
   }

   protected void setEntity(SimpleLdapIdpDTO.SimpleLdapIdpInput var1, BindOnlyLdapIdentityProviderConfig var2) {
      var2.setName(var1.getName());
      var2.setLdapUrl(var1.getServerUrls().toArray(new String[0]));
      var2.setClientAuthEnabled(var1.getUseSslClientAuth());
      if (Util.isNotEmpty(var1.getSslClientKeyAlias())) {
         String[] var3 = Util.tokenizeKeyAlias(var1.getSslClientKeyAlias());
         Goid var4 = Goid.parseGoid(var3[0]);
         var2.setKeyAlias(var3[1]);
         var2.setKeystoreId(var4);
      }

      var2.setBindPatternPrefix(var1.getBindDnPatternPrefix());
      var2.setBindPatternSuffix(var1.getBindDnPatternSuffix());
      List var6 = var1.getProperties();
      if (var6 != null) {
         for (EntityPropertyInput var5 : var6) {
            if (b.equals(var5.getName())) {
               var2.setReconnectTimeout(Long.parseLong(var5.getValue()));
            }
         }
      }
   }

   protected void resetEntitySelectively(SimpleLdapIdpDTO.SimpleLdapIdpInput var1, BindOnlyLdapIdentityProviderConfig var2) {
      var2.setKeystoreId(null);
      var2.setKeyAlias(null);
   }

   protected BindOnlyLdapIdentityProviderConfig doFind(SimpleLdapIdpDTO.SimpleLdapIdpInput var1) throws FindException {
      return this.doFindBy(var1.getName());
   }

   static {
      String var10002 = c(104, b("'\u0007xBJFa6\u0016ODIMk \u0016"));
      byte var10001 = -1;
      b = var10002;
   }

   private static char[] b(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 108);
      }

      return var10000;
   }

   private static String c(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 61;
            case 1 -> 10;
            case 2 -> 115;
            case 3 -> 69;
            case 4 -> 76;
            case 5 -> 64;
            default -> 108;
         });
      }

      return new String(var10001).intern();
   }
}
