예제 #1
0
파일: DataParcer.cs 프로젝트: 33elza/parcer
        public List <string> ParceTenders(string tenderResponce, List <string> lotJsons, OrgResponce orgResp)
        {
            List <string> notmodelJsons = new List <string>();

            try
            {
                TendersResponce tr = JsonConvert.DeserializeObject <TendersResponce>(tenderResponce);
                for (int i = 0; i < tr.aaData.Count; i++)
                {
                    NotificationModel     notModel = new NotificationModel();
                    List <OrganisationId> cust     = new List <OrganisationId>();
                    OrganisationId        orgId    = new OrganisationId();
                    orgId.Inn = orgResp.Inn;
                    orgId.Kpp = orgResp.Kpp;
                    cust.Add(orgId);
                    notModel.Customers     = cust;
                    notModel.PlacingWayId  = 5000;
                    notModel.RegionCode    = Convert.ToInt32(orgResp.RegionNumber);
                    notModel.Organisations = orgResp.FullName + orgResp.Name;
                    if (tr.iTotalDisplayRecords > 1)
                    {
                        notModel.Multilot = true;
                    }
                    else
                    {
                        notModel.Multilot = false;
                    }

                    Model model = new Model();
                    model.Id   = tr.aaData[i][0];
                    model.Note = tr.aaData[i][1].Substring(tr.aaData[i][1].IndexOf(">") + 1, tr.aaData[i][1].LastIndexOf("<") - tr.aaData[i][1].IndexOf(">") - 1);
                    model.SubmissionStartDateTime = DateTime.Parse(tr.aaData[i][2].Substring(0, tr.aaData[i][2].IndexOf("(")));
                    model.SubmissionCloseDateTime = DateTime.Parse(tr.aaData[i][3].Substring(0, tr.aaData[i][3].IndexOf("(")));

                    model.ContactPerson = new Contacts();
                    string c = tr.aaData[i][4];
                    model.ContactPerson.FIO      = c.Substring(0, c.IndexOf("<"));
                    model.ContactPerson.Position = c.Substring(c.IndexOf(">") + 1, c.Skip(c.IndexOf(">")).ToString().IndexOf(">"));
                    model.ContactPerson.Email    = c.Substring(c.IndexOf("mailto:") + 7, c.Substring(c.IndexOf("mailto")).IndexOf(">") - 7);

                    model.Lots = new List <Lot>();
                    foreach (string lotJson in lotJsons)
                    {
                        try
                        {
                            TendersResponce lotResp = JsonConvert.DeserializeObject <TendersResponce>(lotJson);
                            for (int j = 0; j < lotResp.aaData.Count; j++)
                            {
                                Lot lot = new Lot();
                                lot.Name     = lotResp.aaData[j][1];
                                lot.Measure  = lotResp.aaData[j][3];
                                lot.Quantity = Convert.ToDouble(lotResp.aaData[j][4], CultureInfo.GetCultureInfo("en-US"));
                                model.Lots.Add(lot);
                            }
                        }
                        catch (Newtonsoft.Json.JsonReaderException e)
                        {
                            Debug.WriteLine(e.Data);
                            Debug.WriteLine(e.LineNumber);
                            Debug.WriteLine(e.LinePosition);
                            Debug.WriteLine(e.Message);
                            Debug.WriteLine(e.Path);

                            Regex  reg     = new Regex("(\")\\w+\\W(\")");
                            string pattern = "(\")\\w+\\W(\")";
                            string slot    = lotJson;
                            foreach (Match match in reg.Matches(lotJson))
                            {
                                Debug.WriteLine("!!!!" + match);
                                MatchEvaluator evaluator = new MatchEvaluator(RepMatch);
                                slot = Regex.Replace(lotJson, pattern, evaluator);
                                Debug.WriteLine("++++" + slot);
                            }

                            TendersResponce lotResp = JsonConvert.DeserializeObject <TendersResponce>(slot);
                            for (int j = 0; j < lotResp.aaData.Count; j++)
                            {
                                Lot lot = new Lot();
                                lot.Name     = lotResp.aaData[j][1];
                                lot.Measure  = lotResp.aaData[j][3];
                                lot.Quantity = Convert.ToDouble(lotResp.aaData[j][4], CultureInfo.GetCultureInfo("en-US"));
                                model.Lots.Add(lot);
                            }
                        }
                    }

                    notModel.Json = JsonConvert.SerializeObject(model);
                    notmodelJsons.Add(JsonConvert.SerializeObject(notModel));
                }
                return(notmodelJsons);
            }
            catch (JsonReaderException e)
            {
                Debug.WriteLine(e.Message);

                // List<string> tres = new List<string>();
                // Regex regex = new Regex("([.*])");
                //// tres = tenderResponce.Split(',').ToList();
                // tres = regex.Split(tenderResponce).ToList();
                //  foreach (string tr in tres)
                //  {
                //      Debug.WriteLine(tr);
                //  }
                return(notmodelJsons);
            }
        }
 public override int GetHashCode()
 {
     return(OrganisationId.GetHashCode());
 }
