public void CreateOrUpdate(OrderBindingModel model)
        {
            using (var context = new ElectronicsShopDatabase())
            {
                Order tempOrder = model.Id.HasValue ? null : new Order();

                if (model.Id.HasValue)
                {
                    tempOrder = context.Orders.FirstOrDefault(rec => rec.Id == model.Id);
                }

                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        if (model.Id.HasValue)
                        {
                            if (tempOrder == null)
                            {
                                throw new Exception("Элемент не найден");
                            }

                            CreateModel(model, tempOrder);
                            context.SaveChanges();
                        }
                        else
                        {
                            Order order = CreateModel(model, tempOrder);
                            context.Orders.Add(order);
                            context.SaveChanges();
                            var groupProducts = model.Products
                                                .GroupBy(rec => rec.ProductId)
                                                .Select(rec => new
                            {
                                ProductId = rec.Key,
                                Count     = rec.Sum(r => r.Count)
                            });

                            foreach (var groupProduct in groupProducts)
                            {
                                context.OrderProducts.Add(new OrderProduct
                                {
                                    OrderId   = order.Id,
                                    ProductId = groupProduct.ProductId,
                                    Count     = groupProduct.Count
                                });

                                context.SaveChanges();
                            }
                        }

                        transaction.Commit();
                    } catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }
Beispiel #2
0
        public void CreateOrUpdate(ProductBindingModel model)
        {
            using (var context = new ElectronicsShopDatabase())
            {
                Product tempProduct = model.Id.HasValue ? null : new Product();

                if (model.Id.HasValue)
                {
                    tempProduct = context.Products.FirstOrDefault(rec => rec.Id == model.Id);
                }

                if (model.Id.HasValue)
                {
                    if (tempProduct == null)
                    {
                        throw new Exception("Элемент не найден");
                    }

                    CreateModel(model, tempProduct);
                }
                else
                {
                    context.Products.Add(CreateModel(model, tempProduct));
                }

                context.SaveChanges();
            }
        }
 protected override List <T> GetList <T>()
 {
     using (var context = new ElectronicsShopDatabase())
     {
         return(context.Set <T>().ToList());
     }
 }
 protected override List <PropertyInfo> GetFullList()
 {
     using (var context = new ElectronicsShopDatabase())
     {
         Type type = context.GetType();
         return(type.GetProperties().Where(x => x.PropertyType.FullName.StartsWith("Microsoft.EntityFrameworkCore.DbSet")).ToList());
     }
 }
Beispiel #5
0
        private Product CreateModel(ProductBindingModel model, Product product)
        {
            using (var context = new ElectronicsShopDatabase())
            {
                product.Name            = model.Name;
                product.Desc            = model.Desc;
                product.Price           = model.Price;
                product.ProductCategory = model.ProductCategory;

                return(product);
            }
        }
        private Client CreateModel(ClientBindingModel model, Client client)
        {
            using (var context = new ElectronicsShopDatabase())
            {
                client.Login    = model.Login;
                client.Password = model.Password;
                client.Email    = model.Email;
                client.Phone    = model.Phone;
                client.Blocked  = model.Blocked;

                return(client);
            }
        }
        private Payment CreateModel(PaymentBindingModel model, Payment payment)
        {
            using (var context = new ElectronicsShopDatabase())
            {
                payment.OrderId  = model.OrderId;
                payment.ClientId = model.ClientId;
                payment.Account  = model.Account;
                payment.Date     = model.Date;
                payment.Sum      = model.Sum;

                return(payment);
            }
        }
        private Order CreateModel(OrderBindingModel model, Order order)
        {
            using (var context = new ElectronicsShopDatabase())
            {
                order.ClientId = model.ClientId;
                order.Date     = model.Date.Value;
                order.Status   = model.Status;
                order.Shipping = model.Shipping;
                order.Address  = model.Address;
                order.Sum      = model.Sum;

                return(order);
            }
        }
Beispiel #9
0
 static private ProductViewModel CreateViewModel(Product product)
 {
     using (var context = new ElectronicsShopDatabase())
     {
         return(new ProductViewModel
         {
             Id = product.Id,
             Name = product.Name,
             Desc = product.Desc,
             Price = product.Price,
             ProductCategory = product.ProductCategory
         });
     }
 }
 static private ClientViewModel CreateViewModel(Client client)
 {
     using (var context = new ElectronicsShopDatabase())
     {
         return(new ClientViewModel
         {
             Id = client.Id,
             Login = client.Login,
             Password = client.Password,
             Email = client.Email,
             Phone = client.Phone,
             Blocked = client.Blocked
         });
     }
 }
 static private PaymentViewModel CreateViewModel(Payment payment)
 {
     using (var context = new ElectronicsShopDatabase())
     {
         return(new PaymentViewModel
         {
             Id = payment.Id,
             OrderId = payment.OrderId,
             ClientId = payment.ClientId,
             ClientLogin = context.Clients.Where(rec => rec.Id == payment.ClientId).FirstOrDefault().Login,
             Account = payment.Account,
             Date = payment.Date,
             Sum = payment.Sum
         });
     }
 }
