private void GetMeDemrit(Dictionary <string, StudRecord> studDic) { //取得學生所有的獎懲紀錄 List <MeritRecord> meriteList = Merit.SelectByStudentIDs(studDic.Keys); foreach (MeritRecord each in meriteList) { if (studDic.ContainsKey(each.RefStudentID)) { studDic[each.RefStudentID].MeritList.Add(each); } } List <DemeritRecord> demeriteList = Demerit.SelectByStudentIDs(studDic.Keys); foreach (DemeritRecord each in demeriteList) { if (studDic.ContainsKey(each.RefStudentID)) { studDic[each.RefStudentID].DemeritList.Add(each); //懲戒資料內包含留查資料 } } }
private void ProduceData(List <SHStudentRecord> pStudents) { List <MeritRecord> meritRecords = Merit.SelectByStudentIDs(pStudents.Select(x => x.ID)); foreach (MeritRecord mr in meritRecords) { if (!_PersonalMeritRecordInfo.ContainsKey(mr.RefStudentID)) { _PersonalMeritRecordInfo.Add(mr.RefStudentID, new List <MeritRecord>()); } _PersonalMeritRecordInfo[mr.RefStudentID].Add(mr); } List <DemeritRecord> demeritRecords = Demerit.SelectByStudentIDs(pStudents.Select(x => x.ID)); foreach (DemeritRecord dr in demeritRecords) { if (!_PersonalDemeritRecordInfo.ContainsKey(dr.RefStudentID)) { _PersonalDemeritRecordInfo.Add(dr.RefStudentID, new List <DemeritRecord>()); } _PersonalDemeritRecordInfo[dr.RefStudentID].Add(dr); } }
public async Task ViewMeritAsync(Merit merit) { if (!MeritHelper.HasUnlocked(Context.Account, merit) && merit.Hidden) { await Context.Channel.SendMessageAsync(Format.Warning("You are not authorized to view this merit.")); return; } await Context.Channel.SendMessageAsync(MeritHelper.ViewMerit(merit, Context.Account)); }
private CodecConfiguration() { // get FLV splitter from registry by MediaSubType Merit highestMerit = Merit.DoNotUse; ArrayList list = FilterHelper.GetFilters(MediaType.Stream, new Guid(MediaSubType_FLV)); if (list != null) { foreach (Filter filter in Filters.LegacyFilters) { if (list.Contains(filter.Name)) { Merit m = GetMerit(filter.CLSID.ToString()); if (m > highestMerit) { FLV_Splitter.CLSID = filter.CLSID.ToString("B"); FLV_Splitter.Name = filter.Name; highestMerit = m; } } } } // get AVI splitter from registry by MediaSubType highestMerit = Merit.DoNotUse; list = FilterHelper.GetFilters(MediaType.Stream, new Guid(MediaSubType_AVI)); if (list != null) { foreach (Filter filter in Filters.LegacyFilters) { if (list.Contains(filter.Name)) { Merit m = GetMerit(filter.CLSID.ToString()); if (m > highestMerit) { AVI_Splitter.CLSID = filter.CLSID.ToString("B"); AVI_Splitter.Name = filter.Name; highestMerit = m; } } } } CheckCodec(ref FLV_Splitter); CheckCodec(ref AVI_Splitter); CheckCodec(ref MPC_HC_MP4Splitter); CheckCodec(ref HaaliMediaSplitter); CheckCodec(ref WM_ASFReader); }
public static ArrayList GetFilters(Guid[] mediaType, Guid[] mediaSubType, Merit merit) { ArrayList filters = new ArrayList(); IEnumMoniker enumMoniker = null; IMoniker[] moniker = new IMoniker[1]; IFilterMapper2 mapper = (IFilterMapper2) new FilterMapper2(); Guid[] types = new Guid[mediaType.Length * 2]; for (int i = 0; i < mediaType.Length; i++) { types[i * 2] = mediaType[i]; types[i * 2 + 1] = mediaSubType[i]; } if (mapper != null) { int hResult = mapper.EnumMatchingFilters( out enumMoniker, 0, true, merit, true, mediaType.Length, types, null, null, false, true, 0, new Guid[0], null, null); IntPtr fetched = IntPtr.Zero; do { hResult = enumMoniker.Next(1, moniker, fetched); if ((moniker[0] == null)) { break; } string filterName = DirectShowUtil.GetFriendlyName(moniker[0]); filters.Add(filterName); moniker[0] = null; } while (true); } return(filters); }
public async Task ClaimMeritAsync(string id) { if (Context.Account.HasMerit(id)) { if (Context.Account.Merits[id].IsClaimed ?? true) { await Context.Channel.SendMessageAsync("This merit has either already been claimed or doesn't have a reward attached."); return; } else { Merit merit = Engine.GetMerit(id); await Context.Channel.SendMessageAsync(MeritHandler.ClaimAndDisplay(Context.Account, merit)); } } }
public async Task New(string Name, int Ranks, params string[] Fields) { User User = Utils.GetUser(Context.User.Id); Actor Actor = User.Active; if (Actor == null) { await ReplyAsync("You have no active characters. Set one using the `Character` command or create one using the `Create` command"); return; } if (Fields.Any(x => x.Length > 1024)) { await ReplyAsync(Context.User.Mention + ", Each Merit field cannot exceed more than 1024 characters!"); return; } if (Fields.Count() > 20) { await ReplyAsync(Context.User.Mention + ", You can only have 20 fields!"); return; } if (Fields.Length > 5900) { await ReplyAsync(Context.User.Mention + ", You can only have a total of 5900 characters!"); return; } var merit = new Merit() { Name = Name, Ranks = Ranks, Description = Fields }; Actor.Merits.Add(merit); Utils.UpdateActor(Actor); await ReplyAsync(Context.User.Mention + ", Added Merit **" + Name + "** to " + Actor.Name + "'s merits with " + Ranks + " dots into this new merit."); }
public async Task Delete([Remainder] string Name2) { User User = Utils.GetUser(Context.User.Id); Actor Actor = User.Active; if (Actor == null) { await ReplyAsync("You have no active characters. Set one using the `Character` command or create one using the `Create` command"); return; } if (Actor.Merits2.Any(x => x.Name.ToLower().StartsWith(Name2.ToLower()))) { Merit M = Actor.Merits2.First(x => x.Name.ToLower().StartsWith(Name2.ToLower())); var request = new ConfirmationBuilder() .WithUsers(Context.User) .WithContent(new PageBuilder().WithText("Are you sure you want to delete **" + Actor.Name2 + "'s** **" + M.Name + "** merit?")) .Build(); var result = await Interactivity.SendConfirmationAsync(request, Context.Channel, TimeSpan.FromMinutes(1)); if (result.Value) { Actor.Merits2.Remove(M); Utils.UpdateActor(Actor); await ReplyAsync(Context.User.Mention + ", Removed merit " + M.Name + " from " + Actor.Name2 + "'s Merits!"); return; } else { await ReplyAsync(Context.User.Mention + ", Cancelled Deletion."); } } else { await ReplyAsync(Context.User.Mention + ", " + Actor.Name2 + " has no merit whose Name starts with \"" + Name2 + "\"."); return; } }
/// <summary> /// 取得所有資料 /// </summary> private void SetStudentBoxs() { List <string> StudentIDList = K12.Presentation.NLDPanels.Student.SelectedSource; ListStudent = Student.SelectByIDs(StudentIDList); //取得學生 ListStudent.Sort(new Comparison <StudentRecord>(ParseStudent)); ListPhone = Phone.SelectByStudentIDs(StudentIDList); //取得電話資料 ListParent = Parent.SelectByStudentIDs(StudentIDList); //取得監護人資料 ListAddress = Address.SelectByStudentIDs(StudentIDList); //取得地址資料 ListMerit = Merit.SelectByStudentIDs(StudentIDList); //取得獎勵資料(一對多) ListDeMerit = Demerit.SelectByStudentIDs(StudentIDList); //取得懲戒資料(一對多) ListMoralScore = SHMoralScore.SelectByStudentIDs(StudentIDList); //取得日常生活表現資料(一對多) ListUpdataRecord = UpdateRecord.SelectByStudentIDs(StudentIDList); //取得異動資料(一對多) ListJHSemesterHistory = SemesterHistory.SelectByStudentIDs(StudentIDList); //取得學生學期歷程 //ListAssnCode = _accessHelper.Select<AssnCode>(); //取得所有社團記錄 ListAutoSummary = AutoSummary.Select(StudentIDList, null); ListAutoSummary.Sort(SortSchoolYearSemester); }
public async Task GetClaimableAsync() { if (Context.Account.Merits.Any(x => !x.Value.IsClaimed ?? false)) { StringBuilder claimable = new StringBuilder(); claimable.AppendLine($"**Claimable Merits:**"); foreach (string id in Context.Account.Merits.Where(x => !x.Value.IsClaimed ?? false).Select(x => x.Key)) { Merit merit = Engine.GetMerit(id); claimable.AppendLine($"`{id}` • **{merit.Name}**"); } await Context.Channel.SendMessageAsync(claimable.ToString()); return; } else { await Context.Channel.SendMessageAsync("There aren't any available merits to claim."); } }
public async Task Dots(string Name2, int Dots) { User User = Utils.GetUser(Context.User.Id); Actor Actor = User.Active; if (Actor == null) { await ReplyAsync("You have no active characters. Set one using the `Character` command or create one using the `Create` command"); return; } if (Dots < 0 || Dots > 10) { await ReplyAsync(Context.User.Mention + ", You can only set your dots to a value between 0 and 10!"); return; } if (Actor.Merits2.Any(x => x.Name.ToLower().StartsWith(Name2.ToLower()))) { Merit M = Actor.Merits2.First(x => x.Name.ToLower().StartsWith(Name2.ToLower())); int I = Actor.Merits2.IndexOf(M); Actor.Merits2[I].Ranks = Dots; Utils.UpdateActor(Actor); await ReplyAsync(Context.User.Mention + ", Set merit " + Actor.Name2 + "'s " + M.Name + " Merits to have " + Dots + "dots."); } else { await ReplyAsync(Context.User.Mention + ", " + Actor.Name2 + " has no merit whose Name starts with \"" + Name2 + "\"."); return; } }
/// <summary> /// Gets a list of DirectShow filter names that accept the passed MediaType/MediaSubType and minimum Merit. /// </summary> /// <param name="mediaType">MediaType</param> /// <param name="mediaSubType">MediaSubType</param> /// <param name="merit">Minimum merit</param> /// <returns>List of names</returns> public static List<CodecInfo> GetFilters(Guid mediaType, Guid mediaSubType, Merit merit) { return GetFilters(new Guid[] { mediaType, mediaSubType }, new Guid[0], merit); }
public void SetMerit(Merit merit) { if (GetBinaryData() == null) { throw new InvalidOperationException("Can't set merit when no binary data are available"); } Merit oldMerit = GetBinaryData().Merit; try { GetBinaryData().Merit = merit; WriteBinaryData(); } catch { //Continue to report the old merit since the new merit didn't save correctly GetBinaryData().Merit = oldMerit; throw; } }
public override bool Equals(object m) { Merit mm = (Merit)m; return(mm.name == name && mm.level == level && mm.description == description); }
public static ArrayList GetFilters(Guid mediaType, Guid mediaSubType, Merit merit) { return(GetFilters(new Guid[] { mediaType }, new Guid[] { mediaSubType }, merit)); }
public static ArrayList GetFilters(Guid[] mediaType, Guid[] mediaSubType, Merit merit) { ArrayList filters = new ArrayList(); IEnumMoniker enumMoniker = null; IMoniker[] moniker = new IMoniker[1]; IFilterMapper2 mapper = (IFilterMapper2) new FilterMapper2(); Guid[] types = new Guid[mediaType.Length * 2]; for (int i = 0; i < mediaType.Length; i++) { types[i * 2] = mediaType[i]; types[i * 2 + 1] = mediaSubType[i]; } try { if (mapper != null) { int hResult = mapper.EnumMatchingFilters( out enumMoniker, 0, true, merit, true, mediaType.Length, types, null, null, false, true, 0, new Guid[0], null, null); IntPtr fetched = IntPtr.Zero; do { try { enumMoniker.Next(1, moniker, IntPtr.Zero); } catch { } if ((moniker[0] == null)) { break; } string filterName = DirectShowUtil.GetFriendlyName(moniker[0]); if (!String.IsNullOrEmpty(filterName)) { filters.Add(filterName); } DirectShowUtil.TryRelease(ref moniker[0]); } while (true); } return(filters); } finally { DirectShowUtil.ReleaseComObject(enumMoniker); DirectShowUtil.ReleaseComObject(mapper); } }
public Dictionary <string, int> GetMerit(List <一名學生> StudentList) { //取得學生ID StudentDic = GetStudentIDList(StudentList); //取得獎懲資料 List <MeritRecord> MeritList = Merit.SelectByStudentIDs(StudentDic.Keys); List <DemeritRecord> DemeritList = Demerit.SelectByStudentIDs(StudentDic.Keys); //取得功過相抵換算值 _Reduce = K12.Data.MeritDemeritReduce.Select(); foreach (MeritRecord mr in MeritList) { if (StudentDic.ContainsKey(mr.RefStudentID)) { int studINT = 0; int a = mr.MeritA.HasValue ? mr.MeritA.Value : 0; int b = mr.MeritB.HasValue ? mr.MeritB.Value : 0; int c = mr.MeritC.HasValue ? mr.MeritC.Value : 0; if (_Reduce.MeritAToMeritB.HasValue) { int aa = a * _Reduce.MeritAToMeritB.Value; studINT += aa * _Reduce.MeritBToMeritC.Value; } if (_Reduce.MeritBToMeritC.HasValue) { studINT += b * _Reduce.MeritBToMeritC.Value; } studINT += c; StudentDic[mr.RefStudentID] += studINT; } } foreach (DemeritRecord mr in DemeritList) { if (mr.Cleared == "是") //銷過資料則離開 { continue; } if (mr.MeritFlag == "2") //留查資料則離開 { continue; } if (StudentDic.ContainsKey(mr.RefStudentID)) { int studINT = 0; int a = mr.DemeritA.HasValue ? mr.DemeritA.Value : 0; int b = mr.DemeritB.HasValue ? mr.DemeritB.Value : 0; int c = mr.DemeritC.HasValue ? mr.DemeritC.Value : 0; if (_Reduce.MeritAToMeritB.HasValue) { int aa = a * _Reduce.MeritAToMeritB.Value; studINT += aa * _Reduce.MeritBToMeritC.Value; } if (_Reduce.MeritBToMeritC.HasValue) { studINT += b * _Reduce.MeritBToMeritC.Value; } studINT += c; StudentDic[mr.RefStudentID] -= studINT; } } return(StudentDic); }
public static ArrayList GetFilters(Guid[] mediaType, Guid[] mediaSubType, Merit merit) { ArrayList filters = new ArrayList(); IEnumMoniker enumMoniker = null; IMoniker[] moniker = new IMoniker[1]; IFilterMapper2 mapper = (IFilterMapper2)new FilterMapper2(); Guid[] types = new Guid[mediaType.Length * 2]; for (int i = 0; i < mediaType.Length; i++) { types[i * 2] = mediaType[i]; types[i * 2 + 1] = mediaSubType[i]; } if (mapper != null) { int hResult = mapper.EnumMatchingFilters( out enumMoniker, 0, true, merit, true, mediaType.Length, types, null, null, false, true, 0, new Guid[0], null, null); IntPtr fetched = IntPtr.Zero; do { hResult = enumMoniker.Next(1, moniker, fetched); if ((moniker[0] == null)) { break; } string filterName = DirectShowUtil.GetFriendlyName(moniker[0]); filters.Add(filterName); moniker[0] = null; } while (true); } return filters; }
public static ArrayList GetFilters(Guid mediaType, Guid mediaSubType, Merit merit) { return GetFilters(new Guid[] {mediaType}, new Guid[] {mediaSubType}, merit); }
public static ArrayList GetFilters(Guid[] mediaType, Guid[] mediaSubType, Merit merit) { ArrayList filters = new ArrayList(); IEnumMoniker enumMoniker = null; IMoniker[] moniker = new IMoniker[1]; IFilterMapper2 mapper = (IFilterMapper2) new FilterMapper2(); Guid[] types = new Guid[mediaType.Length*2]; for (int i = 0; i < mediaType.Length; i++) { types[i*2] = mediaType[i]; types[i*2 + 1] = mediaSubType[i]; } try { if (mapper != null) { int hResult = mapper.EnumMatchingFilters( out enumMoniker, 0, true, merit, true, mediaType.Length, types, null, null, false, true, 0, new Guid[0], null, null); IntPtr fetched = IntPtr.Zero; do { try { enumMoniker.Next(1, moniker, IntPtr.Zero); } catch { } if ((moniker[0] == null)) break; string filterName = DirectShowUtil.GetFriendlyName(moniker[0]); if (!String.IsNullOrEmpty(filterName)) filters.Add(filterName); DirectShowUtil.TryRelease(ref moniker[0]); } while (true); } return filters; } finally { DirectShowUtil.ReleaseComObject(enumMoniker); DirectShowUtil.ReleaseComObject(mapper); } }
/// <summary> /// Gets a list of DirectShow filter names that accept the passed MediaType/MediaSubType and minimum Merit. /// </summary> /// <param name="mediaType">MediaType</param> /// <param name="mediaSubType">MediaSubType</param> /// <param name="merit">Minimum merit</param> /// <returns>List of names</returns> public static List <CodecInfo> GetFilters(Guid mediaType, Guid mediaSubType, Merit merit) { return(GetFilters(new Guid[] { mediaType, mediaSubType }, new Guid[0], merit)); }
/// <summary> /// Gets a list of DirectShow filter names that accept the passed MediaType/MediaSubType and output the passed MediaType/MediaSubType. /// </summary> /// <param name="inputMediaAndSubTypes">Array of MediaType/MediaSubType</param> /// <param name="outputMediaAndSubTypes">Array of MediaType/MediaSubType</param> /// <param name="merit"></param> /// <returns>List of names</returns> public static List <CodecInfo> GetFilters(Guid[] inputMediaAndSubTypes, Guid[] outputMediaAndSubTypes, Merit merit) { List <CodecInfo> filters = new List <CodecInfo>(); IEnumMoniker enumMoniker = null; IMoniker[] moniker = new IMoniker[1]; IFilterMapper2 mapper = (IFilterMapper2) new FilterMapper2(); try { mapper.EnumMatchingFilters( out enumMoniker, 0, true, merit, true, inputMediaAndSubTypes.Length, inputMediaAndSubTypes, null, null, false, true, outputMediaAndSubTypes.Length, outputMediaAndSubTypes, null, null); do { try { enumMoniker.Next(1, moniker, IntPtr.Zero); } catch { } if ((moniker[0] == null)) { break; } string filterName = FilterGraphTools.GetFriendlyName(moniker[0]); Guid filterClassId = FilterGraphTools.GetCLSID(moniker[0]); CodecInfo codecInfo = new CodecInfo(filterName, filterClassId); filters.Add(codecInfo); FilterGraphTools.TryRelease(ref moniker[0]); } while (true); filters.Sort(); return(filters); } finally { FilterGraphTools.TryRelease(ref enumMoniker); FilterGraphTools.TryRelease(ref mapper); } }
/// <summary> /// Gets a list of DirectShow filter names that accept the passed MediaType/MediaSubType and output the passed MediaType/MediaSubType. /// </summary> /// <param name="inputMediaAndSubTypes">Array of MediaType/MediaSubType</param> /// <param name="outputMediaAndSubTypes">Array of MediaType/MediaSubType</param> /// <param name="merit"></param> /// <returns>List of names</returns> public static List<CodecInfo> GetFilters(Guid[] inputMediaAndSubTypes, Guid[] outputMediaAndSubTypes, Merit merit) { List<CodecInfo> filters = new List<CodecInfo>(); IEnumMoniker enumMoniker = null; IMoniker[] moniker = new IMoniker[1]; IFilterMapper2 mapper = (IFilterMapper2) new FilterMapper2(); try { mapper.EnumMatchingFilters( out enumMoniker, 0, true, merit, true, inputMediaAndSubTypes.Length, inputMediaAndSubTypes, null, null, false, true, outputMediaAndSubTypes.Length, outputMediaAndSubTypes, null, null); do { try { enumMoniker.Next(1, moniker, IntPtr.Zero); } catch { } if ((moniker[0] == null)) break; string filterName = FilterGraphTools.GetFriendlyName(moniker[0]); Guid filterClassId = FilterGraphTools.GetCLSID(moniker[0]); CodecInfo codecInfo = new CodecInfo(filterName, filterClassId); filters.Add(codecInfo); FilterGraphTools.TryRelease(ref moniker[0]); } while (true); filters.Sort(); return filters; } finally { FilterGraphTools.TryRelease(ref enumMoniker); FilterGraphTools.TryRelease(ref mapper); } }