/// <summary>
        /// Добавляет в БД объект, наследника от Person.
        /// </summary>
        /// <typeparam name="T"> Тип выгружаемого объекта. Должен наследоваться от Person. </typeparam>
        /// <param name="nameOfPerson"> Имя выгружаемого объекта.  </param>
        /// <param name="passwordOrSecondName"> Пароль или фамилия выгружаемого объекта. </param>
        /// <param name="context"> Экземпляр контекста, необходимый для работы с БД. </param>
        /// <returns> Если входные аргументы корректны и операция удалась - возвращает загруженный объект,
        ///           иначе - null.
        /// </returns>
        public static Person RegistrationOfPerson <T>(string nameOfPerson, string passwordOrSecondName, UPSContext context)
        {
            if (string.IsNullOrWhiteSpace(nameOfPerson) is false &&
                string.IsNullOrWhiteSpace(passwordOrSecondName) is false)
            {
                var nameOfPersonType = typeof(T);
                try
                {
                    if (nameOfPersonType == typeof(Client))
                    {
                        if (context.Clients.FirstOrDefault(clint => clint.Name == nameOfPerson) == default)
                        {
                            var newClient = new Client(nameOfPerson, passwordOrSecondName);

                            if (newClient.Name != null &&
                                newClient.PasswordOrSecondName != null)
                            {
                                context.Clients.Add(newClient);
                                context.SaveChanges();
                                return(newClient);
                            }
                        }
                    }
                    else if (nameOfPersonType == typeof(Employee))
                    {
                        if (context.Employees.FirstOrDefault(clint => clint.Name == nameOfPerson) == default)
                        {
                            var newEmployee = new Employee(nameOfPerson, passwordOrSecondName);

                            if (newEmployee.Name != null &&
                                newEmployee.PasswordOrSecondName != null)
                            {
                                context.Employees.Add(newEmployee);
                                context.SaveChanges();
                                return(newEmployee);
                            }
                        }
                    }
                    else
                    {
                        return(null);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    return(null);
                }
            }
            return(null);
        }
 /// <summary>
 /// Приватный метод, необходимый для сохранения (синхронизации) данных об экземпляре Client после операций.
 /// </summary>
 /// <param name="inputClient"> Экземпляр Client, данные которого будут синхронизированы с БД. </param>
 /// <param name="context"> Экземпляр контекста, необходимый для работы с БД. </param>
 private static void SaveClient(Client inputClient, UPSContext context)
 {
     try
     {
         var clientFromDb = context.Clients.Find(inputClient.Id);
         clientFromDb = inputClient;
         context.SaveChanges();
     }
     catch (Exception ex)
     {
         Console.WriteLine("Не удалось сохранить данные после операции!" + ex);
         Thread.Sleep(5000);
     }
 }
 /// <summary>
 /// Добавляет экземпляр Product в БД.
 /// </summary>
 /// <param name="context"> Экземпляр контекста, необходимый для сохранения изменений в базе данных. </param>
 /// <param name="newProduct"> Добавляемый экземпляр Product. </param>
 /// <param name="productsFromDb"> Данные о экземплярах Product из БД,
 ///                               необходимые для защиты от ошибок (добавление уже существующего экземпляра и т.п).
 /// </param>
 /// <returns> True - если входные аргументы корректны, операция удалась и этот продукт не содержался в БД, иначе - false. </returns>
 public static bool AddProducts(UPSContext context, Product newProduct, List <Product> productsFromDb)
 {
     if (productsFromDb.Find(prod => prod.Name == newProduct.Name) is null &&
         context != null &&
         productsFromDb != null)
     {
         if (string.IsNullOrWhiteSpace(newProduct.Name) is false &&
             newProduct.Cost > 0)
         {
             context.Products.Add(newProduct);
             context.SaveChanges();
             return(true);
         }
     }
     return(false);
 }
        /// <summary>
        /// Приватный метод, необходимый для сохранения (синхронизации) изменений экземпляра Product с ним же в базе данных.
        /// </summary>
        /// <param name="product"> Изменяемый экземпляр Product. </param>
        /// <param name="context"> Экземпляр контекста, необходимый для сохранения изменений в базе данных. </param>
        /// <returns> True - если входные аргументы корректны и операция удалась, иначе - false. </returns>
        private static bool SaveProduct(Product product, UPSContext context)
        {
            try
            {
                var prodFromDb = context.Products.Find(product.Id);

                prodFromDb.Name = product.Name;
                prodFromDb.Cost = product.Cost;

                context.SaveChanges();

                if (prodFromDb.Name == product.Name &&
                    prodFromDb.Cost == product.Cost)
                {
                    return(true);
                }
                return(false);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                return(false);
            }
        }
Пример #5
0
 public User Add(User userToAdd)
 {
     context.Users.Add(userToAdd);
     context.SaveChanges();
     return(userToAdd);
 }
Пример #6
0
 public Guid AddUPS(UPS ups)
 {
     context.UPSes.Add(ups);
     context.SaveChanges();
     return(ups.Id);
 }