Example #1
0
        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);
            }
        }
Example #3
0
        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));
        }
Example #4
0
        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);
        }
Example #6
0
        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));
                }
            }
        }
Example #7
0
        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.");
        }
Example #8
0
        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;
            }
        }
Example #9
0
        /// <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);
        }
Example #10
0
        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.");
            }
        }
Example #11
0
        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;
            }
        }
Example #12
0
 /// <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);
 }
Example #13
0
        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;
            }
        }
Example #14
0
    public override bool Equals(object m)
    {
        Merit mm = (Merit)m;

        return(mm.name == name && mm.level == level && mm.description == description);
    }
Example #15
0
 public static ArrayList GetFilters(Guid mediaType, Guid mediaSubType, Merit merit)
 {
     return(GetFilters(new Guid[] { mediaType }, new Guid[] { mediaSubType }, merit));
 }
Example #16
0
        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);
 }
Example #20
0
    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);
      }
    }
Example #21
0
 /// <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));
 }
Example #22
0
        /// <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);
            }
        }
Example #23
0
    /// <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);
      }
    }