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);
                }
            }
        }
Beispiel #2
0
    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);
        }
Beispiel #5
0
        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));
        }
Beispiel #8
0
 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);
        }
Beispiel #11
0
            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);
                    }
                }
            }
        }
Beispiel #16
0
 public void FinishDeclarant()
 {
     CurrentDeclarant = null;
     CurrentPerson    = null;
 }