public async Task <JArray> RunMessage(int index, CommandContext ctx)
        {
            var json = readJson();

            var msg = json.scheduled[index];

            if (index == 3)
            {
                BankController bank  = new BankController();
                var            trans = new BankTransaction("withdraw", ctx.Member, ctx.Guild, amount: 15000000);
                bank.Withdraw(trans);
            }
            else if (index == 8)
            {
                SkynetProtocol   sk     = new SkynetProtocol();
                MemberController memCon = new MemberController();
                var listUser            = ctx.Channel.Users;
                foreach (var user in listUser)
                {
                    if (user.IsBot == false)
                    {
                        await memCon.StripRank(user);
                    }
                }
            }

            return(json.scheduled[index].messages);
        }
        public void CalcXpForCompletion(WorkOrders order)
        {
            var workOrderMember = GetWorkOrderMembers(order.Id);

            foreach (var member in workOrderMember)
            {
                var acceptedMember = new MemberController().GetMemberById(member.MemberId);
                acceptedMember.Xp = (acceptedMember.Xp + 50);
                MultiBotDb.Mcmember.Update(acceptedMember);
                MultiBotDb.SaveChanges();
            }
        }
Ejemplo n.º 3
0
        public void LogWork(CommandContext ctx, int id, string type, int amount)
        {
            bool isCompleted = true;
            var  orderReqs   = MultiBotDb.WorkOrderRequirements.Where(x => x.WorkOrderId == id).ToList();
            var  orderReq    = orderReqs.Where(x => x.Material.ToLower() == type.ToLower()).SingleOrDefault();

            var order = MultiBotDb.WorkOrders.Where(x => x.Id == id).SingleOrDefault();

            if (order.OrgId != new OrgController().GetOrgId(ctx.Guild) || order.isCompleted)
            {
                ctx.RespondAsync("Please try again with a valid Work Order Id");
                return;
            }

            orderReq.Amount = orderReq.Amount - amount;
            if (orderReq.Amount <= 0)
            {
                orderReq.isCompleted = true;
                ctx.RespondAsync($"Great job you have fulfilled work order for {type}");
            }
            else
            {
                ctx.RespondAsync($"Work Order amount remaining: {orderReq.Amount} SCU of {type}");
            }

            foreach (WorkOrderRequirements item in orderReqs)
            {
                if (!item.isCompleted)
                {
                    isCompleted = false;
                }
            }

            MultiBotDb.WorkOrderRequirements.Update(orderReq);

            if (isCompleted)
            {
                order.isCompleted = true;
                MultiBotDb.WorkOrders.Update(order);
                ctx.RespondAsync($"Great job you have completed the Work Order {type}");
            }

            var Member = new MemberController().GetMemberbyDcId(ctx.Member, ctx.Guild);

            Member.Xp = (long?)(Member.Xp + (amount * MultiBotDb.WorkOrderTypes.Where(x => x.Id == orderReq.TypeId).Single().XpModifier));

            MultiBotDb.Mcmember.Update(Member);
            MultiBotDb.SaveChanges();
        }
Ejemplo n.º 4
0
        public void WipeTransactions(DiscordGuild guild)
        {
            var           transContext = MultiBotDb.Transactions;
            OrgController orgC         = new OrgController();
            var           memCont      = new MemberController();
            var           bankItems    = transContext.ToList();

            var users = memCont.GetMembersByOrgId(orgC.GetOrgId(guild));

            foreach (var user in users)
            {
                bankItems.Single(x => x.UserId == user.UserId).Amount = 0;
            }
            transContext.UpdateRange(bankItems);
            MultiBotDb.SaveChanges();
        }
