コード例 #1
0
ファイル: ConfigTab.xaml.cs プロジェクト: JI1LDG/HaminChecker
        public void SetGeneral(ConfigGeneral gen)
        {
            if (gen.ContestName == General?.GetByName("ContestName"))
            {
                TbContestName.Text = gen.ContestName;
                var catidx = ConfigGeneral.GetCategoryIndex(gen.Category, General);
                if (catidx != -1)
                {
                    CbCategory.SelectedIndex = catidx;
                }

                if (gen.PowerModeArg < WpPower.Children.Count && 0 <= gen.PowerModeArg)
                {
                    (WpPower.Children[gen.PowerModeArg] as RadioButton).IsChecked = true;
                }
                else
                {
                    for (int i = 0; i < WpPower.Children.Count; i++)
                    {
                        (WpPower.Children[i] as RadioButton).IsChecked = false;
                    }
                }

                if (0 <= gen.Coeff)
                {
                    TbCoeff.Text = gen.Coeff.ToString();
                }
                TbMainContestNo.Text = gen.MainCn;
                TbSubContestNo.Text  = gen.SubCn;
                CbPowerValue.Text    = gen.PowerValue.ToString();

                CbAutoOperator.IsChecked = gen.AutoOperator;
                TbOperator.Text          = gen.Operators;
            }
        }
コード例 #2
0
ファイル: ConfigTab.xaml.cs プロジェクト: JI1LDG/HaminChecker
        public ConfigGeneral GetGeneral()
        {
#pragma warning disable IDE0017 // オブジェクトの初期化を簡略化します
            var gen = new ConfigGeneral();
#pragma warning restore IDE0017 // オブジェクトの初期化を簡略化します

            if (General == null || Check == null)
            {
                return(gen);
            }

            gen.ContestName = TbContestName.Text;
            gen.Category    = CbCategory.SelectedValue?.ToString();
            for (int i = 0; i < WpPower.Children.Count; i++)
            {
                var rb = WpPower.Children[i] as RadioButton;
                if (rb.IsChecked == true)
                {
                    gen.PowerModeArg = i;
                    break;
                }
            }
            if (TbCoeff.Text.Length > 0)
            {
                gen.Coeff = int.Parse(TbCoeff.Text);
            }
            gen.MainCn       = TbMainContestNo.Text;
            gen.SubCn        = TbSubContestNo.Text;
            gen.PowerValue   = int.Parse(CbPowerValue.Text);
            gen.Operators    = TbOperator.Text;
            gen.AutoOperator = (
                CbAutoOperator.IsChecked == true);

            return(gen);
        }
コード例 #3
0
ファイル: DatabaseCommon.cs プロジェクト: abdekker/tutorials
 // Constructor
 public DatabaseCommon(ConfigGeneral cfgGeneral, ConfigDatabase cfgDatabase)
 {
     m_cfgGeneral              = cfgGeneral;
     m_cfgDatabase             = cfgDatabase;
     m_cfgDatabase.querySELECT = HelperGetQuerySELECT();
     m_cfgDatabase.queryINSERT = HelperGetQueryINSERT();
     m_cfgDatabase.queryUPDATE = HelperGetQueryUPDATE();
     m_cfgDatabase.queryDELETE = HelperGetQueryDELETE();
 }
コード例 #4
0
        public async Task <ConfigGeneral> DeleteByIdAsync(int?id)
        {
            ConfigGeneral configGeneral = await _context.ConfigGeneral.FirstOrDefaultAsync(obj => obj.Id == id);

            _context.ConfigGeneral.Remove(configGeneral);

            await _context.SaveChangesAsync();

            return(null);
        }
コード例 #5
0
        public async Task <IActionResult> Edit(ConfigGeneral configGeneral)
        {
            if (!ModelState.IsValid)
            {
                var viewModel = new ConfigGeneralFormViewModel {
                    ConfigGeneral = configGeneral
                };

                return(View(viewModel));
            }

            await _configGeneralService.EditAsync(configGeneral);

            return(RedirectToAction("Visualizar"));
        }
コード例 #6
0
        public async Task <IActionResult> Create(ConfigGeneral configGeneral)
        {
            if (!ModelState.IsValid)
            {
                var viewModel = new ConfigGeneralFormViewModel {
                    ConfigGeneral = configGeneral
                };

                return(View(viewModel));
            }

            await _configGeneralService.InsertAsync(configGeneral);

            return(RedirectToAction(nameof(Index), "Home"));
        }
