PIbd-22. Stroev V.M. Lab Work 06 #6

Closed
StroevVladimir wants to merge 6 commits from Lab6 into Lab5
11 changed files with 149 additions and 37 deletions
Showing only changes of commit 123cdecc96 - Show all commits

View File

@ -74,25 +74,38 @@ namespace PlumbingRepairBusinessLogic.BusinessLogics
} }
public bool StatusUpdate(OrderBindingModel model, OrderStatus newStatus) public bool StatusUpdate(OrderBindingModel model, OrderStatus newStatus)
{ {
CheckModel(model); var viewModel = _orderStorage.GetElement(new OrderSearchModel { Id = model.Id });
if (viewModel == null)
{
throw new ArgumentNullException(nameof(model));
}
if (model.Status + 1 != newStatus) if (model.Status + 1 != newStatus)
{ {
_logger.LogWarning("Status update to " + newStatus.ToString() + " operation failed. Order status incorrect."); _logger.LogWarning("Status update to " + newStatus.ToString() + " operation failed. Order status incorrect.");
return false; return false;
} }
model.Status = newStatus; model.DateCreate = viewModel.DateCreate;
model.Sum = viewModel.Sum;
if (model.Status == OrderStatus.Выдан) model.Count = viewModel.Count;
model.DateImplement = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc); model.DateImplement = viewModel.DateImplement;
model.WorkId = viewModel.WorkId;
if (viewModel.ImplementerId.HasValue)
{
model.ImplementerId = viewModel.ImplementerId;
}
if (model.Status == OrderStatus.Готов) model.DateImplement = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc);
else
{
model.DateImplement = viewModel.DateImplement;
}
CheckModel(model);
if (_orderStorage.Update(model) == null) if (_orderStorage.Update(model) == null)
{ {
model.Status--; model.Status--;
_logger.LogWarning("Update operation failed"); _logger.LogWarning("Update operation failed");
return false; return false;
} }
return true; return true;
} }
public bool TakeOrderInWork(OrderBindingModel model) public bool TakeOrderInWork(OrderBindingModel model)
@ -102,12 +115,12 @@ namespace PlumbingRepairBusinessLogic.BusinessLogics
public bool DeliveryOrder(OrderBindingModel model) public bool DeliveryOrder(OrderBindingModel model)
{ {
return StatusUpdate(model, OrderStatus.Готов); return StatusUpdate(model, OrderStatus.Выдан);
} }
public bool FinishOrder(OrderBindingModel model) public bool FinishOrder(OrderBindingModel model)
{ {
return StatusUpdate(model, OrderStatus.Выдан); return StatusUpdate(model, OrderStatus.Готов);
} }
private void CheckModel(OrderBindingModel model, bool withParams = true) private void CheckModel(OrderBindingModel model, bool withParams = true)

View File

@ -1,4 +1,5 @@
using System; using PlumbingRepairDataModels.Enums;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@ -12,5 +13,7 @@ namespace PlumbingRepairContracts.SearchModels
public int? ClientId { get; set; } public int? ClientId { get; set; }
public DateTime? DateFrom { get; set; } public DateTime? DateFrom { get; set; }
public DateTime? DateTo { get; set; } public DateTime? DateTo { get; set; }
public int? ImplementerId { get; set; }
public OrderStatus? Status { get; set; }
} }
} }

View File

@ -20,6 +20,9 @@ namespace PlumbingRepairContracts.ViewModels
public int ClientId { get; set; } public int ClientId { get; set; }
[DisplayName("ФИО клиента")] [DisplayName("ФИО клиента")]
public string ClientFIO { get; set; } = string.Empty; public string ClientFIO { get; set; } = string.Empty;
public int? ImplementerId { get; set; }
[DisplayName("Исполнитель")]
public string ImplementerFIO { get; set; } = string.Empty;
[DisplayName("Количество")] [DisplayName("Количество")]
public int Count { get; set; } public int Count { get; set; }
[DisplayName("Сумма")] [DisplayName("Сумма")]

