Подправил слой базы данных
This commit is contained in:
parent
a141bd778e
commit
ea3aa4bf96
@ -9,7 +9,7 @@ namespace ComputerShopDatabaseImplement
|
||||
{
|
||||
if (!OptionsBuilder.IsConfigured)
|
||||
{
|
||||
OptionsBuilder.UseNpgsql(@"Host=localhost;Database=ComputerShop;Username=postgres;Password=admin");
|
||||
OptionsBuilder.UseNpgsql(@"Host=localhost;Port=5000;Database=ComputerShop;Username=postgres;Password=admin");
|
||||
}
|
||||
|
||||
base.OnConfiguring(OptionsBuilder);
|
||||
|
@ -14,7 +14,6 @@ using System.Threading.Tasks;
|
||||
namespace ComputerShopDatabaseImplement.Implements
|
||||
{
|
||||
//!!!ПОДОБИЕ component
|
||||
//!!! ДОПИСАТЬ
|
||||
public class OrderStorage : IOrderStorage
|
||||
{
|
||||
//!!!ТУТ СВЯЗЬ С НЕСКОЛЬКИМИ СУЩНОСТЯМИ
|
||||
@ -32,10 +31,13 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
//!!!ПРОВЕРИТЬ
|
||||
//Учитывается id пользователя (везде получение списка только тех записей, что создал сам пользователь)
|
||||
public List<OrderViewModel> GetFilteredList(OrderSearchModel model)
|
||||
{
|
||||
using var context = new ComputerShopDatabase();
|
||||
//сортировка по дате создания
|
||||
if (model.DateFrom.HasValue && model.DateTo.HasValue)
|
||||
{
|
||||
return context.Orders
|
||||
@ -48,6 +50,7 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
//сортировка по статусу
|
||||
else if (model.Status.HasValue)
|
||||
{
|
||||
return context.Orders
|
||||
@ -71,7 +74,9 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
//!!!ПРОВЕРИТЬ
|
||||
//Поиск только по id, потому что другие поля не уникальные - нет смысла искать 1 элемент
|
||||
public OrderViewModel? GetElement(OrderSearchModel model)
|
||||
{
|
||||
if (!model.Id.HasValue)
|
||||
@ -113,6 +118,7 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
return order.GetViewModel;
|
||||
}
|
||||
|
||||
//!!!МБ ТУТ ДЕЛАТЬ .Include(x => x.Shipments) и .Include(x => x.Requests)
|
||||
public OrderViewModel? Delete(OrderBindingModel model)
|
||||
{
|
||||
using var context = new ComputerShopDatabase();
|
||||
|
@ -15,7 +15,7 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
//!!!ПОДОБИЕ textile
|
||||
public class RequestStorage : IRequestStorage
|
||||
{
|
||||
//!!!КАК ПРИСОЕДИНИТЬ СБОРКУ И НАДО ЛИ?
|
||||
//!!!Проверить, что правильно присоединяю сборку Assembly
|
||||
public List<RequestViewModel> GetFullList()
|
||||
{
|
||||
using var context = new ComputerShopDatabase();
|
||||
@ -28,14 +28,16 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
.ToList();
|
||||
}
|
||||
|
||||
//!!!тут добавил .Include(x => x.Assembly)
|
||||
//!!!Проверить, что правильно присоединяю сборку Assembly
|
||||
//Учитывается id пользователя (везде получение списка только тех записей, что создал сам пользователь)
|
||||
public List<RequestViewModel> GetFilteredList(RequestSearchModel model) {
|
||||
using var context = new ComputerShopDatabase();
|
||||
|
||||
//сортировка по дате создания заявки
|
||||
if (model.DateFrom.HasValue && model.DateTo.HasValue)
|
||||
{
|
||||
return context.Requests
|
||||
.Where(x => x.UserId == model.UserId && x.DateRequest >= model.DateFrom && x.DateRequest <= model.DateTo)
|
||||
.Where(x => (x.UserId == model.UserId) && (x.DateRequest >= model.DateFrom && x.DateRequest <= model.DateTo))
|
||||
.Include(x => x.Orders)
|
||||
.ThenInclude(x => x.Order)
|
||||
.Include(x => x.Assembly)
|
||||
@ -43,7 +45,7 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
.ToList();
|
||||
}
|
||||
|
||||
//Получение заявок по сборкам
|
||||
//сортировка по сборке (сборка может участвовать в нескольких заявках)
|
||||
else if (model.AssemblyId.HasValue)
|
||||
{
|
||||
return context.Requests
|
||||
@ -55,6 +57,7 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
.ToList();
|
||||
}
|
||||
|
||||
//сортировка по фио клиента, для которого создана заявка
|
||||
else if (!string.IsNullOrEmpty(model.ClientFIO))
|
||||
{
|
||||
return context.Requests
|
||||
@ -76,19 +79,21 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
.ToList();
|
||||
}
|
||||
|
||||
//!!!Проверить, что правильно присоединяю сборку Assembly
|
||||
//!!!мб тут надо будет в FirstOrDefault добавить другие параметры
|
||||
//Поиск только по id, потому что другие поля не уникальные - нет смысла искать 1 элемент
|
||||
public RequestViewModel? GetElement(RequestSearchModel model)
|
||||
{
|
||||
if (!model.Id.HasValue && !model.DateFrom.HasValue && !model.DateTo.HasValue && !model.AssemblyId.HasValue && string.IsNullOrEmpty(model.ClientFIO))
|
||||
if (!model.Id.HasValue)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
using var context = new ComputerShopDatabase();
|
||||
return context.Requests
|
||||
.Where(x => x.UserId == model.UserId)
|
||||
.Include(x => x.Orders)
|
||||
.ThenInclude(x => x.Order)
|
||||
.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))
|
||||
.Include(x => x.Assembly)
|
||||
.FirstOrDefault(x => x.Id == model.Id)
|
||||
?.GetViewModel;
|
||||
}
|
||||
|
||||
@ -102,10 +107,6 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
}
|
||||
context.Requests.Add(newRequest);
|
||||
context.SaveChanges();
|
||||
|
||||
//!!!мб тут вернуть другое значение
|
||||
//!!!МБ ТУТ НЕЛЬЗЯ WHERE первым
|
||||
//!!!мб тут и не надо where по пользователю (попробовать потом без него)
|
||||
return newRequest.GetViewModel;
|
||||
}
|
||||
|
||||
@ -133,7 +134,6 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
}
|
||||
}
|
||||
|
||||
//!!!мб возвращать не просто request.getviewmodel
|
||||
public RequestViewModel? Delete(RequestBindingModel model)
|
||||
{
|
||||
using var context = new ComputerShopDatabase();
|
||||
|
@ -29,42 +29,21 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
.ToList();
|
||||
}
|
||||
|
||||
//!!!МБ ТУТ ВСЁ ВРЕМЯ НАДО БУДЕТ УЧИТЫВАТЬ UserID
|
||||
//Учитывается id пользователя, создавшего заказ
|
||||
public List<ShipmentViewModel> GetFilteredList(ShipmentSearchModel model)
|
||||
{
|
||||
using var context = new ComputerShopDatabase();
|
||||
if (model.Id.HasValue && !model.DateFrom.HasValue && !model.DateTo.HasValue && string.IsNullOrEmpty(model.ProviderName))
|
||||
//сортировка по дате поставки
|
||||
if (model.DateFrom.HasValue && model.DateTo.HasValue)
|
||||
{
|
||||
return context.Shipments
|
||||
.Where(x => x.UserId == model.Id)
|
||||
.Where(x => (x.UserId == model.UserId) && (x.DateShipment >= model.DateFrom && x.DateShipment <= model.DateTo))
|
||||
.Include(x => x.Orders)
|
||||
.ThenInclude(x => x.Order)
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
//!!!мб добавить if (model.Id.HasValue)
|
||||
//!!!МБ WHERE НЕЛЬЗЯ СТАВИТЬ ПЕРВЫМ
|
||||
else if (model.DateFrom.HasValue && model.DateTo.HasValue)
|
||||
{
|
||||
return context.Shipments
|
||||
.Where(x => x.UserId == model.UserId)
|
||||
.Include(x => x.Orders)
|
||||
.ThenInclude(x => x.Order)
|
||||
.Where(x => x.DateShipment >= model.DateFrom && x.DateShipment <= model.DateTo)
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
//!!!ВРЯД ЛИ ПРАВИЛЬНО (мб не надо include user)
|
||||
//else if (model.UserId.HasValue)
|
||||
//{
|
||||
// return context.Shipments
|
||||
// .Include(x => x.User)
|
||||
// .Where(x => x.UserId == model.UserId)
|
||||
// .Include(x => x.Orders)
|
||||
// .ThenInclude(x => x.Order)
|
||||
// .Select (x => x.GetViewModel)
|
||||
// .ToList();
|
||||
//}
|
||||
//сортировка по поставщику
|
||||
else if (!string.IsNullOrEmpty(model.ProviderName))
|
||||
{
|
||||
return context.Shipments
|
||||
@ -74,22 +53,27 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
return new();
|
||||
//возвращение просто всех партий пользователя (замена GetFullList)
|
||||
return context.Shipments
|
||||
.Where(x => x.UserId == model.UserId)
|
||||
.Include(x => x.Orders)
|
||||
.ThenInclude(x => x.Order)
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
//Поиск только по id, потому что другие поля не уникальные - нет смысла искать 1 элемент
|
||||
public ShipmentViewModel? GetElement(ShipmentSearchModel model)
|
||||
{
|
||||
if (!model.Id.HasValue && !model.DateFrom.HasValue && !model.DateTo.HasValue && string.IsNullOrEmpty(model.ProviderName))
|
||||
if (!model.Id.HasValue)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
using var context = new ComputerShopDatabase();
|
||||
return context.Shipments
|
||||
.Where(x => x.UserId == model.UserId)
|
||||
.Include(x => x.Orders)
|
||||
.ThenInclude(x => x.Order)
|
||||
.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id)
|
||||
|| (!string.IsNullOrEmpty(model.ProviderName) && x.ProviderName == model.ProviderName))
|
||||
.FirstOrDefault(x => x.Id == model.Id)
|
||||
?.GetViewModel;
|
||||
}
|
||||
|
||||
@ -105,13 +89,7 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
context.Shipments.Add(newShipment);
|
||||
context.SaveChanges();
|
||||
|
||||
//!!!мб тут вернуть другое значение
|
||||
//!!!МБ ТУТ НЕЛЬЗЯ WHERE первым
|
||||
return context.Shipments
|
||||
.Where(x => x.UserId == model.UserId)
|
||||
.Include(x => x.Orders)
|
||||
.ThenInclude(x => x.Order)
|
||||
.FirstOrDefault(x => x.Id == newShipment.Id)?.GetViewModel;
|
||||
return newShipment.GetViewModel;
|
||||
}
|
||||
|
||||
//!!!МБ возвращать что-то другое
|
||||
|
@ -12,6 +12,7 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace ComputerShopDatabaseImplement.Implements
|
||||
{
|
||||
//!!!МБ У USER ХРАНИТЬ СПИСКИ ВСЕХ СОЗДАННЫХ СУШНОСТЕЙ И ТОГДА ПРИ СОЗДАНИИ, УДАЛЕНИИ СУЩНОСТЕЙ ЕЩЁ СОЗДАВАТЬ И УДАЛЯТЬ ИЗ СПИСКА У ПОЛЬЗОВАТЕЛЯ
|
||||
public class UserStorage : IUserStorage
|
||||
{
|
||||
public List<UserViewModel> GetFullList()
|
||||
@ -32,6 +33,7 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
}
|
||||
|
||||
//!!!ПРОВЕРИТЬ
|
||||
//id, почта и логин уникальны, можно получать по ним
|
||||
public UserViewModel? GetElement(UserSearchModel model)
|
||||
{
|
||||
if (string.IsNullOrEmpty(model.Login) && string.IsNullOrEmpty(model.Email) && !model.Id.HasValue)
|
||||
@ -79,15 +81,16 @@ namespace ComputerShopDatabaseImplement.Implements
|
||||
return user.GetViewModel;
|
||||
}
|
||||
|
||||
//!!!МБ И НЕ НУЖЕН
|
||||
public UserViewModel? Delete(UserBindingModel model)
|
||||
{
|
||||
using var context = new ComputerShopDatabase();
|
||||
var implementer = context.Users.FirstOrDefault(rec => rec.Id == model.Id);
|
||||
if (implementer != null)
|
||||
var user = context.Users.FirstOrDefault(rec => rec.Id == model.Id);
|
||||
if (user != null)
|
||||
{
|
||||
context.Users.Remove(implementer);
|
||||
context.Users.Remove(user);
|
||||
context.SaveChanges();
|
||||
return implementer.GetViewModel;
|
||||
return user.GetViewModel;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user