From 26c6577d9dc3058294a68e3a554c47095ec68440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=ABl=20Mugnier?= Date: Thu, 12 Nov 2020 21:16:48 +0100 Subject: [PATCH] =?UTF-8?q?Fix=20-=20Correction=20de=20la=20r=C3=A9cup?= =?UTF-8?q?=C3=A9ration=20des=20deliveries=20et=20ajout=20de=20TU?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Commands/DeliveryModeCommandsHandler.cs | 4 +- .../GetProducerDeliveriesTests.cs | 214 ++++++++++++++++++ .../Sheaft.Application.Queries.Tests.csproj | 26 +++ Sheaft.Application.Queries/DeliveryQueries.cs | 28 +-- .../Sheaft.Application.Tests.csproj | 18 -- Sheaft.Application.Tests/UnitTest1.cs | 18 -- Sheaft.Domain.Tests/UnitTest1.cs | 18 -- Sheaft.Domain/DeliveryMode.cs | 3 +- Sheaft.Tests.Common/ContextHelper.cs | 22 ++ .../Sheaft.Tests.Common.csproj | 17 ++ Sheaft.sln | 23 +- 11 files changed, 308 insertions(+), 83 deletions(-) create mode 100644 Sheaft.Application.Queries.Tests/GetProducerDeliveriesTests.cs create mode 100644 Sheaft.Application.Queries.Tests/Sheaft.Application.Queries.Tests.csproj delete mode 100644 Sheaft.Application.Tests/Sheaft.Application.Tests.csproj delete mode 100644 Sheaft.Application.Tests/UnitTest1.cs delete mode 100644 Sheaft.Domain.Tests/UnitTest1.cs create mode 100644 Sheaft.Tests.Common/ContextHelper.cs create mode 100644 Sheaft.Tests.Common/Sheaft.Tests.Common.csproj diff --git a/Sheaft.Application.Handlers/Commands/DeliveryModeCommandsHandler.cs b/Sheaft.Application.Handlers/Commands/DeliveryModeCommandsHandler.cs index e18d706f4..5112ac9e0 100644 --- a/Sheaft.Application.Handlers/Commands/DeliveryModeCommandsHandler.cs +++ b/Sheaft.Application.Handlers/Commands/DeliveryModeCommandsHandler.cs @@ -52,9 +52,7 @@ public async Task> Handle(CreateDeliveryModeCommand request, Cancel } } - var entity = new DeliveryMode(Guid.NewGuid(), request.Kind, producer, request.LockOrderHoursBeforeDelivery, deliveryModeAddress, openingHours, request.Name, request.Description); - - entity.SetAvailability(request.Available); + var entity = new DeliveryMode(Guid.NewGuid(), request.Kind, producer, request.Available, request.LockOrderHoursBeforeDelivery, deliveryModeAddress, openingHours, request.Name, request.Description); if (request.Kind == DeliveryKind.Collective || request.Kind == DeliveryKind.Farm || request.Kind == DeliveryKind.Market) producer.CanDirectSell = true; diff --git a/Sheaft.Application.Queries.Tests/GetProducerDeliveriesTests.cs b/Sheaft.Application.Queries.Tests/GetProducerDeliveriesTests.cs new file mode 100644 index 000000000..20b5a8564 --- /dev/null +++ b/Sheaft.Application.Queries.Tests/GetProducerDeliveriesTests.cs @@ -0,0 +1,214 @@ +using FluentAssertions; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Sheaft.Application.Interop; +using Sheaft.Application.Models; +using Sheaft.Application.Queries; +using Sheaft.Domain.Enums; +using Sheaft.Domain.Models; +using Sheaft.Tests.Common; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace Queries.Delivery.Tests +{ + [TestClass] + public class GetProducerDeliveries + { + private IAppDbContext _context; + private IDeliveryQueries _queries; + + [TestInitialize] + public void Initialize() + { + _context = ContextHelper.GetInMemoryContext(); + _queries = new DeliveryQueries(_context, null); + } + + [TestMethod] + [DataRow("3b5c008bb6a24f5c8cc8258b9e33105f", false, DeliveryKind.Farm)] + [DataRow("6a209232b2184ae5bf8a1c26a7a74e8b", true, DeliveryKind.Farm)] + [DataRow("3b5c008bb6a24f5c8cc8258b9e33105f", true, DeliveryKind.ProducerToStore)] + public async Task Should_Return_No_Deliveries(string producerId, bool available, DeliveryKind kind) + { + var token = CancellationToken.None; + + await _context.AddAsync(new DeliveryMode( + Guid.NewGuid(), + kind, + new Producer(Guid.Parse("3b5c008bb6a24f5c8cc8258b9e33105f"), "prod1", "fa", "la", "test@email.com", new UserAddress("x", null, "x", "x", CountryIsoCode.FR, null)), + available, + 0, + new DeliveryAddress("x", null, "x", "x", CountryIsoCode.FR, null, null), + new List + { + new TimeSlotHour(DayOfWeek.Wednesday, TimeSpan.FromHours(8), TimeSpan.FromHours(12)) + }, + "delivery1"), token); + + await _context.SaveChangesAsync(token); + + //test + var results = await _queries.GetProducersDeliveriesAsync( + new List { Guid.Parse(producerId) }, + new List { DeliveryKind.Farm }, + DateTime.UtcNow, + null, + token); + + //assert + results.Should().NotBeNull().And.BeEmpty(); + } + + [TestMethod] + [DataRow(0, 2020, 1, 1, 7, 59, 59, 1, 8)] + [DataRow(0, 2020, 1, 1, 8, 0, 0, 8, 15)] + [DataRow(24, 2019, 12, 31, 8, 0, 0, 8, 15)] + [DataRow(24, 2019, 12, 31, 7, 0, 0, 1, 8)] + public async Task Should_Return_Wednesday_DeliveryHours(int orderLockInHours, int year, int month, int day, int hour, int minute, int second, int expectedFirstDay, int expectedLastDay) + { + var token = CancellationToken.None; + var currentDate = new DateTime(year, month, day, hour, minute, second); + var producerId = Guid.NewGuid(); + + await _context.AddAsync(new DeliveryMode( + Guid.NewGuid(), + DeliveryKind.Farm, + new Producer(producerId, "prod1", "fa", "la", "test@email.com", new UserAddress("x", null, "x", "x", CountryIsoCode.FR, null)), + true, + orderLockInHours, + new DeliveryAddress("x", null, "x", "x", CountryIsoCode.FR, null, null), + new List { new TimeSlotHour(DayOfWeek.Wednesday, TimeSpan.FromHours(8), TimeSpan.FromHours(12)) }, + "delivery1"), token); + + await _context.SaveChangesAsync(token); + + //test + var results = await _queries.GetProducersDeliveriesAsync( + new List { producerId }, + new List { DeliveryKind.Farm }, + currentDate, + null, + token); + + //assert + var deliveryHoursResults = results + .Should().NotBeNull().And.ContainSingle() + .And.Subject.First().Deliveries.Should().HaveCount(1) + .And.Subject.First().DeliveryHours.Should().HaveCount(2) + .And.Subject.Should().OnlyContain(c => c.Day == DayOfWeek.Wednesday); + + deliveryHoursResults.And.Subject.First().ExpectedDeliveryDate.Day.Should().Be(expectedFirstDay); + deliveryHoursResults.And.Subject.Last().ExpectedDeliveryDate.Day.Should().Be(expectedLastDay); + } + + [TestMethod] + [DataRow(0, 2020, 1, 1, 7, 59, 59, 1, 8, 4, 11)] + [DataRow(0, 2020, 1, 1, 8, 0, 0, 8, 15, 4, 11)] + [DataRow(24, 2019, 12, 31, 8, 0, 0, 8, 15, 4, 11)] + [DataRow(24, 2019, 12, 31, 7, 0, 0, 1, 8, 4, 11)] + [DataRow(0, 2020, 1, 8, 8, 0, 0, 15, 22, 11, 18)] + public async Task Should_Return_Multiple_Days_DeliveryHours(int orderLockInHours, int year, int month, int day, int hour, int minute, int second, int expectedFirstDay, int expectedSecondDay, int expectedThirdDay, int expectedLastDay) + { + var token = CancellationToken.None; + var currentDate = new DateTime(year, month, day, hour, minute, second); + var producerId = Guid.NewGuid(); + + await _context.AddAsync(new DeliveryMode( + Guid.NewGuid(), + DeliveryKind.Farm, + new Producer(producerId, "prod1", "fa", "la", "test@email.com", new UserAddress("x", null, "x", "x", CountryIsoCode.FR, null)), + true, + orderLockInHours, + new DeliveryAddress("x", null, "x", "x", CountryIsoCode.FR, null, null), + new List { + new TimeSlotHour(DayOfWeek.Wednesday, TimeSpan.FromHours(8), TimeSpan.FromHours(12)), + new TimeSlotHour(DayOfWeek.Saturday, TimeSpan.FromHours(10), TimeSpan.FromHours(16)) + }, + "delivery1"), token); + + await _context.SaveChangesAsync(token); + + //test + var results = await _queries.GetProducersDeliveriesAsync( + new List { producerId }, + new List { DeliveryKind.Farm }, + currentDate, + null, + token); + + //assert + var deliveryHoursResults = results + .Should().NotBeNull().And.ContainSingle() + .And.Subject.First().Deliveries.Should().HaveCount(1) + .And.Subject.First().DeliveryHours.Should().HaveCount(4) + .And.Subject.Should().OnlyContain(c => c.Day == DayOfWeek.Wednesday || c.Day == DayOfWeek.Saturday); + + deliveryHoursResults.And.Subject.ElementAt(0).ExpectedDeliveryDate.Day.Should().Be(expectedFirstDay); + deliveryHoursResults.And.Subject.ElementAt(1).ExpectedDeliveryDate.Day.Should().Be(expectedSecondDay); + deliveryHoursResults.And.Subject.ElementAt(2).ExpectedDeliveryDate.Day.Should().Be(expectedThirdDay); + deliveryHoursResults.And.Subject.ElementAt(3).ExpectedDeliveryDate.Day.Should().Be(expectedLastDay); + } + + [TestMethod] + [DataRow(0, 2020, 1, 1, 7, 59, 59, 1, 8, 3, 10)] + [DataRow(0, 2020, 1, 1, 8, 0, 0, 8, 15, 3, 10)] + [DataRow(24, 2019, 12, 31, 8, 0, 0, 8, 15, 3, 10)] + [DataRow(24, 2019, 12, 31, 7, 0, 0, 1, 8, 3, 10)] + [DataRow(0, 2020, 1, 8, 8, 0, 0, 15, 22, 10, 17)] + public async Task Should_Return_Multiple_Deliveries(int orderLockInHours, int year, int month, int day, int hour, int minute, int second, int expectedFarmDelivery_FirstDay, int expectedFarmDelivery_SecondDay, int expectedMarketDelivery_FirstDay, int expectedMarketDelivery_SecondDay) + { + var token = CancellationToken.None; + var currentDate = new DateTime(year, month, day, hour, minute, second); + var producerId = Guid.NewGuid(); + + await _context.AddAsync(new DeliveryMode( + Guid.NewGuid(), + DeliveryKind.Farm, + new Producer(producerId, "prod1", "fa", "la", "test@email.com", new UserAddress("x", null, "x", "x", CountryIsoCode.FR, null)), + true, + orderLockInHours, + new DeliveryAddress("x", null, "x", "x", CountryIsoCode.FR, null, null), + new List { new TimeSlotHour(DayOfWeek.Wednesday, TimeSpan.FromHours(8), TimeSpan.FromHours(12)) }, + "delivery1"), token); + + await _context.AddAsync(new DeliveryMode( + Guid.NewGuid(), + DeliveryKind.Market, + new Producer(producerId, "prod1", "fa", "la", "test@email.com", new UserAddress("x", null, "x", "x", CountryIsoCode.FR, null)), + true, + orderLockInHours, + new DeliveryAddress("x", null, "x", "x", CountryIsoCode.FR, null, null), + new List { new TimeSlotHour(DayOfWeek.Friday, TimeSpan.FromHours(16), TimeSpan.FromHours(18)) }, + "delivery2"), token); + + await _context.SaveChangesAsync(token); + + //test + var results = await _queries.GetProducersDeliveriesAsync( + new List { producerId }, + new List { DeliveryKind.Farm, DeliveryKind.Market }, + currentDate, + null, + token); + + //assert + var deliveriesResults = results + .Should().NotBeNull().And.ContainSingle() + .And.Subject.First().Deliveries.Should().HaveCount(2); + + var marketDelivery = deliveriesResults.And.Subject.First(c => c.Kind == DeliveryKind.Market); + var farmDelivery = deliveriesResults.And.Subject.First(c => c.Kind == DeliveryKind.Farm); + + marketDelivery.DeliveryHours.Should().OnlyContain(c => c.Day == DayOfWeek.Friday); + marketDelivery.DeliveryHours.ElementAt(0).ExpectedDeliveryDate.Day.Should().Be(expectedMarketDelivery_FirstDay); + marketDelivery.DeliveryHours.ElementAt(1).ExpectedDeliveryDate.Day.Should().Be(expectedMarketDelivery_SecondDay); + + farmDelivery.DeliveryHours.Should().OnlyContain(c => c.Day == DayOfWeek.Wednesday); + farmDelivery.DeliveryHours.ElementAt(0).ExpectedDeliveryDate.Day.Should().Be(expectedFarmDelivery_FirstDay); + farmDelivery.DeliveryHours.ElementAt(1).ExpectedDeliveryDate.Day.Should().Be(expectedFarmDelivery_SecondDay); + } + } +} diff --git a/Sheaft.Application.Queries.Tests/Sheaft.Application.Queries.Tests.csproj b/Sheaft.Application.Queries.Tests/Sheaft.Application.Queries.Tests.csproj new file mode 100644 index 000000000..8e6b36dc4 --- /dev/null +++ b/Sheaft.Application.Queries.Tests/Sheaft.Application.Queries.Tests.csproj @@ -0,0 +1,26 @@ + + + + netcoreapp3.1 + + false + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + diff --git a/Sheaft.Application.Queries/DeliveryQueries.cs b/Sheaft.Application.Queries/DeliveryQueries.cs index 7b9bede5f..49a06b0c1 100644 --- a/Sheaft.Application.Queries/DeliveryQueries.cs +++ b/Sheaft.Application.Queries/DeliveryQueries.cs @@ -152,26 +152,20 @@ private IEnumerable GetAvailableDeliveryHours(IEnumerable(); foreach (var openingHour in openingHours.OrderBy(oh => oh.Day)) { - var diff = (int)openingHour.Day >= (int)currentDate.DayOfWeek ? (int)openingHour.Day - (int)currentDate.DayOfWeek : 0; - var result = GetDeliveryHourIfMatch(currentDate, openingHour, diff, lockOrderHoursBeforeDelivery); - if (result != null) - list.Add(result); - - diff = (int)openingHour.Day + 7 - (int)currentDate.DayOfWeek; - result = GetDeliveryHourIfMatch(currentDate, openingHour, diff, lockOrderHoursBeforeDelivery); - if (result != null) - list.Add(result); - - var increment = 14; - while (result == null && increment < 31) + var results = new List(); + var increment = 0; + while (results.Count < 2 && increment < 31) { - diff = (int)openingHour.Day + increment - (int)currentDate.DayOfWeek; - result = GetDeliveryHourIfMatch(currentDate, openingHour, diff, lockOrderHoursBeforeDelivery); + var diff = (int)openingHour.Day + increment - (int)currentDate.DayOfWeek; + var result = GetDeliveryHourIfMatch(currentDate, openingHour, diff, lockOrderHoursBeforeDelivery); if (result != null) - list.Add(result); + results.Add(result); increment += 7; } + + if (results.Any()) + list.AddRange(results); } return list; @@ -179,8 +173,8 @@ private IEnumerable GetAvailableDeliveryHours(IEnumerable targetDate) + var targetDate = new DateTime(currentDate.Year, currentDate.Month, currentDate.Day, openingHour.From.Hours, openingHour.From.Minutes, openingHour.From.Seconds).AddDays(diff); + if (currentDate.AddHours(lockOrderHoursBeforeDelivery) >= targetDate) return null; return new DeliveryHourDto diff --git a/Sheaft.Application.Tests/Sheaft.Application.Tests.csproj b/Sheaft.Application.Tests/Sheaft.Application.Tests.csproj deleted file mode 100644 index 22325bb56..000000000 --- a/Sheaft.Application.Tests/Sheaft.Application.Tests.csproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - netcoreapp3.1 - - false - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - diff --git a/Sheaft.Application.Tests/UnitTest1.cs b/Sheaft.Application.Tests/UnitTest1.cs deleted file mode 100644 index 0efd97448..000000000 --- a/Sheaft.Application.Tests/UnitTest1.cs +++ /dev/null @@ -1,18 +0,0 @@ -using NUnit.Framework; - -namespace Sheaft.Application.Tests -{ - public class Tests - { - [SetUp] - public void Setup() - { - } - - [Test] - public void Test1() - { - Assert.Pass(); - } - } -} \ No newline at end of file diff --git a/Sheaft.Domain.Tests/UnitTest1.cs b/Sheaft.Domain.Tests/UnitTest1.cs deleted file mode 100644 index ff5388ca0..000000000 --- a/Sheaft.Domain.Tests/UnitTest1.cs +++ /dev/null @@ -1,18 +0,0 @@ -using NUnit.Framework; - -namespace Sheaft.Domain.Tests -{ - public class Tests - { - [SetUp] - public void Setup() - { - } - - [Test] - public void Test1() - { - Assert.Pass(); - } - } -} \ No newline at end of file diff --git a/Sheaft.Domain/DeliveryMode.cs b/Sheaft.Domain/DeliveryMode.cs index ac9d88858..375ebef42 100644 --- a/Sheaft.Domain/DeliveryMode.cs +++ b/Sheaft.Domain/DeliveryMode.cs @@ -15,7 +15,7 @@ protected DeliveryMode() { } - public DeliveryMode(Guid id, DeliveryKind kind, Producer producer, int lockOrderHoursBeforeDelivery, DeliveryAddress address, IEnumerable openingHours, string name, string description = null) + public DeliveryMode(Guid id, DeliveryKind kind, Producer producer, bool available, int lockOrderHoursBeforeDelivery, DeliveryAddress address, IEnumerable openingHours, string name, string description = null) { Id = id; Name = name; @@ -27,6 +27,7 @@ public DeliveryMode(Guid id, DeliveryKind kind, Producer producer, int lockOrder Producer = producer; SetOpeningHours(openingHours); + SetAvailability(available); } public Guid Id { get; private set; } diff --git a/Sheaft.Tests.Common/ContextHelper.cs b/Sheaft.Tests.Common/ContextHelper.cs new file mode 100644 index 000000000..83c1fbfc3 --- /dev/null +++ b/Sheaft.Tests.Common/ContextHelper.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Localization; +using Moq; +using Sheaft.Application.Interop; +using Sheaft.Infrastructure.Persistence; +using Sheaft.Localization; +using System; + +namespace Sheaft.Tests.Common +{ + public static class ContextHelper + { + public static IAppDbContext GetInMemoryContext() + { + var options = new DbContextOptionsBuilder() + .UseInMemoryDatabase(Guid.NewGuid().ToString("N")) + .Options; + + return new AppDbContext(options, Mock.Of>()); + } + } +} diff --git a/Sheaft.Tests.Common/Sheaft.Tests.Common.csproj b/Sheaft.Tests.Common/Sheaft.Tests.Common.csproj new file mode 100644 index 000000000..0421fc031 --- /dev/null +++ b/Sheaft.Tests.Common/Sheaft.Tests.Common.csproj @@ -0,0 +1,17 @@ + + + + netcoreapp3.1 + + + + + + + + + + + + + diff --git a/Sheaft.sln b/Sheaft.sln index bec20f800..4528418a6 100644 --- a/Sheaft.sln +++ b/Sheaft.sln @@ -16,8 +16,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sheaft.Domain", "Sheaft.Dom EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sheaft.Domain.Tests", "Sheaft.Domain.Tests\Sheaft.Domain.Tests.csproj", "{36CE2F47-6A12-4033-85FC-6BBC40F159DE}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sheaft.Application.Tests", "Sheaft.Application.Tests\Sheaft.Application.Tests.csproj", "{E00A6ECD-2CD8-41BB-9BB5-AE0B626D7DFF}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{A9BE9E26-29B4-4367-A158-EBE041AC4853}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sheaft.Application.Events", "Sheaft.Application.Events\Sheaft.Application.Events.csproj", "{34EFA102-F1A5-4DB9-9CE6-A922901D8768}" @@ -76,7 +74,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sheaft.Web.Signalr", "Sheaf EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sheaft.Web.Jobs", "Sheaft.Web.Jobs\Sheaft.Web.Jobs.csproj", "{CE8B0658-EDB9-4DAD-AA63-08180512C740}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sheaft.Web.Common", "Sheaft.Web.Common\Sheaft.Web.Common.csproj", "{E2B3A05C-81FE-47D5-B0BB-8C1CA4ECBFA7}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sheaft.Web.Common", "Sheaft.Web.Common\Sheaft.Web.Common.csproj", "{E2B3A05C-81FE-47D5-B0BB-8C1CA4ECBFA7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sheaft.Tests.Common", "Sheaft.Tests.Common\Sheaft.Tests.Common.csproj", "{21BAA1B4-B5E9-4CAC-B795-430425BA10C6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sheaft.Application.Queries.Tests", "Sheaft.Application.Queries.Tests\Sheaft.Application.Queries.Tests.csproj", "{B911920A-F71F-4A3E-B428-FE3B72D95613}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -96,10 +98,6 @@ Global {36CE2F47-6A12-4033-85FC-6BBC40F159DE}.Debug|Any CPU.Build.0 = Debug|Any CPU {36CE2F47-6A12-4033-85FC-6BBC40F159DE}.Release|Any CPU.ActiveCfg = Release|Any CPU {36CE2F47-6A12-4033-85FC-6BBC40F159DE}.Release|Any CPU.Build.0 = Release|Any CPU - {E00A6ECD-2CD8-41BB-9BB5-AE0B626D7DFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E00A6ECD-2CD8-41BB-9BB5-AE0B626D7DFF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E00A6ECD-2CD8-41BB-9BB5-AE0B626D7DFF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E00A6ECD-2CD8-41BB-9BB5-AE0B626D7DFF}.Release|Any CPU.Build.0 = Release|Any CPU {34EFA102-F1A5-4DB9-9CE6-A922901D8768}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {34EFA102-F1A5-4DB9-9CE6-A922901D8768}.Debug|Any CPU.Build.0 = Debug|Any CPU {34EFA102-F1A5-4DB9-9CE6-A922901D8768}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -192,6 +190,14 @@ Global {E2B3A05C-81FE-47D5-B0BB-8C1CA4ECBFA7}.Debug|Any CPU.Build.0 = Debug|Any CPU {E2B3A05C-81FE-47D5-B0BB-8C1CA4ECBFA7}.Release|Any CPU.ActiveCfg = Release|Any CPU {E2B3A05C-81FE-47D5-B0BB-8C1CA4ECBFA7}.Release|Any CPU.Build.0 = Release|Any CPU + {21BAA1B4-B5E9-4CAC-B795-430425BA10C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {21BAA1B4-B5E9-4CAC-B795-430425BA10C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {21BAA1B4-B5E9-4CAC-B795-430425BA10C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {21BAA1B4-B5E9-4CAC-B795-430425BA10C6}.Release|Any CPU.Build.0 = Release|Any CPU + {B911920A-F71F-4A3E-B428-FE3B72D95613}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B911920A-F71F-4A3E-B428-FE3B72D95613}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B911920A-F71F-4A3E-B428-FE3B72D95613}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B911920A-F71F-4A3E-B428-FE3B72D95613}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -200,7 +206,6 @@ Global {054F253C-4DF4-41D6-9926-3EF7D8874649} = {5094536C-354D-4C80-8E70-670C41451A67} {DE7A57E3-1DCB-42B6-864C-1F1B17A1187D} = {BA99FBD9-72D0-4E41-BAB1-7CC3742233DF} {36CE2F47-6A12-4033-85FC-6BBC40F159DE} = {A9BE9E26-29B4-4367-A158-EBE041AC4853} - {E00A6ECD-2CD8-41BB-9BB5-AE0B626D7DFF} = {A9BE9E26-29B4-4367-A158-EBE041AC4853} {34EFA102-F1A5-4DB9-9CE6-A922901D8768} = {0B05A1B9-10C1-4248-9525-F216807802AF} {181AA442-435E-4832-8EBC-04C7AAC06422} = {0B05A1B9-10C1-4248-9525-F216807802AF} {86FD095A-A62C-47E1-97E6-28B9CE4FBC6A} = {0B05A1B9-10C1-4248-9525-F216807802AF} @@ -224,6 +229,8 @@ Global {AA07C7A0-2FB8-4586-A800-62201938E607} = {E06A5FA4-720B-4357-BD73-4A06A34B67BE} {CE8B0658-EDB9-4DAD-AA63-08180512C740} = {E06A5FA4-720B-4357-BD73-4A06A34B67BE} {E2B3A05C-81FE-47D5-B0BB-8C1CA4ECBFA7} = {E06A5FA4-720B-4357-BD73-4A06A34B67BE} + {21BAA1B4-B5E9-4CAC-B795-430425BA10C6} = {A9BE9E26-29B4-4367-A158-EBE041AC4853} + {B911920A-F71F-4A3E-B428-FE3B72D95613} = {A9BE9E26-29B4-4367-A158-EBE041AC4853} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {CB01E52E-C0CE-48D8-B4A5-3646A7201224}