View File

@ -20,6 +20,7 @@ namespace PlumbingRepairDataBaseImplement.Implements
return context.Orders.Include(x => x.Work) return context.Orders.Include(x => x.Work)
.Include(x => x.Client) .Include(x => x.Client)
.Include(x => x.Implementer)
.Select(x => x.GetViewModel) .Select(x => x.GetViewModel)
.ToList(); .ToList();
} }
@ -32,6 +33,7 @@ namespace PlumbingRepairDataBaseImplement.Implements
return context.Orders return context.Orders
.Include(x => x.Work) .Include(x => x.Work)
.Include(x => x.Client) .Include(x => x.Client)
.Include(x => x.Implementer)
.Where(x => x.Id == model.Id) .Where(x => x.Id == model.Id)
.Select(x => x.GetViewModel) .Select(x => x.GetViewModel)
.ToList(); .ToList();
@ -41,6 +43,7 @@ namespace PlumbingRepairDataBaseImplement.Implements
return context.Orders return context.Orders
.Include(x => x.Work) .Include(x => x.Work)
.Include(x => x.Client) .Include(x => x.Client)
.Include(x => x.Implementer)
.Where(x => x.DateCreate >= model.DateFrom && x.DateCreate <= model.DateTo) .Where(x => x.DateCreate >= model.DateFrom && x.DateCreate <= model.DateTo)
.Select(x => x.GetViewModel) .Select(x => x.GetViewModel)
.ToList(); .ToList();
@ -50,12 +53,28 @@ namespace PlumbingRepairDataBaseImplement.Implements
return context.Orders return context.Orders
.Include(x => x.Work) .Include(x => x.Work)
.Include(x => x.Client) .Include(x => x.Client)
.Include(x => x.Implementer)
.Where(x => x.ClientId == model.ClientId) .Where(x => x.ClientId == model.ClientId)
.Select(x => x.GetViewModel) .Select(x => x.GetViewModel)
.ToList(); .ToList();
} }
else if (model.ImplementerId.HasValue)
return new(); {
return context.Orders
.Include(x => x.Work)
.Include(x => x.Client)
.Include(x => x.Implementer)
.Where(x => x.ImplementerId == model.ImplementerId)
.Select(x => x.GetViewModel)
.ToList();
}
return context.Orders
.Include(x => x.Work)
.Include(x => x.Client)
.Include(x => x.Implementer)
.Where(x => model.Status == x.Status)
.Select(x => x.GetViewModel)
.ToList();
} }
public OrderViewModel? GetElement(OrderSearchModel model) public OrderViewModel? GetElement(OrderSearchModel model)
@ -70,6 +89,7 @@ namespace PlumbingRepairDataBaseImplement.Implements
return context.Orders return context.Orders
.Include(x => x.Work) .Include(x => x.Work)
.Include(x => x.Client) .Include(x => x.Client)
.Include(x => x.Implementer)
.FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id) .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id)
?.GetViewModel; ?.GetViewModel;
} }
@ -91,6 +111,7 @@ namespace PlumbingRepairDataBaseImplement.Implements
return context.Orders return context.Orders
.Include(x => x.Work) .Include(x => x.Work)
.Include(x => x.Client) .Include(x => x.Client)
.Include(x => x.Implementer)
.FirstOrDefault(x => x.Id == newOrder.Id) .FirstOrDefault(x => x.Id == newOrder.Id)
?.GetViewModel; ?.GetViewModel;
} }
@ -112,6 +133,7 @@ namespace PlumbingRepairDataBaseImplement.Implements
return context.Orders return context.Orders
.Include(x => x.Work) .Include(x => x.Work)
.Include(x => x.Client) .Include(x => x.Client)
.Include(x => x.Implementer)
.FirstOrDefault(x => x.Id == model.Id) .FirstOrDefault(x => x.Id == model.Id)
?.GetViewModel; ?.GetViewModel;
} }
@ -127,6 +149,7 @@ namespace PlumbingRepairDataBaseImplement.Implements
var deletedElement = context.Orders var deletedElement = context.Orders
.Include(x => x.Work) .Include(x => x.Work)
.Include(x => x.Client) .Include(x => x.Client)
.Include(x => x.Implementer)
.FirstOrDefault(x => x.Id == model.Id) .FirstOrDefault(x => x.Id == model.Id)
?.GetViewModel; ?.GetViewModel;
context.Orders.Remove(element); context.Orders.Remove(element);

