コード例 #1
0
        public void TestSameSequence()
        {
            var bank1 = new BankDepartment
            {
                Name    = "Bank1",
                Address = "Address1"
            };
            var bank2 = new BankDepartment
            {
                Name    = "Bank2",
                Address = "Address2"
            };
            var bank3 = new BankDepartment
            {
                Name    = "Bank1",
                Address = "Address1"
            };
            var sourceList = new List <BankDepartment>
            {
                bank3
            };
            var banks = new List <BankDepartment>
            {
                bank1,
                bank2
            };

            sourceList.IncludeSequence(banks);

            Assert.IsNotNull(sourceList);
            Assert.AreEqual(2, sourceList.Count);
        }
コード例 #2
0
        public void TestNullableNameSourceInput()
        {
            var bank1 = new BankDepartment
            {
                Address = null,
                Name    = "Name1"
            };
            var departments = new List <BankDepartment>
            {
                bank1,
                new BankDepartment
                {
                    Address = "Address2",
                    Name    = "Name2"
                }
            };

            var result = departments.FindDepartmentInSequence(new BankDepartment
            {
                Name    = "Name1",
                Address = "Address1"
            });

            Assert.IsNull(result);
        }
コード例 #3
0
        public void TestDifferenceSequence()
        {
            var bank1 = new BankDepartment
            {
                Name    = "Bank1",
                Address = "Address1"
            };
            var bank2 = new BankDepartment
            {
                Name    = "Bank2",
                Address = "Address2"
            };
            var bank3 = new BankDepartment
            {
                Name    = "bank3",
                Address = "Address3"
            };
            var sourceList = new List <BankDepartment>
            {
                bank3
            };
            var banks = new List <BankDepartment>
            {
                bank1,
                bank2
            };

            sourceList.IncludeSequence(banks);

            Assert.IsNotNull(sourceList);
            Assert.AreEqual(3, sourceList.Count);
            Assert.IsTrue(sourceList[0].EqualsByNameAndAddress(bank3));
            Assert.IsTrue(sourceList[1].EqualsByNameAndAddress(bank1));
            Assert.IsTrue(sourceList[2].EqualsByNameAndAddress(bank2));
        }
コード例 #4
0
        public void TestCorrectInput()
        {
            var bank1 = new BankDepartment
            {
                Address = "Address1",
                Name    = "Name1"
            };
            var departments = new List <BankDepartment>
            {
                bank1,
                new BankDepartment
                {
                    Address = "Address2",
                    Name    = "Name2"
                }
            };

            var result = departments.FindDepartmentInSequence(new BankDepartment
            {
                Name    = "Name1",
                Address = "Address1"
            });

            Assert.IsNotNull(result);
            Assert.AreEqual(result, bank1);
        }
コード例 #5
0
        public void TestSameSequenceWithDifferenceCurrencyRates()
        {
            var bank1 = new BankDepartment
            {
                Name               = "Bank1",
                Address            = "Address1",
                CurrencyRateByTime = new List <CurrencyRateByTime>
                {
                    new CurrencyRateByTime
                    {
                        Purchase = 1,
                        Sale     = 1
                    }
                }
            };
            var bank2 = new BankDepartment
            {
                Name               = "Bank2",
                Address            = "Address2",
                CurrencyRateByTime = new List <CurrencyRateByTime>
                {
                    new CurrencyRateByTime
                    {
                        Purchase = 2,
                        Sale     = 2
                    }
                }
            };
            var bank3 = new BankDepartment
            {
                Name               = "Bank1",
                Address            = "Address1",
                CurrencyRateByTime = new List <CurrencyRateByTime>
                {
                    new CurrencyRateByTime
                    {
                        Purchase = 3,
                        Sale     = 3
                    }
                }
            };
            var sourceList = new List <BankDepartment>
            {
                bank3
            };
            var banks = new List <BankDepartment>
            {
                bank1,
                bank2
            };

            sourceList.IncludeSequence(banks);

            Assert.IsNotNull(sourceList);
            Assert.AreEqual(2, sourceList.Count);
            Assert.AreEqual(2, bank3.CurrencyRateByTime.Count);
            Assert.AreEqual(1, bank2.CurrencyRateByTime.Count);
        }
