Example #1
0
        public async Task <IEnumerable <AutoPost> > CreatePostsFromVin(string vin, int?modelYear = null)
        {
            IEnumerable <VinDecodeResult> vinDecodeResults = await _vinDecodeService.DecodeVin(vin, modelYear);

            Dictionary <int, VinDecodeResult> results = GetResultsDictionary(vinDecodeResults);

            AutoPost autoPost = await ConvertToAutoPost(vin, results);

            results.TryGetValue(143, out VinDecodeResult? errorCodeResult);
            results.TryGetValue(144, out VinDecodeResult? possibleVinConfigurationsResult);

            Dictionary <string, IEnumerable <VinDecodeResult> > additionalVinInformation = await _vinDecodeService.GetAdditionalVinInformation(vin, possibleVinConfigurationsResult?.Value);

            IEnumerable <Task <AutoPost> > additionalVinInformationTasks = additionalVinInformation.Select(x => ConvertToAutoPost(x.Key, x.Value));

            AutoPost[] otherPosts = await Task.WhenAll(additionalVinInformationTasks);

            IEnumerable <string> errors = Enumerable.Empty <string>();

            if (errorCodeResult != null && errorCodeResult.Value != "0" && results.TryGetValue(191, out VinDecodeResult? vinErrorTextResult))
            {
                errors = vinErrorTextResult.Value?.Split(';').Select(x => x.Trim()) ?? Enumerable.Empty <string>();
                if (results.TryGetValue(156, out VinDecodeResult? vinAdditionalErrorTextResult))
                {
                    errors = errors.Concat(vinAdditionalErrorTextResult.Value?.Split(';').Select(x => x.Trim()) ?? Enumerable.Empty <string>());
                }
            }

            return(otherPosts);
        }
Example #2
0
        public void Execute(IJobExecutionContext context)
        {
            //待批试卷
            _logger.Info("ExamPaperJob:正在工作......");
            AutoPost ap = new AutoPost();

            ap.checkExam((int)AutoNotice.待批试卷);
        }
        public void Execute(IJobExecutionContext context)
        {
            //学生报名
            _logger.Info("StudentSignUpJob:正在工作......");
            AutoPost ap = new AutoPost();

            ap.checkExam((int)AutoNotice.学生报名);
        }
Example #4
0
        public void Execute(IJobExecutionContext context)
        {
            _logger.Info("WorkJob正在工作...");
            //待批该作业
            AutoPost ap = new AutoPost();

            ap.checkExam((int)AutoNotice.待批改作业);
        }
        public void Execute(IJobExecutionContext context)
        {
            //资源审核
            _logger.Info("ResourceExamineJob:正在工作......");
            AutoPost ap = new AutoPost();

            ap.checkExam((int)AutoNotice.资源审核);
        }
        public void Execute(IJobExecutionContext context)  //hyd
        {
            _logger.Info("UnSubmitWorkJob正在工作...");
            //系统消息通知
            AutoPost ap = new AutoPost();

            ap.checkExam((int)AutoNotice.系统消息);
        }
Example #7
0
 private void PostTopic()
 {
     while (dtTable.Rows.Count > 0)
     {
         if (isAbort == false)
         {
             if (isLock == false)
             {
                 if (dtTable.Rows.Count > 0)
                 {
                     try
                     {
                         isLock = true;
                         string strErr = "";
                         long   id     = long.Parse(dtTable.Rows[0]["ID"].ToString());
                         dtTable.Rows.RemoveAt(0);
                         WebLink weblink = WebLink.Get(id);
                         isLock = false;
                         StatusObj statusObj = new StatusObj();
                         if (weblink != null)
                         {
                             strErr = "Up to " + weblink.Url + " [ " + weblink.Topic + " ] " + "....................";
                             DataRow dtRow = dtLogEntries.NewRow();
                             dtRow["ID"]         = id;
                             dtRow["LogEntries"] = strErr;
                             dtRow["DateTime"]   = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                             dtLogEntries.Rows.Add(dtRow);
                             try
                             {
                                 WebBrowser webBrowser = (WebBrowser)panelControl1.Controls[id.ToString()];
                                 AutoPost   post       = new AutoPost(webBrowser, weblink, "", Content, "");
                                 statusObj = post.UpTopic();
                                 strErr    = strErr + statusObj.Message;
                                 try { webBrowser.Dispose(); }
                                 catch { }
                                 try { panelControl1.Controls.Remove(webBrowser); }
                                 catch { }
                             }
                             catch
                             {
                                 strErr = strErr + " Error.";
                             }
                             dtRow["LogEntries"] = strErr;
                             dtRow["LinkUp"]     = statusObj.Value;
                             dtRow["Status"]     = statusObj.Status;
                         }
                     }
                     catch
                     {
                         isLock = false;
                     }
                 }
             }
         }
     }
 }
