From 7da41d5540bacda9fa33d1dc46484616af09220d Mon Sep 17 00:00:00 2001 From: Akshay Vyas Date: Thu, 23 Jan 2020 17:07:37 +0200 Subject: [PATCH] I have tried to devide this 1 project in multiple small projects as per their uses. This will make it more resuable and easy to mainain. AnyCompany.Dal 1. Contains all the data access classes. 2. If Customer repository was not Static or I was allowed to make it non static then I would like to create a repository base class and have connection string there. All other repository would inherit it. 3. Dapper can be used here to covert the result from store procedure or query to direct domain object. 4. I would also like to move inline query to stored procedure. AnyCompany.Bll 1. Contains all the business logic classes. AnyCompany.Domain 1. Contains all the domain classes. AnyCompnay.Tests 1. Contains the test class to test order service. Ideally we should have 2 test projects here 1. Integration Test - To check the data layer or other integration classes. 2. Unit test - For all other classes , we can mock the Repository Classes here Project is now ready to be used in other applications ( WebApi, Application). Note - We can use various Nuget app like Ninject , Dapper, Entity framework as required for further extention. --- .../AnyCompany.Dal.csproj} | 44 +++++----- TechTest/AnyCompany.DAL/CustomerRepository.cs | 58 +++++++++++++ TechTest/AnyCompany.DAL/OrderRepository.cs | 45 ++++++++++ .../Properties/AssemblyInfo.cs | 10 +-- .../AnyCompany.Domain.csproj} | 11 +-- .../Customer.cs | 11 ++- .../Order.cs | 6 +- .../Properties/AssemblyInfo.cs | 36 ++++++++ .../AnyCompany.Test/AnyCompany.Tests.csproj | 82 +++++++++++++++++++ .../Properties/AssemblyInfo.cs | 20 +++++ TechTest/AnyCompany.Test/UnitTest1.cs | 45 ++++++++++ TechTest/AnyCompany.Test/packages.config | 5 ++ TechTest/AnyCompany.Tests/Class1.cs | 12 --- TechTest/AnyCompany/AnyCompany.Bll.csproj | 58 +++++++++++++ TechTest/AnyCompany/CustomerRepository.cs | 33 -------- TechTest/AnyCompany/OrderRepository.cs | 25 ------ TechTest/AnyCompany/OrderService.cs | 38 +++++++-- TechTest/TechTest.sln | 28 +++++-- 18 files changed, 441 insertions(+), 126 deletions(-) rename TechTest/{AnyCompany.Tests/AnyCompany.Tests.csproj => AnyCompany.DAL/AnyCompany.Dal.csproj} (59%) create mode 100644 TechTest/AnyCompany.DAL/CustomerRepository.cs create mode 100644 TechTest/AnyCompany.DAL/OrderRepository.cs rename TechTest/{AnyCompany.Tests => AnyCompany.DAL}/Properties/AssemblyInfo.cs (81%) rename TechTest/{AnyCompany/AnyCompany.csproj => AnyCompany.Domain/AnyCompany.Domain.csproj} (84%) rename TechTest/{AnyCompany => AnyCompany.Domain}/Customer.cs (55%) rename TechTest/{AnyCompany => AnyCompany.Domain}/Order.cs (67%) create mode 100644 TechTest/AnyCompany.Domain/Properties/AssemblyInfo.cs create mode 100644 TechTest/AnyCompany.Test/AnyCompany.Tests.csproj create mode 100644 TechTest/AnyCompany.Test/Properties/AssemblyInfo.cs create mode 100644 TechTest/AnyCompany.Test/UnitTest1.cs create mode 100644 TechTest/AnyCompany.Test/packages.config delete mode 100644 TechTest/AnyCompany.Tests/Class1.cs create mode 100644 TechTest/AnyCompany/AnyCompany.Bll.csproj delete mode 100644 TechTest/AnyCompany/CustomerRepository.cs delete mode 100644 TechTest/AnyCompany/OrderRepository.cs diff --git a/TechTest/AnyCompany.Tests/AnyCompany.Tests.csproj b/TechTest/AnyCompany.DAL/AnyCompany.Dal.csproj similarity index 59% rename from TechTest/AnyCompany.Tests/AnyCompany.Tests.csproj rename to TechTest/AnyCompany.DAL/AnyCompany.Dal.csproj index b537fc2..712b073 100644 --- a/TechTest/AnyCompany.Tests/AnyCompany.Tests.csproj +++ b/TechTest/AnyCompany.DAL/AnyCompany.Dal.csproj @@ -1,15 +1,15 @@ - + Debug AnyCPU - cd5d577e-bdc9-4dfc-ac6a-b1da474995f3 + {B50485FC-1BC4-4A50-B34D-A9EBD1C3EFC1} Library Properties - AnyCompany.Tests - AnyCompany.Tests - v4.6.1 + AnyCompany.DAL + AnyCompany.DAL + v4.5.2 512 @@ -30,24 +30,26 @@ 4 - - - - - - - - - - - - - - + + + + + + + + + - + + + + + {e836147f-f02f-463d-8b61-abd47de3efdc} + AnyCompany.Domain + + - + \ No newline at end of file diff --git a/TechTest/AnyCompany.DAL/CustomerRepository.cs b/TechTest/AnyCompany.DAL/CustomerRepository.cs new file mode 100644 index 0000000..5818080 --- /dev/null +++ b/TechTest/AnyCompany.DAL/CustomerRepository.cs @@ -0,0 +1,58 @@ +using AnyCompany.Domain; +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data.SqlClient; + +namespace AnyCompany.DAL +{ + public static class CustomerRepository + { + + private static string ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; //@"Data Source=(local);Database=Customers;User Id=admin;Password=password;"; + + public static string ConnectionStr + { + get; set; + } + public static Customer Load(int customerId) + { + // Use of dapper here will make it better. + Customer customer = new Customer(); + using (SqlConnection connection = new SqlConnection(ConnectionStr)) + { + SqlCommand command = new SqlCommand("SELECT * FROM Customer WHERE CustomerId = " + customerId, connection); + var reader = command.ExecuteReader(); + while (reader.Read()) + { + customer.Name = reader["Name"].ToString(); + customer.DateOfBirth = DateTime.Parse(reader["DateOfBirth"].ToString()); + customer.Country = reader["Country"].ToString(); + } + } + return customer; + } + public static IEnumerable LoadAll() + { + // Use of dapper here will make it better. + List customers = new List(); + using (SqlConnection connection = new SqlConnection(ConnectionStr)) + { + SqlCommand command = new SqlCommand("SELECT * FROM Customer", connection); + var reader = command.ExecuteReader(); + while (reader.Read()) + { + Customer customer = new Customer() + { + Name = reader["Name"].ToString(), + DateOfBirth = DateTime.Parse(reader["DateOfBirth"].ToString()), + Country = reader["Country"].ToString() + }; + customers.Add(customer); + } + } + return customers; + } + } + +} \ No newline at end of file diff --git a/TechTest/AnyCompany.DAL/OrderRepository.cs b/TechTest/AnyCompany.DAL/OrderRepository.cs new file mode 100644 index 0000000..fb94d6b --- /dev/null +++ b/TechTest/AnyCompany.DAL/OrderRepository.cs @@ -0,0 +1,45 @@ +using AnyCompany.Domain; +using System.Collections.Generic; +using System.Configuration; +using System.Data.SqlClient; + +namespace AnyCompany.DAL +{ + public class OrderRepository + { + private static string ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; //@"Data Source=(local);Database=Orders;User Id=admin;Password=password;"; + public void Save(Order order) + { + using (SqlConnection connection = new SqlConnection(ConnectionString)) + { + SqlCommand command = new SqlCommand("INSERT INTO Orders VALUES (@OrderId, @Amount, @VAT. @CustomerId)", connection); + command.Parameters.AddWithValue("@OrderId", order.OrderId); + command.Parameters.AddWithValue("@Amount", order.Amount); + command.Parameters.AddWithValue("@VAT", order.VAT); + command.Parameters.AddWithValue("@CustomerId", order.CustomerId); + command.ExecuteNonQuery(); + } + } + public IEnumerable SelectAll() + { + List orders = new List(); + using (SqlConnection connection = new SqlConnection(ConnectionString)) + { + SqlCommand command = new SqlCommand("SELECT * FROM Orders", connection); + var reader = command.ExecuteReader(); + while (reader.Read()) + { + Order order = new Order() + { + OrderId = int.Parse(reader["OrderId"].ToString()), + Amount = double.Parse(reader["Amount"].ToString()), + CustomerId = int.Parse(reader["CustomerId"].ToString()), + VAT = double.Parse(reader["VAT"].ToString()) + }; + orders.Add(order); + } + } + return orders; + } + } +} \ No newline at end of file diff --git a/TechTest/AnyCompany.Tests/Properties/AssemblyInfo.cs b/TechTest/AnyCompany.DAL/Properties/AssemblyInfo.cs similarity index 81% rename from TechTest/AnyCompany.Tests/Properties/AssemblyInfo.cs rename to TechTest/AnyCompany.DAL/Properties/AssemblyInfo.cs index 726eefa..b02788c 100644 --- a/TechTest/AnyCompany.Tests/Properties/AssemblyInfo.cs +++ b/TechTest/AnyCompany.DAL/Properties/AssemblyInfo.cs @@ -5,12 +5,12 @@ // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("AnyCompany.Tests")] +[assembly: AssemblyTitle("AnyCompany.DAL")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Investec Bank")] -[assembly: AssemblyProduct("AnyCompany.Tests")] -[assembly: AssemblyCopyright("Copyright © Investec Bank 2018")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("AnyCompany.DAL")] +[assembly: AssemblyCopyright("Copyright © 2020")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -20,7 +20,7 @@ [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("cd5d577e-bdc9-4dfc-ac6a-b1da474995f3")] +[assembly: Guid("b50485fc-1bc4-4a50-b34d-a9ebd1c3efc1")] // Version information for an assembly consists of the following four values: // diff --git a/TechTest/AnyCompany/AnyCompany.csproj b/TechTest/AnyCompany.Domain/AnyCompany.Domain.csproj similarity index 84% rename from TechTest/AnyCompany/AnyCompany.csproj rename to TechTest/AnyCompany.Domain/AnyCompany.Domain.csproj index 5b0498d..7df0854 100644 --- a/TechTest/AnyCompany/AnyCompany.csproj +++ b/TechTest/AnyCompany.Domain/AnyCompany.Domain.csproj @@ -4,12 +4,12 @@ Debug AnyCPU - {C7E15594-7D8F-4C18-9DD7-14F3FBB1572D} + {E836147F-F02F-463D-8B61-ABD47DE3EFDC} Library Properties - AnyCompany - AnyCompany - v4.6.1 + AnyCompany.Domain + AnyCompany.Domain + v4.5.2 512 @@ -41,10 +41,7 @@ - - - diff --git a/TechTest/AnyCompany/Customer.cs b/TechTest/AnyCompany.Domain/Customer.cs similarity index 55% rename from TechTest/AnyCompany/Customer.cs rename to TechTest/AnyCompany.Domain/Customer.cs index aa994b6..4f11834 100644 --- a/TechTest/AnyCompany/Customer.cs +++ b/TechTest/AnyCompany.Domain/Customer.cs @@ -1,13 +1,16 @@ using System; +using System.Collections.Generic; -namespace AnyCompany +namespace AnyCompany.Domain { public class Customer + { public string Country { get; set; } - public DateTime DateOfBirth { get; set; } - public string Name { get; set; } + public List Orders { get; set; } + public int CustomerId { get; set; } } -} + +} \ No newline at end of file diff --git a/TechTest/AnyCompany/Order.cs b/TechTest/AnyCompany.Domain/Order.cs similarity index 67% rename from TechTest/AnyCompany/Order.cs rename to TechTest/AnyCompany.Domain/Order.cs index fec8e7b..2445b8e 100644 --- a/TechTest/AnyCompany/Order.cs +++ b/TechTest/AnyCompany.Domain/Order.cs @@ -1,9 +1,11 @@ -namespace AnyCompany +namespace AnyCompany.Domain { public class Order { public int OrderId { get; set; } public double Amount { get; set; } public double VAT { get; set; } + public int CustomerId { get; set; } } -} + +} \ No newline at end of file diff --git a/TechTest/AnyCompany.Domain/Properties/AssemblyInfo.cs b/TechTest/AnyCompany.Domain/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d2aeca8 --- /dev/null +++ b/TechTest/AnyCompany.Domain/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("AnyCompany.Domain")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("AnyCompany.Domain")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("e836147f-f02f-463d-8b61-abd47de3efdc")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/TechTest/AnyCompany.Test/AnyCompany.Tests.csproj b/TechTest/AnyCompany.Test/AnyCompany.Tests.csproj new file mode 100644 index 0000000..ce60159 --- /dev/null +++ b/TechTest/AnyCompany.Test/AnyCompany.Tests.csproj @@ -0,0 +1,82 @@ + + + + + Debug + AnyCPU + {6D698C11-57C3-4EC4-827E-273661C9EA14} + Library + Properties + AnyCompany.Test + AnyCompany.Test + v4.6.1 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 15.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages + False + UnitTest + + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\MSTest.TestFramework.1.1.11\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll + + + ..\packages\MSTest.TestFramework.1.1.11\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll + + + + + + + + + + + + + + {b50485fc-1bc4-4a50-b34d-a9ebd1c3efc1} + AnyCompany.Dal + + + {e836147f-f02f-463d-8b61-abd47de3efdc} + AnyCompany.Domain + + + {c7e15594-7d8f-4c18-9dd7-14f3fbb1572d} + AnyCompany.Bll + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + \ No newline at end of file diff --git a/TechTest/AnyCompany.Test/Properties/AssemblyInfo.cs b/TechTest/AnyCompany.Test/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..4e53ad4 --- /dev/null +++ b/TechTest/AnyCompany.Test/Properties/AssemblyInfo.cs @@ -0,0 +1,20 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +[assembly: AssemblyTitle("AnyCompany.Test")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("AnyCompany.Test")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +[assembly: ComVisible(false)] + +[assembly: Guid("6d698c11-57c3-4ec4-827e-273661c9ea14")] + +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/TechTest/AnyCompany.Test/UnitTest1.cs b/TechTest/AnyCompany.Test/UnitTest1.cs new file mode 100644 index 0000000..3f313fe --- /dev/null +++ b/TechTest/AnyCompany.Test/UnitTest1.cs @@ -0,0 +1,45 @@ +using AnyCompany; +using AnyCompany.Domain; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace AnyCompanyUnitTest +{ + [TestClass] + public class UnitTest1 + { + [TestMethod] + public void TestOrderLoad() + { + // Arrange + Order order = new Order() + { + Amount = 1000.00, + CustomerId = 1, + OrderId = 1, + VAT = 1.2 + }; + OrderService service = new OrderService(); + + // Act + service.PlaceOrder(order); // We can write mock here if we were using iterfaces. + + // Assert + var customer = service.GetCustomerOrders(order.CustomerId); + Assert.IsTrue(customer != null); + } + + [TestMethod] + public void TestCustomerOrders() + { + // Arrange + OrderService service = new OrderService(); + + // Act + var customerOrders = service.GetCustomerOrders(); // We can write mock here if we were using iterfaces. + + // Assert + Assert.IsTrue(customerOrders != null); + + } + } +} diff --git a/TechTest/AnyCompany.Test/packages.config b/TechTest/AnyCompany.Test/packages.config new file mode 100644 index 0000000..1ab7218 --- /dev/null +++ b/TechTest/AnyCompany.Test/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TechTest/AnyCompany.Tests/Class1.cs b/TechTest/AnyCompany.Tests/Class1.cs deleted file mode 100644 index 5957505..0000000 --- a/TechTest/AnyCompany.Tests/Class1.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AnyCompany.Tests -{ - public class Class1 - { - } -} diff --git a/TechTest/AnyCompany/AnyCompany.Bll.csproj b/TechTest/AnyCompany/AnyCompany.Bll.csproj new file mode 100644 index 0000000..25fa136 --- /dev/null +++ b/TechTest/AnyCompany/AnyCompany.Bll.csproj @@ -0,0 +1,58 @@ + + + + + Debug + AnyCPU + {C7E15594-7D8F-4C18-9DD7-14F3FBB1572D} + Library + Properties + AnyCompany + AnyCompany + v4.6.1 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + {b50485fc-1bc4-4a50-b34d-a9ebd1c3efc1} + AnyCompany.Dal + + + {e836147f-f02f-463d-8b61-abd47de3efdc} + AnyCompany.Domain + + + + \ No newline at end of file diff --git a/TechTest/AnyCompany/CustomerRepository.cs b/TechTest/AnyCompany/CustomerRepository.cs deleted file mode 100644 index e3de9b7..0000000 --- a/TechTest/AnyCompany/CustomerRepository.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Data.SqlClient; - -namespace AnyCompany -{ - public static class CustomerRepository - { - private static string ConnectionString = @"Data Source=(local);Database=Customers;User Id=admin;Password=password;"; - - public static Customer Load(int customerId) - { - Customer customer = new Customer(); - - SqlConnection connection = new SqlConnection(ConnectionString); - connection.Open(); - - SqlCommand command = new SqlCommand("SELECT * FROM Customer WHERE CustomerId = " + customerId, - connection); - var reader = command.ExecuteReader(); - - while (reader.Read()) - { - customer.Name = reader["Name"].ToString(); - customer.DateOfBirth = DateTime.Parse(reader["DateOfBirth"].ToString()); - customer.Country = reader["Country"].ToString(); - } - - connection.Close(); - - return customer; - } - } -} diff --git a/TechTest/AnyCompany/OrderRepository.cs b/TechTest/AnyCompany/OrderRepository.cs deleted file mode 100644 index 3229885..0000000 --- a/TechTest/AnyCompany/OrderRepository.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Data.SqlClient; - -namespace AnyCompany -{ - internal class OrderRepository - { - private static string ConnectionString = @"Data Source=(local);Database=Orders;User Id=admin;Password=password;"; - - public void Save(Order order) - { - SqlConnection connection = new SqlConnection(ConnectionString); - connection.Open(); - - SqlCommand command = new SqlCommand("INSERT INTO Orders VALUES (@OrderId, @Amount, @VAT)", connection); - - command.Parameters.AddWithValue("@OrderId", order.OrderId); - command.Parameters.AddWithValue("@Amount", order.Amount); - command.Parameters.AddWithValue("@VAT", order.VAT); - - command.ExecuteNonQuery(); - - connection.Close(); - } - } -} diff --git a/TechTest/AnyCompany/OrderService.cs b/TechTest/AnyCompany/OrderService.cs index ebfb103..4aa8cb9 100644 --- a/TechTest/AnyCompany/OrderService.cs +++ b/TechTest/AnyCompany/OrderService.cs @@ -1,24 +1,44 @@ -namespace AnyCompany +using System.Collections.Generic; +using System.Linq; +using AnyCompany.DAL; +using AnyCompany.Domain; + +namespace AnyCompany { public class OrderService { private readonly OrderRepository orderRepository = new OrderRepository(); - - public bool PlaceOrder(Order order, int customerId) + public bool PlaceOrder(Order order) { - Customer customer = CustomerRepository.Load(customerId); - + Customer customer = CustomerRepository.Load(order.CustomerId); if (order.Amount == 0) return false; - if (customer.Country == "UK") order.VAT = 0.2d; else order.VAT = 0; - orderRepository.Save(order); - return true; } + + public IEnumerable GetCustomerOrders() + { + List orders = orderRepository.SelectAll().ToList(); + List customers = CustomerRepository.LoadAll().ToList(); + foreach (Customer customer in customers) + { + customer.Orders = orders.Where(o => o.CustomerId == customer.CustomerId).ToList(); + } + return customers; + } + + public Customer GetCustomerOrders(int customerId) + { + List orders = orderRepository.SelectAll().ToList(); + Customer customer = CustomerRepository.Load(customerId); + customer.Orders = orders.Where(o => o.CustomerId == customer.CustomerId).ToList(); + return customer; + } } -} + +} \ No newline at end of file diff --git a/TechTest/TechTest.sln b/TechTest/TechTest.sln index 1c1c57a..b6b73bc 100644 --- a/TechTest/TechTest.sln +++ b/TechTest/TechTest.sln @@ -1,17 +1,21 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.27004.2005 +VisualStudioVersion = 15.0.26430.4 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AnyCompany", "AnyCompany\AnyCompany.csproj", "{C7E15594-7D8F-4C18-9DD7-14F3FBB1572D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AnyCompany.Tests", "AnyCompany.Tests\AnyCompany.Tests.csproj", "{CD5D577E-BDC9-4DFC-AC6A-B1DA474995F3}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AnyCompany.Bll", "AnyCompany\AnyCompany.Bll.csproj", "{C7E15594-7D8F-4C18-9DD7-14F3FBB1572D}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B6D3C1BB-2A37-4E17-9EE3-DEF28286E782}" ProjectSection(SolutionItems) = preProject Instructions.txt = Instructions.txt EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AnyCompany.Tests", "AnyCompany.Test\AnyCompany.Tests.csproj", "{6D698C11-57C3-4EC4-827E-273661C9EA14}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AnyCompany.Dal", "AnyCompany.DAL\AnyCompany.Dal.csproj", "{B50485FC-1BC4-4A50-B34D-A9EBD1C3EFC1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AnyCompany.Domain", "AnyCompany.Domain\AnyCompany.Domain.csproj", "{E836147F-F02F-463D-8B61-ABD47DE3EFDC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -22,10 +26,18 @@ Global {C7E15594-7D8F-4C18-9DD7-14F3FBB1572D}.Debug|Any CPU.Build.0 = Debug|Any CPU {C7E15594-7D8F-4C18-9DD7-14F3FBB1572D}.Release|Any CPU.ActiveCfg = Release|Any CPU {C7E15594-7D8F-4C18-9DD7-14F3FBB1572D}.Release|Any CPU.Build.0 = Release|Any CPU - {CD5D577E-BDC9-4DFC-AC6A-B1DA474995F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CD5D577E-BDC9-4DFC-AC6A-B1DA474995F3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CD5D577E-BDC9-4DFC-AC6A-B1DA474995F3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CD5D577E-BDC9-4DFC-AC6A-B1DA474995F3}.Release|Any CPU.Build.0 = Release|Any CPU + {6D698C11-57C3-4EC4-827E-273661C9EA14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6D698C11-57C3-4EC4-827E-273661C9EA14}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6D698C11-57C3-4EC4-827E-273661C9EA14}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6D698C11-57C3-4EC4-827E-273661C9EA14}.Release|Any CPU.Build.0 = Release|Any CPU + {B50485FC-1BC4-4A50-B34D-A9EBD1C3EFC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B50485FC-1BC4-4A50-B34D-A9EBD1C3EFC1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B50485FC-1BC4-4A50-B34D-A9EBD1C3EFC1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B50485FC-1BC4-4A50-B34D-A9EBD1C3EFC1}.Release|Any CPU.Build.0 = Release|Any CPU + {E836147F-F02F-463D-8B61-ABD47DE3EFDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E836147F-F02F-463D-8B61-ABD47DE3EFDC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E836147F-F02F-463D-8B61-ABD47DE3EFDC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E836147F-F02F-463D-8B61-ABD47DE3EFDC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE