/// <summary>
 /// Отчистить таблицу.
 /// </summary>
 /// <typeparam name="T">Класс таблицы.</typeparam>
 protected void RemoveRange <T>() where T : class
 {
     using (var db = new MedicalProductContext())
     {
         db.Set <T>().RemoveRange(db.Set <T>());
         db.SaveChanges();
     }
 }
 /// <summary>
 /// Получить количество единиц препарата в аптечке.
 /// </summary>
 /// <param name="num">Количество прибавляемых единиц.</param>
 /// <returns>Итоговое количество единиц препарата в аптечке.</returns>
 private int GetNumber()
 {
     using (var db = new MedicalProductContext())
     {
         int num = db.Entry(CurrentMedicine).Property(n => n.Number).CurrentValue;
         return(num);
     };
 }
        /// <summary>
        /// Получение элементов таблицы.
        /// </summary>
        /// <returns>список элементов.</returns>
        protected List <T> Load <T>() where T : class
        {
            using (var db = new MedicalProductContext())

            {
                return(db.Set <T>().Where(t => true).ToList() ?? new List <T>());
            }
        }
 /// <summary>
 /// Сохранение элементов.
 /// </summary>
 /// <param name="name">Наименование элемента таблицы.</param>
 protected void Save <T>(T item) where T : class
 {
     using (var db = new MedicalProductContext())
     {
         db.Set <T>().Add(item);
         db.SaveChanges();
     }
 }
 /// <summary>
 /// Показать список элементов.
 /// </summary>
 protected void Show <T>() where T : class
 {
     using (var db = new MedicalProductContext())
     {
         var items = db.Set <T>().Where(t => true).ToList();
         foreach (var item in items)
         {
             Console.Write(item.ToString());
         }
     };
 }
 /// <summary>
 /// Подсчет суммы покупки.
 /// </summary>
 /// <param name="id">Id покупки.</param>
 public void Total(int id)
 {
     using (var db = new MedicalProductContext())
     {
         Purchase pur = db.Purchases.SingleOrDefault(m => m.Id == id);
         if (pur == null)
         {
             throw new ArgumentException($"Покупка с Id: {id} не найдена.", nameof(id));
         }
         List <PositionPurchase> posit = db.PositionPurchases.Where(c => c.PurchaseId == id).ToList();
         decimal sum = posit.Sum(x => x.TotalPosition);
         pur.Total = sum;
         db.SaveChanges();
     };
 }
 /// <summary>
 /// Показать расширенно конкретную покупку.
 /// </summary>
 /// <param name="id">Id покупки.</param>
 public void ShowOne(int id)
 {
     using (var db = new MedicalProductContext())
     {
         Purchase pur = db.Purchases.SingleOrDefault(m => m.Id == id);
         if (pur == null)
         {
             throw new ArgumentException($"Покупка с Id: {id} не найдена.", nameof(id));
         }
         Console.Write(pur.ToString());
         Console.WriteLine("Позиции:");
         List <PositionPurchase> poss = db.PositionPurchases.Where(c => c.PurchaseId == id).ToList();
         foreach (var item in poss)
         {
             Console.Write(item.ToString());
         }
     };
 }
 /// <summary>
 /// Изменить количество единиц препарата в аптечке.
 /// </summary>
 /// <param name="id">Id препарата.</param>
 /// <param name="num">Итоговое значение единиц препарата в аптечке.</param>
 public void ChangeNumber(int id, int num)
 {
     if (num < 0 || num > 600)
     {
         throw new ArgumentException("Количество не может быть отрицательным, и не должно быть больше 600 единиц.", nameof(num));
     }
     using (var db = new MedicalProductContext())
     {
         Medicine med = db.Medicines.SingleOrDefault(m => m.Id == id);
         if (med == null)
         {
             throw new ArgumentException($"Изделие медицинского назначения с Id: {id} не найдено.", nameof(id));
         }
         db.Entry(med).Property(u => u.Number).CurrentValue = num;
         db.SaveChanges();
         Console.Write(med.ToString());
     };
 }
 /// <summary>
 /// Показать конкретный препарат полностью (состав, показания к прменению).
 /// </summary>
 /// <param name="id">Id конкретного препарата.</param>
 public void ShowOne(int id)
 {
     using (var db = new MedicalProductContext())
     {
         Medicine med = db.Medicines.SingleOrDefault(m => m.Id == id);
         if (med == null)
         {
             throw new ArgumentException($"Изделие медицинского назначения с Id: {id} не найдено.", nameof(id));
         }
         Console.Write(med.ToString());
         Console.WriteLine("Состав:");
         List <Component> comps = db.Components.Where(c => c.MedicineId == id).ToList();
         foreach (var item in comps)
         {
             Console.Write(item.ToString());
         }
         Console.WriteLine("Показания к применению:");
         List <IndicationsForUse> inds = db.IndicationsForUses.Where(c => c.MedicineId == id).ToList();
         foreach (var item in inds)
         {
             Console.Write(item.ToString());
         }
     };
 }