// Path: src/main/java/com/jagrosh/giveawaybot/Constants.java
// public class Constants 
// {
//     public static final OffsetDateTime STARTUP = OffsetDateTime.now();
//     public static final int PRIZE_MAX   = 250;
//     public static final long SERVER_ID  = 585687812548853760L;
//     public static final String TADA     = "\uD83C\uDF89"; // 🎉
//     public static final String WARNING  = "\uD83D\uDCA5"; // 💥
//     public static final String ERROR    = "\uD83D\uDCA5"; // 💥
//     public static final String YAY      = "<:yay:585696613507399692>";//"<:yay:440620097543864320>";
//     public static final String REACTION = "yay:585696613507399692";//"yay:440620097543864320";
//     public static final Color  BLURPLE  = Color.decode("#7289DA");
//     public static final String INVITE   = "https://giveawaybot.party/invite";
//     public static final String DONATE   = "https://giveawaybot.party/donate";
//     public static final int MIN_TIME    = 10;
//     public static final String WEBSITE  = "https://giveawaybot.party";
//     public static final String OWNER    = "**jagrosh**#4824";
//     public static final String GITHUB   = "https://github.com/jagrosh/GiveawayBot";
//     public static final String VERSION  = "2.2";
//     public static final String PERMS    = "`Read Messages`, `Write Messages`, `Read Message History`, `Embed Links`, `Use External Emoji`, and `Add Reactions`";
//     
//     public static final boolean canSendGiveaway(TextChannel channel)
//     {
//         return channel.getGuild().getSelfMember().hasPermission(channel, Permission.MESSAGE_READ, Permission.MESSAGE_WRITE, 
//                 Permission.MESSAGE_HISTORY, Permission.MESSAGE_EMBED_LINKS, Permission.MESSAGE_EXT_EMOJI, Permission.MESSAGE_ADD_REACTION);
//     }
// }


import com.jagrosh.giveawaybot.Constants;
/*
 * Copyright 2019 John Grosh (john.a.grosh@gmail.com).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.jagrosh.giveawaybot.entities;


/**
 *
 * @author John Grosh (john.a.grosh@gmail.com)
 */
public enum PremiumLevel
    {
    //  name                        time         win giv channel roleid
        NONE   (0, "None",          60*60*24*7*2, 20, 20, false, 0L),
        
        BOOST  (1, "Nitro Booster", 60*60*24*7*5, 30, 25, true,  585981877396045826L),
        PATRON (2, "Patron",        60*60*24*7*5, 30, 25, true,  585689274565918721L),
        DONATOR(3, "Donator",       60*60*24*7*5, 30, 25, true,  585708901270421504L),
        
        DISCORD(4, "Discord",       60*60*24*7*5, 50, 25, true,  778420722673778748L),
        SUPER  (5, "Super Patron",  60*60*24*7*5, 50, 25, true,  589196324193173512L);
        
        public final int level;
        public final String name;
        public final int maxTime, maxWinners, maxGiveaways;
        public final boolean perChannelMaxGiveaways;
        public final long roleId;
        
        private PremiumLevel(int level, String name, int maxTime, int maxWinners, 
                int maxGiveaways, boolean perChannelMaxGiveaways, long roleId)
        {
            this.level = level;
            this.name = name;
            this.maxTime = maxTime;
            this.maxWinners = maxWinners;
            this.maxGiveaways = maxGiveaways;
            this.perChannelMaxGiveaways = perChannelMaxGiveaways;
            this.roleId = roleId;
        }
        
        public boolean isValidTime(int seconds)
        {
// Path: src/main/java/com/jagrosh/giveawaybot/Constants.java
// public class Constants 
// {
//     public static final OffsetDateTime STARTUP = OffsetDateTime.now();
//     public static final int PRIZE_MAX   = 250;
//     public static final long SERVER_ID  = 585687812548853760L;
//     public static final String TADA     = "\uD83C\uDF89"; // 🎉
//     public static final String WARNING  = "\uD83D\uDCA5"; // 💥
//     public static final String ERROR    = "\uD83D\uDCA5"; // 💥
//     public static final String YAY      = "<:yay:585696613507399692>";//"<:yay:440620097543864320>";
//     public static final String REACTION = "yay:585696613507399692";//"yay:440620097543864320";
//     public static final Color  BLURPLE  = Color.decode("#7289DA");
//     public static final String INVITE   = "https://giveawaybot.party/invite";
//     public static final String DONATE   = "https://giveawaybot.party/donate";
//     public static final int MIN_TIME    = 10;
//     public static final String WEBSITE  = "https://giveawaybot.party";
//     public static final String OWNER    = "**jagrosh**#4824";
//     public static final String GITHUB   = "https://github.com/jagrosh/GiveawayBot";
//     public static final String VERSION  = "2.2";
//     public static final String PERMS    = "`Read Messages`, `Write Messages`, `Read Message History`, `Embed Links`, `Use External Emoji`, and `Add Reactions`";
//     
//     public static final boolean canSendGiveaway(TextChannel channel)
//     {
//         return channel.getGuild().getSelfMember().hasPermission(channel, Permission.MESSAGE_READ, Permission.MESSAGE_WRITE, 
//                 Permission.MESSAGE_HISTORY, Permission.MESSAGE_EMBED_LINKS, Permission.MESSAGE_EXT_EMOJI, Permission.MESSAGE_ADD_REACTION);
//     }
// }


// Path: src/main/java/com/jagrosh/giveawaybot/entities/PremiumLevel.java
import com.jagrosh.giveawaybot.Constants;

/*
 * Copyright 2019 John Grosh (john.a.grosh@gmail.com).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.jagrosh.giveawaybot.entities;


/**
 *
 * @author John Grosh (john.a.grosh@gmail.com)
 */
public enum PremiumLevel
    {
    //  name                        time         win giv channel roleid
        NONE   (0, "None",          60*60*24*7*2, 20, 20, false, 0L),
        
        BOOST  (1, "Nitro Booster", 60*60*24*7*5, 30, 25, true,  585981877396045826L),
        PATRON (2, "Patron",        60*60*24*7*5, 30, 25, true,  585689274565918721L),
        DONATOR(3, "Donator",       60*60*24*7*5, 30, 25, true,  585708901270421504L),
        
        DISCORD(4, "Discord",       60*60*24*7*5, 50, 25, true,  778420722673778748L),
        SUPER  (5, "Super Patron",  60*60*24*7*5, 50, 25, true,  589196324193173512L);
        
        public final int level;
        public final String name;
        public final int maxTime, maxWinners, maxGiveaways;
        public final boolean perChannelMaxGiveaways;
        public final long roleId;
        
        private PremiumLevel(int level, String name, int maxTime, int maxWinners, 
                int maxGiveaways, boolean perChannelMaxGiveaways, long roleId)
        {
            this.level = level;
            this.name = name;
            this.maxTime = maxTime;
            this.maxWinners = maxWinners;
            this.maxGiveaways = maxGiveaways;
            this.perChannelMaxGiveaways = perChannelMaxGiveaways;
            this.roleId = roleId;
        }
        
        public boolean isValidTime(int seconds)
        {
            return seconds >= Constants.MIN_TIME && seconds <= maxTime;