View File

@ -17,6 +17,7 @@ namespace PlumbingRepairDataBaseImplement.Models
public int WorkId { get; private set; } public int WorkId { get; private set; }
public int ClientId { get; private set; } public int ClientId { get; private set; }
public int? ImplementerId { get; set; }
public string WorkName { get; private set; } = string.Empty; public string WorkName { get; private set; } = string.Empty;
@ -36,6 +37,7 @@ namespace PlumbingRepairDataBaseImplement.Models
public virtual Work Work { get; set; } public virtual Work Work { get; set; }
public virtual Client Client { get; set; } public virtual Client Client { get; set; }
public virtual Implementer? Implementer { get; set; }
public static Order? Create(OrderBindingModel? model) public static Order? Create(OrderBindingModel? model)
{ {
@ -50,6 +52,7 @@ namespace PlumbingRepairDataBaseImplement.Models
WorkId = model.WorkId, WorkId = model.WorkId,
WorkName = model.WorkName, WorkName = model.WorkName,
ClientId = model.ClientId, ClientId = model.ClientId,
ImplementerId = model.ImplementerId,
Count = model.Count, Count = model.Count,
Sum = model.Sum, Sum = model.Sum,
Status = model.Status, Status = model.Status,
@ -67,6 +70,7 @@ namespace PlumbingRepairDataBaseImplement.Models
Status = model.Status; Status = model.Status;
DateImplement = model.DateImplement; DateImplement = model.DateImplement;
ImplementerId = model.ImplementerId;
} }
public OrderViewModel GetViewModel => new() public OrderViewModel GetViewModel => new()
@ -76,6 +80,8 @@ namespace PlumbingRepairDataBaseImplement.Models
WorkName = Work.WorkName, WorkName = Work.WorkName,
ClientId = ClientId, ClientId = ClientId,
ClientFIO = Client.ClientFIO, ClientFIO = Client.ClientFIO,
ImplementerId = ImplementerId,
ImplementerFIO = Implementer?.ImplementerFIO ?? string.Empty,
Count = Count, Count = Count,
Sum = Sum, Sum = Sum,
Status = Status, Status = Status,

View File

@ -24,5 +24,6 @@ namespace PlumbingRepairDataBaseImplement
public virtual DbSet<WorkComponent> WorkComponents { set; get; } public virtual DbSet<WorkComponent> WorkComponents { set; get; }
public virtual DbSet<Order> Orders { set; get; } public virtual DbSet<Order> Orders { set; get; }
public virtual DbSet<Client> Clients { set; get; } public virtual DbSet<Client> Clients { set; get; }
public virtual DbSet<Implementer> Implementers { set; get; }
} }
} }

View File

@ -13,6 +13,8 @@ namespace PlumbingRepairDataModels.Models
int ClientId { get; } int ClientId { get; }
int Count { get; } int Count { get; }
double Sum { get; } double Sum { get; }
int? ImplementerId { get; }
string WorkName { get; }
OrderStatus Status { get; } OrderStatus Status { get; }
DateTime DateCreate { get; } DateTime DateCreate { get; }
DateTime? DateImplement { get; } DateTime? DateImplement { get; }

View File