Example #8
0
 public static string GenerateTitle(AutoPost autoPost)
 {
     return(string.Join(' ', new List <string?>
     {
         autoPost.Year?.ToString(),
         autoPost.Make?.MakeName,
         autoPost.Model?.ModelName,
         autoPost.Series?.ToUpper(),
         autoPost.Trim?.ToUpper()
     }.Where(x => !string.IsNullOrEmpty(x))));
 }
Example #9
0
        public async Task <IActionResult> Create(AutoPost post)
        {
            Model?model = null;
            Make? make  = null;

            if (post.ModelId.HasValue)
            {
                model = await _autoPostService.GetModel(post.ModelId.Value);
            }

            if (post.MakeId.HasValue)
            {
                make = await _autoPostService.GetMake(post.MakeId.Value);
            }

            post.SystemTitle = AutoPostService.GenerateTitle(post);

            return(await base.Create(post));
        }
Example #10
0
 private void PostTopic()
 {
     while (dtTable.Rows.Count > 0)
     {
         if (isAbort == false)
         {
             if (isLock == false)
             {
                 if (dtTable.Rows.Count > 0)
                 {
                     try
                     {
                         isLock = true;
                         string strErr = "";
                         long   id     = long.Parse(dtTable.Rows[0]["ID"].ToString());
                         dtTable.Rows.RemoveAt(0);
                         hashTable.Add(id, false);
                         WebLink weblink = WebLink.Get(id);
                         isLock = false;
                         StatusObj statusObj = new StatusObj();
                         if (weblink != null)
                         {
                             DataRow dtRow = dtLogEntries.NewRow();
                             dtRow["ID"]       = id;
                             dtRow["DateTime"] = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                             dtLogEntries.Rows.Add(dtRow);
                             if (_Type == NumCode.POS)
                             {
                                 strErr = "Post to " + weblink.Url + " ....................";
                                 dtRow["LogEntries"] = strErr;
                                 try
                                 {
                                     WebBrowser webBrowser = (WebBrowser)panelControl1.Controls[id.ToString()];
                                     AutoPost   post       = new AutoPost(webBrowser, multiforum, weblink, Subject, Content, Tag);
                                     statusObj = post.PostTopic();
                                     strErr    = strErr + statusObj.Message;
                                 }
                                 catch
                                 {
                                     strErr = strErr + "Error.";
                                 }
                             }
                             else
                             {
                                 strErr = "Up to " + weblink.Url + " [ " + weblink.Topic + " ] " + "....................";
                                 dtRow["LogEntries"] = strErr;
                                 try
                                 {
                                     WebBrowser webBrowser = (WebBrowser)panelControl1.Controls[id.ToString()];
                                     AutoPost   post       = new AutoPost(webBrowser, multiforum, weblink, Subject, Content, Tag);
                                     statusObj = post.UpTopic();
                                     strErr    = strErr + statusObj.Message;
                                 }
                                 catch
                                 {
                                     strErr = strErr + "Error.";
                                 }
                             }
                             dtRow["LogEntries"] = strErr;
                             dtRow["LinkUp"]     = statusObj.Value;
                             dtRow["Status"]     = statusObj.Status;
                             if (statusObj.Status == "Successful")
                             {
                                 haveSuccessful = true;
                             }
                             hashTable[id] = true;
                         }
                     }
                     catch
                     { isLock = false; }
                 }
             }
         }
     }
     try
     {
         if (Thread.CurrentThread.IsAlive)
         {
             Thread.CurrentThread.Abort();
         }
     }
     catch { }
 }
        private async Task CreateTestData(IServiceScope scope)
        {
            IAutoPostService autoService = scope.ServiceProvider.GetRequiredService <IAutoPostService>();
            IPostService     postService = scope.ServiceProvider.GetRequiredService <IPostService>();
            MyDbContext      myDbContext = scope.ServiceProvider.GetRequiredService <MyDbContext>();

            HashSet <string> existingVins = myDbContext.AutoPosts.Where(x => !string.IsNullOrEmpty(x.Vin)).Select(x => x.Vin !).AsNoTracking().ToHashSet();

            List <string> vins = new List <string>
            {
                "YV149MTS6G2409804",
                "JTJYWRBZ6G2009198",
                "SALWG2VF5GA642581",
                "YV126MEB3F1186381",
                "YV1902TH6F2304610",
                "JA4JZ4AX9FZ001840",
                "WMWZP3C56FT298666",
                "KNAFZ4A81F5290432",
                "WA1CMCFE3FD080332",
                "3VW2M1AJ5EM308034",
                "WMWSX1C50ET623235",
                "WDDHH8JB5EA799727",
                "JTHBE5D25E5999999",
                "JTHBE5D21E5009987",
                "WAUWFBFL0E0015575",
                "JM3TB3BV1D0402771",
                "JM1BL1UF2D1843458",
                "JTHCF5C2XD2036051",
                "1C4BJWKGXDL508578",
                "WBA3A5C5XDF255852",
                "WAUBGCFC1DN070779",
                "3VWFP7AT0CM615492",
                "JM1BL1V74C1654199",
                "SALSF2D48CA745019",
                "5UXWX5C51CC727594",
                "WBSDX9C50CE632859",
                "WBAKC8C57CCC34760",
                "WAUFEAFMXCA868546",
                "JN8AS5MT9BW568025",
                "JN1AR5EF2BM240198",
                "JA32Y6HV1BU003147",
                "JTHFF2C26B2515141",
                "1J4N72GU9BD117409",
                "SAJWA2GEXBMV00832",
                "1GC4CZC80BF120492",
                "WBSKG9C57BE369243",
                "YV4852CZ0A1550673",
                "3N1AB6AP4A1705397",
                "WMWMS3C45ATY08384",
                "WDDGF5EB5AR097221",
                "5NMSK3BB0A0011955",
                "KMHCN4BC5AU476036",
                "19XFA1E39AE028694",
                "1FTPX1EV0A0017433",
                "1G1YR2DW4A50008EX",
                "WB1024400AZR12312",
                "KL2TX56E49B323948",
                "JA3AY68V09U612302",
                "2LMDU68L29BJ11359",
                "KMHGC46E394061991",
                "KL1TJ53779B616366",
                "WBXPC934X9WJ30129",
                "WUADA64F19N900439",
                "5J8TB18219A802665",
                "2G2WP552681193952",
                "KL2TJ51608B202365",
                "KMHEU41DX8A516824",
                "1Z7HT38K87S100173",
                "KMHJM12B070013219",
                "1ZVFT80N475211367",
                "1FTPX14587KA80202",
                "1FDSE35S57DB34927",
                "3D2WS26D07G777824",
                "3D6WS26D67G828192",
                "WB10397017ZP61849",
                "2HNYD28377H522352",
                "WVWCU93C86P085276",
                "KL2TD69656B612870",
                "WMWRF33456TG14703",
                "WDBTK56F36T072574",
                "1LNFM83V060018247",
                "SALMH13446A220123",
                "KNALD221565103572",
                "2HKYF286060012701",
                "1HGCM56766A041742",
                "WBAVD13596KX00407",
                "6G2VX12U95L553833",
                "WMWRC33444T050912",
                "1J4GL48K246250341",
                "1HD1BMY1X4Y010673",
                "JH4CL96974CD14071",
                "5GZCZ23D13S847842",
                "KNDUP131936358464",
                "KNDUP131336425950",
                "1HD1JAB313Y039358",
                "4F4YR12U72TM08759",
                "JHLRD78512C024509",
                "1HD1PDC392Y952267",
                "2B4GT54L62R753223",
                "JF1SF63501H759113",
                "SALTY12471A702896",
                "1FAFP40491FS62183",
                "YV1VW255XYFU88185",
                "WBAEJ1341YA382128",
                "2HHMB4660YH904692",
                "1LNFM81W7XY601946",
                "1GCGC33R3XF100201",
                "JT8BF28G1W5630798",
                "JH4KA9653WC800195",
                "WDBGA51E4TA328716",
                "1LNLM82W9TY705110",
                "KNDJA723XT5517217",
                "2GCEK19R3T1146294",
                "WBABK7320TET60222",
                "JA3AP47H3SY018398",
                "SALHF1349SA654345",
                "JH4DC4340SS001220",
                "4T1SK12E7PU300490",
                "JM2UF2138N0251579",
                "1B7FG23Y0N0012403",
                "1HGEE4860L0017233",
                "1HD4CAM33LY118860",
                "1FTEF25M0L0016339",
                "3VWBB91G0K0016657",
                "JT2MX83E2K0030681",
                "2G3AM51NXK2312943",
                "2G3AM51N0K2395928",
                "WDBEA26E6KB002021",
                "1LNCM9744KY646690",
                "1FTCR10T4KUC34284",
                "1FTCR10A9KUC55386",
                "2G3AM513XJ2364151",
                "1G3AJ513xJG314327",
                "1LNBM9741JY839714",
                "1FTCR14T6JPB25476",
                "1FTBR10A7JUD45386",
                "JB3BA24K0JU001772",
                "WVWCA0157HK036627",
                "JT2EL31D8H0101727",
                "2G3AJ51W1H9422815",
                "1G3AJ5131HD398220",
                "JN1HU1110HT263333",
                "1JTBG64S0H0014395",
                "1FTBR10C3HUB08213",
                "JH4KA2640HC004148",
                "1G3AM19X8GG308517",
                "1G3AJ19X1GG341898",
                "1G3AJ19W6GG420717",
                "1N6HD16Y1GC442608",
                "2B4FK51G8GR605541",
                "1G3AJ19E0FG390717",
                "1G3AM19E8FG344687",
                "1JCBS7440F0013895",
                "1FACP22X2FK213033",
                "1FMEU15HXFLA29734",
                "1G3AM19E4ED315574",
                "1G3AJ19E7EG320727",
                "JN1HK04S0E0010739",
                "WDBDA24A4EA027134",
                "WDBD022A7EA060323",
                "1FABP0521ET102126",
                "1JCNE16N6CT044957",
                "1HD1AJK23CY024920",
                "WVWDG21K9BW201730",
                "WDBAA33A8BB093914",
            };

            Model model  = myDbContext.Models.Include(x => x.Make).FirstOrDefault();
            int?  makeId = model.MakeId;

            foreach (string vin in vins)
            {
                if (existingVins.Contains(vin))
                {
                    continue;
                }

                AutoPost autoPost = await autoService.CreatePostFromVin(vin);

                DateTime now = DateTime.UtcNow;

                autoPost.AutoCondition ??= (AutoCondition)GetRandomEnumValue(typeof(AutoCondition)) !;
                autoPost.AutoType ??= (AutoType)GetRandomEnumValue(typeof(AutoType)) !;
                autoPost.Doors ??= 4;
                autoPost.DriveType ??= (DriveType)GetRandomEnumValue(typeof(DriveType)) !;
                autoPost.FuelType ??= (FuelType)GetRandomEnumValue(typeof(FuelType)) !;
                autoPost.IsPublic = true;
                autoPost.Make ??= model.Make;
                autoPost.MakeId ??= makeId;
                autoPost.Model ??= model;
                autoPost.ModelId ??= model.ModelId;
                autoPost.ModifiedDate = now;
                autoPost.CreatedDate  = now;
                autoPost.Color ??= "Black";
                autoPost.CreatedByUserId = 1;
                autoPost.TitleStatus ??= (TitleStatus)GetRandomEnumValue(typeof(TitleStatus)) !;
                autoPost.TransmissionType ??= (TransmissionType)GetRandomEnumValue(typeof(TransmissionType)) !;
                autoPost.Description = "Test";
                autoPost.Price       = 10;
                autoPost.SystemTitle ??= AutoPostService.GenerateTitle(autoPost);
                autoPost.UserTitle = autoPost.SystemTitle;
                autoPost.Language  = "English";
                autoPost.IsPublic  = true;
                autoPost.Mileage   = 10000;

                await postService.Create(autoPost);
            }
        }
