aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio_v2
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2019-08-06 10:41:16 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2019-08-06 10:41:16 +0300
commite86fe2e8cf34343cf3ebbf4640b2be5e85899615 (patch)
treedee59a2c43b69b6abe20be24059d42ecabcdfffc /Software/Visual_Studio_v2
parentc1b00ec58a47e504e0247c21c96b55a89e7a95eb (diff)
downloadTango-e86fe2e8cf34343cf3ebbf4640b2be5e85899615.tar.gz
Tango-e86fe2e8cf34343cf3ebbf4640b2be5e85899615.zip
v2 Basic structure.
Diffstat (limited to 'Software/Visual_Studio_v2')
-rw-r--r--Software/Visual_Studio_v2/Tango.BLL/ObjectBase.cs11
-rw-r--r--Software/Visual_Studio_v2/Tango.BLL/Objects/Organization.cs12
-rw-r--r--Software/Visual_Studio_v2/Tango.BLL/ServiceBase.cs14
-rw-r--r--Software/Visual_Studio_v2/Tango.BLL/Services/OrganizationsService.cs39
-rw-r--r--Software/Visual_Studio_v2/Tango.BLL/Tango.BLL.csproj11
-rw-r--r--Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoDataBaseSettings.cs12
-rw-r--r--Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoRepository.cs76
-rw-r--r--Software/Visual_Studio_v2/Tango.DAL.Mongo/Tango.DAL.Mongo.csproj15
-rw-r--r--Software/Visual_Studio_v2/Tango.DAL/Attributes/MongoCollectionAttribute.cs17
-rw-r--r--Software/Visual_Studio_v2/Tango.DAL/Entities/OrganizationEntity.cs11
-rw-r--r--Software/Visual_Studio_v2/Tango.DAL/Entity.cs15
-rw-r--r--Software/Visual_Studio_v2/Tango.DAL/IRepository.cs24
-rw-r--r--Software/Visual_Studio_v2/Tango.DAL/Tango.DAL.csproj11
-rw-r--r--Software/Visual_Studio_v2/Tango.UnitTests/DAL/Mongo.cs45
-rw-r--r--Software/Visual_Studio_v2/Tango.UnitTests/Properties/AssemblyInfo.cs20
-rw-r--r--Software/Visual_Studio_v2/Tango.UnitTests/Tango.UnitTests.csproj99
-rw-r--r--Software/Visual_Studio_v2/Tango.UnitTests/app.config11
-rw-r--r--Software/Visual_Studio_v2/Tango.UnitTests/packages.config11
-rw-r--r--Software/Visual_Studio_v2/Tango.sln43
19 files changed, 497 insertions, 0 deletions
diff --git a/Software/Visual_Studio_v2/Tango.BLL/ObjectBase.cs b/Software/Visual_Studio_v2/Tango.BLL/ObjectBase.cs
new file mode 100644
index 000000000..be78b4bc0
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.BLL/ObjectBase.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tango.BLL
+{
+ public abstract class ObjectBase
+ {
+
+ }
+}
diff --git a/Software/Visual_Studio_v2/Tango.BLL/Objects/Organization.cs b/Software/Visual_Studio_v2/Tango.BLL/Objects/Organization.cs
new file mode 100644
index 000000000..3750fb909
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.BLL/Objects/Organization.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tango.BLL.Objects
+{
+ public class Organization : ObjectBase
+ {
+ public string ID { get; set; }
+ public string Name { get; set; }
+ }
+}
diff --git a/Software/Visual_Studio_v2/Tango.BLL/ServiceBase.cs b/Software/Visual_Studio_v2/Tango.BLL/ServiceBase.cs
new file mode 100644
index 000000000..211d1046c
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.BLL/ServiceBase.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tango.BLL
+{
+ public abstract class ServiceBase<T> : IDisposable where T : ObjectBase
+ {
+ public virtual void Dispose()
+ {
+ //Do nothing.
+ }
+ }
+}
diff --git a/Software/Visual_Studio_v2/Tango.BLL/Services/OrganizationsService.cs b/Software/Visual_Studio_v2/Tango.BLL/Services/OrganizationsService.cs
new file mode 100644
index 000000000..a65952846
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.BLL/Services/OrganizationsService.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.BLL.Objects;
+using Tango.DAL;
+using Tango.DAL.Entities;
+using System.Linq;
+
+namespace Tango.BLL.Services
+{
+ public class OrganizationsService : ServiceBase<Organization>
+ {
+ private IRepository<OrganizationEntity> _repository;
+
+ public OrganizationsService(IRepository<OrganizationEntity> repository)
+ {
+ _repository = repository;
+ }
+
+ public async Task<List<Organization>> GetAll()
+ {
+ var entities = await _repository.GetAllAsync();
+
+ List<Organization> organizations = new List<Organization>();
+
+ foreach (var entity in entities)
+ {
+ Organization organization = new Organization();
+ organization.ID = entity.ID;
+ organization.Name = entity.Name;
+
+ organizations.Add(organization);
+ }
+
+ return organizations;
+ }
+ }
+}
diff --git a/Software/Visual_Studio_v2/Tango.BLL/Tango.BLL.csproj b/Software/Visual_Studio_v2/Tango.BLL/Tango.BLL.csproj
new file mode 100644
index 000000000..bc3617fb9
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.BLL/Tango.BLL.csproj
@@ -0,0 +1,11 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>netstandard2.0</TargetFramework>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\Tango.DAL\Tango.DAL.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git a/Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoDataBaseSettings.cs b/Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoDataBaseSettings.cs
new file mode 100644
index 000000000..5c44f2022
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoDataBaseSettings.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tango.DAL.Mongo
+{
+ public class MongoDataBaseSettings
+ {
+ public String Address { get; set; }
+ public String DatabaseName { get; set; }
+ }
+}
diff --git a/Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoRepository.cs b/Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoRepository.cs
new file mode 100644
index 000000000..d268f434d
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoRepository.cs
@@ -0,0 +1,76 @@
+using MongoDB.Driver;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Reflection;
+using Tango.DAL.Attributes;
+using System.Linq.Expressions;
+using MongoDB.Driver.Linq;
+
+namespace Tango.DAL.Mongo
+{
+ public class MongoRepository<T> : IRepository<T> where T : Entity
+ {
+ private IMongoDatabase _database;
+ private MongoClient _client;
+ private IMongoCollection<T> _collection;
+
+ public MongoRepository(MongoDataBaseSettings settings)
+ {
+ _client = new MongoClient(settings.Address);
+ _database = _client.GetDatabase(settings.DatabaseName);
+ }
+
+ private IMongoCollection<T> GetCollection()
+ {
+ if (_collection == null)
+ {
+ _collection = _database.GetCollection<T>(typeof(T).GetCustomAttribute<MongoCollectionAttribute>().Name);
+ }
+
+ return _collection;
+ }
+
+ public async Task<List<T>> GetAllAsync()
+ {
+ return await (await GetCollection().FindAsync(x => true)).ToListAsync();
+ }
+
+ public async Task<List<T>> GetAsync(Expression<Func<T, bool>> filter)
+ {
+ return await (await GetCollection().FindAsync(filter)).ToListAsync();
+ }
+
+ public async Task<T> ReplaceAsync(T entity)
+ {
+ await GetCollection().ReplaceOneAsync(x => x.ID == entity.ID, entity);
+ return entity;
+ }
+
+ public async Task<long> DeleteAsync(Expression<Func<T, bool>> filter)
+ {
+ return (await GetCollection().DeleteOneAsync(filter)).DeletedCount;
+ }
+
+ public async Task<T> Insert(T entity)
+ {
+ await GetCollection().InsertOneAsync(entity);
+ return entity;
+ }
+
+ public Task<long> Count()
+ {
+ return GetCollection().CountDocumentsAsync(x => true);
+ }
+
+ public Task<long> Count(Expression<Func<T, bool>> filter)
+ {
+ return GetCollection().CountDocumentsAsync(filter);
+ }
+
+ public void Dispose()
+ {
+
+ }
+ }
+}
diff --git a/Software/Visual_Studio_v2/Tango.DAL.Mongo/Tango.DAL.Mongo.csproj b/Software/Visual_Studio_v2/Tango.DAL.Mongo/Tango.DAL.Mongo.csproj
new file mode 100644
index 000000000..7f0e7a2f0
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.DAL.Mongo/Tango.DAL.Mongo.csproj
@@ -0,0 +1,15 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>netstandard2.0</TargetFramework>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="MongoDB.Driver" Version="2.8.1" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\Tango.DAL\Tango.DAL.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git a/Software/Visual_Studio_v2/Tango.DAL/Attributes/MongoCollectionAttribute.cs b/Software/Visual_Studio_v2/Tango.DAL/Attributes/MongoCollectionAttribute.cs
new file mode 100644
index 000000000..50b585698
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.DAL/Attributes/MongoCollectionAttribute.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tango.DAL.Attributes
+{
+ [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
+ public class MongoCollectionAttribute : Attribute
+ {
+ public String Name { get; set; }
+
+ public MongoCollectionAttribute(String name)
+ {
+ Name = name;
+ }
+ }
+}
diff --git a/Software/Visual_Studio_v2/Tango.DAL/Entities/OrganizationEntity.cs b/Software/Visual_Studio_v2/Tango.DAL/Entities/OrganizationEntity.cs
new file mode 100644
index 000000000..b17cd34c9
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.DAL/Entities/OrganizationEntity.cs
@@ -0,0 +1,11 @@
+using System;
+using Tango.DAL.Attributes;
+
+namespace Tango.DAL.Entities
+{
+ [MongoCollection("Organizations")]
+ public class OrganizationEntity : Entity
+ {
+ public string Name { get; set; }
+ }
+}
diff --git a/Software/Visual_Studio_v2/Tango.DAL/Entity.cs b/Software/Visual_Studio_v2/Tango.DAL/Entity.cs
new file mode 100644
index 000000000..d299dcc78
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.DAL/Entity.cs
@@ -0,0 +1,15 @@
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization.Attributes;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tango.DAL
+{
+ public abstract class Entity
+ {
+ [BsonId]
+ [BsonRepresentation(BsonType.ObjectId)]
+ public string ID { get; set; }
+ }
+}
diff --git a/Software/Visual_Studio_v2/Tango.DAL/IRepository.cs b/Software/Visual_Studio_v2/Tango.DAL/IRepository.cs
new file mode 100644
index 000000000..a6d6989dd
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.DAL/IRepository.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.DAL
+{
+ public interface IRepository : IDisposable
+ {
+
+ }
+
+ public interface IRepository<T> : IRepository where T : Entity
+ {
+ Task<List<T>> GetAsync(Expression<Func<T, bool>> filter);
+ Task<List<T>> GetAllAsync();
+ Task<T> ReplaceAsync(T entity);
+ Task<long> DeleteAsync(Expression<Func<T, bool>> filter);
+ Task<T> Insert(T entity);
+ Task<long> Count();
+ Task<long> Count(Expression<Func<T, bool>> filter);
+ }
+}
diff --git a/Software/Visual_Studio_v2/Tango.DAL/Tango.DAL.csproj b/Software/Visual_Studio_v2/Tango.DAL/Tango.DAL.csproj
new file mode 100644
index 000000000..6fa539f1e
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.DAL/Tango.DAL.csproj
@@ -0,0 +1,11 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>netstandard2.0</TargetFramework>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="MongoDB.Driver" Version="2.8.1" />
+ </ItemGroup>
+
+</Project>
diff --git a/Software/Visual_Studio_v2/Tango.UnitTests/DAL/Mongo.cs b/Software/Visual_Studio_v2/Tango.UnitTests/DAL/Mongo.cs
new file mode 100644
index 000000000..8a2314858
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.UnitTests/DAL/Mongo.cs
@@ -0,0 +1,45 @@
+using System;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Tango.DAL.Entities;
+using Tango.DAL.Mongo;
+using System.Linq;
+
+namespace Tango.UnitTests.DAL
+{
+ [TestClass]
+ public class Mongo
+ {
+ [TestMethod]
+ public void Simple_Operations()
+ {
+ MongoRepository<OrganizationEntity> repo = new MongoRepository<OrganizationEntity>(new MongoDataBaseSettings()
+ {
+ Address = "mongodb://localhost:27017",
+ DatabaseName = "TEST"
+ });
+
+ repo.DeleteAsync(x => true).GetAwaiter().GetResult();
+
+ OrganizationEntity org1 = new OrganizationEntity();
+ org1.Name = "Org 1";
+
+ repo.Insert(org1).GetAwaiter().GetResult();
+
+ Assert.IsNotNull(org1.ID);
+
+ var org2 = repo.GetAsync(x => x.ID == org1.ID).GetAwaiter().GetResult().FirstOrDefault();
+
+ Assert.IsNotNull(org2);
+
+ Assert.AreEqual(org1.Name, org2.Name);
+
+ long count = repo.DeleteAsync(x => x.ID == org1.ID).GetAwaiter().GetResult();
+
+ Assert.AreEqual(count, 1);
+
+ count = repo.Count().GetAwaiter().GetResult();
+
+ Assert.AreEqual(count, 0);
+ }
+ }
+}
diff --git a/Software/Visual_Studio_v2/Tango.UnitTests/Properties/AssemblyInfo.cs b/Software/Visual_Studio_v2/Tango.UnitTests/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..374da8010
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.UnitTests/Properties/AssemblyInfo.cs
@@ -0,0 +1,20 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("Tango.UnitTests")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Tango.UnitTests")]
+[assembly: AssemblyCopyright("Copyright © 2019")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+
+[assembly: Guid("932d6bf7-ed35-4ffa-a573-356c071ca727")]
+
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Software/Visual_Studio_v2/Tango.UnitTests/Tango.UnitTests.csproj b/Software/Visual_Studio_v2/Tango.UnitTests/Tango.UnitTests.csproj
new file mode 100644
index 000000000..bcdb3c11f
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.UnitTests/Tango.UnitTests.csproj
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props')" />
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{932D6BF7-ED35-4FFA-A573-356C071CA727}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Tango.UnitTests</RootNamespace>
+ <AssemblyName>Tango.UnitTests</AssemblyName>
+ <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
+ <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
+ <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
+ <IsCodedUITest>False</IsCodedUITest>
+ <TestProjectType>UnitTest</TestProjectType>
+ <NuGetPackageImportStamp>
+ </NuGetPackageImportStamp>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="DnsClient, Version=1.2.0.0, Culture=neutral, PublicKeyToken=4574bb5573c51424, processorArchitecture=MSIL">
+ <HintPath>..\packages\DnsClient.1.2.0\lib\net45\DnsClient.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="MongoDB.Bson, Version=2.8.1.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\packages\MongoDB.Bson.2.8.1\lib\net452\MongoDB.Bson.dll</HintPath>
+ </Reference>
+ <Reference Include="MongoDB.Driver, Version=2.8.1.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\packages\MongoDB.Driver.2.8.1\lib\net452\MongoDB.Driver.dll</HintPath>
+ </Reference>
+ <Reference Include="MongoDB.Driver.Core, Version=2.8.1.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\packages\MongoDB.Driver.Core.2.8.1\lib\net452\MongoDB.Driver.Core.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Core" />
+ <Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="DAL\Mongo.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="app.config" />
+ <None Include="packages.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Tango.DAL.Mongo\Tango.DAL.Mongo.csproj">
+ <Project>{9d1f1789-745c-4725-9dc4-12e0b0090a64}</Project>
+ <Name>Tango.DAL.Mongo</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Tango.DAL\Tango.DAL.csproj">
+ <Project>{9701ad8c-5b58-4a1e-be59-ef4de36549d9}</Project>
+ <Name>Tango.DAL</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+ <PropertyGroup>
+ <ErrorText>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}.</ErrorText>
+ </PropertyGroup>
+ <Error Condition="!Exists('..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props'))" />
+ <Error Condition="!Exists('..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.targets'))" />
+ </Target>
+ <Import Project="..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.targets')" />
+</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio_v2/Tango.UnitTests/app.config b/Software/Visual_Studio_v2/Tango.UnitTests/app.config
new file mode 100644
index 000000000..d592063f0
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.UnitTests/app.config
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
+</configuration> \ No newline at end of file
diff --git a/Software/Visual_Studio_v2/Tango.UnitTests/packages.config b/Software/Visual_Studio_v2/Tango.UnitTests/packages.config
new file mode 100644
index 000000000..9852f98c8
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.UnitTests/packages.config
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="DnsClient" version="1.2.0" targetFramework="net461" />
+ <package id="MongoDB.Bson" version="2.8.1" targetFramework="net461" />
+ <package id="MongoDB.Driver" version="2.8.1" targetFramework="net461" />
+ <package id="MongoDB.Driver.Core" version="2.8.1" targetFramework="net461" />
+ <package id="MSTest.TestAdapter" version="1.3.2" targetFramework="net461" />
+ <package id="MSTest.TestFramework" version="1.3.2" targetFramework="net461" />
+ <package id="System.Buffers" version="4.4.0" targetFramework="net461" />
+ <package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net461" />
+</packages> \ No newline at end of file
diff --git a/Software/Visual_Studio_v2/Tango.sln b/Software/Visual_Studio_v2/Tango.sln
new file mode 100644
index 000000000..abe68497f
--- /dev/null
+++ b/Software/Visual_Studio_v2/Tango.sln
@@ -0,0 +1,43 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.28010.2048
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.DAL", "Tango.DAL\Tango.DAL.csproj", "{9701AD8C-5B58-4A1E-BE59-EF4DE36549D9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.BLL", "Tango.BLL\Tango.BLL.csproj", "{5F1F3818-A7E7-4810-95DE-F5C1442B21C1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.DAL.Mongo", "Tango.DAL.Mongo\Tango.DAL.Mongo.csproj", "{9D1F1789-745C-4725-9DC4-12E0B0090A64}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.UnitTests", "Tango.UnitTests\Tango.UnitTests.csproj", "{932D6BF7-ED35-4FFA-A573-356C071CA727}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {9701AD8C-5B58-4A1E-BE59-EF4DE36549D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9701AD8C-5B58-4A1E-BE59-EF4DE36549D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9701AD8C-5B58-4A1E-BE59-EF4DE36549D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9701AD8C-5B58-4A1E-BE59-EF4DE36549D9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5F1F3818-A7E7-4810-95DE-F5C1442B21C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5F1F3818-A7E7-4810-95DE-F5C1442B21C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5F1F3818-A7E7-4810-95DE-F5C1442B21C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5F1F3818-A7E7-4810-95DE-F5C1442B21C1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9D1F1789-745C-4725-9DC4-12E0B0090A64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9D1F1789-745C-4725-9DC4-12E0B0090A64}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9D1F1789-745C-4725-9DC4-12E0B0090A64}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9D1F1789-745C-4725-9DC4-12E0B0090A64}.Release|Any CPU.Build.0 = Release|Any CPU
+ {932D6BF7-ED35-4FFA-A573-356C071CA727}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {932D6BF7-ED35-4FFA-A573-356C071CA727}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {932D6BF7-ED35-4FFA-A573-356C071CA727}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {932D6BF7-ED35-4FFA-A573-356C071CA727}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {64685705-FA96-4958-9637-791C0DCBC200}
+ EndGlobalSection
+EndGlobal