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(); } }
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(); }
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(); }
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); } }
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); } }
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); } }