@ -27,11 +27,36 @@ namespace PlumbingRepairFileImplement.Implements
public List<OrderViewModel> GetFilteredList(OrderSearchModel model) public List<OrderViewModel> GetFilteredList(OrderSearchModel model)
{ {
if (!model.Id.HasValue && !model.DateFrom.HasValue) if (model.Id.HasValue)
{ {
return new(); return source.Orders
.Where(x => x.Id == model.Id)
.Select(x => x.GetViewModel)
.ToList();
} }
return source.Orders.Where(x => x.Id == model.Id).Select(x => x.GetViewModel).ToList(); else if (model.DateFrom != null && model.DateTo != null)
{
return source.Orders
.Where(x => x.DateCreate >= model.DateFrom && x.DateCreate <= model.DateTo)
.Select(x => x.GetViewModel)
.ToList();
}
else if (model.ClientId.HasValue)
{
return source.Orders
.Where(x => x.ClientId == model.ClientId)
.Select(x => x.GetViewModel)
.ToList();
}
else if (model.ImplementerId.HasValue)
{
return source.Orders
.Where(x => x.ImplementerId == model.ImplementerId)
.Select(x => x.GetViewModel)
.ToList();
}
return new();
} }
public OrderViewModel? GetElement(OrderSearchModel model) public OrderViewModel? GetElement(OrderSearchModel model)

View File