예제 #3
0
 public string GetEncryptedId()
 {
     return(obfuscator.Obfuscate(OrganisationId.ToString()));
 }
예제 #4
0
        public EmployerSearchModel ToEmployerSearchResult(bool keyOnly = false, List <SicCodeSearchModel> listOfSicCodeSearchModels = null)
        {
            if (keyOnly)
            {
                return(new EmployerSearchModel {
                    OrganisationId = OrganisationId.ToString()
                });
            }

            // Get the last two names for the org. Most recent name first
            string[] names = OrganisationNames.Select(n => n.Name).Reverse().Take(2).ToArray();

            var abbreviations = new SortedSet <string>(StringComparer.OrdinalIgnoreCase);

            names.ForEach(n => abbreviations.Add(n.ToAbbr()));
            names.ForEach(n => abbreviations.Add(n.ToAbbr(".")));
            var excludes = new[] { "Ltd", "Limited", "PLC", "Corporation", "Incorporated", "LLP", "The", "And", "&", "For", "Of", "To" };

            names.ForEach(n => abbreviations.Add(n.ToAbbr(excludeWords: excludes)));
            names.ForEach(n => abbreviations.Add(n.ToAbbr(".", excludeWords: excludes)));

            abbreviations.RemoveWhere(a => string.IsNullOrWhiteSpace(a));
            abbreviations.Remove(OrganisationName);

            // extract the prev org name (if exists)
            var prevOrganisationName = "";

            if (names.Length > 1)
            {
                prevOrganisationName = names[names.Length - 1];
                abbreviations.Remove(prevOrganisationName);
            }

            //Get the latest sic codes
            IEnumerable <OrganisationSicCode> sicCodes = GetSicCodes();

            Return[] submittedReports = GetSubmittedReports().ToArray();

            var result = new EmployerSearchModel {
                OrganisationId          = OrganisationId.ToString(),
                OrganisationIdEncrypted = GetEncryptedId(),
                Name         = OrganisationName,
                PreviousName = prevOrganisationName,
                PartialNameForSuffixSearches        = OrganisationName,
                PartialNameForCompleteTokenSearches = OrganisationName,
                Abbreviations      = abbreviations.ToArray(),
                Size               = GetLatestReturn() == null ? 0 : (int)GetLatestReturn().OrganisationSize,
                SicSectionIds      = sicCodes.Select(sic => sic.SicCode.SicSectionId.ToString()).Distinct().ToArray(),
                SicSectionNames    = sicCodes.Select(sic => sic.SicCode.SicSection.Description).Distinct().ToArray(),
                SicCodeIds         = sicCodes.Select(sicCode => sicCode.SicCodeId.ToString()).Distinct().ToArray(),
                Address            = GetLatestAddress()?.GetAddressString(),
                LatestReportedDate = submittedReports.Select(x => x.Created).FirstOrDefault(),
                ReportedYears      = submittedReports.Select(x => x.AccountingDate.Year.ToString()).ToArray(),
                ReportedLateYears  =
                    submittedReports.Where(x => x.IsLateSubmission).Select(x => x.AccountingDate.Year.ToString()).ToArray(),
                ReportedExplanationYears = submittedReports.Where(x => string.IsNullOrEmpty(x.CompanyLinkToGPGInfo) == false)
                                           .Select(x => x.AccountingDate.Year.ToString())
                                           .ToArray()
            };

            if (listOfSicCodeSearchModels != null)
            {
                result.SicCodeListOfSynonyms = GetListOfSynonyms(result.SicCodeIds, listOfSicCodeSearchModels);
            }

            return(result);
        }
예제 #5
0
 public string GetEncryptedId()
 {
     return(Encryption.EncryptQuerystring(OrganisationId.ToString()));
 }
예제 #6
0
 public override string GetContainerName()
 {
     return(OrganisationId.ToString());
 }