Ejemplo n.º 5
0
        public DiscordEmbed GetLoanEmbed(DiscordGuild guild)
        {
            try
            {
                var loanCtx          = MultiBotDb.Loans;
                int orgId            = new OrgController().GetOrgId(guild);
                var loanList         = loanCtx.AsQueryable().AsQueryable().Where(x => x.OrgId == orgId && x.IsCompleted == 0).ToList();
                var memberController = new MemberController();

                DiscordEmbedBuilder builder = new DiscordEmbedBuilder();
                builder.Title     = $"{guild.Name} Loans";
                builder.Timestamp = DateTime.Now;

                builder.Description = $"Here is a list of all of your Loans that are outstanding or waiting for funding! \n\u200b";


                builder.AddField("Status: Not Funded", "Waiting To Be Funded").WithColor(DiscordColor.Green);

                foreach (var item in loanList.AsQueryable().Where(x => x.Status == "Waiting To Be Funded"))
                {
                    builder.AddField($"Loan ID: {item.LoanId} \nApplicant: {memberController.GetMemberById(item.ApplicantId).Username}",
                                     $"Asking for ${FormatHelpers.FormattedNumber(item.RequestedAmount.ToString())} for interest payment of " +
                                     $"${FormatHelpers.FormattedNumber(item.InterestAmount.ToString())}")
                    .WithColor(DiscordColor.Green);
                }

                builder.AddField("\u200b\n Status: Funded", "Awaiting Repayment").WithColor(DiscordColor.Green);

                foreach (var item in loanList.AsQueryable().Where(x => x.Status == "Funded"))
                {
                    builder.AddField($"Loan ID: {item.LoanId} \nApplicant: {memberController.GetMemberById(item.ApplicantId).Username}" +
                                     $"\nFunded by {memberController.GetMemberById(item.FunderId.GetValueOrDefault()).Username}",
                                     $"Total Loan: ${FormatHelpers.FormattedNumber((item.RequestedAmount + item.InterestAmount).ToString())} \n" +
                                     $"Remaining Amount:  ${FormatHelpers.FormattedNumber(item.RemainingAmount.ToString())}")
                    .WithColor(DiscordColor.Red);
                }

                return(builder.Build());
            }
            catch (Exception e)
            {
                tHelper.LogException($"Method: GetLoanEmbed; Org: {guild.Name};", e);
                Console.WriteLine(e);
                return(null);
            }
        }
Ejemplo n.º 6
0
 public bool AcceptWorkOrder(CommandContext ctx, int workOrderId)
 {
     try
     {
         var member          = new MemberController().GetMemberbyDcId(ctx.Member, ctx.Guild);
         var workOrderMember = new WorkOrderMembers();
         workOrderMember.MemberId    = member.UserId;
         workOrderMember.WorkOrderId = workOrderId;
         MultiBotDb.WorkOrderMembers.Add(workOrderMember);
         MultiBotDb.SaveChanges();
         return(true);
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
         return(false);
     }
 }
        public async Task <bool> AcceptWorkOrder(CommandContext ctx, int workOrderId)
        {
            try
            {
                var member          = new MemberController().GetMemberbyDcId(ctx.Member, ctx.Guild);
                var workOrderMember = new WorkOrderMembers();
                workOrderMember.MemberId    = member.UserId;
                workOrderMember.WorkOrderId = workOrderId;
                MultiBotDb.WorkOrderMembers.Add(workOrderMember);
                MultiBotDb.SaveChanges();


                await ctx.RespondAsync("The work order is yours when you've complete either part or all of the work order please use !log to log your work");

                return(true);
            }
            catch (Exception e)
            {
                tHelper.LogException($"Method: AcceptWorkOrder; Org: {ctx.Guild.Name}; Message: {ctx.Message}; User:{ctx.Member.Nickname}", e);
                Console.WriteLine(e);
                return(false);
            }
        }