@ -16,6 +16,7 @@ namespace PlumbingRepairFileImplement.Models
public int Id { get; private set; } public int Id { get; private set; }
public int WorkId { get; private set; } public int WorkId { get; private set; }
public int ClientId { get; private set; } public int ClientId { get; private set; }
public int? ImplementerId { get; private set; }
public String WorkName { get; private set; } = string.Empty; public String WorkName { get; private set; } = string.Empty;
public int Count { get; private set; } public int Count { get; private set; }
public double Sum { get; private set; } public double Sum { get; private set; }
@ -35,6 +36,7 @@ namespace PlumbingRepairFileImplement.Models
WorkId = model.WorkId, WorkId = model.WorkId,
WorkName = model.WorkName, WorkName = model.WorkName,
ClientId = model.ClientId, ClientId = model.ClientId,
ImplementerId = model.ImplementerId,
Count = model.Count, Count = model.Count,
Sum = model.Sum, Sum = model.Sum,
Status = model.Status, Status = model.Status,
@ -54,6 +56,7 @@ namespace PlumbingRepairFileImplement.Models
WorkId = Convert.ToInt32(element.Element("WorkId")!.Value), WorkId = Convert.ToInt32(element.Element("WorkId")!.Value),
WorkName = element.Element("WorkName")!.Value, WorkName = element.Element("WorkName")!.Value,
ClientId = Convert.ToInt32(element.Element("ClientId")!.Value), ClientId = Convert.ToInt32(element.Element("ClientId")!.Value),
ImplementerId = Convert.ToInt32(element.Element("ImplementerId")!.Value),
Count = Convert.ToInt32(element.Element("Count")!.Value), Count = Convert.ToInt32(element.Element("Count")!.Value),
Sum = Convert.ToDouble(element.Element("Sum")!.Value), Sum = Convert.ToDouble(element.Element("Sum")!.Value),
Status = (OrderStatus)Enum.Parse(typeof(OrderStatus), element.Element("Status")!.Value), Status = (OrderStatus)Enum.Parse(typeof(OrderStatus), element.Element("Status")!.Value),
@ -73,6 +76,7 @@ namespace PlumbingRepairFileImplement.Models
Status = model.Status; Status = model.Status;
DateCreate = model.DateCreate; DateCreate = model.DateCreate;
DateImplement = model.DateImplement; DateImplement = model.DateImplement;
ImplementerId = model.ImplementerId;
} }
public OrderViewModel GetViewModel => new() public OrderViewModel GetViewModel => new()
{ {
@ -80,6 +84,7 @@ namespace PlumbingRepairFileImplement.Models
WorkId = WorkId, WorkId = WorkId,
WorkName = WorkName, WorkName = WorkName,
ClientId = ClientId, ClientId = ClientId,
ImplementerId = ImplementerId,
Count = Count, Count = Count,
Sum = Sum, Sum = Sum,
Status = Status, Status = Status,
@ -91,6 +96,7 @@ namespace PlumbingRepairFileImplement.Models
new XElement("WorkName", WorkName), new XElement("WorkName", WorkName),
new XElement("WorkId", WorkId.ToString()), new XElement("WorkId", WorkId.ToString()),
new XElement("ClientId", ClientId.ToString()), new XElement("ClientId", ClientId.ToString()),
new XElement("ImplementerId", ImplementerId),
new XElement("Count", Count.ToString()), new XElement("Count", Count.ToString()),
new XElement("Sum", Sum.ToString()), new XElement("Sum", Sum.ToString()),
new XElement("Status", Status.ToString()), new XElement("Status", Status.ToString()),

View File

@ -30,15 +30,41 @@ namespace PlumbingRepairListImplement.Implements
public List<OrderViewModel> GetFilteredList(OrderSearchModel model) public List<OrderViewModel> GetFilteredList(OrderSearchModel model)
{ {
var result = new List<OrderViewModel>(); var result = new List<OrderViewModel>();
if (!model.Id.HasValue && !model.DateFrom.HasValue) if (model.Id.HasValue)
{
return result;
}
if (model.DateFrom.HasValue)
{ {
foreach (var order in _source.Orders) foreach (var order in _source.Orders)
{ {
if (model.Id.HasValue && order.Id == model.Id) if (order.Id == model.Id)
{
result.Add(order.GetViewModel);
}
}
}
else if (model.DateFrom != null && model.DateTo != null)
{
foreach (var order in _source.Orders)
{
if (order.DateCreate >= model.DateFrom && order.DateCreate <= model.DateTo)
{
result.Add(order.GetViewModel);
}
}
}
else if (model.ClientId.HasValue)
{
foreach (var order in _source.Orders)
{
if (order.ClientId == model.ClientId)
{
result.Add(order.GetViewModel);
}
}
}
else if (model.ImplementerId.HasValue)
{
foreach (var order in _source.Orders)
{
if (order.ImplementerId == model.ImplementerId)
{ {
result.Add(order.GetViewModel); result.Add(order.GetViewModel);
} }

View File

@ -15,6 +15,7 @@ namespace PlumbingRepairListImplement.Models
public int Id { get; private set; } public int Id { get; private set; }
public int WorkId { get; private set; } public int WorkId { get; private set; }
public int ClientId { get; private set; } public int ClientId { get; private set; }
public int? ImplementerId { get; private set; }
public String WorkName { get; private set; } = string.Empty; public String WorkName { get; private set; } = string.Empty;
public int Count { get; private set; } public int Count { get; private set; }
public double Sum { get; private set; } public double Sum { get; private set; }
@ -33,6 +34,7 @@ namespace PlumbingRepairListImplement.Models
WorkId = model.WorkId, WorkId = model.WorkId,
WorkName = model.WorkName, WorkName = model.WorkName,
ClientId = model.ClientId, ClientId = model.ClientId,
ImplementerId = model.ImplementerId,
Count = model.Count, Count = model.Count,
Sum = model.Sum, Sum = model.Sum,
Status = model.Status, Status = model.Status,
@ -51,6 +53,7 @@ namespace PlumbingRepairListImplement.Models
Status = model.Status; Status = model.Status;
DateCreate = model.DateCreate; DateCreate = model.DateCreate;
DateImplement = model.DateImplement; DateImplement = model.DateImplement;
ImplementerId = model.ImplementerId;
} }
public OrderViewModel GetViewModel => new() public OrderViewModel GetViewModel => new()
{ {
@ -58,6 +61,7 @@ namespace PlumbingRepairListImplement.Models
WorkId = WorkId, WorkId = WorkId,
WorkName = WorkName, WorkName = WorkName,
ClientId = ClientId, ClientId = ClientId,
ImplementerId = ImplementerId,
Count = Count, Count = Count,
Sum = Sum, Sum = Sum,
Status = Status, Status = Status,