package com.airlock.iam.admin.application.service.permission;

import com.airlock.iam.admin.application.system.AdminappPage;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import jakarta.validation.constraints.NotNull;

public class AdminappPermissions {
   @NotNull
   private GlobalPermissions global;
   @NotNull
   private MenuPermissions menu;
   @NotNull
   private PagesPermissions pages;

   public boolean isPageAccessible(AdminappPage page) {
      return this.pages.isPageAccessible(page);
   }

   @SuppressFBWarnings(justification = "generated code")
   public static AdminappPermissions.AdminappPermissionsBuilder builder() {
      return new AdminappPermissions.AdminappPermissionsBuilder();
   }

   @SuppressFBWarnings(justification = "generated code")
   public GlobalPermissions getGlobal() {
      return this.global;
   }

   @SuppressFBWarnings(justification = "generated code")
   public MenuPermissions getMenu() {
      return this.menu;
   }

   @SuppressFBWarnings(justification = "generated code")
   public PagesPermissions getPages() {
      return this.pages;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setGlobal(GlobalPermissions global) {
      this.global = global;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setMenu(MenuPermissions menu) {
      this.menu = menu;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setPages(PagesPermissions pages) {
      this.pages = pages;
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public boolean equals(Object o) {
      if (o == this) {
         return true;
      } else if (!(o instanceof AdminappPermissions other)) {
         return false;
      } else {
         if (!other.canEqual(this)) {
            return false;
         }

         Object this$global = this.global;
         Object other$global = other.global;
         if (this$global == null ? other$global == null : this$global.equals(other$global)) {
            Object this$menu = this.menu;
            Object other$menu = other.menu;
            if (this$menu == null ? other$menu == null : this$menu.equals(other$menu)) {
               Object this$pages = this.pages;
               Object other$pages = other.pages;
               return this$pages == null ? other$pages == null : this$pages.equals(other$pages);
            } else {
               return false;
            }
         } else {
            return false;
         }
      }
   }

   @SuppressFBWarnings(justification = "generated code")
   protected boolean canEqual(Object other) {
      return other instanceof AdminappPermissions;
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public int hashCode() {
      int PRIME = 59;
      int result = 1;
      Object $global = this.global;
      result = result * 59 + ($global == null ? 43 : $global.hashCode());
      Object $menu = this.menu;
      result = result * 59 + ($menu == null ? 43 : $menu.hashCode());
      Object $pages = this.pages;
      return result * 59 + ($pages == null ? 43 : $pages.hashCode());
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public String toString() {
      return "AdminappPermissions(global=" + this.getGlobal() + ", menu=" + this.getMenu() + ", pages=" + this.getPages() + ")";
   }

   @SuppressFBWarnings(justification = "generated code")
   public AdminappPermissions(GlobalPermissions global, MenuPermissions menu, PagesPermissions pages) {
      this.global = global;
      this.menu = menu;
      this.pages = pages;
   }

   @SuppressFBWarnings(justification = "generated code")
   public AdminappPermissions() {
   }

   @SuppressFBWarnings(justification = "generated code")
   public static class AdminappPermissionsBuilder {
      @SuppressFBWarnings(justification = "generated code")
      private GlobalPermissions global;
      @SuppressFBWarnings(justification = "generated code")
      private MenuPermissions menu;
      @SuppressFBWarnings(justification = "generated code")
      private PagesPermissions pages;

      @SuppressFBWarnings(justification = "generated code")
      AdminappPermissionsBuilder() {
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappPermissions.AdminappPermissionsBuilder global(GlobalPermissions global) {
         this.global = global;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappPermissions.AdminappPermissionsBuilder menu(MenuPermissions menu) {
         this.menu = menu;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappPermissions.AdminappPermissionsBuilder pages(PagesPermissions pages) {
         this.pages = pages;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappPermissions build() {
         return new AdminappPermissions(this.global, this.menu, this.pages);
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "AdminappPermissions.AdminappPermissionsBuilder(global=" + this.global + ", menu=" + this.menu + ", pages=" + this.pages + ")";
      }
   }
}