Ejemplo n.º 8
0
        public async Task <Tuple <DiscordEmbed, WorkOrders> > GetWorkOrders(CommandContext ctx, string workOrderType)
        {
            try
            {
                WorkOrders order     = null;
                var        orderType = await GetWorkOrderType(ctx, workOrderType);

                var wOrders = MultiBotDb.WorkOrders.Where(x => x.OrgId == new OrgController().GetOrgId(ctx.Guild) && x.WorkOrderTypeId == orderType.Id && !x.isCompleted).ToList();

                DiscordEmbedBuilder builder = new DiscordEmbedBuilder();
                var type = FormatHelpers.Capitalize(orderType.Name);

                builder.Title       = $"{ctx.Guild.Name} {type} Dispatch";
                builder.Description = $"There are {wOrders.Count} {type} Work Orders, here's one that may interest you?";
                builder.Timestamp   = DateTime.Now;

                if (wOrders.Count > 0)
                {
                    Random rand      = new Random();
                    int    randOrder = rand.Next(0, wOrders.Count);
                    order = wOrders[randOrder];

                    var           workOrderMember = GetWorkOrderMembers(order.Id);
                    StringBuilder membersStr      = new StringBuilder();

                    builder.AddField("Location", order.Location);
                    StringBuilder reqString = new StringBuilder();
                    foreach (WorkOrderRequirements req in GetRequirements(order.Id))
                    {
                        reqString.Append($"\u200b\nRequirement ID: {req.Id}\n");
                        reqString.Append($"Material: {req.Material}\n");
                        reqString.Append($"Amount: {req.Amount} SCU\n");
                    }

                    if (workOrderMember.Count > 0)
                    {
                        membersStr.Append($"\n\nAccepted Members:");
                        foreach (WorkOrderMembers mem in workOrderMember)
                        {
                            var memberController = new MemberController();
                            var member           = memberController.GetMemberById(mem.MemberId).Username;
                            membersStr.Append($"\n{memberController.GetMemberById(mem.MemberId).Username}");
                        }
                    }

                    builder.AddField($"Work Order Id: {order.Id} {membersStr.ToString()}", $"\n{order.Description}\n{reqString.ToString()}");

                    builder.WithFooter("If you would like to accept this dispatch please respond with ✅" +
                                       "\n to decline and see another use X" +
                                       "\n If you are not interested in a dispatch at this time simply do nothing at all and the request will time out");
                }
                else
                {
                    builder.AddField($"Unfortnately there are no {FormatHelpers.Capitalize(orderType.Name)} Work Orders", "No open Work Orders");
                }

                builder.WithImageUrl(orderType.ImgUrl);
                return(new Tuple <DiscordEmbed, WorkOrders>(builder.Build(), order));
            } catch (Exception e)
            {
                Console.WriteLine(e);
                return(null);
            }
        }
        public bool LogWork(CommandContext ctx, int id, string type, int amount)
        {
            try
            {
                bool isCompleted = true;
                var  orderReqs   = MultiBotDb.WorkOrderRequirements.AsQueryable().Where(x => x.WorkOrderId == id).ToList();
                var  orderReq    = orderReqs.AsQueryable().Where(x => x.Material.ToLower() == type.ToLower()).SingleOrDefault();

                var order = MultiBotDb.WorkOrders.AsQueryable().Where(x => x.Id == id).SingleOrDefault();
                if (order.OrgId != new OrgController().GetOrgId(ctx.Guild) || order.isCompleted)
                {
                    ctx.RespondAsync("Please try again with a valid Work Order Id");
                    return(isCompleted);
                }

                orderReq.Amount = orderReq.Amount - amount;
                if (orderReq.Amount <= 0)
                {
                    orderReq.isCompleted = true;
                    ctx.RespondAsync($"Great job you have fulfilled work order for {type}");
                }
                else
                {
                    ctx.RespondAsync($"Work Order amount remaining: {orderReq.Amount} units of {type}");
                }

                foreach (WorkOrderRequirements item in orderReqs)
                {
                    if (!item.isCompleted)
                    {
                        isCompleted = false;
                    }
                }

                MultiBotDb.WorkOrderRequirements.Update(orderReq);
                MultiBotDb.SaveChanges();

                if (isCompleted)
                {
                    order.isCompleted = true;
                    MultiBotDb.WorkOrders.Update(order);
                    ctx.RespondAsync($"Great job you have completed the Work Order {type}");
                    CalcXpForCompletion(order);
                }

                var  xpmod      = MultiBotDb.WorkOrderTypes.AsQueryable().Where(x => x.Id == orderReq.TypeId).Single().XpModifier;
                long?adjustedXp = (long?)(amount * MultiBotDb.WorkOrderTypes.AsQueryable().Where(x => x.Id == orderReq.TypeId).Single().XpModifier);
                if (adjustedXp < 1)
                {
                    adjustedXp = 1;
                }

                var newMbDb = new MultiBotDb();
                var Member  = new MemberController().GetMemberbyDcId(ctx.Member, ctx.Guild);

                Member.Xp = (long?)(Member.Xp + adjustedXp);

                newMbDb.Mcmember.Update(Member);
                newMbDb.SaveChanges();

                return(isCompleted);
            } catch (Exception e)
            {
                Console.WriteLine(e);
                return(false);
            }
        }
        public async Task <DiscordEmbed> GetWorkOrderByMember(CommandContext ctx)
        {
            var mbDb = new MultiBotDb();

            try
            {
                Mcmember mem = new MemberController().GetMemberbyDcId(ctx.Member, ctx.Guild);
                List <WorkOrderMembers> memberOrders = mbDb.WorkOrderMembers.AsQueryable().Where(x => x.MemberId == mem.UserId).ToList();
                List <WorkOrders>       wOrders      = new List <WorkOrders>();

                foreach (var o in memberOrders)
                {
                    var order = mbDb.WorkOrders.AsQueryable().Where(x => x.Id == o.WorkOrderId).FirstOrDefault();
                    if (!order.isCompleted)
                    {
                        wOrders.Add(order);
                    }
                }

                DiscordEmbedBuilder builder = new DiscordEmbedBuilder();

                builder.Title       = $"{ctx.Guild.Name} Open Work Orders - {ctx.Member.Nickname}";
                builder.Description = $"You have {wOrders.Count} open work orders?";
                builder.Timestamp   = DateTime.Now;

                if (memberOrders.Count > 0 || wOrders.Count > 0)
                {
                    foreach (var order in wOrders)
                    {
                        StringBuilder reqString       = new StringBuilder();
                        var           workOrderMember = GetWorkOrderMembers(order.Id);
                        StringBuilder membersStr      = new StringBuilder();

                        foreach (WorkOrderRequirements req in GetRequirements(order.Id))
                        {
                            reqString.Append($"\u200b\nRequirement ID: {req.Id}\n");
                            reqString.Append($"Material: {req.Material}\n");
                            reqString.Append($"Amount: {req.Amount} Units (Units = SCU when ship mining/trading)\n");
                        }
                        membersStr.Append($"\n\nAccepted Members:");

                        foreach (WorkOrderMembers acceptedMember in workOrderMember)
                        {
                            var memberController = new MemberController();
                            var member           = memberController.GetMemberById(acceptedMember.MemberId).Username;
                            membersStr.Append($"\n{memberController.GetMemberById(acceptedMember.MemberId).Username}");
                        }

                        builder.AddField($"__________________________________________" +
                                         $" \nWork Order Id: {order.Id} \n Location: {order.Location} {membersStr.ToString()}", $"\n{order.Description}\n{reqString.ToString()}");
                    }
                }
                else
                {
                    builder.AddField($"Unfortnately  Work Orders", "No open Work Orders");
                    return(builder.Build());
                }


                builder.WithFooter("If you would like to accept this dispatch please respond with ✅" +
                                   "\n to decline and see another use X" +
                                   "\n If you are not interested in a dispatch at this time simply do nothing at all and the request will time out");
                builder.WithImageUrl("https://massivelyop.com/wp-content/uploads/2020/09/star-citizen-cargo-deck-768x253.png");
                return(builder.Build());
            }
            catch (Exception e)
            {
                tHelper.LogException($"Method: GetWorkOrders; Org: {ctx.Guild.Name}; Message: {ctx.Message}; User:{ctx.Member.Nickname}", e);
                Console.WriteLine(e);
                return(null);
            }
        }