コード例 #7
0
ファイル: Configuration.cs プロジェクト: MyUncleSam/NzbMover
        public Configuration(IniData conf)
        {
            General = new ConfigGeneral()
            {
                debug = Convert.ToBoolean(conf["GENERAL"]["debug"])
            };

            Settings = new ConfigSettings()
            {
                target                     = new DirectoryInfo(conf["SETTINGS"]["target"]),
                action                     = (ConfigSettings.FileAction)Enum.Parse(typeof(ConfigSettings.FileAction), conf["SETTINGS"]["action"]),
                allow_duplicates           = Convert.ToBoolean(conf["SETTINGS"]["allow_duplicates"]),
                close_success              = Convert.ToInt32(conf["SETTINGS"]["close_success"]),
                move_switch                = Convert.ToBoolean(conf["SETTINGS"]["close_error"]),
                ask_for_password           = Convert.ToBoolean(conf["SETTINGS"]["ask_for_password"]),
                password_extraction_method = (ConfigSettings.PasswordExtractionMethod)Enum.Parse(typeof(ConfigSettings.PasswordExtractionMethod), conf["SETTINGS"]["password_extraction_method"])
            };
        }
コード例 #8
0
ファイル: ConfigTab.xaml.cs プロジェクト: JI1LDG/HaminChecker
        private void CbCategory_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (General == null || CbCategory.SelectedValue == null)
            {
                return;
            }
            var sec = ConfigGeneral.GetSectorFromCategory(CbCategory.SelectedValue.ToString(), General);

            for (int i = 0; i < WpPower.Children.Count; i++)
            {
                var rb = WpPower.Children[i] as RadioButton;
                if (sec.Modes?.Contains(i) != true)
                {
                    rb.IsEnabled = false;
                    rb.IsChecked = false;
                }
                else
                {
                    rb.IsEnabled = true;
                }
            }
        }
コード例 #9
0
        private string MakeSummery(CheckData check)
        {
            string log = "<SUMMARYSHEET VERSION=R2.0>\r\n";

            try {
                if (check.Gens.GetByName("ContestName").IsEmpty())
                {
                    return(null);
                }
                log += "<CONTESTNAME>" + check.Gens.GetByName("ContestName") + "</CONTESTNAME>\r\n";

                log += "<CATEGORYCODE>";
                var catidx = ConfigGeneral.GetCategoryIndex(check.ConGen.Category, check.Gens);
                if (catidx != -1)
                {
                    log += Sectors.ToArray(check.Gens.GetByName("Sectors")).ToArray()[catidx].Code;
                }
                else
                {
                    return(null);
                }

                if (check.ConGen.PowerModeArg != -1)
                {
                    log += PowerMode.ToArray(check.Gens.GetByName("PowerMode"))[check.ConGen.PowerModeArg].SuffixPowerSign;
                }
                log += "</CATEGORYCODE>\r\n";

                log += "<CALLSIGN>" + check.ConSol.CallSign + "</CALLSIGN>\r\n";

                if (check.ConSol.GestOp != "")
                {
                    log += "<OPCALLSIGN>" + check.ConSol.GestOp + "</OPCALLSIGN>\r\n";
                }

                log += "<TOTALSCORE>" + SumPoint + "</TOTALSCORE>\r\n";

                log += "<ADDRESS>" + check.ConSol.Address + "</ADDRESS>\r\n";

                log += "<NAME>" + check.ConSol.Name + "</NAME>\r\n";

                log += "<TEL>" + check.ConSol.PhoneNumber + "</TEL>\r\n";

                log += "<EMAIL>" + check.ConSol.MailAddress + "</EMAIL>\r\n";

                log += "<POWER>" + check.ConGen.PowerValue + "</POWER>\r\n";

                if (check.Ches.GetByName("CoeffSetting").ToBool())
                {
                    log += "<FDCOEFF>" + check.ConGen.Coeff + "</FDCOEFF>\r\n";
                }

                log += "<OPPLACE>" + check.ConSol.Place + "</OPPLACE>\r\n";

                log += "<POWERSUPPLY>" + check.ConSol.Supply + "</POWERSUPPLY>\r\n";

                log += "<COMMENTS>" + check.ConSol.Comment + "</COMMENTS>\r\n";

                if (check.ConGen.AutoOperator)
                {
                    log += "<MULTIOPLIST>" + string.Join(",", check.Logs.Select(x => x.Operator).Distinct()) + "</MULTIOPLIST>\r\n";
                }
                else
                {
                    log += "<MULTIOPLIST>" + check.ConGen.Operators + "</MULTIOPLIST>\r\n";
                }

                log += "<OATH>" + check.ConSol.Oath + "</OATH>\r\n";

                log += "<DATE>" + System.DateTime.Now.ToLocalTime().ToString("yyyy年MM月dd日") + "</DATE>\r\n";

                log += "<SIGNATURE>" + check.ConSol.LicenserName + "</SIGNATURE>\r\n";
            } catch {
                return(null);
            }

            log += "</SUMMARYSHEET>\r\n";

            return(log);
        }
