Мне нужно вставить внутреннее соединение в хранилище с интерфейсом, как я могу это сделать? - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть класс дерева в Модельном поставщике, Счет-фактура, Счет-фактура

//Supplier
namespace TestInvoice.Models
{
    public class Supplier
    {
        public int ID { get; set; }
        public string Name { get; set; }

        public virtual List<Invoice> Invoices { get; set; }
        public virtual List<InvoiceItem> InvoiceItems { get; set; }



    }


//Invoice
 public class Invoice
    {
        public int ID { get; set; }
        [Display(Name = "Document Number")]
        public string DocumentNumber { get; set; }
        [DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)]
        public DateTime Date { get; set; }
        [Key]
        [ForeignKey("Supplier")]
        [Display(Name = "Supplier ID")]
        public int SupplierID { get; set; }
        [Display(Name = "Tax Percentage")]
        public decimal TaxPercentage { get; set; }
        [Display(Name = "Total Netto Amount")]
        public decimal TotalNettoAmount { get; set; }
        [Display(Name = "Total Brutto Amount")]
        public decimal TotalBruttoAmount { get; set; }

        public virtual Supplier Supplier { get; set; }
        public virtual InvoiceItem InvoiceItem { get; set; }
    }
}
//Invoice Item
 public class InvoiceItem
    {
        public int ID { get; set; }
        [Key]
        [ForeignKey("Invoice")]
        public int InvoiceID { get; set; }
        public string ArticleNumber { get; set; }
        [DataType(DataType.MultilineText)]
        public string ArticleDescription { get; set; }
       public int Quantity { get; set; }
    public decimal PricePerUnit { get; set; }
    public decimal TaxPercentage { get; set; }
  //  public decimal NettoAmount { get; set; }
  //  public decimal BruttoAmount { get; set; }

        public decimal NettoAmount => Quantity * PricePerUnit;

        public decimal BruttoAmount => ((PricePerUnit * TaxPercentage) / 100 + NettoAmount);

        public virtual Supplier Supplier { get; set; }
        public virtual Invoice Invoice { get; set; }
    }

--- это интерфейс с объектом

namespace TestInvoice.Repository
{
  public interface IDataBase
    {//Add Suppliers and GetAll
        IEnumerable<Supplier> GetAll();

        Supplier Add(Supplier item);
        //Add Invoices, GetAllInvoice and delete
        IEnumerable<Invoice> GetAllInvoice();

        Invoice CreateInvoice(Invoice item);
        bool Delete(int id);

        //Add InvoiceItems and GetAllInvoiceItems
        IEnumerable<InvoiceItem> GetAllInvoiceItem();

        InvoiceItem CreateInvoiceItem(InvoiceItem item);
    }
}

и это в репозитории с классом экземпляра и методом

namespace TestInvoice.Repository
{
    public class DataBase:IDataBase
    {
        private static List<Supplier>suppliers = new List<Supplier>();  
        private static List<Invoice> invoices =new List<Invoice>();
        private static List<InvoiceItem> invoiceItems=new List<InvoiceItem>();

        private static int _nextId = 1;

        public DataBase()
        {

        }

        public Supplier Add(Supplier item)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }

            // TO DO : Code to save record into database 
            item.ID = _nextId++;
            suppliers.Add(item);
            return item;
        }

        public IEnumerable<Supplier> GetAll()
        {
                return suppliers;

            throw new NotImplementedException();
        }
   public Invoice CreateInvoice(Invoice item)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }

            // TO DO : Code to save record into database 
            item.ID = _nextId++;
            invoices.Add(item);
            return item;
        }

        public IEnumerable<Invoice> GetAllInvoice()
        {
            return invoices;

            throw new NotImplementedException();
        }
        public bool Delete(int id)
        {
            // TO DO : Code to remove the records from database 
            invoices.RemoveAll(p => p.ID == id);
            return true;
        }
//Invoice Item
        public InvoiceItem CreateInvoiceItem(InvoiceItem item)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }

            // TO DO : Code to save record into database 
            item.ID = _nextId++;
            invoiceItems.Add(item);
            return item;
        }

        public IEnumerable<InvoiceItem> GetAllInvoiceItem()
        {
            return invoiceItems;

            throw new NotImplementedException();
        }

Мне нужно присоединиться к внутренней модели дерева и получить поставщика и его счет-фактуру по идентификатору, другие слова должны относиться к этой модели. Кроме того, мне нужно вызвать этот метод в методе действия в контроллере.

...