/// <summary> /// Returns the classification of a string, departing from a list of classifications where its match is met /// Narrow the tree with the supplied classification (Adresa) and then return the supplied classifications completed with the one found down the tree found for its match: Adresa, TipStrada, Bulevardul /// A func should be supplied for the matching (input: string to match, leafe, output bool) /// </summary> /// <returns>The match.</returns> public List <Classification> Match(List <Classification> narrowTo, string find, IMatchProcessor with) { var result = new List <Classification>(); if (string.IsNullOrEmpty(find)) { return(result); } var narrowed = Narrow(narrowTo); narrowed.ForEach(x => { var leaves = new List <TreeNode <Classification, string> >(); leaves = x.GetLeaves(leaves); leaves.ForEach(y => { if (with.Process(find, y.Leaf)) { result.AddRange(y.BuildChainUp(null, x.Id).OrderBy(z => z.Order)); } }); }); return(result); }
//include toate tipurile de inscrieri si entitatile asociate + asocierile lor :D // calculeaza pozitia // TipDrept // InscrieriProprietari, Proprietar // InscrieriActeProprietate, ActProprietate static List <string> ExportInscriere(InscriereDetaliu inscriereD, IEnumerable <Proprietar> proprietariImobil, IMatcher matcher, IMatchProcessor matchProcessor) { StringBuilder builder1 = new StringBuilder(); StringBuilder builder2 = new StringBuilder(); var clasTipDocument = new List <Classification>() { new Classification(0, "root"), new Classification(1, "TipDocument") }; var clasModDobandire = new List <Classification>() { new Classification(0, "root"), new Classification(1, "ModDobandire") }; var clasTipInscriere = new List <Classification>() { new Classification(0, "root"), new Classification(1, "TipInscriere") }; var clasTipDreptParte2 = new List <Classification>() { new Classification(0, "root"), new Classification(1, "TipDrept"), new Classification(2, "Parte2") }; var clasTipDreptParte3 = new List <Classification>() { new Classification(0, "root"), new Classification(1, "TipDrept"), new Classification(2, "Parte3") }; switch (inscriereD.ParteaCF) { case 2: builder1.Append("#05#T").Append(' ', 6); break; case 3: builder1.Append("#06#T").Append(' ', 6); break; } //moved to importer //if (inscriereD.TipInscriere.Denumire == "NOTATION") //{ // inscriereD.TipDrept = null; // inscriereD.ModDobandire = null; // inscriereD.Cota = string.Empty; // inscriereD.Moneda = string.Empty; // inscriereD.Valoarea = string.Empty; // inscriereD.DetaliiDrept = string.Empty; //} builder1.Append(inscriereD.TipInscriere?.Descriere).Append(' ', 6); //if (inscriereD.TipDrept!=null) //maybe not this //{ builder1.Append(inscriereD.TipDrept?.Denumire.ToUpper()).Append(' ', 6); //} if (!string.IsNullOrEmpty(inscriereD.Cota)) { builder1.Append(inscriereD.Cota).Append(' ', 6); } inscriereD.InscrieriProprietari.ToList().ForEach(x => { switch (x.Proprietar.TipPersoana) { case TipPersoana.F: builder1.Append(x.Proprietar.Nume.Trim().ToUpper()).Append(' ').Append(x.Proprietar.Prenume.Trim().ToUpper()); break; case TipPersoana.J: builder1.Append(x.Proprietar.Nume.ToUpper()); break; case TipPersoana.N: builder1.Append("NEIDENTIFICAT"); break; } builder1.Append('.'); }); if (inscriereD.InscrieriProprietari.Count > 1) { builder1.Remove(builder1.Length - 1, 1); //ultimul punct } switch (inscriereD.ParteaCF) { case 2: builder2.Append("#55#"); break; case 3: builder2.Append("#66#"); break; } var act = inscriereD.InscrieriActe.FirstOrDefault().ActProprietate; builder2.Append(act.Numar).Append('|'); builder2.Append(act.Data.HasValue ? act?.Data.Value.ToString("dd/MM/yyyy") : "").Append('|'); var matchTipDocument = matcher.Match(clasTipDocument, act.TipActProprietate.TipDocumentId.ToString(), matchProcessor); builder2.Append(matchTipDocument.Count > 0 ? matchTipDocument[0].Name : "0").Append('|'); builder2.Append(act.Emitent); //if (inscriereD.TipInscriere.Denumire == "NOTATION") //{ // builder2.Append("[NOTARE]"); //} builder2.Append('|'); //observatii builder2.Append(0).Append('|'); // no f*****g clue var matchTipInscriere = matcher.Match(clasTipInscriere, inscriereD.TipInscriere?.Denumire, matchProcessor); builder2.Append(matchTipInscriere.Count > 0 ? matchTipInscriere[0].Name : "").Append('|'); List <Classification> matchTipDrept = new List <Classification>(); switch (inscriereD.ParteaCF) { case 2: matchTipDrept = matcher.Match(clasTipDreptParte2, inscriereD.TipDrept != null ? inscriereD.TipDrept.Id.ToString() : "", matchProcessor); break; case 3: matchTipDrept = matcher.Match(clasTipDreptParte3, inscriereD.TipDrept != null ? inscriereD.TipDrept.Id.ToString() : "", matchProcessor); break; } builder2.Append(matchTipDrept.Count > 0 ? matchTipDrept[0].Name : "0").Append('|'); var matchModDobandire = matcher.Match(clasModDobandire, inscriereD.ModDobandire?.Denumire, matchProcessor); builder2.Append(matchModDobandire.Count > 0 ? matchModDobandire[0].Name : "0").Append('|'); builder2.Append(inscriereD.Cota).Append('|'); builder2.Append(inscriereD.Nota).Append('|'); var propIndexes = inscriereD.InscrieriProprietari.ToList().Select(x => proprietariImobil.ToList().IndexOf(x.Proprietar)); builder2.Append(string.Join(' ', propIndexes)).Append('|'); builder2.Append(0).Append('|'); //moneda builder2.Append('|'); //valoare builder2.Append(inscriereD.DetaliiDrept).Append('|'); builder2.Append(inscriereD.NumarCerere).Append('|'); builder2.Append(inscriereD.DataCerere.HasValue ? inscriereD.DataCerere.Value.ToString("yyyy-MM-dd") + "T00:00:00+02:00" : "").Append('|'); builder2.Append(inscriereD.Observatii).Append('|'); builder2.Append("poz#").Append(inscriereD.Pozitia).Append('|'); return(new List <string> { builder1.ToString(), builder2.ToString() }); }
public void Parse(IAdresaFaraLocalitate address, string field, IMatcher matcher, IMatchProcessor matchProcessor) { var classification = new List <Classification>() { new Classification() { Order = 0, Name = "root" }, new Classification() { Order = 1, Name = "Adresa" } }; var chunks = field.Split(',', ';'); chunks.ToList().ForEach(x => { var trimmed = x.Trim(); var split = trimmed.Split(' ', 2); if (split.Count() != 2) { split = trimmed.Split('.', 2); } if (split.Count() == 2) { var prefix = split[0].Trim('.'); split[1] = split[1].Trim(); var classificationResult = matcher.Match(classification, prefix, matchProcessor); if (classificationResult.Count > 0) { switch (classificationResult[0].Name) { case "TipStrada": address.TipStrada = classificationResult[1].Name; address.Strada = split[1]; break; case "Numar": address.Numar = split[1]; break; case "Bloc": address.Bloc = split[1]; break; case "Scara": address.Scara = split[1]; break; case "Etaj": address.Etaj = split[1]; break; case "Apt": address.Apt = split[1]; break; } } ; } }); }
public static void FromDTO(this Adresa adresa, OutputProprietarAdresa adresaDTO, IEnumerable <Judet> judeteAllInclussive, IAddressParser parser, IMatcher addressMatcher, IMatchProcessor matchProcessor) { var localitate = LocalitateFromDTO(adresaDTO.Judet, adresaDTO.Localitate, judeteAllInclussive); if (localitate != null) { adresa.SIRSUP = localitate.UAT.SIRUTA; adresa.SIRUTA = localitate.SIRUTA; } if (string.IsNullOrEmpty(adresaDTO.Adresa)) { adresa.AdresaNecunoscuta = true; } else { parser.Parse(adresa, adresaDTO.Adresa, addressMatcher, matchProcessor); } adresa.AdresaImport = adresaDTO.Adresa; adresa.JudetImport = adresaDTO.Judet; adresa.LocalitateImport = adresaDTO.Localitate; }