コード例 #6
0
        private static List <CurrencyRateByTime> InitializeList()
        {
            var bank1 = new Bank
            {
                Name           = "Bank1",
                Id             = 1,
                BankDepartment = new List <BankDepartment>()
            };

            var city1 = new City
            {
                Id             = 1,
                Name           = "City1",
                BankDepartment = new List <BankDepartment>()
            };
            var bankDepartment = new BankDepartment
            {
                Address            = "BankDepartment 1 address",
                Id                 = 1,
                Name               = "BankDepartment1",
                Bank               = bank1,
                BankId             = bank1.Id,
                CurrencyRateByTime = new List <CurrencyRateByTime>(),
                CityId             = city1.Id,
                City               = city1
            };

            bank1.BankDepartment.Add(bankDepartment);
            city1.BankDepartment.Add(bankDepartment);

            var currency1 = new Currency
            {
                Id   = 1,
                Name = "Currency1",
                CurrencyRateByTime = new List <CurrencyRateByTime>()
            };

            var currencyRate1 = new CurrencyRateByTime
            {
                Id               = 1,
                BankDepartment   = bankDepartment,
                BankDepartmentId = bankDepartment.Id,
                Purchase         = 1,
                Sale             = 1.1,
                DateTime         = DateTime.UtcNow,
                CurrencyId       = currency1.Id,
                Currency         = currency1
            };

            currency1.CurrencyRateByTime.Add(currencyRate1);

            var currencyRates = new List <CurrencyRateByTime>
            {
                currencyRate1
            };

            return(currencyRates);
        }
コード例 #7
0
        public void TestEmptyInputEquals()
        {
            var department = new BankDepartment
            {
                Address = "Address1",
                Name    = "Name1"
            };

            var result = department.Equals(new BankDepartment());

            Assert.IsFalse(result);
        }
コード例 #8
0
        public void TestNullableInputEquals()
        {
            var department = new BankDepartment
            {
                Address = "Address1",
                Name    = "Name1"
            };

            var result = department.EqualsByNameAndAddress(null);

            Assert.IsFalse(result);
        }
コード例 #9
0
        public void TestNullableNameSourceInputEquals()
        {
            var bank1 = new BankDepartment
            {
                Address = null,
                Name    = "Name1"
            };

            var result = bank1.EqualsByNameAndAddress(new BankDepartment
            {
                Name    = "Name1",
                Address = "Address1"
            });

            Assert.IsFalse(result);
        }
コード例 #10
0
        public void TestCorrectInputEquals()
        {
            var bank1 = new BankDepartment
            {
                Address = "Address1",
                Name    = "Name1"
            };

            var result = bank1.EqualsByNameAndAddress(new BankDepartment
            {
                Name    = "Name1",
                Address = "Address1"
            });

            Assert.IsTrue(result);
        }
コード例 #11
0
        public static void addNewDepartment(string placeId)
        {
            BankDepartment newDepartment = findDepartment(placeId);

            //не добавляем отделения повторно
            if (newDepartment != null)
            {
                return;
            }

            PlaceInfo departmentInfo = DataSource.getPlaceInfo(placeId);

            if (departmentInfo.result == null)
            {
                return;
            }

            string bankName = getBankName(departmentInfo.result.name);

            //не добавляем в базу не известные нам банки
            if (bankName.Contains("unknown"))
            {
                return;
            }

            Bank bank = findBank(bankName);

            if (bank == null)
            {
                bank = addNewBank(bankName);
            }

            newDepartment = new BankDepartment()
            {
                GoogleId    = placeId,
                Name        = departmentInfo.result.name,
                LocationLat = departmentInfo.result.geometry.location.lat,
                LocationLng = departmentInfo.result.geometry.location.lng,
                Bank        = bank
            };


            db.Departments.Add(newDepartment);
            bank.Departments.Add(newDepartment);

            db.SaveChanges();
        }
コード例 #12
0
        public static void getData()
        {
            List <string> placesId = DataSource.getDefaultPlacesId();

            Console.WriteLine(placesId.Count + " banks found");

            //провереям есть ли такое отделение в нашей базе
            foreach (string placeId in placesId)
            {
                BankDepartment newDepartment = findDepartment(placeId);

                if (newDepartment == null)
                {
                    addNewDepartment(placeId);
                }
            }

            db.SaveChanges();
        }
コード例 #13
0
        public void TestEmptySourceSequence()
        {
            var bankDepartment1 = new BankDepartment()
            {
                Name = "BankDepartment1"
            };
            var bankDepartment2 = new BankDepartment()
            {
                Name = "BankDepartment2"
            };

            var sourceList      = new List <BankDepartment>();
            var bankDepartments = new List <BankDepartment>
            {
                bankDepartment1,
                bankDepartment2
            };

            sourceList.IncludeSequence(bankDepartments);

            Assert.IsNotNull(sourceList);
            Assert.AreEqual(2, sourceList.Count);
        }
コード例 #14
0
        public static bool EqualsByNameAndAddress(this BankDepartment firstDepartment, BankDepartment secondDepartment)
        {
            if (secondDepartment == null)
            {
                throw new NullReferenceException();
            }

            if (secondDepartment.Name == null && secondDepartment.Address == null)
            {
                return(firstDepartment.Name == null && firstDepartment.Address == null);
            }

            if (secondDepartment.Name == null)
            {
                return(firstDepartment.Name == null && firstDepartment.Address.Contains(secondDepartment.Address));
            }
            if (secondDepartment.Address == null)
            {
                return(firstDepartment.Address == secondDepartment.Address && firstDepartment.Name.Contains(secondDepartment.Name));
            }
            return
                ((firstDepartment.Name?.Contains(secondDepartment.Name) ?? false) && (firstDepartment.Address?.Contains(secondDepartment.Address) ?? false));
        }
