diff --git a/Bank/BankContracts/BindingModels/CreditProgramBindingModel.cs b/Bank/BankContracts/BindingModels/CreditProgramBindingModel.cs index b06cdd7..5cf62cf 100644 --- a/Bank/BankContracts/BindingModels/CreditProgramBindingModel.cs +++ b/Bank/BankContracts/BindingModels/CreditProgramBindingModel.cs @@ -16,5 +16,6 @@ namespace BankContracts.BindingModels public Dictionary CreditProgramCurrencies { get; set; } = new(); public int Id { get; set; } + public int BankOperatorId { get; set; } } } diff --git a/Bank/BankContracts/BindingModels/CurrencyBindingModel.cs b/Bank/BankContracts/BindingModels/CurrencyBindingModel.cs index 544c68a..9b82541 100644 --- a/Bank/BankContracts/BindingModels/CurrencyBindingModel.cs +++ b/Bank/BankContracts/BindingModels/CurrencyBindingModel.cs @@ -11,5 +11,6 @@ namespace BankContracts.BindingModels { public string Name { get; set; } = String.Empty; public int Id { get; set; } + public int BankOperatorId { get; set; } } } diff --git a/Bank/BankContracts/SearchModels/CreditProgramSearchModel.cs b/Bank/BankContracts/SearchModels/CreditProgramSearchModel.cs index 3791aeb..fa5b1f4 100644 --- a/Bank/BankContracts/SearchModels/CreditProgramSearchModel.cs +++ b/Bank/BankContracts/SearchModels/CreditProgramSearchModel.cs @@ -9,5 +9,6 @@ namespace BankContracts.SearchModels public class CreditProgramSearchModel { public int? Id { get; set; } + public int? BankOperatorId { get; set; } } } diff --git a/Bank/BankContracts/SearchModels/CurrencyPurchaseSearchModel.cs b/Bank/BankContracts/SearchModels/CurrencyPurchaseSearchModel.cs index 2b5274c..14b8fee 100644 --- a/Bank/BankContracts/SearchModels/CurrencyPurchaseSearchModel.cs +++ b/Bank/BankContracts/SearchModels/CurrencyPurchaseSearchModel.cs @@ -9,5 +9,6 @@ namespace BankContracts.SearchModels public class CurrencyPurchaseSearchModel { public int? Id { get; set; } + public int? BankOperatorId { get; set; } } } diff --git a/Bank/BankContracts/SearchModels/CurrencySearchModel.cs b/Bank/BankContracts/SearchModels/CurrencySearchModel.cs index bd12811..028344e 100644 --- a/Bank/BankContracts/SearchModels/CurrencySearchModel.cs +++ b/Bank/BankContracts/SearchModels/CurrencySearchModel.cs @@ -9,5 +9,6 @@ namespace BankContracts.SearchModels public class CurrencySearchModel { public int? Id { get; set; } + public int? BankOperatorId { get; set; } } } diff --git a/Bank/BankContracts/ViewModels/CreditProgramViewModel.cs b/Bank/BankContracts/ViewModels/CreditProgramViewModel.cs index d858db5..fb9cc67 100644 --- a/Bank/BankContracts/ViewModels/CreditProgramViewModel.cs +++ b/Bank/BankContracts/ViewModels/CreditProgramViewModel.cs @@ -11,11 +11,14 @@ namespace BankContracts.ViewModels public class CreditProgramViewModel : ICreditProgramModel { [DisplayName("Название кредитной программы")] - public string Name { get; set; } = String.Empty; + public string Name { get; set; } = string.Empty; [DisplayName("Процент кредитования")] public float Percent { get; set; } public Dictionary CreditProgramCurrencies { get; set; } = new(); [DisplayName("Номер программы")] public int Id { get; set; } + public int BankOperatorId { get; set; } + [DisplayName("ФИО оператора")] + public string BankOperatorFIO { get; set; } = string.Empty; } } diff --git a/Bank/BankContracts/ViewModels/CurrencyPurchaseViewModel.cs b/Bank/BankContracts/ViewModels/CurrencyPurchaseViewModel.cs index eac2c69..2692a51 100644 --- a/Bank/BankContracts/ViewModels/CurrencyPurchaseViewModel.cs +++ b/Bank/BankContracts/ViewModels/CurrencyPurchaseViewModel.cs @@ -16,11 +16,12 @@ namespace BankContracts.ViewModels public DateTime PurchaseDate { get; set; } = DateTime.Now.Date; public int BankOperatorId { get; set; } [DisplayName("ФИО оператора")] - public string BankOperatorName { get; set; } + public string BankOperatorName { get; set; } = string.Empty; public int CurrencyId { get; set; } [DisplayName("Название валюты")] - public string CurrencyName { get; set; } + public string CurrencyName { get; set; } = string.Empty; [DisplayName("Номер покупки")] public int Id { get; set; } + } } diff --git a/Bank/BankContracts/ViewModels/CurrencyViewModel.cs b/Bank/BankContracts/ViewModels/CurrencyViewModel.cs index dc94e9d..739f3c0 100644 --- a/Bank/BankContracts/ViewModels/CurrencyViewModel.cs +++ b/Bank/BankContracts/ViewModels/CurrencyViewModel.cs @@ -11,8 +11,11 @@ namespace BankContracts.ViewModels public class CurrencyViewModel : ICurrencyModel { [DisplayName("Название валюты")] - public string Name { get; set; } = String.Empty; + public string Name { get; set; } = string.Empty; [DisplayName("Номер валюты")] public int Id { get; set; } + public int BankOperatorId { get; set; } + [DisplayName("ФИО оператора")] + public string BankOperatorName { get; set; } = string.Empty; } } diff --git a/Bank/BankDataModels/Models/ICreditProgramModel.cs b/Bank/BankDataModels/Models/ICreditProgramModel.cs index feca505..9c49ef5 100644 --- a/Bank/BankDataModels/Models/ICreditProgramModel.cs +++ b/Bank/BankDataModels/Models/ICreditProgramModel.cs @@ -10,6 +10,7 @@ namespace BankDataModels.Models { string Name { get;} float Percent { get;} + int BankOperatorId { get;} Dictionary CreditProgramCurrencies { get; } } } diff --git a/Bank/BankDataModels/Models/ICurrencyModel.cs b/Bank/BankDataModels/Models/ICurrencyModel.cs index fe76b06..3bc14b8 100644 --- a/Bank/BankDataModels/Models/ICurrencyModel.cs +++ b/Bank/BankDataModels/Models/ICurrencyModel.cs @@ -9,5 +9,6 @@ namespace BankDataModels.Models public interface ICurrencyModel : IId { string Name { get; } + int BankOperatorId { get; } } } diff --git a/Bank/BankDatabaseImplement/Implements/CreditProgramStorage.cs b/Bank/BankDatabaseImplement/Implements/CreditProgramStorage.cs index 16d2f6b..5ea918d 100644 --- a/Bank/BankDatabaseImplement/Implements/CreditProgramStorage.cs +++ b/Bank/BankDatabaseImplement/Implements/CreditProgramStorage.cs @@ -3,6 +3,7 @@ using BankContracts.SearchModels; using BankContracts.StoragesContracts; using BankContracts.ViewModels; using BankDatabaseImplement.Models; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; @@ -33,28 +34,39 @@ namespace BankDatabaseImplement.Implements return null; } using var context = new BankDatabase(); - return context.CreditPrograms + return context.CreditPrograms.Include(x => x.BankOperator) .FirstOrDefault(x => x.Id == model.Id) ?.GetViewModel; } public List GetFilteredList(CreditProgramSearchModel model) { - if (!model.Id.HasValue) + if (!model.Id.HasValue && !model.BankOperatorId.HasValue) { return new(); } - using var context = new BankDatabase(); - return context.CreditPrograms - .Where(x => x.Id == model.Id) - .Select(x => x.GetViewModel) - .ToList(); + if (model.BankOperatorId.HasValue) + { + using var context = new BankDatabase(); + return context.CreditPrograms.Include(x => x.BankOperator) + .Where(x => x.BankOperatorId == model.BankOperatorId) + .Select(x => x.GetViewModel) + .ToList(); + } + else + { + using var context = new BankDatabase(); + return context.CreditPrograms.Include(x => x.BankOperator) + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } } public List GetFullList() { using var context = new BankDatabase(); - return context.CreditPrograms + return context.CreditPrograms.Include(x => x.BankOperator) .Select(x => x.GetViewModel) .ToList(); } diff --git a/Bank/BankDatabaseImplement/Implements/CurrencyStorage.cs b/Bank/BankDatabaseImplement/Implements/CurrencyStorage.cs index 6676d0d..ca97ac9 100644 --- a/Bank/BankDatabaseImplement/Implements/CurrencyStorage.cs +++ b/Bank/BankDatabaseImplement/Implements/CurrencyStorage.cs @@ -3,6 +3,7 @@ using BankContracts.SearchModels; using BankContracts.StoragesContracts; using BankContracts.ViewModels; using BankDatabaseImplement.Models; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; @@ -33,28 +34,39 @@ namespace BankDatabaseImplement.Implements return null; } using var context = new BankDatabase(); - return context.Currencies + return context.Currencies.Include(x => x.BankOperator) .FirstOrDefault(x => x.Id == model.Id) ?.GetViewModel; } public List GetFilteredList(CurrencySearchModel model) { - if (!model.Id.HasValue) + if (!model.Id.HasValue && !model.BankOperatorId.HasValue) { return new(); } - using var context = new BankDatabase(); - return context.Currencies - .Where(x => x.Id == model.Id) - .Select(x => x.GetViewModel) - .ToList(); + if (model.BankOperatorId.HasValue) + { + using var context = new BankDatabase(); + return context.Currencies.Include(x => x.BankOperator) + .Where(x => x.BankOperatorId == model.BankOperatorId) + .Select(x => x.GetViewModel) + .ToList(); + } + else + { + using var context = new BankDatabase(); + return context.Currencies.Include(x => x.BankOperator) + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } } public List GetFullList() { using var context = new BankDatabase(); - return context.Currencies + return context.Currencies.Include(x => x.BankOperator) .Select(x => x.GetViewModel) .ToList(); } diff --git a/Bank/BankDatabaseImplement/Models/CreditProgram.cs b/Bank/BankDatabaseImplement/Models/CreditProgram.cs index 90a1888..39ed948 100644 --- a/Bank/BankDatabaseImplement/Models/CreditProgram.cs +++ b/Bank/BankDatabaseImplement/Models/CreditProgram.cs @@ -18,6 +18,8 @@ namespace BankDatabaseImplement.Models public float Percent { get; set; } [Required] public string Name { get; set; } + public int BankOperatorId { get; set; } + public virtual BankOperator BankOperator { get; set; } = new(); private Dictionary? _creditProgramCurrencies = null; [NotMapped] @@ -49,7 +51,9 @@ namespace BankDatabaseImplement.Models Currencies = model.CreditProgramCurrencies.Select(x => new CreditProgramCurrency { Currency = context.Currencies.First(y => y.Id == x.Key) - }).ToList() + }).ToList(), + BankOperatorId = model.BankOperatorId, + BankOperator = context.BankOperators.First(x => x.Id == model.BankOperatorId), }; } public void Update(CreditProgramBindingModel? model) @@ -73,7 +77,7 @@ namespace BankDatabaseImplement.Models var creditProgramsCurrencies = context.CreditProgramCurrencies.Where(rec => rec.CreditProgramId == model.Id).ToList(); if (creditProgramsCurrencies != null && creditProgramsCurrencies.Count > 0) { - context.CreditProgramCurrencies.RemoveRange(creditProgramsCurrencies.Where(rec => !model.CreditProgramCurrencies.ContainsKey(rec.DealId))); + context.CreditProgramCurrencies.RemoveRange(creditProgramsCurrencies.Where(rec => !model.CreditProgramCurrencies.ContainsKey(rec.CreditProgramId))); context.SaveChanges(); var creditProgram = context.CreditPrograms.First(x => x.Id == Id); foreach (var updateCurrency in creditProgramsCurrencies) diff --git a/Bank/BankDatabaseImplement/Models/Currency.cs b/Bank/BankDatabaseImplement/Models/Currency.cs index 05abeae..9f8b501 100644 --- a/Bank/BankDatabaseImplement/Models/Currency.cs +++ b/Bank/BankDatabaseImplement/Models/Currency.cs @@ -16,6 +16,8 @@ namespace BankDatabaseImplement.Models public int Id { get; set; } [Required] public string Name { get; set; } + public int BankOperatorId { get; set; } + public virtual BankOperator BankOperator { get; set; } = new(); public static Currency? Create(BankDatabase context, CurrencyBindingModel model) { if (model == null) @@ -26,7 +28,10 @@ namespace BankDatabaseImplement.Models { Id = model.Id, Name = model.Name, + BankOperatorId = model.BankOperatorId, + BankOperator = context.BankOperators.First(x => x.Id == model.BankOperatorId), }; + } public static Currency? Create(BankDatabase context, CurrencyViewModel model) { @@ -34,6 +39,8 @@ namespace BankDatabaseImplement.Models { Id = model.Id, Name = model.Name, + BankOperatorId = model.BankOperatorId, + BankOperator = context.BankOperators.First(x => x.Id == model.BankOperatorId), }; }