/// <summary> /// Сгенерировать дату открытия счета. /// Она должна быть после рождения клиента и даты создания банка /// </summary> /// <returns></returns> private static DateTime GenAccOpeningDate(IClientDTO c) { if ((DateTime)c.CreationDate < GoodBankTime.BankFoundationDay) { return(GenDate(GoodBankTime.BankFoundationDay, GoodBankTime.Today)); } return(GenDate((DateTime)c.CreationDate, GoodBankTime.Today)); }
private static void GenerateAccountsForClient(IClientDTO client) { return; GenerateSavingAccounts(client, r.Next(0, 6)); GenerateDeposits(client, r.Next(0, 6)); GenerateCredits(client, r.Next(0, 6)); }
private static void GenerateSavingAccounts(IClientDTO c, int num) { for (int i = 0; i < num; i++) { BA.Accounts.GenerateAccount( new AccountDTO(c.ClientType, c.ID, AccountType.Saving, r.Next(0, 100) * 1000, // сумма на текущем счеты 0, // процент по вкладу false, 0, "не используется", GenAccOpeningDate(c), true, true, RecalcPeriod.NoRecalc, 0, 0)); } }
public void InsertClient(IClientDTO c) { DataRow newRow = ds.Tables["Clients"].NewRow(); newRow["ID"] = c.ID; // Уникальный ID клиента newRow["Telephone"] = c.Telephone; newRow["Email"] = c.Email; newRow["Address"] = c.Address; ds.Tables["Clients"].Rows.Add(newRow); DataRow newClientTypeRow; switch (c.ClientType) { case ClientType.VIP: newClientTypeRow = ds.Tables["VIPclients"].NewRow(); newClientTypeRow["id"] = c.ID; // Foreign Key для связи с таблицей Clients newClientTypeRow["FirstName"] = c.FirstName; newClientTypeRow["MiddleName"] = c.MiddleName; newClientTypeRow["LastName"] = c.LastName; newClientTypeRow["PassportNumber"] = c.PassportOrTIN; newClientTypeRow["BirthDate"] = c.CreationDate; ds.Tables["VIPclients"].Rows.Add(newClientTypeRow); break; case ClientType.Simple: newClientTypeRow = ds.Tables["SIMclients"].NewRow(); newClientTypeRow["id"] = c.ID; // Foreign Key для связи с таблицей Clients newClientTypeRow["FirstName"] = c.FirstName; newClientTypeRow["MiddleName"] = c.MiddleName; newClientTypeRow["LastName"] = c.LastName; newClientTypeRow["PassportNumber"] = c.PassportOrTIN; newClientTypeRow["BirthDate"] = c.CreationDate; ds.Tables["SIMclients"].Rows.Add(newClientTypeRow); break; case ClientType.Organization: newClientTypeRow = ds.Tables["ORGclients"].NewRow(); newClientTypeRow["id"] = c.ID; // Foreign Key для связи с таблицей Clients newClientTypeRow["OrgName"] = c.MainName; newClientTypeRow["DirectorFirstName"] = c.FirstName; newClientTypeRow["DirectorMiddleName"] = c.MiddleName; newClientTypeRow["DirectorLastName"] = c.LastName; newClientTypeRow["TIN"] = c.PassportOrTIN; newClientTypeRow["RegistrationDate"] = c.CreationDate; ds.Tables["ORGclients"].Rows.Add(newClientTypeRow); break; } }
private static void GenerateCredits(IClientDTO c, int num) { for (int i = 0; i < num; i++) { DateTime openingDate = GenAccOpeningDate(c); int monthsElapsed; int duration = GenDepositCreditDuration(openingDate, out monthsElapsed); int amount = duration * 10_000 * r.Next(1, 4); double interest = 0; switch (c.ClientType) { case ClientType.VIP: interest = ((double)r.Next(7, 13)) / 100; break; case ClientType.Simple: interest = ((double)r.Next(12, 21)) / 100; break; case ClientType.Organization: interest = ((double)r.Next(15, 26)) / 100; break; } BA.Accounts.GenerateAccount( new AccountDTO(c.ClientType, c.ID, AccountType.Credit, -amount, // долг interest, // процент true, // капитализация 0, // на собственный "не используется", openingDate, true, // Можем поплнять или нет false, // Можем частично снимать или нет RecalcPeriod.Monthly, // Периодичность пересчета duration, // Количество месяцев вклада monthsElapsed)); // Сколько месяцев уже прошло до настоящего момента } }
private static void GenerateDeposits(IClientDTO c, int num) { for (int i = 0; i < num; i++) { DateTime openingDate = GenAccOpeningDate(c); int monthsElapsed; int duration = GenDepositCreditDuration(openingDate, out monthsElapsed); double interest = 0; switch (c.ClientType) { case ClientType.VIP: interest = ((double)r.Next(11, 21)) / 100; break; case ClientType.Simple: interest = ((double)r.Next(5, 11)) / 100; break; case ClientType.Organization: interest = ((double)r.Next(7, 16)) / 100; break; } BA.Accounts.GenerateAccount( new AccountDTO(c.ClientType, c.ID, AccountType.Deposit, r.Next(100, 300) * 10000, // сумма на счету. У ВИП > 1 mln interest, // процент TrueFalse(), // капитализация 0, // У нас ещё нет счета для перечисления ... "внутренний счет", openingDate, TrueFalse(), // Можем поплнять или нет TrueFalse(), // Можем частично снимать или нет GenDepositRecalc(), // Периодичность пересчета duration, // Количество месяцев вклада monthsElapsed)); // Сколько месяцев уже прошло до настоящего момента } }
public IClientDTO AddClient(IClientDTO client) { Client newClient = null; switch (client.ClientType) { case ClientType.VIP: newClient = new ClientVIP(client); break; case ClientType.Simple: newClient = new СlientSIM(client); break; case ClientType.Organization: newClient = new СlientORG(client); break; } IClientDTO nc = new ClientDTO(newClient); InsertClient(nc); return(nc); }
public void UpdateClient(IClientDTO updatedClient) { }