コード例 #10
0
 public static void LoadSettings()
 {
     General = General.LoadSettings();
 }
コード例 #11
0
 public async Task EditAsync(ConfigGeneral obj)
 {
     _context.Update(obj);
     await _context.SaveChangesAsync();
 }
コード例 #12
0
 public async Task InsertAsync(ConfigGeneral obj)
 {
     _context.Add(obj);
     await _context.SaveChangesAsync();
 }
コード例 #13
0
ファイル: Worker.cs プロジェクト: JI1LDG/HaminChecker
        private void Bw_DoWork(object sender, DoWorkEventArgs e)
        {
            var    logs   = data.Logs;
            var    failed = new List <string>();
            string tmp;

            NowCount = 0;
            Status   = 0 + "/" + logs.Count;
            bw.ReportProgress(NowCount);

            for (int i = 0; i < logs.Count; i++)
            {
                if (isCancel)
                {
                    break;
                }

                var l = logs[i];

                var callsign = Callsign.RemoveStroke(l.Callsign);
                l.SetInit();

                if (l.Exclude)
                {
                    continue;
                }
                failed = new List <string>();

                //Dupe
                if (logs.Count(x => x.Callsign == l.Callsign && x.Freq == l.Freq) > 1)
                {
                    l.SetMax(5);
                    failed.Add("データが重複しています。");
                    if (data.Ches.GetByName("ZeroByDupe").ToBool())
                    {
                        l.Point = 0;
                    }
                }

                Status = "無線局情報検索中 (" + NowCount + "/" + logs.Count + ")";
                var si = ss.Execute(callsign);
                //DbNothing
                if (si == null)
                {
                    l.SetMax(1);
                    failed.Add("無線局情報の取得に失敗しました。");
                }

                Status = "ログ確認中 (" + NowCount + "/" + logs.Count + ")";

                //SentCNCheck
                tmp = l.SentCn;
                if (data.Ches.GetByName("RSTExists").ToBool())
                {
                    if (l.Mode == Modes.CW.ToString())
                    {
                        tmp = tmp.Substring(3);
                    }
                    else
                    {
                        tmp = tmp.Substring(2);
                    }
                }
                var    frq = Frequency.Split(data.Ches.GetByName("AreaByFreq"));
                string cn;
                if (frq.Count(x => Frequency.ToString(x) == l.Freq) > 0)
                {
                    cn = data.ConGen.SubCn;
                }
                else
                {
                    cn = data.ConGen.MainCn;
                }
                if (cn != tmp)
                {
                    l.SetMax(5);
                    failed.Add("自局CN不一致");
                }
                else
                {
                    if (data.Ches.GetByName("PowerSignExists").ToBool())
                    {
                        if (data.Ches.GetByName("NonSignAllowed").ToBool() == false)
                        {
                            if (!Regex.IsMatch(tmp, @"\d+[A-Z]"))
                            {
                                l.SetMax(5);
                                failed.Add("自局CNに記号なし");
                            }
                        }
                    }
                }

                //RecvCNCheck
                if (data.Ches.GetByName("CheckRecvCn").ToBool() && si != null)
                {
                    if (data.Ches.GetByName("RSTExists").ToBool())
                    {
                        tmp = @"\d\d";
                        if (l.Mode == "CW")
                        {
                            tmp += @"\d";
                        }
                    }
                    else
                    {
                        tmp = "";
                    }

                    if (data.Ches.GetByName("AreaNoExists").ToBool())
                    {
                        tmp += @"(\d+)";
                    }
                    else
                    {
                        tmp += @"(.*)";
                    }

                    if (data.Ches.GetByName("PowerSignExists").ToBool())
                    {
                        if (data.Ches.GetByName("NonSignAllowed").ToBool())
                        {
                            tmp += @"([A-Z]*)";
                        }
                        else
                        {
                            tmp += @"([A-Z])";
                        }
                    }
                    else
                    {
                        tmp += "()";
                    }

                    var m = Regex.Matches(l.RecvCn, tmp);
                    if (m.Count > 0 && m[0].Groups.Count > 2)
                    {
                        var nos  = m[0].Groups[1].Value;
                        var sign = m[0].Groups[2].Value;

                        var pbs = Regex.Matches(data.Ches.GetByName("PointBySign"), @"(([A-Z])(\d))*");
                        if (pbs.Count > 0 && pbs[0].Groups.Count > 2)
                        {
                            for (int j = 0; j < pbs[0].Groups[2].Captures.Count - 2; j++)
                            {
                                if (sign == pbs[0].Groups[2].Captures[j].Value)
                                {
                                    l.Point = int.Parse(pbs[0].Groups[3].Captures[j].Value);
                                    break;
                                }
                            }
                        }

                        if (data.Ches.GetByName("ExcludedAreaNos").Split(',').Count(x => x == nos) == 0)
                        {
                            var             fr2q = Frequency.Split(data.Ches.GetByName("AreaByFreq"));
                            List <AreaData> area;
                            if (fr2q.Count(x => Frequency.ToString(x) == l.Freq) > 0)
                            {
                                area = data.Area2;
                            }
                            else
                            {
                                area = data.Area1;
                            }

                            if (Callsign.GetPortableNo(l.Callsign) != -1)
                            {
                                failed.Add("移動局: " + Callsign.Areas[Callsign.GetPortableNo(l.Callsign)] + "地方");
                            }
                            else
                            {
                                var addr = area.FirstOrDefault(x => x.No == nos);

                                if (addr == null)
                                {
                                    l.SetMax(5);
                                    failed.Add("地域番号が存在しません");
                                    if (Callsign.GetPortableNo(l.Callsign) == -1)
                                    {
                                        string suggest = "";
                                        for (int k = 0; k < si.Address.Count; k++)
                                        {
                                            foreach (var aw in area.Where(x => x.Addresses.Exists(y => si.Address[k].Contains(y))))
                                            {
                                                suggest += aw.No + ", ";
                                                break;
                                            }
                                        }
                                        failed.Add("もしかして: " + suggest);
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        l.SetMax(5);
                        failed.Add("相手CNが不正です。");
                    }
                }

                //IsCallSignCheck
                if (data.Ches.GetByName("CheckCallsign").ToBool())
                {
                    //OnlyJA
                    if (data.Ches.GetByName("OnlyJAStation").ToBool())
                    {
                        if (!Callsign.IsJapanCall(callsign))
                        {
                            l.SetMax(5);
                            failed.Add("日本の無線局ではありません。");
                        }
                    }
                }

                //DateCheck
                for (int j = 1; j <= 4; j++)
                {
                    if (j == 4)
                    {
                        l.SetMax(2);
                        failed.Add("コンテスト期間外もしくは周波数が対象外です。");
                        break;
                    }

                    //SectorCheck
                    if (data.Ches.GetByName("CheckBySection").ToBool())
                    {
                        var cat = ConfigGeneral.GetSectorFromCategory(data.ConGen.Category, data.Gens);
                        if (cat == null)
                        {
                            l.SetMax(5);
                            failed.Add("部門が見つかりません。");
                        }
                        else
                        {
                            if (cat.EnabledFreqStr != "")
                            {
                                var enq = cat.EnabledFreqs.Select(x => Frequency.ToString(x)).ToList();
                                if (enq.Count(x => x == l.Freq) == 0)
                                {
                                    l.SetMax(2);
                                    failed.Add("周波数が対象外です。");
                                }
                            }
                            else if (cat.UnabledFreqStr != "")
                            {
                                var unq = cat.UnabledFreqs.Select(x => Frequency.ToString(x)).ToList();
                                if (unq.Count(x => x == l.Freq) > 0)
                                {
                                    l.SetMax(2);
                                    failed.Add("周波数が対象外です。");
                                }
                            }
                        }
                    }

                    //DateCheck
                    var frq3 = Frequency.Split(data.Gens.GetByName("Freq" + j))?.Select(x => Frequency.ToString(x)).ToList();
                    if (frq3.Count(x => x == l.Freq) > 0)
                    {
                        var dt = Date.FromTerm(data.Gens.GetByName("Terms" + j), l.Date.Year);
                        if (!(dt[0] <= l.Date && l.Date < dt[1]))
                        {
                            l.SetMax(2);
                            failed.Add("コンテスト期間外です。");
                        }
                        break;
                    }
                }

                l.FailedStr = string.Join("\r\n", failed.Where(x => x != ""));;

                if (data.Ches.GetByName("CoeffSetting").ToBool())
                {
                    l.Point *= data.ConGen.Coeff;
                }

                NowCount++;

                Status = NowCount + "/" + logs.Count;
                bw.ReportProgress(NowCount);
            }

            Status = "ログ確認終了 (" + NowCount + "/" + logs.Count + ")";
            bw.ReportProgress(NowCount);
        }