public int Save(SimulationModel model) { ProjectBroker projectBroker = new ProjectBroker(); SupplierBroker supplierBroker = new SupplierBroker(); ShopBroker shopBroker = new ShopBroker(); BuyerBroker buyerBroker = new BuyerBroker(); ConnectionBroker connectionBroker = new ConnectionBroker(); //najpierw zapis podczas ktorego zbieram using (IDbConnection connection = new ConnectionProvider().GetConnection(true)) { IDbTransaction transaction = connection.BeginTransaction(); try { if (model.Project.Id != 0) { buyerBroker.RemoveNotExistingFromProject(connection, model.Project.Id, model.GetListOfBuyersIds()); shopBroker.RemoveNotExistingFromProject(connection, model.Project.Id, model.GetListOfShopsIds()); supplierBroker.RemoveNotExistingFromProject(connection, model.Project.Id, model.GetListOfSuppliersIds()); connectionBroker.RemoveNotExistingFromProject(connection, model.Project.Id, model.GetListOfConnectionsIds()); } projectBroker.Save(connection, model.Project, transaction); foreach (Buyer buyer in model.Buyers) { buyer.ProjectId = model.Project.Id; buyerBroker.Save(connection, buyer, transaction); } foreach (Shop shop in model.Shops) { shop.ProjectId = model.Project.Id; shopBroker.Save(connection, shop, transaction); } foreach (Supplier supplier in model.Suppliers) { supplier.ProjectId = model.Project.Id; supplierBroker.Save(connection, supplier, transaction); } foreach (Connection conn in model.Connections) { conn.ProjectId = model.Project.Id; conn.ActorAId = conn.ActorA.Id; conn.ActorBId = conn.ActorB.Id; connectionBroker.Save(connection, conn, transaction); } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } return(1); }
public int SaveAs(SimulationModel model) { int oldId = model.Project.Id; ProjectBroker projectBroker = new ProjectBroker(); SupplierBroker supplierBroker = new SupplierBroker(); ShopBroker shopBroker = new ShopBroker(); BuyerBroker buyerBroker = new BuyerBroker(); ConnectionBroker connectionBroker = new ConnectionBroker(); //I will set all ids to 0, so it wil add new rows and inserts function //set id to proper one. using (IDbConnection connection = new ConnectionProvider().GetConnection(true)) { IDbTransaction transaction = connection.BeginTransaction(); try { model.Project.Id = 0; projectBroker.Save(connection, model.Project, transaction); foreach (Buyer buyer in model.Buyers) { buyer.Id = 0; buyer.ProjectId = model.Project.Id; buyerBroker.Save(connection, buyer, transaction); } foreach (Shop shop in model.Shops) { shop.Id = 0; shop.ProjectId = model.Project.Id; shopBroker.Save(connection, shop, transaction); } foreach (Supplier supplier in model.Suppliers) { supplier.Id = 0; supplier.ProjectId = model.Project.Id; supplierBroker.Save(connection, supplier, transaction); } foreach (Connection conn in model.Connections) { conn.Id = 0; conn.ProjectId = model.Project.Id; conn.ActorAId = conn.ActorA.Id; conn.ActorBId = conn.ActorB.Id; connectionBroker.Save(connection, conn, transaction); } transaction.Commit(); } catch (Exception) { model.Project.Id = oldId; transaction.Rollback(); throw; } } return(1); }
public SimulationModel Get(Project project) { SimulationModel model = new SimulationModel(); SupplierBroker supplierBroker = new SupplierBroker(); ShopBroker shopBroker = new ShopBroker(); BuyerBroker buyerBroker = new BuyerBroker(); ConnectionBroker connectionBroker = new ConnectionBroker(); model.Project = project; using (IDbConnection connection = new ConnectionProvider().GetConnection(true)) { model.Buyers = buyerBroker.GetAllFromProject(connection, model.Project.Id).ToList(); model.Shops = shopBroker.GetAllFromProject(connection, model.Project.Id).ToList(); model.Suppliers = supplierBroker.GetAllFromProject(connection, model.Project.Id).ToList(); model.Connections = connectionBroker.GetAllFromProject(connection, model.Project.Id).ToList(); } foreach (Connection conn in model.Connections) { switch (conn.ConnectionType) { case DataModel.EnumTypes.ConnectionTypes.ShopToBuyer: conn.ActorA = model.Shops.Find(x => x.Id == conn.ActorAId); conn.ActorB = model.Buyers.Find(x => x.Id == conn.ActorBId); break; case DataModel.EnumTypes.ConnectionTypes.ShopToShop: conn.ActorA = model.Shops.Find(x => x.Id == conn.ActorAId); conn.ActorB = model.Shops.Find(x => x.Id == conn.ActorBId); break; case DataModel.EnumTypes.ConnectionTypes.SupplierToShop: conn.ActorA = model.Suppliers.Find(x => x.Id == conn.ActorAId); conn.ActorB = model.Shops.Find(x => x.Id == conn.ActorBId); break; default: break; } } return(model); }