diff --git a/Alligator.BusinessLayer.Tests/OrderServiceTests.cs b/Alligator.BusinessLayer.Tests/OrderServiceTests.cs new file mode 100644 index 0000000..b3e427d --- /dev/null +++ b/Alligator.BusinessLayer.Tests/OrderServiceTests.cs @@ -0,0 +1,235 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Alligator.BusinessLayer.Models; +using Alligator.DataLayer.Entities; +using Alligator.DataLayer.Repositories; +using Moq; +using NUnit.Framework; + +namespace Alligator.BusinessLayer.Tests +{ + public class OrderServiceTests + { + private readonly Mock _orderRepositoryMock; + private readonly Mock _orderDetailRepositoryMock; + private readonly Mock _orderReviewRepositoryMock; + + public OrderServiceTests() + { + _orderRepositoryMock = new Mock(); + _orderDetailRepositoryMock = new Mock(); + _orderReviewRepositoryMock = new Mock(); + } + [SetUp] + public void Setup() + { + } + public void FillObjectMockForGetAllOrders() + { + _orderRepositoryMock.Setup(m => m.GetAllOrders()).Returns(new List + { + new Order + { + Id = 1, + Date = DateTime.Now, + Address = "TestAdress1", + Client = new Client(), + OrderDetails=new List(), + OrderReviews =new List() + + }, + new Order + { + Id = 2, + Date = DateTime.Now, + Address = "TestAdress1", + Client = new Client(), + OrderDetails=new List(), + OrderReviews =new List() + }, + new Order + { + Id = 3, + Date = DateTime.Now, + Address = "TestAdress1", + Client = new Client(), + OrderDetails=new List(), + OrderReviews =new List() + } + }); + } + + public void FillObjectMockForGetOrderById() + { + _orderRepositoryMock.Setup(m => m.GetOrderById(1)).Returns(new Order + { + Id = 1, + Date = DateTime.Now, + Address = "TestAdress1", + Client = new Client(), + OrderDetails = new List(), + OrderReviews = new List() + + }); + _orderRepositoryMock.Setup(m => m.GetOrderById(2)).Returns(new Order + { + Id = 2, + Date = DateTime.Now, + Address = "TestAdress1", + Client = new Client(), + OrderDetails = new List(), + OrderReviews = new List() + + }); + _orderRepositoryMock.Setup(m => m.GetOrderById(3)).Returns(new Order + { + Id = 3, + Date = DateTime.Now, + Address = "TestAdress1", + Client = new Client(), + OrderDetails = new List(), + OrderReviews = new List() + + }); + } + + public OrderModel GetTestOrdersModelToFill(int key) + { + OrderModel order; + switch (key) + { + case 1: + order = new OrderModel + { + Id = 1, + Date = DateTime.Now, + Address = "TestAdress1", + Client = new ClientModel(), + OrderDetails = new List(), + OrderReviews = new List() + }; + break; + + case 2: + order = new OrderModel + { + Id = 2, + Date = DateTime.Now, + Address = "TestAdress1", + Client = new ClientModel(), + OrderDetails = new List(), + OrderReviews = new List() + }; + break; + case 3: + order = new OrderModel + { + Id = 3, + Date = DateTime.Now, + Address = "TestAdress1", + Client = new ClientModel(), + OrderDetails = new List(), + OrderReviews = new List() + }; + break; + default: + order = null; + break; + } + return order; + } + + [Test] + public void GetOrders_ShouldReturnAllOrders() + { + //arrange + + var sut = new OrderService(_orderRepositoryMock.Object, _orderDetailRepositoryMock.Object, _orderReviewRepositoryMock.Object ); + FillObjectMockForGetAllOrders(); + //act + var actual = sut.GetOrders().Data; + //assert + Assert.IsNotNull(actual); + Assert.IsTrue(actual.Count > 0); + Assert.IsInstanceOf(typeof(OrderModel), actual[0]); + } + + [TestCase(1)] + [TestCase(2)] + [TestCase(3)] + public void GetOrderByOrderId_ShouldReturnOrder(int id) + { + //arrange + + var sut = new OrderService(_orderRepositoryMock.Object, _orderDetailRepositoryMock.Object, _orderReviewRepositoryMock.Object); + FillObjectMockForGetOrderById(); + var actual = sut.GetOrderByIdWithDetailsAndReviews(id); + _orderRepositoryMock.Verify(m => m.GetOrderById(id), Times.Once()); + + Assert.IsTrue(actual.Success); + Assert.IsTrue(actual.Data.Id == id); + Assert.IsNotNull(actual.Data); + } + + [TestCase(1)] + [TestCase(2)] + [TestCase(3)] + public void GetOrderByClientId_ShouldReturnOrder(int id) + { + //arrange + + var sut = new OrderService(_orderRepositoryMock.Object, _orderDetailRepositoryMock.Object, _orderReviewRepositoryMock.Object); + FillObjectMockForGetOrderById(); + var actual = sut.GetOrdersByClientId(id); + _orderRepositoryMock.Verify(m => m.GetOrdersByClientId(id), Times.Once()); + + Assert.IsTrue(actual.Success); + Assert.IsNotNull(actual.Data); + } + + [TestCase(1)] + [TestCase(2)] + [TestCase(3)] + + public void AddOrderModel(int id) + { + //arrange + var testOrder = GetTestOrdersModelToFill(id); + var sut = new OrderService(_orderRepositoryMock.Object, _orderDetailRepositoryMock.Object, _orderReviewRepositoryMock.Object); + //act + var actual = sut.AddOrderModel(testOrder.Date, testOrder.Client.Id, testOrder.Address); + + //assert + Assert.IsNotNull(actual); + Assert.IsInstanceOf(typeof(int), actual); + } + + [TestCase(1)] + [TestCase(2)] + [TestCase(3)] + public void DeleteClient_ShouldReturnDeleted(int id) + { + //arrange + var testOrder = GetTestOrdersModelToFill(id); + var sut = new OrderService(_orderRepositoryMock.Object, _orderDetailRepositoryMock.Object, _orderReviewRepositoryMock.Object); + //act + var a = sut.DeleteOrderModel(testOrder.Id); + //assert + Assert.That(a, Is.EqualTo(true)); + } + + [TestCase(1)] + [TestCase(2)] + public void EditOrderModel_ShouldEdited(int id) + { + var existingOrder = GetTestOrdersModelToFill(id); + var sut = new OrderService(_orderRepositoryMock.Object, _orderDetailRepositoryMock.Object, _orderReviewRepositoryMock.Object); + var actual = sut.EditOrderModel(existingOrder); + Assert.IsTrue(actual); + } + } + } + diff --git a/Alligator.BusinessLayer/Configuration/CustomMapper.cs b/Alligator.BusinessLayer/Configuration/CustomMapper.cs index 76759d4..002d425 100644 --- a/Alligator.BusinessLayer/Configuration/CustomMapper.cs +++ b/Alligator.BusinessLayer/Configuration/CustomMapper.cs @@ -1,4 +1,5 @@ using Alligator.BusinessLayer.Models; +using Alligator.DataLayer; using Alligator.DataLayer.Entities; using AutoMapper; @@ -22,9 +23,7 @@ private static void InitializeInstance() cfg.CreateMap(); cfg.CreateMap(); cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); + cfg.CreateMap(); cfg.CreateMap(); cfg.CreateMap(); cfg.CreateMap(); diff --git a/Alligator.BusinessLayer/Models/OrderModel.cs b/Alligator.BusinessLayer/Models/OrderModel.cs index a57d3f0..f255d10 100644 --- a/Alligator.BusinessLayer/Models/OrderModel.cs +++ b/Alligator.BusinessLayer/Models/OrderModel.cs @@ -6,8 +6,12 @@ namespace Alligator.BusinessLayer.Models { - public class OrderModel: OrderShortModel - { + public class OrderModel + { + public int Id { get; set; } + public DateTime Date { get; set; } + public string Address { get; set; } + public ClientModel Client { get; set; } public List OrderDetails { get; set; } public List OrderReviews { get; set; } } diff --git a/Alligator.BusinessLayer/Models/OrderShortModel.cs b/Alligator.BusinessLayer/Models/OrderShortModel.cs deleted file mode 100644 index 80e8e1f..0000000 --- a/Alligator.BusinessLayer/Models/OrderShortModel.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Alligator.BusinessLayer.Models -{ - public class OrderShortModel - { - public int Id { get; set; } - public DateTime Date { get; set; } - public string Address { get; set; } - public ClientModel Client { get; set; } - } -} diff --git a/Alligator.BusinessLayer/OrderDetailService.cs b/Alligator.BusinessLayer/OrderDetailService.cs index 0f7096c..1251fa1 100644 --- a/Alligator.BusinessLayer/OrderDetailService.cs +++ b/Alligator.BusinessLayer/OrderDetailService.cs @@ -3,6 +3,7 @@ using Alligator.DataLayer.Repositories; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -13,9 +14,9 @@ public class OrderDetailService { private readonly IOrderDetailRepository _repositoryOrderDetail; - public OrderDetailService(IOrderDetailRepository repositoryOrderdetail) + public OrderDetailService(IOrderDetailRepository fakeRepositoryOrderDetail) { - _repositoryOrderDetail = repositoryOrderdetail; + _repositoryOrderDetail = fakeRepositoryOrderDetail; } public OrderDetailService() @@ -47,6 +48,15 @@ public void AddOrderDetailModel(int amount, int orderId, int productId) _repositoryOrderDetail.AddOrderDetail(amount, orderId, productId); } + public void AddOrderDetailModels(ObservableCollection orderDetails, int orderId) + { + var newOrderDetails = CustomMapper.GetInstance().Map>(orderDetails); + foreach (var orderDetail in newOrderDetails) + { + _repositoryOrderDetail.AddOrderDetail(orderDetail.Amount, orderId, orderDetail.Product.Id); + } + } + public void EditOrderDetailModel(int id, int amount) { _repositoryOrderDetail.EditOrderDetail(id, amount); diff --git a/Alligator.BusinessLayer/OrderReviewService.cs b/Alligator.BusinessLayer/OrderReviewService.cs index b75b10a..d1541eb 100644 --- a/Alligator.BusinessLayer/OrderReviewService.cs +++ b/Alligator.BusinessLayer/OrderReviewService.cs @@ -4,6 +4,7 @@ using Alligator.DataLayer.Repositories; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -14,9 +15,9 @@ public class OrderReviewService { private readonly IOrderReviewRepository _repositoryOrderReview; - public OrderReviewService(IOrderReviewRepository repositoryOrderReview) + public OrderReviewService(IOrderReviewRepository fakeRepositoryOrderReview) { - _repositoryOrderReview = repositoryOrderReview; + _repositoryOrderReview = fakeRepositoryOrderReview; } public OrderReviewService() @@ -41,6 +42,15 @@ public void AddOrderReviewModel(string text, int orderId) _repositoryOrderReview.AddOrderReview(text, orderId); } + public void AddOrderReviewModels(ObservableCollection orderReviews, int orderId) + { + var newOrderReviews = CustomMapper.GetInstance().Map>(orderReviews); + foreach (var orderReview in newOrderReviews) + { + _repositoryOrderReview.AddOrderReview(orderReview.Text, orderId); + } + } + public void EditOrderReviewModel(int id, string text) { _repositoryOrderReview.EditOrderReview(id, text); diff --git a/Alligator.BusinessLayer/OrderService.cs b/Alligator.BusinessLayer/OrderService.cs index d54b3f4..abe86e9 100644 --- a/Alligator.BusinessLayer/OrderService.cs +++ b/Alligator.BusinessLayer/OrderService.cs @@ -1,8 +1,10 @@ using Alligator.BusinessLayer.Configuration; using Alligator.BusinessLayer.Models; +using Alligator.DataLayer.Entities; using Alligator.DataLayer.Repositories; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; namespace Alligator.BusinessLayer { @@ -12,11 +14,11 @@ public class OrderService private readonly IOrderDetailRepository _repositoryOrderDetail; private readonly IOrderReviewRepository _repositoryOrderReview; - public OrderService(IOrderRepository repositoryOrder, IOrderDetailRepository repositoryOrderDetail, IOrderReviewRepository repositoryOrderReview) + public OrderService(IOrderRepository fakeRepositoryOrder, IOrderDetailRepository fakeRepositoryOrderDetail, IOrderReviewRepository fakeRepositoryOrderReview) { - _repositoryOrder = repositoryOrder; - _repositoryOrderDetail = repositoryOrderDetail; - _repositoryOrderReview = repositoryOrderReview; + _repositoryOrder = fakeRepositoryOrder; + _repositoryOrderDetail = fakeRepositoryOrderDetail; + _repositoryOrderReview = fakeRepositoryOrderReview; } public OrderService() @@ -26,16 +28,17 @@ public OrderService() _repositoryOrderReview = new OrderReviewRepository(); } - public List GetOrdersWithoutSensitiveData() + public ActionResult> GetOrders() { var orders = _repositoryOrder.GetAllOrders(); - return CustomMapper.GetInstance().Map>(orders); - } - - public List GetOrders() - { - var orders = _repositoryOrder.GetAllOrders(); - return CustomMapper.GetInstance().Map>(orders); + try + { + return new ActionResult>(true, CustomMapper.GetInstance().Map>(orders)); + } + catch (Exception exception) + { + return new ActionResult>(false, null) { ErrorMessage = exception.Message }; + } } public ActionResult> GetOrdersByClientId(int id) @@ -51,28 +54,61 @@ public ActionResult> GetOrdersByClientId(int id) } } - public OrderModel GetOrderByIdWithDetailsAndReviews(int id) + public ActionResult GetOrderByIdWithDetailsAndReviews(int id) { var order = _repositoryOrder.GetOrderById(id); order.OrderDetails = _repositoryOrderDetail.GetOrderDetailsByOrderId(id); order.OrderReviews = _repositoryOrderReview.GetOrderReviewsByOrderId(id); - return CustomMapper.GetInstance().Map(order); + try + { + return new ActionResult(true, CustomMapper.GetInstance().Map(order)); + } + catch + (Exception exception) + { + return new ActionResult(false, null) { ErrorMessage = exception.Message }; + + } } public int AddOrderModel(DateTime date, int clientId, string address) { - int id =_repositoryOrder.AddOrder(date, clientId, address); - return id; + try + { + int id =_repositoryOrder.AddOrder(date, clientId, address); + return id; + } + catch + { + return -1; + } } - public void DeleteOrderModel(int id) + public bool DeleteOrderModel(int id) { - _repositoryOrder.DeleteOrder(id); + try + { + _repositoryOrder.DeleteOrder(id); + return true; + } + catch + { + return false; + } } - public void EditOrderModel(DateTime date, int id, string address) + public bool EditOrderModel(OrderModel editedOrder) { - _repositoryOrder.EditOrder(date, id, address); + var order = CustomMapper.GetInstance().Map(editedOrder); + try + { + _repositoryOrder.EditOrder(order); + return true; + } + catch + { + return false; + } } public bool DeleteOrdersByClientId(int clientId) { @@ -86,5 +122,6 @@ public bool DeleteOrdersByClientId(int clientId) return false; } } + } } diff --git a/Alligator.DB/Procedures/Order_SelectAll.sql b/Alligator.DB/Procedures/Order_SelectAll.sql index ae45d42..5b6c154 100644 --- a/Alligator.DB/Procedures/Order_SelectAll.sql +++ b/Alligator.DB/Procedures/Order_SelectAll.sql @@ -2,9 +2,11 @@ AS BEGIN select - id, - date, - clientId, - Address - from dbo.[Order] + o.id, + o.date, + o.Address, + c.Id, + c.FirstName, + c.LastName + from dbo.[Order] o inner join dbo.[Client] c on o.ClientId=c.Id END \ No newline at end of file diff --git a/Alligator.DB/Procedures/Order_Update.sql b/Alligator.DB/Procedures/Order_Update.sql index c463e54..b9e28c3 100644 --- a/Alligator.DB/Procedures/Order_Update.sql +++ b/Alligator.DB/Procedures/Order_Update.sql @@ -1,10 +1,12 @@ create proc dbo.Order_Update @Id int, +@ClientId int, @Address varchar(200), @Date date AS BEGIN - update dbo.[Order] set Address=@Address, + update dbo.[Order] set ClientId=@ClientId, + Address=@Address, Date=@Date where Id=@Id END \ No newline at end of file diff --git a/Alligator.DataLayer/Repositories/BaseRepository.cs b/Alligator.DataLayer/Repositories/BaseRepository.cs index 1785ed8..d7572b2 100644 --- a/Alligator.DataLayer/Repositories/BaseRepository.cs +++ b/Alligator.DataLayer/Repositories/BaseRepository.cs @@ -1,4 +1,5 @@ -using System.Data.SqlClient; + +using System.Data.SqlClient; namespace Alligator.DataLayer.Repositories { @@ -14,4 +15,4 @@ protected enum AffectedRows One } } -} +} \ No newline at end of file diff --git a/Alligator.DataLayer/Repositories/ClientRepository.cs b/Alligator.DataLayer/Repositories/ClientRepository.cs index 2895597..6491ea8 100644 --- a/Alligator.DataLayer/Repositories/ClientRepository.cs +++ b/Alligator.DataLayer/Repositories/ClientRepository.cs @@ -2,7 +2,6 @@ using Dapper; using System.Collections.Generic; using System.Data; -using System.Data.SqlClient; using System.Linq; namespace Alligator.DataLayer.Repositories diff --git a/Alligator.DataLayer/Repositories/IOrderRepository.cs b/Alligator.DataLayer/Repositories/IOrderRepository.cs index 4483068..09477e1 100644 --- a/Alligator.DataLayer/Repositories/IOrderRepository.cs +++ b/Alligator.DataLayer/Repositories/IOrderRepository.cs @@ -8,7 +8,7 @@ public interface IOrderRepository { int AddOrder(DateTime date, int clientId, string address); void DeleteOrder(int id); - void EditOrder(DateTime date, int id, string address); + void EditOrder(Order order); List GetAllOrders(); Order GetOrderById(int id); List GetOrdersByClientId(int id); diff --git a/Alligator.DataLayer/Repositories/OrderDetailRepository.cs b/Alligator.DataLayer/Repositories/OrderDetailRepository.cs index 1bcb571..40cb26d 100644 --- a/Alligator.DataLayer/Repositories/OrderDetailRepository.cs +++ b/Alligator.DataLayer/Repositories/OrderDetailRepository.cs @@ -24,7 +24,7 @@ public OrderDetail GetOrderDetailById(int id) orderdetail.Product = product; return orderdetail; }, - new { Id = id }, + new { id }, commandType: CommandType.StoredProcedure, splitOn: "Id") .FirstOrDefault(); @@ -41,7 +41,7 @@ public List GetOrderDetailsByOrderId(int id) orderdetail.Product = product; return orderdetail; }, - new { OrderId = id }, + new { orderId=id }, commandType: CommandType.StoredProcedure, splitOn: "Id") .Distinct().ToList(); @@ -58,7 +58,7 @@ public List GetOrderDetailsByProductId(int id) orderdetail.Product = product; return orderdetail; }, - new { ProductId = id }, + new { id }, commandType: CommandType.StoredProcedure, splitOn: "Id") .Distinct().ToList(); @@ -69,7 +69,7 @@ public void AddOrderDetail(int amount, int orderId, int productId) using var connection = ProvideConnection(); string procString = "dbo.OrderDetail_Insert"; connection.Execute(procString, - new { Amount = amount, OrdertId = orderId, ProductId = productId }, + new { amount, orderId, productId }, commandType: CommandType.StoredProcedure); } @@ -77,7 +77,7 @@ public void EditOrderDetail(int id, int amount) { using var connection = ProvideConnection(); string procString = "dbo.OrderDetail_Update"; - connection.Execute(procString, new { Id = id, Amount = amount }, + connection.Execute(procString, new { id, amount }, commandType: CommandType.StoredProcedure); } @@ -85,7 +85,7 @@ public void DeleteOrderDetail(int id) { using var connection = ProvideConnection(); string procString = "dbo.OrderDetail_Delete"; - connection.Execute(procString, new { Id = id }, + connection.Execute(procString, new { id }, commandType: CommandType.StoredProcedure); } @@ -93,14 +93,14 @@ public void DeleteOrderDetailByOrderId(int id) { using var connection = ProvideConnection(); string procString = "dbo.OrderDetail_DeleteByOrderId"; - connection.Execute(procString, new { OrderId=id }, + connection.Execute(procString, new { orderId=id }, commandType: CommandType.StoredProcedure); } public void DeleteOrderDetailByProductId(int id) { using var connection = ProvideConnection(); string procString = "dbo.OrderDetail_DeleteByProductId"; - connection.Execute(procString, new { ProductId = id }, + connection.Execute(procString, new { id }, commandType: CommandType.StoredProcedure); } } diff --git a/Alligator.DataLayer/Repositories/OrderRepository.cs b/Alligator.DataLayer/Repositories/OrderRepository.cs index 016eb3e..63ff12c 100644 --- a/Alligator.DataLayer/Repositories/OrderRepository.cs +++ b/Alligator.DataLayer/Repositories/OrderRepository.cs @@ -3,10 +3,7 @@ using System; using System.Collections.Generic; using System.Data; -using System.Data.SqlClient; using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Alligator.DataLayer.Repositories { @@ -17,7 +14,12 @@ public List GetAllOrders() { using var connection = ProvideConnection(); var orderDictionary = new Dictionary(); - return connection.Query("dbo.Order_SelectAll", + return connection.Query("dbo.Order_SelectAll", (order, client) => + { + order.Client = client; + + return order; + }, commandType: CommandType.StoredProcedure) .ToList(); } @@ -31,7 +33,7 @@ public Order GetOrderById(int id) return order; }, - new { Id = id }, + new { id }, commandType: CommandType.StoredProcedure, splitOn: "Id"). FirstOrDefault(); @@ -59,7 +61,7 @@ public int AddOrder(DateTime date, int clientId, string address) using var connection = ProvideConnection(); string procString = "dbo.Order_Insert"; return connection.QueryFirstOrDefault(procString, - new { Date = date, ClientId = clientId, Address = address }, + new { date, clientId, address }, commandType: CommandType.StoredProcedure); } @@ -68,16 +70,16 @@ public void DeleteOrder(int id) using var connection = ProvideConnection(); string procString = "dbo.Order_Delete"; connection.Execute(procString, - new {id }, + new { id }, commandType: CommandType.StoredProcedure); } - public void EditOrder(DateTime date, int id, string address) + public void EditOrder(Order editedOrder) { using var connection = ProvideConnection(); string procString = "dbo.Order_Update"; connection.Execute(procString, - new { Date = date, Id = id, Address = address }, + new { Date = editedOrder.Date, Id = editedOrder.Id, ClientId = editedOrder.Client.Id, editedOrder.Address }, commandType: CommandType.StoredProcedure); } public void DeleteOrdersByClientId(int clientId) diff --git a/Alligator.DataLayer/Repositories/OrderReviewRepository.cs b/Alligator.DataLayer/Repositories/OrderReviewRepository.cs index c18bedd..a33204a 100644 --- a/Alligator.DataLayer/Repositories/OrderReviewRepository.cs +++ b/Alligator.DataLayer/Repositories/OrderReviewRepository.cs @@ -18,11 +18,10 @@ public OrderReview GetOrderReviewById(int id) return connection.Query ("dbo.OrderReview_SelectById", (orderreview, order, client) => { - orderreview.Order = order; - //orderreview.Client = client; + orderreview.Order = order; return orderreview; }, - new { Id = id }, + new { id }, commandType: CommandType.StoredProcedure, splitOn: "Id"). FirstOrDefault(); @@ -36,10 +35,9 @@ public List GetOrderReviewsByOrderId(int id) ("dbo.OrderReview_SelectByOrderId", (orderreview, order, client) => { orderreview.Order = order; - //orderreview.Client = client; return orderreview; }, - new { OrderId = id }, + new { OrderId=id }, commandType: CommandType.StoredProcedure, splitOn: "Id"). Distinct().ToList(); @@ -59,7 +57,7 @@ public void DeleteOrderReview(int id) using var connection = ProvideConnection(); string procString = "dbo.OrderReview_Delete"; connection.Execute(procString, - new { Id = id }, + new { id }, commandType: CommandType.StoredProcedure); } @@ -67,7 +65,7 @@ public void DeleteOrderReviewByOrderId(int orderId) { using var connection = ProvideConnection(); string procString = "dbo.OrderReview_DeleteByOrderId"; - connection.Execute(procString, new { OrderId = orderId }, + connection.Execute(procString, new { orderId }, commandType: CommandType.StoredProcedure); } @@ -75,7 +73,7 @@ public void EditOrderReview(int id, string text) { using var connection = ProvideConnection(); string procString = "dbo.OrderReview_Update"; - connection.Execute(procString, new { Id = id, Text = text }, + connection.Execute(procString, new { id, text }, commandType: CommandType.StoredProcedure); } diff --git a/Alligator/Commands/TabItemClients/AddClientPageCommand.cs b/Alligator/Commands/TabItemClients/AddClientPageCommand.cs index 2be72bb..8c937d2 100644 --- a/Alligator/Commands/TabItemClients/AddClientPageCommand.cs +++ b/Alligator/Commands/TabItemClients/AddClientPageCommand.cs @@ -1,7 +1,5 @@ -using Alligator.BusinessLayer.Models; -using Alligator.BusinessLayer.Services; +using Alligator.BusinessLayer.Services; using Alligator.UI.VIewModels.TabItemsViewModels; -using System.Collections.ObjectModel; using System.Windows; namespace Alligator.UI.Commands.TabItemClients diff --git a/Alligator/Commands/TabItemClients/AddCommentCommand.cs b/Alligator/Commands/TabItemClients/AddCommentCommand.cs index 31686c2..0bd3342 100644 --- a/Alligator/Commands/TabItemClients/AddCommentCommand.cs +++ b/Alligator/Commands/TabItemClients/AddCommentCommand.cs @@ -1,20 +1,16 @@ using Alligator.BusinessLayer.Models; using Alligator.BusinessLayer.Services; using Alligator.UI.VIewModels.TabItemsViewModels; -using System; using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Alligator.UI.Commands.TabItemClients { public class AddCommentCommand : CommandBase { - private TabItemClientsViewModel _viewModel; - private CommentService _commentService; + private readonly TabItemClientsViewModel _viewModel; + private readonly CommentService _commentService; public AddCommentCommand(TabItemClientsViewModel viewModel, CommentService commentService) { _viewModel = viewModel; @@ -26,21 +22,21 @@ public override void Execute(object parameter) { if (_viewModel.SelectedClient.Comments is null) { - - List coms = new List(); - - _viewModel.SelectedClient.Comments = coms; + + List coms = new List(); + + _viewModel.SelectedClient.Comments = coms; } - if(_viewModel.Comments is null) + if (_viewModel.Comments is null) { ObservableCollection comms = new ObservableCollection(); _viewModel.Comments = comms; } - - + + var newComment = new CommentModel { Client = _viewModel.EditableClient, Text = _viewModel.Comment }; _viewModel.Comments.Add(newComment); - + _commentService.InsertComment(newComment); _viewModel.Comment = null; diff --git a/Alligator/Commands/TabItemClients/AddNewClientCommand.cs b/Alligator/Commands/TabItemClients/AddNewClientCommand.cs index 8966498..aa9b3d8 100644 --- a/Alligator/Commands/TabItemClients/AddNewClientCommand.cs +++ b/Alligator/Commands/TabItemClients/AddNewClientCommand.cs @@ -1,28 +1,21 @@ -using Alligator.BusinessLayer; -using Alligator.BusinessLayer.Services; +using Alligator.BusinessLayer.Services; using Alligator.UI.Helpers; using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; namespace Alligator.UI.Commands.TabItemClients { class AddNewClientCommand : CommandBase { - private TabItemClientsViewModel _viewModel; - private ClientService _clientservice; + private readonly TabItemClientsViewModel _viewModel; + private readonly ClientService _clientservice; public AddNewClientCommand(TabItemClientsViewModel viewModel, ClientService clientService) { _viewModel = viewModel; _clientservice = clientService; } - + public override void Execute(object parameter) { bool isValid = ClientValidation.TrimAndCheckIsValid(_viewModel.NewClient); diff --git a/Alligator/Commands/TabItemClients/DeleteClientCommand.cs b/Alligator/Commands/TabItemClients/DeleteClientCommand.cs index 569bcfd..f0e91fd 100644 --- a/Alligator/Commands/TabItemClients/DeleteClientCommand.cs +++ b/Alligator/Commands/TabItemClients/DeleteClientCommand.cs @@ -39,14 +39,14 @@ public override void Execute(object parameter) var userAnswer = MessageBox.Show("Вы правда хотите удалить этого клиента?", "Удаление", MessageBoxButton.YesNo, MessageBoxImage.Question); if (userAnswer == MessageBoxResult.Yes) { - if (_commentService.DeleteCommentsByClientId(_viewModel.SelectedClient.Id) ) - + if (_orderService.DeleteOrdersByClientId(_viewModel.SelectedClient.Id) is false) + { + MessageBox.Show("VIP клиент", "Невозможно удалить", MessageBoxButton.OK); + return; + } + if (_commentService.DeleteCommentsByClientId(_viewModel.SelectedClient.Id)) + { - if (_orderService.DeleteOrdersByClientId(_viewModel.SelectedClient.Id) is false) - { - MessageBox.Show("VIP клиент", "Невозможно удалить", MessageBoxButton.OK); - return; - } _clientService.DeleteClient(_viewModel.SelectedClient); _viewModel.Clients.Remove(_viewModel.SelectedClient); } diff --git a/Alligator/Commands/TabItemClients/DeleteCommentCommand.cs b/Alligator/Commands/TabItemClients/DeleteCommentCommand.cs index b0f7107..0052a48 100644 --- a/Alligator/Commands/TabItemClients/DeleteCommentCommand.cs +++ b/Alligator/Commands/TabItemClients/DeleteCommentCommand.cs @@ -1,22 +1,13 @@ - -using Alligator.BusinessLayer; -using Alligator.BusinessLayer.Models; -using Alligator.BusinessLayer.Services; +using Alligator.BusinessLayer.Services; using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; namespace Alligator.UI.Commands.TabItemClients { public class DeleteCommentCommand : CommandBase { - private TabItemClientsViewModel _viewModel; - private CommentService _commentService; + private readonly TabItemClientsViewModel _viewModel; + private readonly CommentService _commentService; public DeleteCommentCommand(TabItemClientsViewModel viewModel, CommentService commentService) { diff --git a/Alligator/Commands/TabItemClients/LoadClientsCommand.cs b/Alligator/Commands/TabItemClients/LoadClientsCommand.cs index 822c090..578223c 100644 --- a/Alligator/Commands/TabItemClients/LoadClientsCommand.cs +++ b/Alligator/Commands/TabItemClients/LoadClientsCommand.cs @@ -18,19 +18,19 @@ public LoadClientsCommand(TabItemClientsViewModel viewModel, ClientService clien public override void Execute(object parameter) { _viewModel.Clients.Clear(); - if(_clientService.GetAllClients().Success is true) + if (_clientService.GetAllClients().Success is true) { var clients = _clientService.GetAllClients().Data; foreach (var client in clients) - _viewModel.Clients.Add(client); + _viewModel.Clients.Add(client); } else { MessageBox.Show("Ошибка", "Error", MessageBoxButton.OK); } - - - + + + } } diff --git a/Alligator/Commands/TabItemClients/OpenClientCardCommand.cs b/Alligator/Commands/TabItemClients/OpenClientCardCommand.cs index 9f90feb..543157d 100644 --- a/Alligator/Commands/TabItemClients/OpenClientCardCommand.cs +++ b/Alligator/Commands/TabItemClients/OpenClientCardCommand.cs @@ -2,23 +2,18 @@ using Alligator.BusinessLayer.Models; using Alligator.BusinessLayer.Services; using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; namespace Alligator.UI.Commands.TabItemClients { public class OpenClientCardCommand : CommandBase { - private TabItemClientsViewModel _viewModel; - private ClientService _clientService; - private CommentService _commentService; - private OrderService _orderService; - public OpenClientCardCommand(TabItemClientsViewModel viewModel,ClientService clientService, CommentService commentService, OrderService orderService) + private readonly TabItemClientsViewModel _viewModel; + private readonly ClientService _clientService; + private readonly CommentService _commentService; + private readonly OrderService _orderService; + public OpenClientCardCommand(TabItemClientsViewModel viewModel, ClientService clientService, CommentService commentService, OrderService orderService) { _viewModel = viewModel; _clientService = clientService; @@ -28,7 +23,7 @@ public OpenClientCardCommand(TabItemClientsViewModel viewModel,ClientService cli public override bool CanExecute(object parameter) { - return _viewModel.SelectedClient is not null; + return _viewModel.SelectedClient is not null; } public override void Execute(object parameter) diff --git a/Alligator/Commands/TabItemClients/ReturnCommand.cs b/Alligator/Commands/TabItemClients/ReturnCommand.cs index d326b15..4a8a67c 100644 --- a/Alligator/Commands/TabItemClients/ReturnCommand.cs +++ b/Alligator/Commands/TabItemClients/ReturnCommand.cs @@ -1,9 +1,4 @@ using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; namespace Alligator.UI.Commands.TabItemClients @@ -11,7 +6,7 @@ namespace Alligator.UI.Commands.TabItemClients public class ReturnCommand : CommandBase { - private TabItemClientsViewModel _viewModel; + private readonly TabItemClientsViewModel _viewModel; public ReturnCommand(TabItemClientsViewModel viewModel) { diff --git a/Alligator/Commands/TabItemClients/SaveChanges.cs b/Alligator/Commands/TabItemClients/SaveChanges.cs index 38734ec..1bea692 100644 --- a/Alligator/Commands/TabItemClients/SaveChanges.cs +++ b/Alligator/Commands/TabItemClients/SaveChanges.cs @@ -1,12 +1,6 @@ -using Alligator.BusinessLayer; -using Alligator.BusinessLayer.Services; +using Alligator.BusinessLayer.Services; using Alligator.UI.Helpers; using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; namespace Alligator.UI.Commands.TabItemClients @@ -39,7 +33,7 @@ public override void Execute(object parameter) { _viewModel.Clients.Add(item); } - + _viewModel.AllClients = Visibility.Visible; _viewModel.ClientCardVisibility = Visibility.Collapsed; _viewModel.SelectedClient = _viewModel.EditableClient; diff --git a/Alligator/Commands/TabItemOrders/AddOrderCommand.cs b/Alligator/Commands/TabItemOrders/AddOrderCommand.cs index 571bed2..012bdb2 100644 --- a/Alligator/Commands/TabItemOrders/AddOrderCommand.cs +++ b/Alligator/Commands/TabItemOrders/AddOrderCommand.cs @@ -1,22 +1,15 @@ using Alligator.BusinessLayer; -using Alligator.BusinessLayer.Models; using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; namespace Alligator.UI.Commands.TabItemOrders { public class AddOrderCommand : CommandBase { - private TabItemOrdersViewModel _viewModel; - private OrderService _orderService; - private OrderReviewService _orderReviewService; - private OrderDetailService _orderDetailService; + private readonly TabItemOrdersViewModel _viewModel; + private readonly OrderService _orderService; + private readonly OrderReviewService _orderReviewService; + private readonly OrderDetailService _orderDetailService; public AddOrderCommand(TabItemOrdersViewModel viewModel, OrderService orderService, OrderReviewService orderReviewService , OrderDetailService orderDetailService) @@ -28,7 +21,7 @@ public AddOrderCommand(TabItemOrdersViewModel viewModel, OrderService orderServi } public override void Execute(object parameter) - { + { var newAddress = _viewModel.NewAddressText; if (string.IsNullOrEmpty(newAddress)) { @@ -40,22 +33,22 @@ public override void Execute(object parameter) { MessageBox.Show("Выберите клиента"); return; - } - if (_viewModel.NewOrder.OrderDetails.Count==0) + } + if (_viewModel.NewOrder.OrderDetails.Count == 0) { MessageBox.Show("Выберите продукты и их количество"); return; } - int orderId = _orderService.AddOrderModel(_viewModel.NewDate, _viewModel.SelectedClient.Id, newAddress); - foreach (var orderReview in _viewModel.NewOrderReviews) - { - _orderReviewService.AddOrderReviewModel(orderReview.Text, orderId); - } - foreach (var orderDetail in _viewModel.NewOrderDetails) + int orderId = _orderService.AddOrderModel(_viewModel.NewDate, _viewModel.SelectedClient.Id, newAddress); + if (orderId != -1) { - _orderDetailService.AddOrderDetailModel(orderDetail.Amount, orderId, orderDetail.Product.Id); + _orderReviewService.AddOrderReviewModels(_viewModel.NewOrderReviews, orderId); + _orderDetailService.AddOrderDetailModels(_viewModel.NewOrderDetails, orderId); + _viewModel.AllOrders.Add(_orderService.GetOrderByIdWithDetailsAndReviews(orderId).Data); + MessageBox.Show("Заказ создан"); + _viewModel.NewAmount = string.Empty; + _viewModel.ComeBackFirstWindow.Execute(null); } - _viewModel.AllOrders.Add(_orderService.GetOrderByIdWithDetailsAndReviews(orderId)); } } } diff --git a/Alligator/Commands/TabItemOrders/AddProductWindowOfAddOrderCommand.cs b/Alligator/Commands/TabItemOrders/AddProductWindowOfAddOrderCommand.cs index a37a53a..3260855 100644 --- a/Alligator/Commands/TabItemOrders/AddProductWindowOfAddOrderCommand.cs +++ b/Alligator/Commands/TabItemOrders/AddProductWindowOfAddOrderCommand.cs @@ -3,16 +3,13 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; namespace Alligator.UI.Commands.TabItemOrders { - class AddProductWindowOfAddOrderCommand : CommandBase + public class AddProductWindowOfAddOrderCommand : CommandBase { - private TabItemOrdersViewModel _viewModel; + private readonly TabItemOrdersViewModel _viewModel; public AddProductWindowOfAddOrderCommand(TabItemOrdersViewModel viewModel) { _viewModel = viewModel; @@ -21,12 +18,13 @@ public AddProductWindowOfAddOrderCommand(TabItemOrdersViewModel viewModel) public override void Execute(object parameter) { var newAmount = _viewModel.NewAmount; - if (!int.TryParse(newAmount, out _)|| string.IsNullOrEmpty(newAmount)) + if (!int.TryParse(newAmount, out _) || string.IsNullOrEmpty(newAmount)) { MessageBox.Show("Введите количество продуктов"); return; } int amount = Convert.ToInt32(newAmount); + if (_viewModel.SelectedProduct is null) { MessageBox.Show("Выберите продукт"); @@ -43,10 +41,10 @@ public override void Execute(object parameter) _viewModel.NewOrderDetails = new ObservableCollection(); } - var newOrderDetail = new OrderDetailModel() { Product=_viewModel.SelectedProduct, Amount=amount, Order=_viewModel.NewOrder}; + var newOrderDetail = new OrderDetailModel() { Product = _viewModel.SelectedProduct, Amount = amount, Order = _viewModel.NewOrder }; _viewModel.NewOrder.OrderDetails.Add(newOrderDetail); - _viewModel.NewOrderDetails.Add(newOrderDetail); + _viewModel.NewOrderDetails.Add(newOrderDetail); } - } + } } diff --git a/Alligator/Commands/TabItemOrders/AddProductWindowOfChangeOrderCommand.cs b/Alligator/Commands/TabItemOrders/AddProductWindowOfChangeOrderCommand.cs new file mode 100644 index 0000000..28b86eb --- /dev/null +++ b/Alligator/Commands/TabItemOrders/AddProductWindowOfChangeOrderCommand.cs @@ -0,0 +1,55 @@ +using Alligator.BusinessLayer; +using Alligator.BusinessLayer.Models; +using Alligator.UI.VIewModels.TabItemsViewModels; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Windows; + +namespace Alligator.UI.Commands.TabItemOrders +{ + class AddProductWindowOfChangeOrderCommand : CommandBase + { + private readonly TabItemOrdersViewModel _viewModel; + private readonly OrderDetailService _orderDetailService; + public AddProductWindowOfChangeOrderCommand(TabItemOrdersViewModel viewModel, OrderDetailService orderDetailService) + { + _viewModel = viewModel; + _orderDetailService = orderDetailService; + } + + public override void Execute(object parameter) + { + var newAmount = _viewModel.NewAmount; + if (!int.TryParse(newAmount, out _) || string.IsNullOrEmpty(newAmount)) + { + MessageBox.Show("Введите количество продуктов"); + return; + } + int amount = Convert.ToInt32(newAmount); + + if (_viewModel.SelectedProduct is null) + { + MessageBox.Show("Выберите продукт"); + return; + } + if (_viewModel.SelectedOrder.OrderDetails is null) + { + List orderDetails = new List(); + + _viewModel.SelectedOrder.OrderDetails = orderDetails; + } + if (_viewModel.OrderDetails is null) + { + _viewModel.OrderDetails = new ObservableCollection(); + } + + var orderDetail = new OrderDetailModel() { Product = _viewModel.SelectedProduct, Amount = amount, Order = _viewModel.SelectedOrder }; + _viewModel.SelectedOrder.OrderDetails.Add(orderDetail); + _viewModel.OrderDetails.Add(orderDetail); + _orderDetailService.AddOrderDetailModel(amount, _viewModel.SelectedOrder.Id, _viewModel.SelectedProduct.Id); + } + } + +} + diff --git a/Alligator/Commands/TabItemOrders/AddReviewWindowOfAddOrderCommand.cs b/Alligator/Commands/TabItemOrders/AddReviewWindowOfAddOrderCommand.cs index 1866d64..4fc863f 100644 --- a/Alligator/Commands/TabItemOrders/AddReviewWindowOfAddOrderCommand.cs +++ b/Alligator/Commands/TabItemOrders/AddReviewWindowOfAddOrderCommand.cs @@ -1,19 +1,14 @@ -using Alligator.BusinessLayer; -using Alligator.BusinessLayer.Models; +using Alligator.BusinessLayer.Models; using Alligator.UI.VIewModels.TabItemsViewModels; -using System; using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; namespace Alligator.UI.Commands.TabItemOrders { - class AddReviewWindowOfAddOrderCommand : CommandBase + public class AddReviewWindowOfAddOrderCommand : CommandBase { - private TabItemOrdersViewModel _viewModel; + private readonly TabItemOrdersViewModel _viewModel; public AddReviewWindowOfAddOrderCommand(TabItemOrdersViewModel viewModel) { @@ -29,7 +24,7 @@ public override void Execute(object parameter) MessageBox.Show("Введите текст отзыва"); return; } - + if (_viewModel.NewOrder.OrderReviews is null) { List orderReviews = new List(); @@ -38,15 +33,15 @@ public override void Execute(object parameter) } if (_viewModel.NewOrderReviews is null) { - + _viewModel.NewOrderReviews = new ObservableCollection(); } - var newOrderReview = new OrderReviewModel() { Order=_viewModel.NewOrder, Text = newReview }; + var newOrderReview = new OrderReviewModel() { Order = _viewModel.NewOrder, Text = newReview }; _viewModel.NewOrder.OrderReviews.Add(newOrderReview); - _viewModel.NewOrderReviews.Add(newOrderReview); + _viewModel.NewOrderReviews.Add(newOrderReview); _viewModel.NewReviewText = string.Empty; } - } + } } diff --git a/Alligator/Commands/TabItemOrders/AddReviewWindowOfOrderInfoCommand.cs b/Alligator/Commands/TabItemOrders/AddReviewWindowOfOrderInfoCommand.cs index efe0a44..7156215 100644 --- a/Alligator/Commands/TabItemOrders/AddReviewWindowOfOrderInfoCommand.cs +++ b/Alligator/Commands/TabItemOrders/AddReviewWindowOfOrderInfoCommand.cs @@ -1,21 +1,16 @@ using Alligator.BusinessLayer; using Alligator.BusinessLayer.Models; -using Alligator.DataLayer.Entities; using Alligator.UI.VIewModels.TabItemsViewModels; -using System; using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; namespace Alligator.UI.Commands.TabItemOrders { - internal class AddReviewWindowOfOrderInfoCommand : CommandBase + internal class AddReviewWindowOfOrderInfoCommand : CommandBase { - private TabItemOrdersViewModel _viewModel; - private OrderReviewService _orderReviewService; + private readonly TabItemOrdersViewModel _viewModel; + private readonly OrderReviewService _orderReviewService; public AddReviewWindowOfOrderInfoCommand(TabItemOrdersViewModel viewModel, OrderReviewService orderReviewService) { @@ -32,14 +27,14 @@ public override void Execute(object parameter) MessageBox.Show("Введите текст отзыва"); return; } - + if (_viewModel.SelectedOrder.OrderReviews is null) { List orderReviews = new List(); - - _viewModel.SelectedOrder.OrderReviews=orderReviews; + + _viewModel.SelectedOrder.OrderReviews = orderReviews; } - + if (_viewModel.OrderReviews is null) { ObservableCollection orderReviews = new ObservableCollection(); @@ -47,9 +42,9 @@ public override void Execute(object parameter) _viewModel.OrderReviews = orderReviews; } - var newOrderReview = new OrderReviewModel() {Order=_viewModel.SelectedOrder, Text=newReview }; + var newOrderReview = new OrderReviewModel() { Order = _viewModel.SelectedOrder, Text = newReview }; _viewModel.OrderReviews.Add(newOrderReview); - _orderReviewService.AddOrderReviewModel(newReview, _viewModel.SelectedOrder.Id); + _orderReviewService.AddOrderReviewModel(newReview, _viewModel.SelectedOrder.Id); _viewModel.NewReviewText = string.Empty; } } diff --git a/Alligator/Commands/TabItemOrders/ComeBackFirstWindowCommand.cs b/Alligator/Commands/TabItemOrders/ComeBackFirstWindowCommand.cs index 36a5078..19ba8c4 100644 --- a/Alligator/Commands/TabItemOrders/ComeBackFirstWindowCommand.cs +++ b/Alligator/Commands/TabItemOrders/ComeBackFirstWindowCommand.cs @@ -1,27 +1,37 @@ -using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Alligator.BusinessLayer; +using Alligator.UI.VIewModels.TabItemsViewModels; using System.Windows; namespace Alligator.UI.Commands.TabItemOrders { public class ComeBackFirstWindowCommand : CommandBase { - private TabItemOrdersViewModel _viewModel; + private readonly TabItemOrdersViewModel _viewModel; + private readonly OrderService _orderService; - public ComeBackFirstWindowCommand(TabItemOrdersViewModel viewModel) + public ComeBackFirstWindowCommand(TabItemOrdersViewModel viewModel, OrderService orderService) { _viewModel = viewModel; + _orderService = orderService; } public override void Execute(object parameter) { - _viewModel.AddOrderWindowVisibility= Visibility.Collapsed; + _viewModel.AddOrderWindowVisibility = Visibility.Collapsed; _viewModel.OrdersInfoWindowVisibility = Visibility.Collapsed; - _viewModel.OrdersWindowVisibility = Visibility.Visible; + _viewModel.ChangeOrderWindowVisibility = Visibility.Collapsed; + _viewModel.OrdersWindowVisibility = Visibility.Visible; + _viewModel.AllOrders.Clear(); + if (_orderService.GetOrders().Success is true) + { + var orders = _orderService.GetOrders().Data; + foreach (var order in orders) + _viewModel.AllOrders.Add(order); + } + else + { + MessageBox.Show("Ошибка", "Error", MessageBoxButton.OK); + } } } } diff --git a/Alligator/Commands/TabItemOrders/DeleteDetailCommand.cs b/Alligator/Commands/TabItemOrders/DeleteDetailCommand.cs new file mode 100644 index 0000000..f9d0394 --- /dev/null +++ b/Alligator/Commands/TabItemOrders/DeleteDetailCommand.cs @@ -0,0 +1,32 @@ +using Alligator.BusinessLayer; +using Alligator.UI.VIewModels.TabItemsViewModels; + +namespace Alligator.UI.Commands.TabItemOrders +{ + class DeleteDetailCommand : CommandBase + { + + private readonly TabItemOrdersViewModel _viewModel; + private readonly OrderDetailService _orderDetailService; + + + public DeleteDetailCommand(TabItemOrdersViewModel viewModel, OrderDetailService orderDetailService) + { + _viewModel = viewModel; + _orderDetailService = orderDetailService; + } + public override bool CanExecute(object parameter) + { + return _viewModel.SelectedOrderDetail is not null; + } + + public override void Execute(object parameter) + { + _orderDetailService.DeleteOrderDetailModel(_viewModel.SelectedOrderDetail.Id); + _viewModel.OrderDetails.Remove(_viewModel.SelectedOrderDetail); + } + + + + } +} diff --git a/Alligator/Commands/TabItemOrders/DeleteNewDetailCommand.cs b/Alligator/Commands/TabItemOrders/DeleteNewDetailCommand.cs new file mode 100644 index 0000000..a6da8b4 --- /dev/null +++ b/Alligator/Commands/TabItemOrders/DeleteNewDetailCommand.cs @@ -0,0 +1,23 @@ +using Alligator.UI.VIewModels.TabItemsViewModels; + +namespace Alligator.UI.Commands.TabItemOrders +{ + public class DeleteNewDetailCommand : CommandBase + { + private readonly TabItemOrdersViewModel _viewModel; + + public DeleteNewDetailCommand(TabItemOrdersViewModel viewModel) + { + _viewModel = viewModel; + } + + public override bool CanExecute(object parameter) + { + return _viewModel.SelectedNewOrderDetail is not null; + } + public override void Execute(object parameter) + { + _viewModel.NewOrderDetails.Remove(_viewModel.SelectedNewOrderDetail); + } + } +} diff --git a/Alligator/Commands/TabItemOrders/DeleteOrderCommand.cs b/Alligator/Commands/TabItemOrders/DeleteOrderCommand.cs new file mode 100644 index 0000000..82abf2f --- /dev/null +++ b/Alligator/Commands/TabItemOrders/DeleteOrderCommand.cs @@ -0,0 +1,43 @@ +using Alligator.BusinessLayer; +using Alligator.UI.VIewModels.TabItemsViewModels; +using System.Windows; + +namespace Alligator.UI.Commands.TabItemOrders +{ + public class DeleteOrderCommand : CommandBase + { + + private readonly TabItemOrdersViewModel _viewModel; + private readonly OrderService _orderService; + private readonly OrderDetailService _orderDetailService; + private readonly OrderReviewService _orderReviewService; + + public DeleteOrderCommand(TabItemOrdersViewModel viewModel, OrderService orderService, OrderDetailService orderDetailService, OrderReviewService orderReviewService) + { + _viewModel = viewModel; + _orderService = orderService; + _orderReviewService = orderReviewService; + _orderDetailService = orderDetailService; + } + public override bool CanExecute(object parameter) + { + return _viewModel.SelectedOrder is not null; + } + + public override void Execute(object parameter) + { + var userAnswer = MessageBox.Show("Удалить заказ?", "Удаление", MessageBoxButton.YesNo, MessageBoxImage.Question); + if (userAnswer == MessageBoxResult.Yes) + { + _orderReviewService.DeleteOrderReviewModelByOrderId(_viewModel.SelectedOrder.Id); + _orderDetailService.DeleteOrderDetailModelByOrderId(_viewModel.SelectedOrder.Id); + _orderService.DeleteOrderModel(_viewModel.SelectedOrder.Id); + _viewModel.AllOrders.Remove(_viewModel.SelectedOrder); + _viewModel.AddOrderWindowVisibility = Visibility.Collapsed; + _viewModel.OrdersInfoWindowVisibility = Visibility.Collapsed; + _viewModel.ChangeOrderWindowVisibility = Visibility.Collapsed; + _viewModel.OrdersWindowVisibility = Visibility.Visible; + } + } + } +} diff --git a/Alligator/Commands/TabItemOrders/DeleteOrderWindowOfAllOrdersCommand.cs b/Alligator/Commands/TabItemOrders/DeleteOrderWindowOfAllOrdersCommand.cs deleted file mode 100644 index 3d0ce95..0000000 --- a/Alligator/Commands/TabItemOrders/DeleteOrderWindowOfAllOrdersCommand.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Alligator.BusinessLayer; -using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Alligator.UI.Commands.TabItemOrders -{ - public class DeleteOrderWindowOfAllOrdersCommand : CommandBase - { - - private TabItemOrdersViewModel _viewModel; - private OrderService _orderService; - private OrderDetailService _orderDetailService; - private OrderReviewService _orderReviewService; - - public DeleteOrderWindowOfAllOrdersCommand(TabItemOrdersViewModel viewModel, OrderService orderService, OrderDetailService orderDetailService, OrderReviewService orderReviewService) - { - _viewModel = viewModel; - _orderService = orderService; - _orderReviewService = orderReviewService; - _orderDetailService = orderDetailService; - } - public override bool CanExecute(object parameter) - { - return _viewModel.SelectedOrder is not null; - } - - public override void Execute(object parameter) - { - _orderReviewService.DeleteOrderReviewModelByOrderId(_viewModel.SelectedOrder.Id); - _orderDetailService.DeleteOrderDetailModelByOrderId(_viewModel.SelectedOrder.Id); - _orderService.DeleteOrderModel(_viewModel.SelectedOrder.Id); - _viewModel.AllOrders.Remove(_viewModel.SelectedOrder); - } - } -} diff --git a/Alligator/Commands/TabItemOrders/DeleteOrderWindowOfOrderInfoCommand.cs b/Alligator/Commands/TabItemOrders/DeleteOrderWindowOfOrderInfoCommand.cs deleted file mode 100644 index 8df8cfa..0000000 --- a/Alligator/Commands/TabItemOrders/DeleteOrderWindowOfOrderInfoCommand.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Alligator.BusinessLayer; -using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; - -namespace Alligator.UI.Commands.TabItemOrders -{ - class DeleteOrderWindowOfOrderInfoCommand : CommandBase - { - - private TabItemOrdersViewModel _viewModel; - private OrderService _orderService; - private OrderDetailService _orderDetailService; - private OrderReviewService _orderReviewService; - - public DeleteOrderWindowOfOrderInfoCommand(TabItemOrdersViewModel viewModel, OrderService orderService, OrderDetailService orderDetailService, OrderReviewService orderReviewService) - { - _viewModel = viewModel; - _orderService = orderService; - _orderReviewService = orderReviewService; - _orderDetailService = orderDetailService; - } - - public override void Execute(object parameter) - { - _orderReviewService.DeleteOrderReviewModelByOrderId(_viewModel.SelectedOrder.Id); - _orderDetailService.DeleteOrderDetailModelByOrderId(_viewModel.SelectedOrder.Id); - _orderService.DeleteOrderModel(_viewModel.SelectedOrder.Id); - _viewModel.AllOrders.Remove(_viewModel.SelectedOrder); - _viewModel.AddOrderWindowVisibility = Visibility.Collapsed; - _viewModel.OrdersInfoWindowVisibility = Visibility.Collapsed; - _viewModel.OrdersWindowVisibility = Visibility.Visible; - } - - } -} diff --git a/Alligator/Commands/TabItemOrders/DeleteReviewWindowOfAddOrderCommand.cs b/Alligator/Commands/TabItemOrders/DeleteReviewWindowOfAddOrderCommand.cs index 0189447..5e76335 100644 --- a/Alligator/Commands/TabItemOrders/DeleteReviewWindowOfAddOrderCommand.cs +++ b/Alligator/Commands/TabItemOrders/DeleteReviewWindowOfAddOrderCommand.cs @@ -1,17 +1,11 @@ -using Alligator.BusinessLayer; -using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Alligator.UI.VIewModels.TabItemsViewModels; namespace Alligator.UI.Commands.TabItemOrders { - class DeleteReviewWindowOfAddOrderCommand : CommandBase + public class DeleteReviewWindowOfAddOrderCommand : CommandBase { - private TabItemOrdersViewModel _viewModel; - + private readonly TabItemOrdersViewModel _viewModel; + public DeleteReviewWindowOfAddOrderCommand(TabItemOrdersViewModel viewModel) { _viewModel = viewModel; @@ -25,5 +19,5 @@ public override void Execute(object parameter) { _viewModel.NewOrderReviews.Remove(_viewModel.SelectedNewOrderReview); } - } + } } diff --git a/Alligator/Commands/TabItemOrders/DeleteReviewWindowOfOrderInfoCommand.cs b/Alligator/Commands/TabItemOrders/DeleteReviewWindowOfOrderInfoCommand.cs index 9c9e80f..50775fd 100644 --- a/Alligator/Commands/TabItemOrders/DeleteReviewWindowOfOrderInfoCommand.cs +++ b/Alligator/Commands/TabItemOrders/DeleteReviewWindowOfOrderInfoCommand.cs @@ -1,17 +1,12 @@ using Alligator.BusinessLayer; using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Alligator.UI.Commands.TabItemOrders { - class DeleteReviewWindowOfOrderInfoCommand : CommandBase + public class DeleteReviewWindowOfOrderInfoCommand : CommandBase { - private TabItemOrdersViewModel _viewModel; - private OrderReviewService _orderReviewService; + private readonly TabItemOrdersViewModel _viewModel; + private readonly OrderReviewService _orderReviewService; public DeleteReviewWindowOfOrderInfoCommand(TabItemOrdersViewModel viewModel, OrderReviewService orderReviewService) { diff --git a/Alligator/Commands/TabItemOrders/GetOrdersCommand.cs b/Alligator/Commands/TabItemOrders/GetOrdersCommand.cs index 3e8b48e..407da2e 100644 --- a/Alligator/Commands/TabItemOrders/GetOrdersCommand.cs +++ b/Alligator/Commands/TabItemOrders/GetOrdersCommand.cs @@ -1,19 +1,12 @@ using Alligator.BusinessLayer; -using Alligator.BusinessLayer.Models; using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Alligator.UI.Commands.TabItemOrders { public class GetOrdersCommand : CommandBase { - private TabItemOrdersViewModel _viewModel; - private OrderService _orderService; + private readonly TabItemOrdersViewModel _viewModel; + private readonly OrderService _orderService; public GetOrdersCommand(TabItemOrdersViewModel viewModel, OrderService orderService) { @@ -25,7 +18,7 @@ public override void Execute(object parameter) { _viewModel.AllOrders.Clear(); - foreach (var order in _orderService.GetOrders()) + foreach (var order in _orderService.GetOrders().Data) { _viewModel.AllOrders.Add(order); } diff --git a/Alligator/Commands/TabItemOrders/OpenAddOrderWindowCommand.cs b/Alligator/Commands/TabItemOrders/OpenAddOrderWindowCommand.cs index 56f07e3..84a5b95 100644 --- a/Alligator/Commands/TabItemOrders/OpenAddOrderWindowCommand.cs +++ b/Alligator/Commands/TabItemOrders/OpenAddOrderWindowCommand.cs @@ -3,49 +3,55 @@ using Alligator.BusinessLayer.Services; using Alligator.UI.VIewModels.TabItemsViewModels; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; namespace Alligator.UI.Commands.TabItemOrders { public class OpenAddOrderWindowCommand : CommandBase { - private TabItemOrdersViewModel _viewModel; - private ClientService _clientService; - //private ProductService _productService; + private readonly TabItemOrdersViewModel _viewModel; + private readonly ClientService _clientService; + private readonly ProductService _productService; - public OpenAddOrderWindowCommand(TabItemOrdersViewModel viewModel, ClientService clientService) + public OpenAddOrderWindowCommand(TabItemOrdersViewModel viewModel, ClientService clientService, ProductService productService) { _viewModel = viewModel; _clientService = clientService; + _productService = productService; } public override void Execute(object parameter) { _viewModel.NewDate = DateTime.Now; + _viewModel.NewAmount = string.Empty; + _viewModel.NewAddressText = string.Empty; + _viewModel.NewOrderReviews.Clear(); + _viewModel.NewOrderDetails.Clear(); _viewModel.NewOrder = new OrderModel() { Address = _viewModel.NewAddressText, Client = _viewModel.SelectedClient, Date = _viewModel.NewDate }; _viewModel.Clients.Clear(); - if (_clientService.GetAllClients().Success is true) + var clientsActionResult = _clientService.GetAllClients(); + if (clientsActionResult.Success) { - var clients = _clientService.GetAllClients().Data; - foreach (var client in clients) + foreach (var client in clientsActionResult.Data) _viewModel.Clients.Add(client); } else { MessageBox.Show("Ошибка", "Error", MessageBoxButton.OK); } - //пока нет productServic'а - //foreach (var product in _productService.GetAllProducts()) - //{ - // _viewModel.Products.Add(product); - //} + _viewModel.Products.Clear(); + var productsActionResult = _productService.GetAllProducts(); + if (productsActionResult.Success) + { + foreach (var product in productsActionResult.Data) + { + _viewModel.Products.Add(product); + } + } _viewModel.OrdersWindowVisibility = Visibility.Collapsed; _viewModel.OrdersInfoWindowVisibility = Visibility.Collapsed; - _viewModel.AddOrderWindowVisibility = Visibility.Visible; + _viewModel.ChangeOrderWindowVisibility = Visibility.Collapsed; + _viewModel.AddOrderWindowVisibility = Visibility.Visible; } } } diff --git a/Alligator/Commands/TabItemOrders/OpenChangeOrderWindowOfOrderInfoCommand.cs b/Alligator/Commands/TabItemOrders/OpenChangeOrderWindowOfOrderInfoCommand.cs new file mode 100644 index 0000000..247a81d --- /dev/null +++ b/Alligator/Commands/TabItemOrders/OpenChangeOrderWindowOfOrderInfoCommand.cs @@ -0,0 +1,57 @@ +using Alligator.BusinessLayer; +using Alligator.BusinessLayer.Services; +using Alligator.UI.VIewModels.TabItemsViewModels; +using System.Windows; + +namespace Alligator.UI.Commands.TabItemOrders +{ + public class OpenChangeOrderWindowOfOrderInfoCommand : CommandBase + { + private readonly TabItemOrdersViewModel _viewModel; + private readonly OrderDetailService _orderDetailService; + private readonly ClientService _clientService; + private readonly ProductService _productService; + + + public OpenChangeOrderWindowOfOrderInfoCommand(TabItemOrdersViewModel viewModel, OrderDetailService orderDetailService, ClientService clientService, ProductService productService) + { + _viewModel = viewModel; + _orderDetailService = orderDetailService; + _clientService = clientService; + _productService = productService; + + } + + public override void Execute(object parameter) + { + _viewModel.AddOrderWindowVisibility = Visibility.Collapsed; + _viewModel.OrdersInfoWindowVisibility = Visibility.Collapsed; + _viewModel.ChangeOrderWindowVisibility = Visibility.Visible; + _viewModel.OrdersWindowVisibility = Visibility.Collapsed; + _viewModel.ChangedDate = _viewModel.SelectedOrder.Date; + _viewModel.ChangedAddressText = _viewModel.SelectedOrder.Address; + _viewModel.Clients.Clear(); + var clientsActionResult = _clientService.GetAllClients(); + if (clientsActionResult.Success) + { + foreach (var client in clientsActionResult.Data) + _viewModel.Clients.Add(client); + } + else + { + MessageBox.Show("Ошибка", "Error", MessageBoxButton.OK); + } + _viewModel.Products.Clear(); + var productsActionResult = _productService.GetAllProducts(); + if (productsActionResult.Success) + { + foreach (var product in productsActionResult.Data) + { + _viewModel.Products.Add(product); + } + } + _viewModel.SelectedChangeClient = _viewModel.SelectedOrder.Client; + _viewModel.SelectedOrder.OrderDetails = _orderDetailService.GetOrderDetailsByOrderId(_viewModel.SelectedOrder.Id); + } + } +} diff --git a/Alligator/Commands/TabItemOrders/OpenOrderInfoWindowCommand.cs b/Alligator/Commands/TabItemOrders/OpenOrderInfoWindowCommand.cs index fea4aa2..865c44e 100644 --- a/Alligator/Commands/TabItemOrders/OpenOrderInfoWindowCommand.cs +++ b/Alligator/Commands/TabItemOrders/OpenOrderInfoWindowCommand.cs @@ -1,20 +1,15 @@ using Alligator.BusinessLayer; using Alligator.BusinessLayer.Models; using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; namespace Alligator.UI.Commands.TabItemOrders { public class OpenOrderInfoWindowCommand : CommandBase { - private TabItemOrdersViewModel _viewModel; - private OrderService _orderService; + private readonly TabItemOrdersViewModel _viewModel; + private readonly OrderService _orderService; public OpenOrderInfoWindowCommand(TabItemOrdersViewModel viewModel, OrderService orderService) { @@ -30,8 +25,12 @@ public override void Execute(object parameter) { _viewModel.OrdersWindowVisibility = Visibility.Collapsed; _viewModel.AddOrderWindowVisibility = Visibility.Collapsed; + _viewModel.ChangeOrderWindowVisibility = Visibility.Collapsed; _viewModel.OrdersInfoWindowVisibility = Visibility.Visible; - var order = _orderService.GetOrderByIdWithDetailsAndReviews(_viewModel.SelectedOrder.Id); + _viewModel.SelectedOrderDate = _viewModel.SelectedOrder.Date; + _viewModel.SelectedOrderAddress = _viewModel.SelectedOrder.Address; + _viewModel.SelectedOrderClient = _viewModel.SelectedOrder.Client; + var order = _orderService.GetOrderByIdWithDetailsAndReviews(_viewModel.SelectedOrder.Id).Data; _viewModel.OrderReviews = new ObservableCollection(order.OrderReviews); _viewModel.OrderDetails = new ObservableCollection(order.OrderDetails); } diff --git a/Alligator/Commands/TabItemOrders/SaveChangedOrderCommand.cs b/Alligator/Commands/TabItemOrders/SaveChangedOrderCommand.cs new file mode 100644 index 0000000..2594692 --- /dev/null +++ b/Alligator/Commands/TabItemOrders/SaveChangedOrderCommand.cs @@ -0,0 +1,67 @@ +using Alligator.BusinessLayer; +using Alligator.BusinessLayer.Models; +using Alligator.UI.VIewModels.TabItemsViewModels; +using System.Collections.ObjectModel; +using System.Windows; + +namespace Alligator.UI.Commands.TabItemOrders +{ + class SaveChangedOrderCommand : CommandBase + { + private readonly TabItemOrdersViewModel _viewModel; + private readonly OrderService _orderService; + + public SaveChangedOrderCommand(TabItemOrdersViewModel viewModel, OrderService orderService) + { + _viewModel = viewModel; + _orderService = orderService; + } + + public override void Execute(object parameter) + { + var address = _viewModel.ChangedAddressText; + if (string.IsNullOrEmpty(address)) + { + MessageBox.Show("Введите адрес"); + _viewModel.NewAddressText = string.Empty; + } + address = _viewModel.ChangedAddressText.Trim(); + + if (_viewModel.SelectedChangeClient is null) + { + MessageBox.Show("Выберите клиента"); + return; + } + + if (_viewModel.SelectedOrder.OrderDetails.Count == 0) + { + MessageBox.Show("Выберите продукты и их количество"); + return; + } + _viewModel.SelectedOrder.Address = address; + _viewModel.SelectedOrder.Date = _viewModel.ChangedDate; + _viewModel.SelectedOrder.Client = _viewModel.SelectedClient; + OrderModel editedOrder = new OrderModel() { Id = _viewModel.SelectedOrder.Id, Address = address, Client = _viewModel.SelectedChangeClient, Date = _viewModel.ChangedDate }; + + if (!_orderService.EditOrderModel(editedOrder)) + { + MessageBox.Show("Ошибка при сохранении данных", "Error", MessageBoxButton.OK); + return; + } + else + { + var order = _orderService.GetOrderByIdWithDetailsAndReviews(_viewModel.SelectedOrder.Id).Data; + _viewModel.OrderReviews = new ObservableCollection(order.OrderReviews); + _viewModel.OrderDetails = new ObservableCollection(order.OrderDetails); + _viewModel.SelectedOrderDate = _viewModel.SelectedOrder.Date; + _viewModel.SelectedOrderAddress = _viewModel.SelectedOrder.Address; + _viewModel.SelectedOrderClient = _viewModel.SelectedOrder.Client; + MessageBox.Show("Данные заказа изменены"); + } + _viewModel.AddOrderWindowVisibility = Visibility.Collapsed; + _viewModel.OrdersInfoWindowVisibility = Visibility.Visible; + _viewModel.ChangeOrderWindowVisibility = Visibility.Collapsed; + _viewModel.OrdersWindowVisibility = Visibility.Collapsed; + } + } +} diff --git a/Alligator/Commands/TabItemOrders/SaveChangesWindowOfOrderInfoCommand.cs b/Alligator/Commands/TabItemOrders/SaveChangesWindowOfOrderInfoCommand.cs deleted file mode 100644 index 385ef37..0000000 --- a/Alligator/Commands/TabItemOrders/SaveChangesWindowOfOrderInfoCommand.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Alligator.BusinessLayer; -using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; - -namespace Alligator.UI.Commands.TabItemOrders -{ - public class SaveChangesWindowOfOrderInfoCommand : CommandBase - { - private TabItemOrdersViewModel _viewModel; - private OrderService _orderService; - private OrderDetailService _orderDetailService; - private OrderReviewService _orderReviewService; - - public SaveChangesWindowOfOrderInfoCommand(TabItemOrdersViewModel viewModel, OrderService orderService, OrderDetailService orderDetailService, OrderReviewService orderReviewService) - { - _viewModel = viewModel; - _orderService = orderService; - _orderReviewService = orderReviewService; - _orderDetailService = orderDetailService; - } - - public override void Execute(object parameter) - { - _orderService.EditOrderModel(_viewModel.SelectedOrder.Date, _viewModel.SelectedOrder.Id, _viewModel.SelectedOrder.Address); - _orderDetailService.EditOrderDetailModel(_viewModel.SelectedOrderDetail.Id, _viewModel.SelectedOrderDetail.Amount); - _orderReviewService.EditOrderReviewModel(_viewModel.SelectedOrderReview.Id, _viewModel.SelectedOrderReview.Text); - _viewModel.AddOrderWindowVisibility = Visibility.Collapsed; - _viewModel.OrdersInfoWindowVisibility = Visibility.Collapsed; - _viewModel.OrdersWindowVisibility = Visibility.Visible; - } - } -} diff --git a/Alligator/Commands/TabItemProducts/AddProduct.cs b/Alligator/Commands/TabItemProducts/AddProduct.cs index bae9293..216ec98 100644 --- a/Alligator/Commands/TabItemProducts/AddProduct.cs +++ b/Alligator/Commands/TabItemProducts/AddProduct.cs @@ -1,15 +1,13 @@ using Alligator.BusinessLayer; -using Alligator.BusinessLayer.Models; using Alligator.UI.Helpers; using Alligator.UI.ViewModels.TabItemsViewModels; -using System.Collections.Generic; using System.Windows; namespace Alligator.UI.Commands.TabItemProducts { class AddProduct : CommandBase { - private TabItemProductsViewModel _viewModel; + private readonly TabItemProductsViewModel _viewModel; private readonly ProductService _productService; public AddProduct(TabItemProductsViewModel viewModel, ProductService productService) { @@ -43,7 +41,7 @@ public override void Execute(object parameter) } _viewModel.Products.Add(productModelActionResult.Data); - + _viewModel.VisibilityAddProduct = Visibility.Collapsed; _viewModel.VisibilityAllProducts = Visibility.Visible; } diff --git a/Alligator/Commands/TabItemProducts/AddProductTagToProductToEdit.cs b/Alligator/Commands/TabItemProducts/AddProductTagToProductToEdit.cs index 2dd0289..68724d2 100644 --- a/Alligator/Commands/TabItemProducts/AddProductTagToProductToEdit.cs +++ b/Alligator/Commands/TabItemProducts/AddProductTagToProductToEdit.cs @@ -1,6 +1,4 @@ using Alligator.UI.ViewModels.TabItemsViewModels; -using System; -using System.Linq; using System.Windows; namespace Alligator.UI.Commands.TabItemProducts diff --git a/Alligator/Commands/TabItemProducts/DeleteProduct.cs b/Alligator/Commands/TabItemProducts/DeleteProduct.cs index 400f853..4360346 100644 --- a/Alligator/Commands/TabItemProducts/DeleteProduct.cs +++ b/Alligator/Commands/TabItemProducts/DeleteProduct.cs @@ -21,7 +21,7 @@ public override void Execute(object parameter) if (userAnswer == MessageBoxResult.Yes) { var deleted = _productService.DeleteProduct(_viewModel.SelectedProduct); - if(!deleted) + if (!deleted) { MessageBox.Show("Ошибка при записи в базу данных", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; diff --git a/Alligator/Helpers/UserInputValidation.cs b/Alligator/Helpers/UserInputValidation.cs index 1baa7e0..1b41f07 100644 --- a/Alligator/Helpers/UserInputValidation.cs +++ b/Alligator/Helpers/UserInputValidation.cs @@ -1,10 +1,5 @@ -using Alligator.UI.VIewModels.TabItemsViewModels; -using System; -using System.Collections.Generic; -using System.Linq; +using System; using System.Net.Mail; -using System.Text; -using System.Threading.Tasks; namespace Alligator.UI.Helpers { diff --git a/Alligator/TabItems/TabItemCategories.xaml.cs b/Alligator/TabItems/TabItemCategories.xaml.cs index c194283..1442431 100644 --- a/Alligator/TabItems/TabItemCategories.xaml.cs +++ b/Alligator/TabItems/TabItemCategories.xaml.cs @@ -1,5 +1,4 @@ -using Alligator.UI.ViewModels.TabItemsViewModels; -using System.Windows.Controls; +using System.Windows.Controls; namespace Alligator.UI.TabItems { diff --git a/Alligator/TabItems/TabItemOrders.xaml b/Alligator/TabItems/TabItemOrders.xaml index d8fcd05..71c7564 100644 --- a/Alligator/TabItems/TabItemOrders.xaml +++ b/Alligator/TabItems/TabItemOrders.xaml @@ -28,7 +28,7 @@ - + @@ -42,7 +42,7 @@ - + @@ -69,7 +69,7 @@ Состав заказа - + @@ -77,9 +77,9 @@ - - - + + + @@ -102,9 +102,10 @@ - + + @@ -114,30 +115,35 @@ - - + + - + + + + + - - - + + + + - - + + @@ -168,33 +174,31 @@ - - + + - - - + + + - - + + - - - - + + + @@ -223,12 +227,17 @@ - + + + + + + @@ -244,6 +253,113 @@ + + + + + + + + + + + + + + + + + + + Дата + Клиент + Адрес + Продукты + Количество + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Alligator/TabItems/TabItemOrders.xaml.cs b/Alligator/TabItems/TabItemOrders.xaml.cs index df407e7..49c7eef 100644 --- a/Alligator/TabItems/TabItemOrders.xaml.cs +++ b/Alligator/TabItems/TabItemOrders.xaml.cs @@ -17,8 +17,9 @@ public TabItemOrders() InitializeComponent(); _viewModel = new TabItemOrdersViewModel(); DataContext = _viewModel; - _viewModel.AddOrderWindowVisibility = Visibility.Collapsed; + _viewModel.AddOrderWindowVisibility = Visibility.Collapsed; _viewModel.OrdersInfoWindowVisibility = Visibility.Collapsed; + _viewModel.ChangeOrderWindowVisibility = Visibility.Collapsed; } } } diff --git a/Alligator/VIewModels/EntitiesViewModels/OrderDetailViewModel.cs b/Alligator/VIewModels/EntitiesViewModels/OrderDetailViewModel.cs deleted file mode 100644 index d142f68..0000000 --- a/Alligator/VIewModels/EntitiesViewModels/OrderDetailViewModel.cs +++ /dev/null @@ -1,64 +0,0 @@ -using Alligator.BusinessLayer.Models; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Text; -using System.Threading.Tasks; - -namespace Alligator.UI.VIewModels.EntitiesViewModels -{ - class OrderDetailViewModel: BaseViewModel - { - private int _id; - - public int Id - { - get => _id; - set - { - _id = value; - OnPropertyChanged(nameof(Id)); - } - } - - private OrderModel _order; - - public OrderModel Order - { - get => _order; - set - { - _order = value; - OnPropertyChanged(nameof(Order)); - } - } - - private ProductModel _product; - - public ProductModel Product - { - get => _product; - set - { - _product = value; - OnPropertyChanged(nameof(Product)); - } - } - - private int _amount; - - public int Amount - { - get => _amount; - set - { - _amount = value; - OnPropertyChanged(nameof(Amount)); - } - } - - - } -} diff --git a/Alligator/VIewModels/EntitiesViewModels/OrderReviewViewModel.cs b/Alligator/VIewModels/EntitiesViewModels/OrderReviewViewModel.cs deleted file mode 100644 index 4ee3cc7..0000000 --- a/Alligator/VIewModels/EntitiesViewModels/OrderReviewViewModel.cs +++ /dev/null @@ -1,64 +0,0 @@ -using Alligator.BusinessLayer; -using Alligator.BusinessLayer.Models; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Text; -using System.Threading.Tasks; - -namespace Alligator.UI.VIewModels.EntitiesViewModels -{ - class OrderReviewViewModel : BaseViewModel - { - - private int _id; - - public int Id - { - get => _id; - set - { - _id = value; - OnPropertyChanged(nameof(Id)); - } - } - - private OrderModel _order; - - public OrderModel Order - { - get => _order; - set - { - _order = value; - OnPropertyChanged(nameof(Order)); - } - } - - private ClientModel _clientModel; - - public ClientModel Client - { - get => _clientModel; - set - { - _clientModel = value; - OnPropertyChanged(nameof(Client)); - } - } - - private string _text; - public string Text - { - get => _text; - set - { - _text = value; - OnPropertyChanged(nameof(Text)); - } - } - - } -} diff --git a/Alligator/VIewModels/EntitiesViewModels/OrderViewModel.cs b/Alligator/VIewModels/EntitiesViewModels/OrderViewModel.cs deleted file mode 100644 index a4bc69d..0000000 --- a/Alligator/VIewModels/EntitiesViewModels/OrderViewModel.cs +++ /dev/null @@ -1,84 +0,0 @@ -using Alligator.BusinessLayer; -using Alligator.BusinessLayer.Models; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.ComponentModel; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Text; -using System.Threading.Tasks; - -namespace Alligator.UI.VIewModels.EntitiesViewModels -{ - public class OrderViewModel: BaseViewModel - { - - private int _id; - private DateTime _date; - private ClientModel _clientModel; - private string _address; - private ObservableCollection _orderDetails; - private ObservableCollection orderReviews; - public int Id - { - get => _id; - set - { - _id = value; - OnPropertyChanged(nameof(Id)); - } - } - - public DateTime Date - { - get => _date; - set - { - _date = value; - OnPropertyChanged(nameof(Date)); - } - } - - public ClientModel Client - { - get => _clientModel; - set - { - _clientModel = value; - OnPropertyChanged(nameof(Client)); - } - } - - public string Address - { - get => _address; - set - { - _address = value; - OnPropertyChanged(nameof(Address)); - } - } - - public ObservableCollection OrderDetails - { - get => _orderDetails; - set - { - _orderDetails = value; - OnPropertyChanged(nameof(OrderDetails)); - } - } - - public ObservableCollection OrderReviews - { - get => orderReviews; - set - { - orderReviews = value; - OnPropertyChanged(nameof(OrderReviews)); - } - } - - } -} diff --git a/Alligator/VIewModels/EntitiesViewModels/OrderViewShortModel.cs b/Alligator/VIewModels/EntitiesViewModels/OrderViewShortModel.cs deleted file mode 100644 index 489433f..0000000 --- a/Alligator/VIewModels/EntitiesViewModels/OrderViewShortModel.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Alligator.BusinessLayer.Models; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Text; -using System.Threading.Tasks; - -namespace Alligator.UI.VIewModels.EntitiesViewModels -{ - public class OrderViewShortModel : BaseViewModel - { - private int _id; - public int Id - { - get { return _id; } - set - { - _id = value; - OnPropertyChanged(nameof(Id)); - } - } - - private DateTime _date; - - public DateTime Date - { - get { return _date; } - set - { - _date = value; - OnPropertyChanged(nameof(Date)); - } - } - - - private string _address; - - public string Address - { - get { return _address; } - set - { - _address = value; - OnPropertyChanged(nameof(Address)); - } - } - - private int _clientId; - public int ClientId - { - get { return _clientId; } - set - { - _clientId = value; - OnPropertyChanged(nameof(ClientId)); - } - } - } -} diff --git a/Alligator/VIewModels/TabItemsViewModels/TabItemOrdersViewModel.cs b/Alligator/VIewModels/TabItemsViewModels/TabItemOrdersViewModel.cs index a5cee1e..f6341ca 100644 --- a/Alligator/VIewModels/TabItemsViewModels/TabItemOrdersViewModel.cs +++ b/Alligator/VIewModels/TabItemsViewModels/TabItemOrdersViewModel.cs @@ -21,28 +21,37 @@ public class TabItemOrdersViewModel : BaseViewModel private OrderReviewModel _selectedNewOrderReviewModel; private ProductModel _selectedProduct; private ClientModel _selectedClient; + private ClientModel _selectedChangeClient; + private ClientModel _selectedOrderClient; + private string _selectedOrderAddress; + private DateTime _selectedOrderDate; private readonly OrderService _orderService; private readonly OrderReviewService _orderReviewService; private readonly OrderDetailService _orderDetailService; private readonly ClientService _clientService; + private readonly ProductService _productService; private string _newReviewText; private string _newAdressText; + private string _changedAddressText; private DateTime _newDate; - - public ICommand AddReviewWindowOfOrderInfo { get; set; } - public ICommand DeleteReviewWindowOfOrderInfo { get; set; } + private DateTime _changedDate; + public ICommand AddReview { get; set; } + public ICommand DeleteReview { get; set; } public ICommand GetOrders { get; set; } public ICommand GetOrderInfo { get; set; } - public ICommand DeleteOrderWindowOfAllOrders { get; set; } - public ICommand DeleteOrderWindowOfOrderInfo { get; set; } + public ICommand DeleteOrder { get; set; } public ICommand AddOrder { get; set; } - public ICommand SaveChangesWindowOfOrderInfo { get; set; } + public ICommand ChangeOrderWindowOfOrderInfo { get; set; } public ICommand OpenAddOrderWindow { get; set; } public ICommand OpenOrderInfoWindow { get; set; } public ICommand ComeBackFirstWindow { get; set; } public ICommand AddReviewWindowOfAddOrder { get; set; } public ICommand DeleteReviewWindowOfAddOrder { get; set; } public ICommand AddProductWindowOfAddOrder { get; set; } + public ICommand DeleteDetail { get; set; } + public ICommand DeleteNewDetail { get; set; } + public ICommand AddProductWindowOfChangeOrder { get; set; } + public ICommand SaveChangedOrder { get; set; } public TabItemOrdersViewModel() { @@ -50,6 +59,7 @@ public TabItemOrdersViewModel() _orderReviewService = new OrderReviewService(); _orderDetailService = new OrderDetailService(); _clientService = new ClientService(); + _productService = new ProductService(); AllOrders = new ObservableCollection(); Clients = new ObservableCollection(); @@ -57,23 +67,23 @@ public TabItemOrdersViewModel() NewOrderReviews = new ObservableCollection(); OrderReviews = new ObservableCollection(); OrderDetails = new ObservableCollection(); - NewOrderDetails = new ObservableCollection(); - NewOrder = new OrderModel(); - - AddReviewWindowOfOrderInfo = new AddReviewWindowOfOrderInfoCommand(this, _orderReviewService); - DeleteReviewWindowOfOrderInfo = new DeleteReviewWindowOfOrderInfoCommand(this, _orderReviewService); + NewOrderDetails = new ObservableCollection(); + AddReview = new AddReviewWindowOfOrderInfoCommand(this, _orderReviewService); + DeleteReview = new DeleteReviewWindowOfOrderInfoCommand(this, _orderReviewService); GetOrders = new GetOrdersCommand(this, _orderService); - DeleteOrderWindowOfAllOrders = new DeleteOrderWindowOfAllOrdersCommand(this, _orderService, _orderDetailService, _orderReviewService); - DeleteOrderWindowOfOrderInfo = new DeleteOrderWindowOfOrderInfoCommand(this, _orderService, _orderDetailService, _orderReviewService); + DeleteOrder = new DeleteOrderCommand(this, _orderService, _orderDetailService, _orderReviewService); AddOrder = new AddOrderCommand(this, _orderService, _orderReviewService, _orderDetailService); - SaveChangesWindowOfOrderInfo = new SaveChangesWindowOfOrderInfoCommand(this, _orderService, _orderDetailService, _orderReviewService); - OpenAddOrderWindow = new OpenAddOrderWindowCommand(this, _clientService); + ChangeOrderWindowOfOrderInfo = new OpenChangeOrderWindowOfOrderInfoCommand(this, _orderDetailService, _clientService, _productService); + OpenAddOrderWindow = new OpenAddOrderWindowCommand(this, _clientService, _productService); OpenOrderInfoWindow = new OpenOrderInfoWindowCommand(this, _orderService); - ComeBackFirstWindow = new ComeBackFirstWindowCommand(this); + ComeBackFirstWindow = new ComeBackFirstWindowCommand(this, _orderService); AddReviewWindowOfAddOrder = new AddReviewWindowOfAddOrderCommand(this); DeleteReviewWindowOfAddOrder = new DeleteReviewWindowOfAddOrderCommand(this); AddProductWindowOfAddOrder = new AddProductWindowOfAddOrderCommand(this); - + DeleteDetail = new DeleteDetailCommand(this, _orderDetailService); + DeleteNewDetail = new DeleteNewDetailCommand(this); + AddProductWindowOfChangeOrder = new AddProductWindowOfChangeOrderCommand(this, _orderDetailService); + SaveChangedOrder = new SaveChangedOrderCommand(this, _orderService); } @@ -110,7 +120,7 @@ public ObservableCollection NewOrderDetails OnPropertyChanged(nameof(NewOrderDetails)); } } - + private ObservableCollection _newOrderReviews; public ObservableCollection NewOrderReviews { @@ -121,7 +131,7 @@ public ObservableCollection NewOrderReviews OnPropertyChanged(nameof(NewOrderReviews)); } } - + private OrderModel _newOrder; public OrderModel NewOrder { @@ -161,7 +171,7 @@ public OrderModel SelectedOrder { _selectedOrder = value; ((CommandBase)OpenOrderInfoWindow).RaiseCanExecuteChanged(); - ((CommandBase)DeleteOrderWindowOfAllOrders).RaiseCanExecuteChanged(); + ((CommandBase)DeleteOrder).RaiseCanExecuteChanged(); OnPropertyChanged(nameof(SelectedOrder)); } } @@ -171,6 +181,7 @@ public OrderDetailModel SelectedOrderDetail set { _selectedOrderDetailModel = value; + ((CommandBase)DeleteDetail).RaiseCanExecuteChanged(); OnPropertyChanged(nameof(SelectedOrderDetail)); } } @@ -180,17 +191,19 @@ public OrderReviewModel SelectedOrderReview set { _selectedOrderReviewModel = value; - ((CommandBase)DeleteReviewWindowOfOrderInfo).RaiseCanExecuteChanged(); + ((CommandBase)DeleteReview).RaiseCanExecuteChanged(); OnPropertyChanged(nameof(SelectedOrderReview)); } } + public OrderDetailModel SelectedNewOrderDetail { get { return _selectedNewOrderDetailModel; } set { _selectedNewOrderDetailModel = value; + ((CommandBase)DeleteNewDetail).RaiseCanExecuteChanged(); OnPropertyChanged(nameof(SelectedNewOrderDetail)); } } @@ -215,6 +228,36 @@ public ClientModel SelectedClient } } + public ClientModel SelectedOrderClient + { + get { return _selectedOrderClient; } + set + { + _selectedOrderClient = value; + OnPropertyChanged(nameof(SelectedOrderClient)); + } + } + + public string SelectedOrderAddress + { + get { return _selectedOrderAddress; } + set + { + _selectedOrderAddress = value; + OnPropertyChanged(nameof(SelectedOrderAddress)); + } + } + + public ClientModel SelectedChangeClient + { + get { return _selectedChangeClient; } + set + { + _selectedChangeClient = value; + OnPropertyChanged(nameof(SelectedChangeClient)); + } + } + public ProductModel SelectedProduct { get { return _selectedProduct; } @@ -244,6 +287,15 @@ public string NewAddressText OnPropertyChanged(nameof(NewAddressText)); } } + public string ChangedAddressText + { + get { return _changedAddressText; } + set + { + _changedAddressText = value; + OnPropertyChanged(nameof(ChangedAddressText)); + } + } public DateTime NewDate { @@ -255,6 +307,27 @@ public DateTime NewDate } } + public DateTime SelectedOrderDate + { + get { return _selectedOrderDate; } + set + { + _selectedOrderDate = value; + OnPropertyChanged(nameof(SelectedOrderDate)); + } + } + + + public DateTime ChangedDate + { + get { return _changedDate; } + set + { + _changedDate = value; + OnPropertyChanged(nameof(ChangedDate)); + } + } + private string _newAmount; public string NewAmount { @@ -308,6 +381,21 @@ public Visibility AddOrderWindowVisibility } } + private Visibility _changeOrderWindowVisibility; + public Visibility ChangeOrderWindowVisibility + { + get + { + return _changeOrderWindowVisibility; + } + set + { + _changeOrderWindowVisibility = value; + + OnPropertyChanged(nameof(ChangeOrderWindowVisibility)); + } + } + private Visibility _buttonOpenOrderInfo; public Visibility ButtonOpenOrderInfo { @@ -351,5 +439,27 @@ public Visibility ButtonDeleteNewReview OnPropertyChanged(nameof(ButtonDeleteNewReview)); } } + + private Visibility _buttonDeleteDetail; + public Visibility ButtonDeleteDetail + { + get { return _buttonDeleteDetail; } + set + { + _buttonDeleteDetail = value; + OnPropertyChanged(nameof(ButtonDeleteDetail)); + } + } + + private Visibility _buttonDeleteNewDetail; + public Visibility ButtonDeleteNewDetail + { + get { return _buttonDeleteNewDetail; } + set + { + _buttonDeleteNewDetail = value; + OnPropertyChanged(nameof(ButtonDeleteNewDetail)); + } + } } }