コード例 #15
0
ファイル: Form1.cs プロジェクト: SunnyFrost47/CsvToDBParser
        // The logic and models depends on the file template
        private async void saveToDBAsync()
        {
            string templ = comboBox2?.SelectedItem?.ToString();

            switch (templ)
            {
            case "Процессы банка":
                await Task.Run(() =>
                {
                    List <string> bankDepartments = new List <string>();

                    // patterns for process code
                    string patternTheme   = @"^\w?[0-9]+$";                 // 2 hierarchy level
                    string patternAction  = @"^\w?[0-9]+\.[0-9]+$";         // 3 hierarchy level
                    string patternProcess = @"^\w?[0-9]+\.[0-9]+\.[0-9]+$"; // 4 hierarchy level
                    using (BankProcessContext bankProcessDB = new BankProcessContext())
                    {
                        // actual models object
                        // 1 hierarchy level
                        BankProcType bankProcType = null;
                        // 2 hierarchy level
                        BankTheme bankTheme = null;
                        // 3 hierarchy level
                        BankAction bankAction = null;
                        // 4 hierarchy level
                        BankProcess bankProcess = null;
                        // catalog
                        BankDepartment bankDepartment = null;
                        // file processing
                        foreach (BankProcCSV bankProc in filesLoaded[templ])
                        {
                            if (bankProc.Department == "")
                            {
                                if (bankProc.Id == "" &&
                                    bankProcessDB.BankProcTypes.FirstOrDefault(p => p.Name == bankProc.Name) == null)
                                {
                                    // Row to BankProcTypes (1 lvl)
                                    bankProcType = new BankProcType {
                                        Name = bankProc.Name
                                    };
                                    bankProcessDB.BankProcTypes.Add(bankProcType);
                                }
                                else
                                {
                                    if (Regex.IsMatch(bankProc.Id, patternTheme) &&
                                        bankProcessDB.BankThemes.FirstOrDefault(p => p.Code == bankProc.Id) == null)
                                    {
                                        // Row to BankThemes (2 lvl)
                                        bankTheme = new BankTheme {
                                            Name = bankProc.Name, Code = bankProc.Id, BankProcType = bankProcType
                                        };
                                        bankProcessDB.BankThemes.Add(bankTheme);
                                    }

                                    if (Regex.IsMatch(bankProc.Id, patternAction) &&
                                        bankProcessDB.BankActions.FirstOrDefault(p => p.Code == bankProc.Id) == null)
                                    {
                                        // Row to BankActions (3 lvl)
                                        bankAction = new BankAction {
                                            Name = bankProc.Name, Code = bankProc.Id, BankTheme = bankTheme
                                        };
                                        bankProcessDB.BankActions.Add(bankAction);
                                    }
                                }
                            }
                            else
                            {
                                if (bankProc.Id != "")
                                {
                                    if (Regex.IsMatch(bankProc.Id, patternProcess) &&
                                        bankProcessDB.BankProcesses.FirstOrDefault(p => p.Code == bankProc.Id) == null)
                                    {
                                        // Row to BankProcesses (4 lvl)
                                        if (!bankDepartments.Contains(bankProc.Department))
                                        {
                                            // Row to BankDepartments (catalog)
                                            bankDepartments.Add(bankProc.Department);
                                            bankDepartment = new BankDepartment {
                                                Name = bankProc.Department
                                            };
                                            bankProcessDB.BankDepartments.Add(bankDepartment);
                                        }
                                        else
                                        {
                                            bankDepartment = bankProcessDB.BankDepartments.FirstOrDefault(d => d.Name == bankProc.Department);
                                        }

                                        bankProcess = new BankProcess {
                                            Name = bankProc.Name, Code = bankProc.Id, BankAction = bankAction, BankDepartment = bankDepartment
                                        };
                                        bankProcessDB.BankProcesses.Add(bankProcess);
                                    }
                                }
                                else
                                {
                                    // Logic for empty Rows from file
                                }
                            }
                            bankProcessDB.SaveChanges();
                        }
                    }
                });

                comboBox1.Items.AddRange(new string[] { "BankProcTypes", "BankThemes", "BankActions", "BankProcesses", "BankDepartments" });
                comboBox1.SelectedItem = "BankProcesses";
                label6.Text            = "Файл сохранен в БД";
                break;

            default:
                label6.Text = "Укажите шаблон";
                break;
            }
        }
コード例 #16
0
 public static BankDepartment FindDepartmentInSequence(this IEnumerable <BankDepartment> departments, BankDepartment department)
 {
     if (department == null)
     {
         throw new NullReferenceException();
     }
     return(departments.FirstOrDefault(x => x.EqualsByNameAndAddress(department)));
 }