Example #12
0
        private async Task <AutoPost> ConvertToAutoPost(string vin, Dictionary <int, VinDecodeResult> results)
        {
            results.TryGetValue(9, out VinDecodeResult? cylinderResult);
            results.TryGetValue(14, out VinDecodeResult? doorsResult);
            results.TryGetValue(24, out VinDecodeResult? primaryFuelTypeResult);
            results.TryGetValue(66, out VinDecodeResult? secondaryFuelTypeResult);
            results.TryGetValue(29, out VinDecodeResult? modelYearResult);
            results.TryGetValue(34, out VinDecodeResult? seriesResult);
            results.TryGetValue(38, out VinDecodeResult? trimResult);
            results.TryGetValue(18, out VinDecodeResult? engineModelResult);
            results.TryGetValue(15, out VinDecodeResult? driveTypeResult);
            results.TryGetValue(37, out VinDecodeResult? transmissionStyleResult);
            results.TryGetValue(5, out VinDecodeResult? bodyClassResult);
            results.TryGetValue(39, out VinDecodeResult? vehicleTypeResult);
            results.TryGetValue(13, out VinDecodeResult? displacementInLitersResult);
            results.TryGetValue(11, out VinDecodeResult? displacementInCcResult);
            results.TryGetValue(71, out VinDecodeResult? horsePowerResult);

            string?trim        = trimResult?.Value?.ToUpper();
            string?series      = seriesResult?.Value?.ToUpper();
            string?engineModel = engineModelResult?.Value;

            int.TryParse(cylinderResult?.Value, out int cylinders);
            int.TryParse(modelYearResult?.Value, out int modelYearFromVin);
            int.TryParse(doorsResult?.Value, out int doors);
            double.TryParse(displacementInLitersResult?.Value, out double displacementInLiters);
            double.TryParse(displacementInCcResult?.Value, out double displacementInCc);
            double.TryParse(horsePowerResult?.Value, out double horsepower);

            displacementInLiters = Math.Round(displacementInLiters, 1);
            displacementInCc     = Math.Round(displacementInCc, 1);
            horsepower           = Math.Round(horsepower, 1);

            Make? make  = null;
            Model?model = null;

            if (results.TryGetValue(28, out VinDecodeResult? modelResult) && int.TryParse(modelResult.ValueId, out int modelId))
            {
                model = await _myDbContext.Models.Include(x => x.Make).FirstOrDefaultAsync(x => x.VpicId == modelId);

                make = model?.Make;
            }
            else if (results.TryGetValue(26, out VinDecodeResult? makeResult) && int.TryParse(makeResult.ValueId, out int makeId))
            {
                make = await _myDbContext.Makes.FirstOrDefaultAsync(x => x.VpicId == makeId);
            }

            AutoPost autoPost = new AutoPost
            {
                Doors                = doors,
                DriveType            = AutoMappingHelpers.GetDriveType(driveTypeResult?.Value),
                AutoType             = AutoMappingHelpers.GetAutoType(vehicleTypeResult?.Value, bodyClassResult?.Value),
                Cylinders            = cylinders,
                EngineModel          = engineModel,
                FuelType             = AutoMappingHelpers.GetFuelType(primaryFuelTypeResult?.Value, secondaryFuelTypeResult?.Value),
                Trim                 = trim,
                Make                 = make,
                MakeId               = make?.MakeId,
                Model                = model,
                ModelId              = model?.ModelId,
                Series               = series,
                Vin                  = vin.ToUpper(),
                Year                 = modelYearFromVin,
                TransmissionType     = AutoMappingHelpers.GetTransmissionType(transmissionStyleResult?.Value),
                Horsepower           = horsepower,
                DisplacementInLiters = displacementInLiters,
                DisplacementInCc     = displacementInCc
            };

            autoPost.SystemTitle = GenerateTitle(autoPost);

            return(autoPost);
        }