public TransactionListTopEntity(TransactionTopEntity top, ProviderEntity provider, decimal listVariable) : this(top, provider) { ListVariable = listVariable; }
public TransactionListTopEntity(TransactionTopEntity top, ProviderEntity provider) : this() { Top = top; Provider = provider; }
public static bool AddOrModifyTransaction(TransactionTopEntity top, List<TransactionListBodyEntity> body) { return TransactionProvider.AddOrModifyTransaction(top, body); }
public static bool RemoveTransaction(TransactionTopEntity top) { return TransactionProvider.RemoveTransaction(p => p.Id == top.Id); }
/// <summary> /// Добавляем или меняем транзакции в базе /// </summary> /// <param name="top">Если свойство Id = 0, функция добавляет новую транзакцию. Если в базе уже есть транзакция с тем же Id, вункция изменяет ее.</param> /// <param name="body"></param> /// <returns>Если прошло успешно возвращает true</returns> public static bool AddOrModifyTransaction(TransactionTopEntity top, List <TransactionListBodyEntity> body) { if (top == null || body == null) { return(false); } bool result = false; bool newTop = (top.Id == 0); using (var db = new InventoryContext(DatabaseConnection.ConnectionString)) { using (var dbTransaction = db.Database.BeginTransaction()) { try { int transactionId = top.Id; //Top записи if (!newTop) //Изменение { var topQuery = db.TransactionTop.Where(p => p.Id == top.Id); foreach (var record in topQuery) { PropertyInfo[] properties = EntityClone.GetProperties(typeof(TransactionTopEntity)); foreach (PropertyInfo property in properties) { property.SetValue(record, property.GetValue(top)); } } db.SaveChanges(); result = true; } else //вставить { db.TransactionTop.Add(top); db.SaveChanges(); result = true; transactionId = top.Id; } if (result) { result = false; foreach (var rec in body) { rec.Body.TransactionId = transactionId; } var query = db.TransactionBody.Where(p => p.TransactionId == transactionId); foreach (var rec in query) { var newRec = body.Where(p => p.Body.Id == rec.Id).FirstOrDefault(); if (newRec == null) { db.TransactionBody.Remove(rec); } else { PropertyInfo[] properties = EntityClone.GetProperties(typeof(TransactionBodyEntity)); foreach (PropertyInfo property in properties) { property.SetValue(rec, property.GetValue(newRec.Body)); } body.Remove(newRec); } } // извлекаем новые записи foreach (var rec in body) { db.TransactionBody.Add(rec.Body); } db.SaveChanges(); dbTransaction.Commit(); result = true; } } catch (Exception e) { dbTransaction.Rollback(); Console.WriteLine("Нет изменений в транзакциях"); } } } return(result); }