private void ProcessIncomeTable(Table table, PublicServant person) { var rows = table.Descendants <TableRow>().ToList().Skip(1); foreach (var row in rows) { var cells = row.Descendants <TableCell>().ToList(); var incomeType = cells[1].InnerText.OnlyRussianLowercase(); if (incomeType.StartsWith("декларированныйгодовойдоход")) { var incomeRaw = cells[2].InnerText.Trim(); if (incomeRaw == "") { continue; } person.DeclaredYearlyIncomeRaw = incomeRaw; person.DeclaredYearlyIncome = DataHelper.ParseDeclaredIncome(incomeRaw, false); } else if (DataHelper.IsRelativeInfo(incomeType)) { var incomeRaw = cells[2].InnerText.Trim(); var relationType = DataHelper.ParseRelationType(incomeType, false); var relative = new Relative(); relative.RelationType = relationType; relative.DeclaredYearlyIncomeRaw = incomeRaw; relative.DeclaredYearlyIncome = DataHelper.ParseDeclaredIncome(incomeRaw, false); person.AddRelative(relative); } } }
public void ShootPeople() { var publicServants = CorrupterManager.GetCorrupterByID((int)CorrupterType.PublicServant); if (publicServants.Count > 0) { PublicServant[] closestPublicServantArray = new PublicServant[1]; float closestDistance = Screen.width; float distance; foreach (var publicServant in publicServants) { distance = Vector3.Distance(this.transform.position, publicServant.transform.position); if (closestDistance > distance) { closestDistance = distance; closestPublicServantArray[0] = publicServant as PublicServant; } } SoundManager.inst.PlaySFXOneShot(6); if (closestPublicServantArray[0] != null) { closestPublicServantArray[0].Die(); } } }
private void ProcessPositionTable(Table table, PublicServant currentDeclarant) { var rows = table.Descendants <TableRow>().ToList(); var cells = rows[0].Descendants <TableCell>().ToList(); currentDeclarant.Occupation = cells[1].InnerText; }
private static JProperty GetVehicles(PublicServant servant) { var jVehicles = new JArray(); foreach (var vehicleInfo in servant.Vehicles) { JObject jVehicle = new JObject(); jVehicle.Add(new JProperty("text", vehicleInfo.Text)); jVehicle.Add(new JProperty("relative", null)); AddNotNullProp(jVehicle, "type_raw", vehicleInfo.Type); AddNotNullProp(jVehicle, "model", vehicleInfo.Model); jVehicles.Add(jVehicle); } foreach (var rel in servant.Relatives) { foreach (var vehicleInfo in rel.Vehicles) { JObject jVehicle = new JObject(); jVehicle.Add(new JProperty("text", vehicleInfo.Text)); jVehicle.Add(new JProperty("relative", GetRelationshipName(rel.RelationType))); AddNotNullProp(jVehicle, "relative_index", rel.PersonIndex); AddNotNullProp(jVehicle, "type_raw", vehicleInfo.Type); jVehicles.Add(jVehicle); } } var res = new JProperty("vehicles", jVehicles); return(res); }
public void ForgetThousandMultiplier(Declaration declaration) { // the incomes are so high, that we should not multiply incomes by 1000 although the // column title specify this multiplier List <Decimal> incomes = new List <Decimal>(); foreach (PublicServant servant in declaration.PublicServants) { foreach (DataRow row in servant.DateRows) { if (row.ColumnOrdering.ContainsField(DeclarationField.DeclaredYearlyIncomeThousands)) { PublicServant dummy = new PublicServant(); ParseIncome(row, dummy, true); if (dummy.DeclaredYearlyIncome != null) { incomes.Add(dummy.DeclaredYearlyIncome.Value); } } } } if (incomes.Count > 3) { incomes.Sort(); Decimal medianIncome = incomes[incomes.Count / 2]; if (medianIncome > 10000) { declaration.Properties.IgnoreThousandMultipler = true; } } }
private PublicServant CreatePublicServant(ColumnOrdering columnOrdering) { var currentDeclarant = new PublicServant(); currentDeclarant.NameRaw = GetPersonName(); currentDeclarant.Ordering = columnOrdering; currentDeclarant.Index = 1; return(currentDeclarant); }
private static JProperty GetPersonalData(PublicServant servant) { JObject personProp = new JObject(); personProp.Add(new JProperty("name_raw", servant.NameRaw)); personProp.Add(new JProperty("role", servant.Occupation)); AddNotNullProp(personProp, "department", servant.Department); return(new JProperty("person", personProp)); }
static void PrintPensionAmount(PublicServant servant) { if (servant is Firefighter) { Console.WriteLine("Pension of firefighter: " + servant.PensionAmount); } else if (servant is PoliceOfficer) { Console.WriteLine("Pension of officer: " + servant.PensionAmount); } }
private Relative GetPersonRelative(PublicServant person, RelationType relationType) { var foundRelatives = person.Relatives.Where(x => x.RelationType == relationType).ToList(); if (foundRelatives.Count != 0) { return(foundRelatives[0]); } var relative = new Relative(); relative.RelationType = relationType; person.AddRelative(relative); return(relative); }
private static JObject Serialize(PublicServant servant, DeclarationProperties declarationProperties, bool storeSheetNumbersInSections) { var jServ = new JObject( GetPersonalData(servant), GetYear(declarationProperties), GetIncomes(servant), GetRealEstateProperties(servant), GetVehicles(servant)); AddNotNullProp(jServ, "person_index", servant.Index); AddNotNullProp(jServ, "document_position", servant.document_position); if (storeSheetNumbersInSections) { AddNotNullProp(jServ, "sheet_number", servant.sheet_index); } return(jServ); }
public void CreateNewDeclarant(IAdapter adapter, DataRow row) { Logger.Debug("Declarant {0} at row {1}", row.PersonName, row.GetRowIndex()); CurrentDeclarant = new PublicServant(); InitDeclarantProperties(row); if (CurrentSection != null) { CurrentDeclarant.Department = CurrentSection.Name; } CurrentDeclarant.Index = row.GetPersonIndex(); CurrentPerson = CurrentDeclarant; CurrentPerson.document_position = row.NameDocPosition; CurrentPerson.sheet_index = _Declaration.Properties.SheetNumber; _Declaration.PublicServants.Add(CurrentDeclarant); }
private void ParseVehicleTable(Table table, PublicServant person) { var rows = table.Descendants <TableRow>().ToList().Skip(1); string currentVehicleType = ""; foreach (var row in rows) { var cells = row.Descendants <TableCell>().ToList(); var text = cells[0].InnerText; var gridSpan = cells[0].TableCellProperties.GetFirstChild <GridSpan>(); var mergedColsCount = (gridSpan == null) ? 1 : (int)gridSpan.Val; if (mergedColsCount > 1) { currentVehicleType = text; continue; } var textStr = cells[1].InnerText; if (textStr.OnlyRussianLowercase() == "неимеет") { continue; } var ownerStr = cells[2].InnerText; var owners = ownerStr.Split(",").ToList(); foreach (var owner in owners) { var vehicle = new Vehicle(textStr, currentVehicleType); var relationType = DataHelper.ParseRelationType(owner, false); if (DataHelper.IsRelativeInfo(owner)) { var relative = GetPersonRelative(person, relationType); relative.Vehicles.Add(vehicle); } else { person.Vehicles.Add(vehicle); } } } }
private static JProperty GetIncomes(PublicServant servant) { var jIncomes = new JArray(); if (servant.DeclaredYearlyIncome.HasValue) { JObject jIncomeProp = new JObject(); jIncomeProp.Add(new JProperty("size", servant.DeclaredYearlyIncome)); if (servant.DeclaredYearlyIncomeRaw.Length > 0) { jIncomeProp.Add(new JProperty("size_raw", servant.DeclaredYearlyIncomeRaw)); } jIncomeProp.Add(new JProperty("relative", null)); jIncomes.Add(jIncomeProp); } foreach (var relative in servant.Relatives) { var income = relative.DeclaredYearlyIncome; if (income.HasValue && income > 0.0m || (relative.DeclaredYearlyIncomeRaw.Length > 0)) { JObject jIncomeProp = new JObject(); jIncomeProp.Add(new JProperty("size", income)); if (relative.DeclaredYearlyIncomeRaw.Length > 0) { jIncomeProp.Add(new JProperty("size_raw", relative.DeclaredYearlyIncomeRaw)); } jIncomeProp.Add(new JProperty("relative", GetRelationshipName(relative.RelationType))); AddNotNullProp(jIncomeProp, "relative_index", relative.PersonIndex); jIncomes.Add(jIncomeProp); } } var res = new JProperty("incomes", jIncomes); return(res); }
private static JProperty GetRealEstateProperties(PublicServant servant) { var jRealEstate = new JArray(); foreach (var prop in servant.RealEstateProperties) { jRealEstate.Add(GetRealEstate(prop)); } foreach (var rel in servant.Relatives) { foreach (var prop in rel.RealEstateProperties) { jRealEstate.Add(GetRealEstate(prop, GetRelationshipName(rel.RelationType))); } } var res = new JProperty("real_estates", jRealEstate); return(res); }
private void ParseRealEstateTable(Table table, PublicServant person, string ownTypeByColumn) { var rows = table.Descendants <TableRow>().ToList().Skip(1); string currentRealEstateType = ""; foreach (var row in rows) { var cells = row.Descendants <TableCell>().ToList(); var gridSpan = cells[0].TableCellProperties.GetFirstChild <GridSpan>(); var mergedColsCount = (gridSpan == null) ? 1 : (int)gridSpan.Val; var text = cells[0].InnerText; if (mergedColsCount > 1) { currentRealEstateType = text; continue; } var textStr = cells[1].InnerText; if (textStr.OnlyRussianLowercase() == "неимеет") { continue; } var areaStr = cells[2].InnerText; var countryStr = cells[3].InnerText; var ownerStr = cells[4].InnerText; var owners = ownerStr.Split(",").ToList(); var shares = owners.Where(x => x.Contains(" доля") || x.Contains(" доли")).ToList(); owners = owners.Where(x => !(x.Contains(" доля") || x.Contains(" доли"))).ToList(); if (shares.Count != owners.Count && shares.Count > 0) { throw new SmartParserException("shares.Count != owners.Count in SovetFederaciiDocxScheme"); } if (shares.Count < owners.Count) { shares = Enumerable.Repeat <string>(null, owners.Count - shares.Count).ToList(); } var zippedOwners = owners.Zip(shares); foreach (var pair in zippedOwners) { var owner = pair.First; var share = pair.Second; var realEstateProperty = new RealEstateProperty { Text = textStr, square = DataHelper.ParseSquare(areaStr), type_raw = currentRealEstateType, square_raw = ParserBase.NormalizeRawDecimalForTest(areaStr), country_raw = DataHelper.ParseCountry(countryStr), own_type_by_column = ownTypeByColumn }; if (share != default) { realEstateProperty.own_type_raw = share; } var relationType = DataHelper.ParseRelationType(owner, false); if (DataHelper.IsRelativeInfo(owner)) { var relative = GetPersonRelative(person, relationType); relative.RealEstateProperties.Add(realEstateProperty); } else { person.RealEstateProperties.Add(realEstateProperty); } } } }
public void FinishDeclarant() { CurrentDeclarant = null; CurrentPerson = null; }