1

Тема: ASP.NET MVC кошик товарів інтернет магазину

Доброго дня! Потрібна ваша допомога, панове!
При написанні інтернет магазину я дійшов до функціоналу кошика товарів і самих замовлень юзерів.
На данний момент маю 2 моделі Cart і OrderLine

Cart

namespace Yakymenko1.Models
{
    public class Cart
    {
        public int Id { get; set; }
        public List<OrderLine> OrderLines { get; set; }
    }
}

orderline

namespace Yakymenko1.Models
{
    public class OrderLine
    {
        public int Id { get; set; }
        //public int OrderId { get; set; }
        //public int ProductId { get; set; }
 
        //info for our admin from checkout section on the site
        public string ShipingFirtName { get; set; }
        public string ShipingLastName { get; set; }
        public string ShipingPhoneNumber { get; set; }
        public string ShipingCompanyName { get; set; }
        public string ShipingAddress { get; set; }
        public string ShipingCity { get; set; }
        public string ShipingContry { get; set; }
        public string ShipingOrderNotes { get; set; }
        public int    ShipingPostalCode { get; set; }
        public string OrderDatetime { get; set; }
 
 
        //public Cart Order { get; set; }
        //public Product Product { get; set; }
    }
}

До речі, сам шопконтекст дібі контексту

    public class ShopContext : DbContext
    {
        public DbSet<Product> Products { get; set; }
        public DbSet<Category> Categories { get; set; }
        public DbSet<Review> Reviews { get; set; }
        public DbSet<OrderLine> OrderLines { get; set; }
    }

Ордерлайн зберігає в собі інформацію про замовлення товару таку як ПІБ, адреса, додаток і т.д.
Як краще зберігати вибрані у кошик товари? І де саме? Я розглядаю варіант збереження їхніх id у моделі Cart, а сам Cart при цьому має список об'єктів класу OrderLine де зберігається вся інфа про замовлення.

Якщо я не правий - поправляйте! Мені потрбна зараз будь яка консультація і максимум допомоги .буду дуже вдячний.

Ось посилання на весь проект
https://drive.google.com/open?id=1IvGWL … s6mRz9ydX8

2

Re: ASP.NET MVC кошик товарів інтернет магазину

Обговорення структури даних он-лайн магазину має мало відношення до самого С#/.Net
Але вже ... спробуємо
1) Тримати кошик (Cart) на стороні клієнта десь в кукісах або просто в пам'яті броузера. Переваги - не треба нічого створювати лишнього на сервері. Недоліки - треба JavaScript для обробки інфи на сторінці клієнта, пропаде при зміні пристрою, броузера або зачистці куків у клієнта

2) Тримати кошик клієнта на сервері. Треба відповідну таблицю в БД - напр. CartLines
     Потрібно визначити якому клієнту налешать певні рядки з кошика.
     Тому якщо у вас клієнт не ідентифікований та не авторизований -> GO TO 1).
     Отже вам потрібна таблиця клієнтів Customers. В цю таблицю варто внести всю інфу  про замовника - назва, номери телефонів, адреса і т.п.

public class Customer
    {
       public int Id {get;set;}
       public string Name {get;set;}
       ....... ..... .....
     }

В кошику варто тримати тільки інформацію про власника кошика( Сustomer) вибраний товар (Product), ціну товару на момент вибору, вибрану кількість та дату/час операції.
Якось так

public class CartLine
    {
       public int Id {get;set;}
       public int CustomerId {get;set;}
       public int ProductId {get;set;}
       public decimal Price {get;set;}
       public decimal Quantity {get;set;}
       public Datetime Timestamp {get;set;}
     }

Інформація про замовлення (OrderLine) повинна створюватися тоді, коли покупець підтверджує замовлення товарів, вибраних в кошику