Beispiel #12
0
        public void Delete(ProductBindingModel model)
        {
            using (var context = new ElectronicsShopDatabase())
            {
                Product element = context.Products.FirstOrDefault(rec => rec.Id == model.Id.Value);

                if (element != null)
                {
                    context.Products.Remove(element);
                    context.SaveChanges();
                }
                else
                {
                    throw new Exception("Элемент не найден");
                }
            }
        }
        public List <PaymentViewModel> Read(PaymentBindingModel model)
        {
            using (var context = new ElectronicsShopDatabase())
            {
                List <PaymentViewModel> result = new List <PaymentViewModel>();

                if (model != null)
                {
                    result.AddRange(context.Payments
                                    .Where(rec => rec.Id == model.Id || rec.OrderId.Equals(model.OrderId))
                                    .Select(rec => CreateViewModel(rec)));
                }
                else
                {
                    result.AddRange(context.Payments.Select(rec => CreateViewModel(rec)));
                }
                return(result);
            }
        }
        static private OrderViewModel CreateViewModel(Order order)
        {
            using (var context = new ElectronicsShopDatabase())
            {
                var products = context.OrderProducts
                               .Where(rec => rec.OrderId == order.Id)
                               .Include(rec => rec.Product)
                               .Select(rec => new OrderProductViewModel
                {
                    Id        = rec.Id,
                    OrderId   = rec.OrderId,
                    ProductId = rec.ProductId,
                    Count     = rec.Count
                }).ToList();

                foreach (var product in products)
                {
                    var productData = context.Products.Where(rec => rec.Id == product.ProductId).FirstOrDefault();

                    if (productData != null)
                    {
                        product.Name            = productData.Name;
                        product.Desc            = productData.Desc;
                        product.Price           = productData.Price;
                        product.ProductCategory = productData.ProductCategory;
                    }
                }

                return(new OrderViewModel
                {
                    Id = order.Id,
                    ClientId = order.ClientId,
                    Date = order.Date,
                    Status = order.Status,
                    Shipping = order.Shipping,
                    Address = order.Address,
                    Sum = order.Sum,
                    SumPaid = context.Payments.Where(rec => rec.OrderId == order.Id).Select(rec => rec.Sum).Sum(),
                    Products = products
                });
            }
        }
Beispiel #15
0
        public List <ProductViewModel> Read(ProductBindingModel model)
        {
            using (var context = new ElectronicsShopDatabase())
            {
                List <ProductViewModel> result = new List <ProductViewModel>();

                if (model != null)
                {
                    result.AddRange(context.Products
                                    .Where(rec => rec.Id == model.Id || rec.Name == model.Name ||
                                           (model.Name == null && model.Id == null && rec.ProductCategory == model.ProductCategory))
                                    .Select(rec => CreateViewModel(rec)));
                }
                else
                {
                    result.AddRange(context.Products.Select(rec => CreateViewModel(rec)));
                }
                return(result);
            }
        }
        public List <OrderViewModel> Read(OrderBindingModel model)
        {
            using (var context = new ElectronicsShopDatabase())
            {
                List <OrderViewModel> result = new List <OrderViewModel>();

                if (model != null)
                {
                    result.AddRange(context.Orders
                                    .Where(rec => rec.Id == model.Id || rec.ClientId == model.ClientId &&
                                           (model.Date == null && model.DateTo == null || rec.Date >= model.Date && rec.Date <= model.DateTo))
                                    .Select(rec => CreateViewModel(rec)));
                }
                else
                {
                    result.AddRange(context.Orders.Select(rec => CreateViewModel(rec)));
                }
                return(result);
            }
        }
        public List <ClientViewModel> Read(ClientBindingModel model)
        {
            using (var context = new ElectronicsShopDatabase())
            {
                List <ClientViewModel> result = new List <ClientViewModel>();

                if (model != null)
                {
                    result.AddRange(context.Clients
                                    .Where(rec => (rec.Id == model.Id) || ((rec.Login == model.Login || rec.Email == model.Email) &&
                                                                           (model.Password == null || rec.Password == model.Password)))
                                    .Select(rec => CreateViewModel(rec)));
                }
                else
                {
                    result.AddRange(context.Clients.Select(rec => CreateViewModel(rec)));
                }
                return(result);
            }
        }