diff --git a/build-images.ps1 b/build-images.ps1 index 0324fbc05..9ddd22d09 100644 --- a/build-images.ps1 +++ b/build-images.ps1 @@ -7,17 +7,19 @@ $pubFolderToDelete = $scriptPath + "\pub" remove-item -path $pubFolderToDelete -Force -Recurse -ErrorAction SilentlyContinue #cmd /c "rd /s pub" /q + # *** WebMVC image *** $webPathToJson = $scriptPath + "\src\Web\WebMVC\project.json" Write-Host "webPathToJson is $webPathToJson" -ForegroundColor Yellow $webPathToPub = $scriptPath + "\pub\webMVC" Write-Host "webPathToPub is $webPathToPub" -ForegroundColor Yellow -Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue +write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue dotnet restore $webPathToJson dotnet build $webPathToJson dotnet publish $webPathToJson -o $webPathToPub + # *** WebSPA image *** $webSPAPathToJson = $scriptPath + "\src\Web\WebSPA\eShopOnContainers.WebSPA\project.json" Write-Host "webSPAPathToJson is $webSPAPathToJson" -ForegroundColor Yellow @@ -41,6 +43,7 @@ dotnet restore $catalogPathToJson dotnet build $catalogPathToJson dotnet publish $catalogPathToJson -o $catalogPathToPub + #*** Ordering service image *** $orderingPathToJson = $scriptPath + "\src\Services\Ordering\Ordering.API\project.json" Write-Host "orderingPathToJson is $orderingPathToJson" -ForegroundColor Yellow @@ -52,6 +55,7 @@ dotnet restore $orderingPathToJson dotnet build $orderingPathToJson dotnet publish $orderingPathToJson -o $orderingPathToPub + #*** Basket service image *** $basketPathToJson = $scriptPath + "\src\Services\Basket\Basket.API\project.json" Write-Host "basketPathToJson is $basketPathToJson" -ForegroundColor Yellow @@ -63,6 +67,8 @@ dotnet restore $basketPathToJson dotnet build $basketPathToJson dotnet publish $basketPathToJson -o $basketPathToPub + +#*** Build Docker Images docker build -t eshop/web $webPathToPub docker build -t eshop/catalog.api $catalogPathToPub docker build -t eshop/ordering.api $orderingPathToPub diff --git a/eShopOnContainers-MobileApps.sln b/eShopOnContainers-MobileApps.sln new file mode 100644 index 000000000..ac4f693a1 --- /dev/null +++ b/eShopOnContainers-MobileApps.sln @@ -0,0 +1,515 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{932D8224-11F6-4D07-B109-DA28AD288A63}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3AF739CD-81D8-428D-A08A-0A58372DEBF6}" + ProjectSection(SolutionItems) = preProject + docker-compose.yml = docker-compose.yml + global.json = global.json + NuGet.config = NuGet.config + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile Apps", "Mobile Apps", "{F61357CE-1CC2-410E-8776-B16EEBC98EB8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A857AD10-40FF-4303-BEC2-FF1C58D5735E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Core", "src\Mobile\eShopOnContainers\eShopOnContainers.Core\eShopOnContainers.Core.csproj", "{65116D1C-145B-4693-ABDA-F0FB6F425191}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Droid", "src\Mobile\eShopOnContainers\eShopOnContainers.Droid\eShopOnContainers.Droid.csproj", "{62DBB163-9CA9-4818-B48B-13233DF37C24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.iOS", "src\Mobile\eShopOnContainers\eShopOnContainers.iOS\eShopOnContainers.iOS.csproj", "{6EEB23DC-7063-4444-9AF8-90DF24F549C0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Windows", "src\Mobile\eShopOnContainers\eShopOnContainers.Windows\eShopOnContainers.Windows.csproj", "{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared Code", "Shared Code", "{778289CA-31F7-4464-8C2A-612EE846F8A7}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{9CC7814B-72A6-465B-A61C-57B512DEE303}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile Apps", "Mobile Apps", "{B7B1D395-4E06-4036-BE86-C216756B9367}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.UnitTests", "src\Mobile\eShopOnContainers\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj", "{F7B6A162-BC4D-4924-B16A-713F9B0344E7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Droid", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.Droid\eShopOnContainers.TestRunner.Droid.csproj", "{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Windows", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.Windows\eShopOnContainers.TestRunner.Windows.csproj", "{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.iOS", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.iOS\eShopOnContainers.TestRunner.iOS.csproj", "{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Ad-Hoc|Any CPU = Ad-Hoc|Any CPU + Ad-Hoc|ARM = Ad-Hoc|ARM + Ad-Hoc|iPhone = Ad-Hoc|iPhone + Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator + Ad-Hoc|x64 = Ad-Hoc|x64 + Ad-Hoc|x86 = Ad-Hoc|x86 + AppStore|Any CPU = AppStore|Any CPU + AppStore|ARM = AppStore|ARM + AppStore|iPhone = AppStore|iPhone + AppStore|iPhoneSimulator = AppStore|iPhoneSimulator + AppStore|x64 = AppStore|x64 + AppStore|x86 = AppStore|x86 + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|iPhone = Debug|iPhone + Debug|iPhoneSimulator = Debug|iPhoneSimulator + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|iPhone = Release|iPhone + Release|iPhoneSimulator = Release|iPhoneSimulator + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|ARM.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|x64.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|x86.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|Any CPU.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|ARM.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|ARM.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|iPhone.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|x64.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|x64.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|x86.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|x86.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|Any CPU.Build.0 = Debug|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|ARM.ActiveCfg = Debug|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|ARM.Build.0 = Debug|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|iPhone.Build.0 = Debug|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|x64.ActiveCfg = Debug|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|x64.Build.0 = Debug|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|x86.ActiveCfg = Debug|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|x86.Build.0 = Debug|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|Any CPU.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|Any CPU.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|ARM.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|ARM.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|iPhone.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|iPhone.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|x64.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|x64.Build.0 = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|x86.ActiveCfg = Release|Any CPU + {65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|x86.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|ARM.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x64.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x86.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|Any CPU.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|Any CPU.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|ARM.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|ARM.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|ARM.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhone.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhone.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x64.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x64.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x64.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x86.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x86.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x86.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|ARM.ActiveCfg = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|ARM.Build.0 = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|ARM.Deploy.0 = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhone.Build.0 = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhone.Deploy.0 = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x64.ActiveCfg = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x64.Build.0 = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x64.Deploy.0 = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x86.ActiveCfg = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x86.Build.0 = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x86.Deploy.0 = Debug|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|Any CPU.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|Any CPU.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|ARM.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|ARM.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|ARM.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhone.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhone.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhone.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x64.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x64.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x64.Deploy.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x86.ActiveCfg = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x86.Build.0 = Release|Any CPU + {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x86.Deploy.0 = Release|Any CPU + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|ARM.ActiveCfg = AppStore|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhone.ActiveCfg = AppStore|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhone.Build.0 = AppStore|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|x64.ActiveCfg = AppStore|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|x86.ActiveCfg = AppStore|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|Any CPU.ActiveCfg = Debug|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|ARM.ActiveCfg = Debug|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhone.ActiveCfg = Debug|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhone.Build.0 = Debug|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|x64.ActiveCfg = Debug|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|x86.ActiveCfg = Debug|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|Any CPU.ActiveCfg = Release|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|ARM.ActiveCfg = Release|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhone.ActiveCfg = Release|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhone.Build.0 = Release|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|x64.ActiveCfg = Release|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|x86.ActiveCfg = Release|iPhone + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|Any CPU.ActiveCfg = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|Any CPU.Build.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|Any CPU.Deploy.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|ARM.ActiveCfg = Release|ARM + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|ARM.Build.0 = Release|ARM + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|ARM.Deploy.0 = Release|ARM + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhone.ActiveCfg = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhone.Build.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhone.Deploy.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x64.ActiveCfg = Release|x64 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x64.Build.0 = Release|x64 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x64.Deploy.0 = Release|x64 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x86.ActiveCfg = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x86.Build.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x86.Deploy.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|Any CPU.ActiveCfg = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|Any CPU.Build.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|Any CPU.Deploy.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|ARM.ActiveCfg = Release|ARM + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|ARM.Build.0 = Release|ARM + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|ARM.Deploy.0 = Release|ARM + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhone.ActiveCfg = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhone.Build.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhone.Deploy.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhoneSimulator.ActiveCfg = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhoneSimulator.Build.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhoneSimulator.Deploy.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x64.ActiveCfg = Release|x64 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x64.Build.0 = Release|x64 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x64.Deploy.0 = Release|x64 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x86.ActiveCfg = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x86.Build.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x86.Deploy.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|Any CPU.ActiveCfg = Debug|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|ARM.ActiveCfg = Debug|ARM + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|ARM.Build.0 = Debug|ARM + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|ARM.Deploy.0 = Debug|ARM + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhone.ActiveCfg = Debug|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhone.Build.0 = Debug|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhone.Deploy.0 = Debug|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.ActiveCfg = Debug|x64 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.Build.0 = Debug|x64 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.Deploy.0 = Debug|x64 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x86.ActiveCfg = Debug|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x86.Build.0 = Debug|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x86.Deploy.0 = Debug|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|Any CPU.ActiveCfg = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.ActiveCfg = Release|ARM + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.Build.0 = Release|ARM + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.Deploy.0 = Release|ARM + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|iPhone.ActiveCfg = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|iPhoneSimulator.ActiveCfg = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x64.ActiveCfg = Release|x64 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x64.Build.0 = Release|x64 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x64.Deploy.0 = Release|x64 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.ActiveCfg = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.Build.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.Deploy.0 = Release|x86 + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|ARM.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|x64.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|x86.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|Any CPU.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|ARM.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|ARM.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|iPhone.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|x64.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|x64.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|x86.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|x86.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|ARM.ActiveCfg = Debug|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|ARM.Build.0 = Debug|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|iPhone.Build.0 = Debug|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|x64.ActiveCfg = Debug|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|x64.Build.0 = Debug|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|x86.ActiveCfg = Debug|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|x86.Build.0 = Debug|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|Any CPU.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|ARM.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|ARM.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|iPhone.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|iPhone.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|x64.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|x64.Build.0 = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|x86.ActiveCfg = Release|Any CPU + {F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|x86.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|ARM.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x64.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x86.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|Any CPU.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|Any CPU.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|ARM.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|ARM.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|ARM.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhone.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhone.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x64.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x64.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x64.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x86.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x86.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x86.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|ARM.ActiveCfg = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|ARM.Build.0 = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|ARM.Deploy.0 = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhone.Build.0 = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhone.Deploy.0 = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x64.ActiveCfg = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x64.Build.0 = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x64.Deploy.0 = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x86.ActiveCfg = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x86.Build.0 = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x86.Deploy.0 = Debug|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|Any CPU.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|Any CPU.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|ARM.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|ARM.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|ARM.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhone.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhone.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhone.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x64.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x64.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x64.Deploy.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x86.ActiveCfg = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x86.Build.0 = Release|Any CPU + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x86.Deploy.0 = Release|Any CPU + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|Any CPU.ActiveCfg = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|Any CPU.Build.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|Any CPU.Deploy.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|ARM.ActiveCfg = Release|ARM + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|ARM.Build.0 = Release|ARM + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|ARM.Deploy.0 = Release|ARM + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|iPhone.ActiveCfg = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|iPhone.Build.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|iPhone.Deploy.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|x64.ActiveCfg = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|x64.Build.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|x64.Deploy.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|x86.ActiveCfg = Release|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|x86.Build.0 = Release|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|x86.Deploy.0 = Release|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|Any CPU.ActiveCfg = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|Any CPU.Build.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|Any CPU.Deploy.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|ARM.ActiveCfg = Release|ARM + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|ARM.Build.0 = Release|ARM + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|ARM.Deploy.0 = Release|ARM + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|iPhone.ActiveCfg = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|iPhone.Build.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|iPhone.Deploy.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|iPhoneSimulator.ActiveCfg = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|iPhoneSimulator.Build.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|iPhoneSimulator.Deploy.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|x64.ActiveCfg = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|x64.Build.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|x64.Deploy.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|x86.ActiveCfg = Release|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|x86.Build.0 = Release|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|x86.Deploy.0 = Release|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|Any CPU.ActiveCfg = Debug|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|ARM.ActiveCfg = Debug|ARM + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|ARM.Build.0 = Debug|ARM + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|ARM.Deploy.0 = Debug|ARM + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|iPhone.ActiveCfg = Debug|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|iPhone.Build.0 = Debug|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|iPhone.Deploy.0 = Debug|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x64.ActiveCfg = Debug|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x64.Build.0 = Debug|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x64.Deploy.0 = Debug|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x86.ActiveCfg = Debug|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x86.Build.0 = Debug|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x86.Deploy.0 = Debug|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|Any CPU.ActiveCfg = Release|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|ARM.ActiveCfg = Release|ARM + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|ARM.Build.0 = Release|ARM + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|ARM.Deploy.0 = Release|ARM + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|iPhone.ActiveCfg = Release|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|iPhoneSimulator.ActiveCfg = Release|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x64.ActiveCfg = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x64.Build.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x64.Deploy.0 = Release|x64 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x86.ActiveCfg = Release|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x86.Build.0 = Release|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x86.Deploy.0 = Release|x86 + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|ARM.ActiveCfg = AppStore|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|iPhone.ActiveCfg = AppStore|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|iPhone.Build.0 = AppStore|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|x64.ActiveCfg = AppStore|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|x86.ActiveCfg = AppStore|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|Any CPU.ActiveCfg = Debug|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|ARM.ActiveCfg = Debug|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|iPhone.ActiveCfg = Debug|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|iPhone.Build.0 = Debug|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|x64.ActiveCfg = Debug|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|x86.ActiveCfg = Debug|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|Any CPU.ActiveCfg = Release|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|ARM.ActiveCfg = Release|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|iPhone.ActiveCfg = Release|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|iPhone.Build.0 = Release|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|x64.ActiveCfg = Release|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|x86.ActiveCfg = Release|iPhone + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {F61357CE-1CC2-410E-8776-B16EEBC98EB8} = {932D8224-11F6-4D07-B109-DA28AD288A63} + {65116D1C-145B-4693-ABDA-F0FB6F425191} = {778289CA-31F7-4464-8C2A-612EE846F8A7} + {62DBB163-9CA9-4818-B48B-13233DF37C24} = {9CC7814B-72A6-465B-A61C-57B512DEE303} + {6EEB23DC-7063-4444-9AF8-90DF24F549C0} = {9CC7814B-72A6-465B-A61C-57B512DEE303} + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B} = {9CC7814B-72A6-465B-A61C-57B512DEE303} + {778289CA-31F7-4464-8C2A-612EE846F8A7} = {F61357CE-1CC2-410E-8776-B16EEBC98EB8} + {9CC7814B-72A6-465B-A61C-57B512DEE303} = {F61357CE-1CC2-410E-8776-B16EEBC98EB8} + {B7B1D395-4E06-4036-BE86-C216756B9367} = {A857AD10-40FF-4303-BEC2-FF1C58D5735E} + {F7B6A162-BC4D-4924-B16A-713F9B0344E7} = {B7B1D395-4E06-4036-BE86-C216756B9367} + {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1} = {B7B1D395-4E06-4036-BE86-C216756B9367} + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F} = {B7B1D395-4E06-4036-BE86-C216756B9367} + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3} = {B7B1D395-4E06-4036-BE86-C216756B9367} + EndGlobalSection +EndGlobal diff --git a/eShopOnContainers-ServicesAndWebApps.sln b/eShopOnContainers-ServicesAndWebApps.sln new file mode 100644 index 000000000..df3f9dd3a --- /dev/null +++ b/eShopOnContainers-ServicesAndWebApps.sln @@ -0,0 +1,396 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{932D8224-11F6-4D07-B109-DA28AD288A63}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3AF739CD-81D8-428D-A08A-0A58372DEBF6}" + ProjectSection(SolutionItems) = preProject + docker-compose.yml = docker-compose.yml + global.json = global.json + NuGet.config = NuGet.config + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Services", "Services", "{91CF7717-08AB-4E65-B10E-0B426F01E2E8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web Apps", "Web Apps", "{E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Catalog", "Catalog", "{326A7FB3-5295-468C-A4FE-67DCB823E1E5}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Basket", "Basket", "{BF3EF4F3-E4F5-41DA-9D2D-57223687D1A8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Ordering", "Ordering", "{0BD0DB92-2D98-44D9-9AC0-C59186D59B0B}" +EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Basket.API", "src\Services\Basket\Basket.API\Basket.API.xproj", "{2110CBB0-3B38-4EE4-A743-DF6968D80D90}" +EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Catalog.API", "src\Services\Catalog\Catalog.API\Catalog.API.xproj", "{42681D9D-750A-4DF7-BD9F-9292CFD5C253}" +EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Ordering.API", "src\Services\Ordering\Ordering.API\Ordering.API.xproj", "{231226CE-690B-4979-8870-9A79D80928E2}" +EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Ordering.Domain", "src\Services\Ordering\Ordering.Domain\Ordering.Domain.xproj", "{F5598DCB-6DDE-4661-AD9D-A55612DA7E76}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A857AD10-40FF-4303-BEC2-FF1C58D5735E}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Services", "Services", "{EF0337F2-ED00-4643-89FD-EE10863F1870}" +EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Ordering.Test", "test\Services\Ordering.Test\Ordering.Test.xproj", "{A0AFC432-3846-4B4E-BD8E-3C8C896F4967}" +EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "eShopOnContainers.WebMVC", "src\Web\WebMVC\eShopOnContainers.WebMVC.xproj", "{F0333D8E-0B27-42B7-B2C6-78F3657624E2}" +EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "eShopOnContainers.WebSPA", "src\Web\WebSPA\eShopOnContainers.WebSPA\eShopOnContainers.WebSPA.xproj", "{9842DB3A-1391-48C7-A49C-2FABD0A18AC2}" +EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Ordering.Application", "src\Services\Ordering\Ordering.Application\Ordering.Application.xproj", "{4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}" +EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Ordering.Infrastructure", "src\Services\Ordering\Ordering.Infrastructure\Ordering.Infrastructure.xproj", "{95F1F07C-4D92-4742-BD07-E5B805AAB651}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Ad-Hoc|Any CPU = Ad-Hoc|Any CPU + Ad-Hoc|ARM = Ad-Hoc|ARM + Ad-Hoc|iPhone = Ad-Hoc|iPhone + Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator + Ad-Hoc|x64 = Ad-Hoc|x64 + Ad-Hoc|x86 = Ad-Hoc|x86 + AppStore|Any CPU = AppStore|Any CPU + AppStore|ARM = AppStore|ARM + AppStore|iPhone = AppStore|iPhone + AppStore|iPhoneSimulator = AppStore|iPhoneSimulator + AppStore|x64 = AppStore|x64 + AppStore|x86 = AppStore|x86 + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|iPhone = Debug|iPhone + Debug|iPhoneSimulator = Debug|iPhoneSimulator + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|iPhone = Release|iPhone + Release|iPhoneSimulator = Release|iPhoneSimulator + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.AppStore|ARM.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.AppStore|x64.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.AppStore|x86.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Debug|ARM.ActiveCfg = Debug|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Debug|x64.ActiveCfg = Debug|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Debug|x86.ActiveCfg = Debug|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Release|Any CPU.Build.0 = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Release|ARM.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Release|iPhone.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Release|x64.ActiveCfg = Release|Any CPU + {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Release|x86.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.AppStore|ARM.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.AppStore|x64.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.AppStore|x86.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Debug|Any CPU.Build.0 = Debug|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Debug|ARM.ActiveCfg = Debug|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Debug|x64.ActiveCfg = Debug|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Debug|x86.ActiveCfg = Debug|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|Any CPU.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|Any CPU.Build.0 = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|ARM.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|iPhone.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|x64.ActiveCfg = Release|Any CPU + {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|x86.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.AppStore|ARM.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.AppStore|x64.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.AppStore|x86.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Debug|ARM.ActiveCfg = Debug|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Debug|x64.ActiveCfg = Debug|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Debug|x86.ActiveCfg = Debug|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Release|Any CPU.Build.0 = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Release|ARM.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Release|iPhone.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Release|x64.ActiveCfg = Release|Any CPU + {231226CE-690B-4979-8870-9A79D80928E2}.Release|x86.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.AppStore|ARM.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.AppStore|x64.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.AppStore|x86.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Debug|ARM.ActiveCfg = Debug|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Debug|x64.ActiveCfg = Debug|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Debug|x86.ActiveCfg = Debug|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Release|Any CPU.Build.0 = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Release|ARM.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Release|iPhone.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Release|x64.ActiveCfg = Release|Any CPU + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Release|x86.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.AppStore|ARM.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.AppStore|x64.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.AppStore|x86.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Debug|ARM.ActiveCfg = Debug|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Debug|x64.ActiveCfg = Debug|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Debug|x86.ActiveCfg = Debug|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Release|Any CPU.Build.0 = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Release|ARM.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Release|iPhone.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Release|x64.ActiveCfg = Release|Any CPU + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967}.Release|x86.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.AppStore|ARM.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.AppStore|x64.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.AppStore|x86.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Debug|ARM.ActiveCfg = Debug|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Debug|x64.ActiveCfg = Debug|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Debug|x86.ActiveCfg = Debug|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Release|Any CPU.Build.0 = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Release|ARM.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Release|iPhone.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Release|x64.ActiveCfg = Release|Any CPU + {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Release|x86.ActiveCfg = Release|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.AppStore|ARM.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.AppStore|iPhone.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.AppStore|x64.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.AppStore|x64.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.AppStore|x86.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.AppStore|x86.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Debug|ARM.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Debug|ARM.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Debug|iPhone.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Debug|x64.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Debug|x64.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Debug|x86.ActiveCfg = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Debug|x86.Build.0 = Debug|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Release|Any CPU.Build.0 = Release|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Release|ARM.ActiveCfg = Release|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Release|ARM.Build.0 = Release|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Release|iPhone.ActiveCfg = Release|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Release|iPhone.Build.0 = Release|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Release|x64.ActiveCfg = Release|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Release|x64.Build.0 = Release|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Release|x86.ActiveCfg = Release|Any CPU + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}.Release|x86.Build.0 = Release|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.AppStore|ARM.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.AppStore|iPhone.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.AppStore|x64.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.AppStore|x64.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.AppStore|x86.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.AppStore|x86.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Debug|ARM.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Debug|ARM.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Debug|iPhone.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Debug|x64.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Debug|x64.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Debug|x86.ActiveCfg = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Debug|x86.Build.0 = Debug|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Release|Any CPU.Build.0 = Release|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Release|ARM.ActiveCfg = Release|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Release|ARM.Build.0 = Release|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Release|iPhone.ActiveCfg = Release|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Release|iPhone.Build.0 = Release|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Release|x64.ActiveCfg = Release|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Release|x64.Build.0 = Release|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Release|x86.ActiveCfg = Release|Any CPU + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7}.Release|x86.Build.0 = Release|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|ARM.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|iPhone.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|x64.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|x64.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|x86.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|x86.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|Any CPU.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|ARM.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|ARM.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|iPhone.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|x64.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|x64.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|x86.ActiveCfg = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|x86.Build.0 = Debug|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|Any CPU.ActiveCfg = Release|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|Any CPU.Build.0 = Release|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|ARM.ActiveCfg = Release|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|ARM.Build.0 = Release|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|iPhone.ActiveCfg = Release|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|iPhone.Build.0 = Release|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|x64.ActiveCfg = Release|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|x64.Build.0 = Release|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|x86.ActiveCfg = Release|Any CPU + {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {91CF7717-08AB-4E65-B10E-0B426F01E2E8} = {932D8224-11F6-4D07-B109-DA28AD288A63} + {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} = {932D8224-11F6-4D07-B109-DA28AD288A63} + {326A7FB3-5295-468C-A4FE-67DCB823E1E5} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} + {BF3EF4F3-E4F5-41DA-9D2D-57223687D1A8} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} + {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} + {2110CBB0-3B38-4EE4-A743-DF6968D80D90} = {BF3EF4F3-E4F5-41DA-9D2D-57223687D1A8} + {42681D9D-750A-4DF7-BD9F-9292CFD5C253} = {326A7FB3-5295-468C-A4FE-67DCB823E1E5} + {231226CE-690B-4979-8870-9A79D80928E2} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} + {F5598DCB-6DDE-4661-AD9D-A55612DA7E76} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} + {EF0337F2-ED00-4643-89FD-EE10863F1870} = {A857AD10-40FF-4303-BEC2-FF1C58D5735E} + {A0AFC432-3846-4B4E-BD8E-3C8C896F4967} = {EF0337F2-ED00-4643-89FD-EE10863F1870} + {F0333D8E-0B27-42B7-B2C6-78F3657624E2} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} + {9842DB3A-1391-48C7-A49C-2FABD0A18AC2} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} + {4193CAA3-A1C3-4818-A06F-A2D85FDE77E7} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} + {95F1F07C-4D92-4742-BD07-E5B805AAB651} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} + EndGlobalSection +EndGlobal diff --git a/src/Mobile/Images/AndroidEmulator.png b/src/Mobile/Images/AndroidEmulator.png new file mode 100644 index 000000000..ed449cd29 Binary files /dev/null and b/src/Mobile/Images/AndroidEmulator.png differ diff --git a/src/Mobile/Images/Auth.png b/src/Mobile/Images/Auth.png new file mode 100644 index 000000000..7a8591348 Binary files /dev/null and b/src/Mobile/Images/Auth.png differ diff --git a/src/Mobile/Images/Catalog.png b/src/Mobile/Images/Catalog.png new file mode 100644 index 000000000..5a93d0f2b Binary files /dev/null and b/src/Mobile/Images/Catalog.png differ diff --git a/src/Mobile/Images/Filter.png b/src/Mobile/Images/Filter.png new file mode 100644 index 000000000..8b1d12f40 Binary files /dev/null and b/src/Mobile/Images/Filter.png differ diff --git a/src/Mobile/Images/MacAgent.png b/src/Mobile/Images/MacAgent.png new file mode 100644 index 000000000..6f5cb99f0 Binary files /dev/null and b/src/Mobile/Images/MacAgent.png differ diff --git a/src/Mobile/Images/OrderDetail.png b/src/Mobile/Images/OrderDetail.png new file mode 100644 index 000000000..93072f736 Binary files /dev/null and b/src/Mobile/Images/OrderDetail.png differ diff --git a/src/Mobile/Images/Preview.png b/src/Mobile/Images/Preview.png new file mode 100644 index 000000000..7b63a484f Binary files /dev/null and b/src/Mobile/Images/Preview.png differ diff --git a/src/Mobile/Images/Profile.png b/src/Mobile/Images/Profile.png new file mode 100644 index 000000000..1e3b86a45 Binary files /dev/null and b/src/Mobile/Images/Profile.png differ diff --git a/src/Mobile/Images/Settings.png b/src/Mobile/Images/Settings.png new file mode 100644 index 000000000..8f7661f71 Binary files /dev/null and b/src/Mobile/Images/Settings.png differ diff --git a/src/Mobile/Images/ShoppingCart.png b/src/Mobile/Images/ShoppingCart.png new file mode 100644 index 000000000..f3b46c958 Binary files /dev/null and b/src/Mobile/Images/ShoppingCart.png differ diff --git a/src/Mobile/Images/Updates.png b/src/Mobile/Images/Updates.png new file mode 100644 index 000000000..db0db0174 Binary files /dev/null and b/src/Mobile/Images/Updates.png differ diff --git a/src/Mobile/README.md b/src/Mobile/README.md new file mode 100644 index 000000000..30f840967 --- /dev/null +++ b/src/Mobile/README.md @@ -0,0 +1,107 @@ +#eShopOnContainers + +eShopOnContainers is a reference app whose imagined purpose is to serve the mobile workforce of a fictitious company that sells products. The app allow to manage the catalog, view products, manage the basket and the orders. + +eShopOnContainers + +###Try it out: +You can download and build the app's source as-is, preconfigured to consume our Azure service instance. + +###Supported platforms: iOS, Android and Windows + +###The app architecture consists of two parts: + 1. A Xamarin.Forms mobile app for iOS, Android and Windows. + 2. A .NET Web API-backed Entity Framework based Azure Mobile Service for data. + +**The Azure Mobile Service does not need to be deployed by you.** There is already an instance of the service up and running in Azure, and the mobile app is configured by default to consume that service instance. We've included the code for the service so that you may run your own service instance on Azure if you'd like. + +##Xamarin.Forms App (eShopOnContainers) + +This project exercises the following platforms, frameworks or features: + +* Xamarin.Forms + * XAML + * Bindings + * Converters + * Central Styles + * Custom Renderers + * Animations + * IoC + * Messaging Center + * Custom Controls + * Cross Plugins + * XFGloss +* xUnit Tests +* Azure Mobile Services + * C# backend + * WebAPI + * Entity Framework + * Identity Server 4 + +##Three platforms +The app targets **three** platforms: + +* iOS +* Android +* Universal Windows Platform (UWP) + * UWP supported only in Visual Studio, not Xamarin Studio + + +As of 29/11/2016, eShopOnContainers features **89.2% code share** (7.2% iOS / 16.7% Android / 8.7% Windows). + +## Requirements +* [Visual Studio __2015__](https://www.visualstudio.com/en-us/products/vs-2015-product-editions.aspx) (14.0 or higher) to compile C# 6 langage features (or Visual Studio MacOS) +* Xamarin add-ons for Visual Studio (available via the Visual Studio installer) +* __Visual Studio Community Edition is fully supported!__ + +## Setup + +#### [1. Ensure the Xamarin platform is installed](http://developer.xamarin.com/guides/cross-platform/getting_started/installation/) + +#### 2. Ensure Xamarin are updated +Xamarin will periodically automatically check for updates. You can also manually check for updates. + +Ensure Xamarin are updated + +### 3. Project Setup + +Restore NuGet packages for the project. + +### 4. Ensure Android Emulator is installed +You can use any Android emulator although it is highly recommended to use an x86 based version. + +Visual Studio Android Emulator + +**Note**: The Visual Studio Android Emulator cannot run well inside a virtual machine or over Remote Desktop or VNC since it relies on virtualization and OpenGL. + +To deploy and debug the application on a physical device, refer to these [link](https://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/debug-on-device/). + +### 5. Ensure Mac connection +To set up the Mac host, you must enable communication between the Xamarin extension for Visual Studio and your Mac. + +Connect with a Mac + +## Screens + +The app has the following screens: + +* a auth screen +* a catalog list +* a profile section with a order list +* a readonly order detail screen +* a customizable basket +* a checkout screen + +Login +Catalog +Filter catalog +Profile +Order details +Basket +Settings + +## Clean and Rebuild +If you see build issues when pulling updates from the repo, try cleaning and rebuilding the solution. + +## Copyright and license +* Code and documentation copyright 2016 Microsoft Corp. Code released under the [MIT license](https://opensource.org/licenses/MIT). \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs index d6523392d..c4aea5cd7 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs @@ -9,16 +9,27 @@ namespace eShopOnContainers { public partial class App : Application { + public bool UseMockServices { get; set; } + public App() { InitializeComponent(); + InitApp(); + if (Device.OS == TargetPlatform.Windows) { InitNavigation(); } } + private void InitApp() + { + UseMockServices = true; + + ViewModelLocator.Instance.UpdateDependencies(UseMockServices); + } + private Task InitNavigation() { var navigationService = ViewModelLocator.Instance.Resolve(); diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Behaviors/WebViewNavigationBehavior.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Behaviors/WebViewNavigationBehavior.cs new file mode 100644 index 000000000..07ae80120 --- /dev/null +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Behaviors/WebViewNavigationBehavior.cs @@ -0,0 +1,49 @@ +using System.Windows.Input; +using Xamarin.Forms; + +namespace eShopOnContainers.Core.Behaviors +{ + public class WebViewNavigationBehavior : Behavior + { + private VisualElement _element; + + public static readonly BindableProperty NavigateCommandProperty = + BindableProperty.Create("NavigateCommand", typeof(ICommand), + typeof(WebViewNavigationBehavior), default(ICommand), + BindingMode.OneWay, null); + + public ICommand NavigateCommand + { + get { return (ICommand)GetValue(NavigateCommandProperty); } + set { SetValue(NavigateCommandProperty, value); } + } + + protected override void OnAttachedTo(WebView bindable) + { + _element = bindable; + bindable.Navigating += OnWebViewNavigating; + bindable.BindingContextChanged += OnBindingContextChanged; + } + + protected override void OnDetachingFrom(WebView bindable) + { + _element = null; + BindingContext = null; + bindable.Navigating -= OnWebViewNavigating; + bindable.BindingContextChanged -= OnBindingContextChanged; + } + + private void OnBindingContextChanged(object sender, System.EventArgs e) + { + BindingContext = _element?.BindingContext; + } + + private void OnWebViewNavigating(object sender, WebNavigatingEventArgs e) + { + if (NavigateCommand != null && NavigateCommand.CanExecute(e.Url)) + { + NavigateCommand.Execute(e.Url); + } + } + } +} diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Controls/BindablePicker.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Controls/BindablePicker.cs index 5699f5b2d..07f592e14 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Controls/BindablePicker.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Controls/BindablePicker.cs @@ -23,6 +23,7 @@ namespace eShopOnContainers.Core.Controls } var index = 0; + foreach (var item in ItemsSource) { if (index == SelectedIndex) @@ -30,6 +31,7 @@ namespace eShopOnContainers.Core.Controls SelectedItem = item; break; } + index++; } }; @@ -62,6 +64,7 @@ namespace eShopOnContainers.Core.Controls if (ItemsSource != null) { var index = 0; + foreach (var item in ItemsSource) { string strItem = item?.ToString(); @@ -73,6 +76,7 @@ namespace eShopOnContainers.Core.Controls selectedIndex = index; break; } + index++; } } @@ -102,12 +106,10 @@ namespace eShopOnContainers.Core.Controls { var boundPicker = (BindablePicker)bindable; - if (boundPicker.ItemSelected != null) - { - boundPicker.ItemSelected(boundPicker, new SelectedItemChangedEventArgs(newValue)); - } + boundPicker.ItemSelected?.Invoke(boundPicker, + new SelectedItemChangedEventArgs(newValue)); boundPicker.InternalUpdateSelectedIndex(); } } -} +} \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Converters/ItemsToHeightConverter.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Converters/ItemsToHeightConverter.cs index 6a1832fa1..419ca5082 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Converters/ItemsToHeightConverter.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Converters/ItemsToHeightConverter.cs @@ -6,7 +6,7 @@ namespace eShopOnContainers.Core.Converters { public class ItemsToHeightConverter : IValueConverter { - private const int ItemHeight = 144; + private const int ItemHeight = 156; public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/GlobalSettings.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/GlobalSettings.cs index d942bc439..792c10deb 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/GlobalSettings.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/GlobalSettings.cs @@ -1,11 +1,53 @@ namespace eShopOnContainers.Core { - public static class GlobalSetting + public class GlobalSetting { - public const string RegisterWebsite = "http://104.40.62.65/Account/Register"; + private string _baseEndpoint; + private static readonly GlobalSetting _instance = new GlobalSetting(); - public const string CatalogEndpoint = "http://104.40.62.65:5101/"; + public GlobalSetting() + { + BaseEndpoint = "http://104.40.62.65"; + } - public const string BasketEndpoint = "http://104.40.62.65:5103/"; + public static GlobalSetting Instance + { + get { return _instance; } + } + + public string BaseEndpoint + { + get { return _baseEndpoint; } + set + { + _baseEndpoint = value; + UpdateEndpoint(_baseEndpoint); + } + } + + public string RegisterWebsite { get; set; } + + public string CatalogEndpoint { get; set; } + + public string OrdersEndpoint { get; set; } + + public string BasketEndpoint { get; set; } + + public string IdentityEndpoint { get; set; } + + public string LogoutEndpoint { get; set; } + + public string IdentityCallback { get; set; } + + private void UpdateEndpoint(string baseEndpoint) + { + RegisterWebsite = string.Format("{0}/Account/Register", baseEndpoint); + CatalogEndpoint = string.Format("{0}:5101", baseEndpoint); + OrdersEndpoint = string.Format("{0}:5102", baseEndpoint); + BasketEndpoint = string.Format("{0}:5103", baseEndpoint); + IdentityEndpoint = string.Format("{0}:5105/connect/authorize", baseEndpoint); + LogoutEndpoint = string.Format("{0}:5105/connect/endsession", baseEndpoint); + IdentityCallback = "http://localhost:5003/callback.html"; + } } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/NumericHelper.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/NumericHelper.cs index 989d359a1..ea4022558 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/NumericHelper.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/NumericHelper.cs @@ -7,7 +7,7 @@ namespace eShopOnContainers.Core.Helpers public static ObservableCollection GetNumericList(int count = 100) { var result = new ObservableCollection(); - for (int i = 0; i < count; i++) + for (int i = 1; i < count; i++) { result.Add(i); } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/Settings.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/Settings.cs new file mode 100644 index 000000000..3d2d99134 --- /dev/null +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/Settings.cs @@ -0,0 +1,41 @@ +using Plugin.Settings; +using Plugin.Settings.Abstractions; + +namespace eShopOnContainers.Core.Helpers +{ + /// + /// This is the Settings static class that can be used in your Core solution or in any + /// of your client applications. All settings are laid out the same exact way with getters + /// and setters. + /// + public static class Settings + { + private static ISettings AppSettings + { + get + { + return CrossSettings.Current; + } + } + + #region Setting Constants + + private const string AccessToken = "access_token"; + private static readonly string AccessTokenDefault = string.Empty; + + #endregion + + + public static string AuthAccessToken + { + get + { + return AppSettings.GetValueOrDefault(AccessToken, AccessTokenDefault); + } + set + { + AppSettings.AddOrUpdateValue(AccessToken, value); + } + } + } +} \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Basket/BasketItem.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Basket/BasketItem.cs index 9b5090e41..c10da754f 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Basket/BasketItem.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Basket/BasketItem.cs @@ -67,11 +67,14 @@ namespace eShopOnContainers.Core.Models.Basket get { return _quantity; } set { - _quantity = value; - RaisePropertyChanged(() => Quantity); - RaisePropertyChanged(() => Total); + if (_quantity != value) + { + _quantity = value; + RaisePropertyChanged(() => Quantity); + RaisePropertyChanged(() => Total); - MessagingCenter.Send(this, MessengerKeys.UpdateProduct); + MessagingCenter.Send(this, MessengerKeys.UpdateProduct); + } } } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/CardType.CS b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/CardType.CS new file mode 100644 index 000000000..07873e79c --- /dev/null +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/CardType.CS @@ -0,0 +1,8 @@ +namespace eShopOnContainers.Core.Models.Orders +{ + public class CardType + { + public int Id { get; set; } + public string Name { get; set; } + } +} \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderItem.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderItem.cs index 10712da68..8ec118a24 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderItem.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderItem.cs @@ -3,7 +3,6 @@ using eShopOnContainers.Core.ViewModels.Base; using eShopOnContainers.ViewModels.Base; using System; using System.Collections.ObjectModel; -using Xamarin.Forms; namespace eShopOnContainers.Core.Models.Orders { @@ -71,8 +70,6 @@ namespace eShopOnContainers.Core.Models.Orders _quantity = value; RaisePropertyChanged(() => Quantity); RaisePropertyChanged(() => Total); - - MessagingCenter.Send(this, MessengerKeys.UpdateProduct); } } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketMockService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketMockService.cs index 6bdcf0df5..5a76fc5c2 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketMockService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketMockService.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Threading.Tasks; using Xamarin.Forms; -using System; namespace eShopOnContainers.Core.Services.Basket { @@ -38,5 +37,15 @@ namespace eShopOnContainers.Core.Services.Basket return MockCustomBasket; } + + public async Task ClearBasketAsync(string guidUser) + { + await Task.Delay(500); + + if (!string.IsNullOrEmpty(guidUser)) + { + MockCustomBasket.Items.Clear(); + } + } } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketService.cs index e5bc66202..979d7188e 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketService.cs @@ -18,7 +18,7 @@ namespace eShopOnContainers.Core.Services.Basket { try { - UriBuilder builder = new UriBuilder(GlobalSetting.BasketEndpoint); + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint); builder.Path = guidUser; @@ -41,7 +41,7 @@ namespace eShopOnContainers.Core.Services.Basket public async Task UpdateBasketAsync(CustomerBasket customerBasket) { - UriBuilder builder = new UriBuilder(GlobalSetting.BasketEndpoint); + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint); string uri = builder.ToString(); @@ -49,5 +49,16 @@ namespace eShopOnContainers.Core.Services.Basket return result; } + + public async Task ClearBasketAsync(string guidUser) + { + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint); + + builder.Path = guidUser; + + string uri = builder.ToString(); + + await _requestProvider.DeleteAsync(uri); + } } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/IBasketService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/IBasketService.cs index 356eb40f7..3c6893773 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/IBasketService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/IBasketService.cs @@ -7,5 +7,6 @@ namespace eShopOnContainers.Core.Services.Basket { Task GetBasketAsync(string guidUser); Task UpdateBasketAsync(CustomerBasket customerBasket); + Task ClearBasketAsync(string guidUser); } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Catalog/CatalogService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Catalog/CatalogService.cs index fa78f3625..9234e4059 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Catalog/CatalogService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Catalog/CatalogService.cs @@ -19,30 +19,44 @@ namespace eShopOnContainers.Core.Services.Catalog public async Task> FilterAsync(int catalogBrandId, int catalogTypeId) { - UriBuilder builder = new UriBuilder(GlobalSetting.CatalogEndpoint); + try + { + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint); - builder.Path = string.Format("api/v1/catalog/items/type/{0}/brand/{1}", catalogTypeId, catalogBrandId); + builder.Path = string.Format("api/v1/catalog/items/type/{0}/brand/{1}", catalogTypeId, catalogBrandId); - string uri = builder.ToString(); + string uri = builder.ToString(); - CatalogRoot catalog = - await _requestProvider.GetAsync(uri); + CatalogRoot catalog = + await _requestProvider.GetAsync(uri); - return catalog?.Data?.ToObservableCollection(); + return catalog?.Data?.ToObservableCollection(); + } + catch + { + return new ObservableCollection(); + } } public async Task> GetCatalogAsync() { - UriBuilder builder = new UriBuilder(GlobalSetting.CatalogEndpoint); + try + { + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint); - builder.Path = "api/v1/catalog/items"; + builder.Path = "api/v1/catalog/items"; - string uri = builder.ToString(); + string uri = builder.ToString(); - CatalogRoot catalog = - await _requestProvider.GetAsync(uri); + CatalogRoot catalog = + await _requestProvider.GetAsync(uri); - return catalog?.Data?.ToObservableCollection(); + return catalog?.Data?.ToObservableCollection(); + } + catch + { + return new ObservableCollection(); + } } public Task GetCatalogItemAsync(string id) @@ -52,30 +66,44 @@ namespace eShopOnContainers.Core.Services.Catalog public async Task> GetCatalogBrandAsync() { - UriBuilder builder = new UriBuilder(GlobalSetting.CatalogEndpoint); + try + { + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint); - builder.Path = "api/v1/catalog/catalogbrands"; + builder.Path = "api/v1/catalog/catalogbrands"; - string uri = builder.ToString(); + string uri = builder.ToString(); - IEnumerable brands = - await _requestProvider.GetAsync>(uri); + IEnumerable brands = + await _requestProvider.GetAsync>(uri); - return brands?.ToObservableCollection(); + return brands?.ToObservableCollection(); + } + catch + { + return new ObservableCollection(); + } } public async Task> GetCatalogTypeAsync() { - UriBuilder builder = new UriBuilder(GlobalSetting.CatalogEndpoint); + try + { + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint); - builder.Path = "api/v1/catalog/catalogtypes"; + builder.Path = "api/v1/catalog/catalogtypes"; - string uri = builder.ToString(); + string uri = builder.ToString(); - IEnumerable types = - await _requestProvider.GetAsync>(uri); + IEnumerable types = + await _requestProvider.GetAsync>(uri); - return types?.ToObservableCollection(); + return types?.ToObservableCollection(); + } + catch + { + return new ObservableCollection(); + } } } } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IIdentityService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IIdentityService.cs new file mode 100644 index 000000000..134e2ee73 --- /dev/null +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IIdentityService.cs @@ -0,0 +1,9 @@ +namespace eShopOnContainers.Core.Services.Identity +{ + public interface IIdentityService + { + string CreateAuthorizeRequest(); + string CreateLogoutRequest(string token); + string DecodeToken(string token); + } +} \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs new file mode 100644 index 000000000..b6f61c420 --- /dev/null +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs @@ -0,0 +1,69 @@ +using IdentityModel.Client; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace eShopOnContainers.Core.Services.Identity +{ + public class IdentityService : IIdentityService + { + public string CreateAuthorizeRequest() + { + // Create URI to authorize endpoint + var authorizeRequest = + new AuthorizeRequest(GlobalSetting.Instance.IdentityEndpoint); + + // Dictionary with values for the authorize request + var dic = new Dictionary(); + dic.Add("client_id", "xamarin"); + dic.Add("response_type", "id_token token"); + dic.Add("scope", "openid profile basket"); + + dic.Add("redirect_uri", GlobalSetting.Instance.IdentityCallback); + dic.Add("nonce", Guid.NewGuid().ToString("N")); + + // Add CSRF token to protect against cross-site request forgery attacks. + var currentCSRFToken = Guid.NewGuid().ToString("N"); + dic.Add("state", currentCSRFToken); + + var authorizeUri = authorizeRequest.Create(dic); + + return authorizeUri; + } + + public string CreateLogoutRequest(string token) + { + return string.Format("{0}?id_token_hint={1}&post_logout_redirect_uri={2}", + GlobalSetting.Instance.LogoutEndpoint, + token, + GlobalSetting.Instance.IdentityCallback); + } + + public string DecodeToken(string token) + { + var parts = token.Split('.'); + + string partToConvert = parts[1]; + partToConvert = partToConvert.Replace('-', '+'); + partToConvert = partToConvert.Replace('_', '/'); + switch (partToConvert.Length % 4) + { + case 0: + break; + case 2: + partToConvert += "=="; + break; + case 3: + partToConvert += "="; + break; + } + + var partAsBytes = Convert.FromBase64String(partToConvert); + var partAsUTF8String = Encoding.UTF8.GetString(partAsBytes, 0, partAsBytes.Count()); + + return JObject.Parse(partAsUTF8String).ToString(); + } + } +} diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Navigation/NavigationService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Navigation/NavigationService.cs index 66a723baf..22383fdb1 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Navigation/NavigationService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Navigation/NavigationService.cs @@ -1,4 +1,5 @@ -using eShopOnContainers.Core.ViewModels; +using eShopOnContainers.Core.Helpers; +using eShopOnContainers.Core.ViewModels; using eShopOnContainers.Core.Views; using eShopOnContainers.ViewModels.Base; using System; @@ -29,7 +30,10 @@ namespace eShopOnContainers.Services public Task InitializeAsync() { - return NavigateToAsync(); + if(string.IsNullOrEmpty(Settings.AuthAccessToken)) + return NavigateToAsync(); + else + return NavigateToAsync(); } public Task NavigateToAsync() where TViewModel : ViewModelBase @@ -67,7 +71,7 @@ namespace eShopOnContainers.Services public virtual Task RemoveLastFromBackStackAsync() { - var mainPage = CurrentApplication.MainPage as CustomNavigationPage; + var mainPage = CurrentApplication.MainPage as CustomNavigationView; if (mainPage != null) { @@ -80,7 +84,7 @@ namespace eShopOnContainers.Services public virtual Task RemoveBackStackAsync() { - var mainPage = CurrentApplication.MainPage as CustomNavigationPage; + var mainPage = CurrentApplication.MainPage as CustomNavigationView; if (mainPage != null) { @@ -100,11 +104,11 @@ namespace eShopOnContainers.Services if (page is LoginView) { - CurrentApplication.MainPage = new CustomNavigationPage(page); + CurrentApplication.MainPage = new CustomNavigationView(page); } else { - var navigationPage = CurrentApplication.MainPage as CustomNavigationPage; + var navigationPage = CurrentApplication.MainPage as CustomNavigationView; if (navigationPage != null) { @@ -112,7 +116,7 @@ namespace eShopOnContainers.Services } else { - CurrentApplication.MainPage = new CustomNavigationPage(page); + CurrentApplication.MainPage = new CustomNavigationView(page); } } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/IOrderService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/IOrderService.cs new file mode 100644 index 000000000..5d63ea9e8 --- /dev/null +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/IOrderService.cs @@ -0,0 +1,13 @@ +using System.Collections.ObjectModel; +using System.Threading.Tasks; + +namespace eShopOnContainers.Core.Services.Order +{ + public interface IOrderService + { + Task CreateOrderAsync(Models.Orders.Order newOrder); + Task> GetOrdersAsync(); + Task GetOrderAsync(int orderId); + Task> GetCardTypesAsync(); + } +} \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderMockService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderMockService.cs new file mode 100644 index 000000000..4b249fbd0 --- /dev/null +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderMockService.cs @@ -0,0 +1,61 @@ +using eShopOnContainers.Core.Extensions; +using eShopOnContainers.Core.Models.Orders; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Threading.Tasks; + +namespace eShopOnContainers.Core.Services.Order +{ + public class OrderMockService : IOrderService + { + private List MockOrders = new List() + { + new Models.Orders.Order { SequenceNumber = 123, Total = 56.40M, OrderDate = DateTime.Now, Status = OrderStatus.Delivered, OrderItems = MockOrderItems }, + new Models.Orders.Order { SequenceNumber = 132, Total = 56.40M, OrderDate = DateTime.Now, Status = OrderStatus.Delivered, OrderItems = MockOrderItems }, + new Models.Orders.Order { SequenceNumber = 231, Total = 56.40M, OrderDate = DateTime.Now, Status = OrderStatus.Delivered, OrderItems = MockOrderItems }, + }; + + private static List MockOrderItems = new List() + { + new OrderItem { OrderId = Guid.NewGuid(), ProductId = "1", Discount = 15, ProductName = ".NET Bot Blue Sweatshirt (M)", Quantity = 1, UnitPrice = 16.50M }, + new OrderItem { OrderId = Guid.NewGuid(), ProductId = "3", Discount = 0, ProductName = ".NET Bot Black Sweatshirt (M)", Quantity = 2, UnitPrice = 19.95M } + }; + + private static List MockCardTypes = new List() + { + new CardType { Id = 1, Name = "Amex" }, + new CardType { Id = 2, Name = "Visa" }, + new CardType { Id = 3, Name = "MasterCard" }, + }; + + public async Task CreateOrderAsync(Models.Orders.Order newOrder) + { + await Task.Delay(500); + + MockOrders.Insert(0, newOrder); + } + + public async Task> GetOrdersAsync() + { + await Task.Delay(500); + + return MockOrders.ToObservableCollection(); + } + + public async Task GetOrderAsync(int orderId) + { + await Task.Delay(500); + + return MockOrders.FirstOrDefault(o => o.SequenceNumber == orderId); + } + + public async Task> GetCardTypesAsync() + { + await Task.Delay(500); + + return MockCardTypes.ToObservableCollection(); + } + } +} \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderService.cs new file mode 100644 index 000000000..50da93209 --- /dev/null +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderService.cs @@ -0,0 +1,91 @@ +using eShopOnContainers.Core.Services.RequestProvider; +using System; +using System.Collections.ObjectModel; +using System.Threading.Tasks; + +namespace eShopOnContainers.Core.Services.Order +{ + public class OrderService : IOrderService + { + private readonly IRequestProvider _requestProvider; + + public OrderService(IRequestProvider requestProvider) + { + _requestProvider = requestProvider; + } + + public async Task CreateOrderAsync(Models.Orders.Order newOrder) + { + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint); + + builder.Path = "api/v1/orders/new"; + + string uri = builder.ToString(); + + await _requestProvider.PostAsync(uri, newOrder); + } + + public async Task> GetOrdersAsync() + { + try + { + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint); + + builder.Path = "api/v1/orders"; + + string uri = builder.ToString(); + + ObservableCollection orders = + await _requestProvider.GetAsync>(uri); + + return orders; + } + catch + { + return new ObservableCollection(); + } + } + + public async Task GetOrderAsync(int orderId) + { + try + { + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint); + + builder.Path = string.Format("api/v1/orders/{0}", orderId); + + string uri = builder.ToString(); + + Models.Orders.Order order = + await _requestProvider.GetAsync(uri); + + return order; + } + catch + { + return new Models.Orders.Order(); + } + } + + public async Task> GetCardTypesAsync() + { + try + { + UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint); + + builder.Path = "api/v1/orders/cardtypes"; + + string uri = builder.ToString(); + + ObservableCollection cardTypes = + await _requestProvider.GetAsync>(uri); + + return cardTypes; + } + catch + { + return new ObservableCollection(); + } + } + } +} \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/IRequestProvider.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/IRequestProvider.cs index 7c36620fa..c5846a001 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/IRequestProvider.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/IRequestProvider.cs @@ -13,5 +13,7 @@ namespace eShopOnContainers.Core.Services.RequestProvider Task PutAsync(string uri, TResult data); Task PutAsync(string uri, TRequest data); + + Task DeleteAsync(string uri); } -} +} \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/RequestProvider.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/RequestProvider.cs index dd6a1bce5..3bc4c15e0 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/RequestProvider.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/RequestProvider.cs @@ -77,6 +77,13 @@ namespace eShopOnContainers.Core.Services.RequestProvider return await Task.Run(() => JsonConvert.DeserializeObject(responseData, _serializerSettings)); } + public async Task DeleteAsync(string uri) + { + HttpClient httpClient = CreateHttpClient(); + + await httpClient.DeleteAsync(uri); + } + private HttpClient CreateHttpClient() { var httpClient = new HttpClient(); diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/User/IUserService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/User/IUserService.cs index fac0a47a1..02d310c3a 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/User/IUserService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/User/IUserService.cs @@ -1,12 +1,9 @@ -using eShopOnContainers.Core.Models.Orders; -using System.Collections.Generic; -using System.Threading.Tasks; +using System.Threading.Tasks; namespace eShopOnContainers.Core.Services.User { public interface IUserService { Task GetUserAsync(); - Task> GetOrdersAsync(); } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/User/UserMockService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/User/UserMockService.cs index 12c3f8e60..d273e704a 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/User/UserMockService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/User/UserMockService.cs @@ -1,7 +1,4 @@ -using eShopOnContainers.Core.Models.Orders; -using System; -using System.Collections.Generic; -using System.Threading.Tasks; +using System.Threading.Tasks; namespace eShopOnContainers.Core.Services.User { @@ -18,31 +15,12 @@ namespace eShopOnContainers.Core.Services.User Country = "United States" }; - private List MockOrders = new List() - { - new Order { SequenceNumber = 123, Total = 56.40M, OrderDate = DateTime.Now, Status = OrderStatus.Delivered, OrderItems = MockOrderItems }, - new Order { SequenceNumber = 132, Total = 56.40M, OrderDate = DateTime.Now, Status = OrderStatus.Delivered, OrderItems = MockOrderItems }, - new Order { SequenceNumber = 231, Total = 56.40M, OrderDate = DateTime.Now, Status = OrderStatus.Delivered, OrderItems = MockOrderItems }, - }; - - private static List MockOrderItems = new List() - { - new OrderItem { OrderId = Guid.NewGuid(), ProductId = "1", Discount = 15, ProductName = ".NET Bot Blue Sweatshirt (M)", Quantity = 1, UnitPrice = 16.50M }, - new OrderItem { OrderId = Guid.NewGuid(), ProductId = "3", Discount = 0, ProductName = ".NET Bot Black Sweatshirt (M)", Quantity = 2, UnitPrice = 19.95M } - }; - + public async Task GetUserAsync() { await Task.Delay(500); return MockUser; } - - public async Task> GetOrdersAsync() - { - await Task.Delay(500); - - return MockOrders; - } } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/MessengerKeys.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/MessengerKeys.cs index 25fd28be6..506892520 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/MessengerKeys.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/MessengerKeys.cs @@ -15,6 +15,9 @@ public const string Filter = "Filter"; // Change selected Tab programmatically - public const string ChangeTab = "ChangeTab"; + public const string ChangeTab = "ChangeTab"; + + // Logout + public const string Logout = "Logout"; } } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs index e1c28642a..dd269b659 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs @@ -7,6 +7,8 @@ using eShopOnContainers.Core.Services.OpenUrl; using eShopOnContainers.Core.Services.User; using eShopOnContainers.Core.Services.RequestProvider; using eShopOnContainers.Core.Services.Basket; +using eShopOnContainers.Core.Services.Identity; +using eShopOnContainers.Core.Services.Order; namespace eShopOnContainers.ViewModels.Base { @@ -37,6 +39,7 @@ namespace eShopOnContainers.ViewModels.Base RegisterSingleton(); _unityContainer.RegisterType(); _unityContainer.RegisterType(); + _unityContainer.RegisterType(); _unityContainer.RegisterType(); _unityContainer.RegisterType(); @@ -53,28 +56,29 @@ namespace eShopOnContainers.ViewModels.Base _unityContainer.RegisterType(); } - public void UpdateServices(bool useMockServices) + public void UpdateDependencies(bool useMockServices) { - if (!useMockServices) + if (useMockServices) { _unityContainer.RegisterInstance(new CatalogMockService()); _unityContainer.RegisterInstance(new BasketMockService()); + _unityContainer.RegisterInstance(new OrderMockService()); _unityContainer.RegisterInstance(new UserMockService()); - UseMockService = false; + UseMockService = true; } else { var requestProvider = Resolve(); _unityContainer.RegisterInstance(new CatalogService(requestProvider)); _unityContainer.RegisterInstance(new BasketService(requestProvider)); + _unityContainer.RegisterInstance(new OrderService(requestProvider)); _unityContainer.RegisterInstance(new UserMockService()); - UseMockService = true; + UseMockService = false; } } - - + public T Resolve() { return _unityContainer.Resolve(); diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs index 0ffea52ad..c24f3cbba 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs @@ -1,6 +1,5 @@ using eShopOnContainers.Core.Models.Basket; using eShopOnContainers.Core.Models.Catalog; -using eShopOnContainers.Core.Models.Orders; using eShopOnContainers.Core.Models.User; using eShopOnContainers.Core.Services.Basket; using eShopOnContainers.Core.Services.User; @@ -69,10 +68,9 @@ namespace eShopOnContainers.Core.ViewModels { MessagingCenter.Subscribe>(this, MessengerKeys.UpdateBasket, (sender, arg) => { - BadgeCount = arg.Count; - foreach (var basketItem in arg) { + BadgeCount += basketItem.Quantity; AddBasketItem(basketItem); } }); @@ -84,7 +82,7 @@ namespace eShopOnContainers.Core.ViewModels AddCatalogItem(arg); }); - MessagingCenter.Subscribe(this, MessengerKeys.UpdateProduct, (sender) => + MessagingCenter.Subscribe(this, MessengerKeys.UpdateProduct, (sender) => { ReCalculateTotal(); }); @@ -126,12 +124,16 @@ namespace eShopOnContainers.Core.ViewModels { Total = 0; + if (BasketItems == null) + { + return; + } + foreach (var orderItem in BasketItems) { Total += (orderItem.Quantity * orderItem.UnitPrice); } - - + _basketService.UpdateBasketAsync(new CustomerBasket { BuyerId = _user.GuidUser, diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs index e842f310f..b42fd9b67 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs @@ -11,6 +11,8 @@ using System.Collections.ObjectModel; using System.Linq; using eShopOnContainers.Core.Models.Basket; using System.Collections.Generic; +using eShopOnContainers.Core.Services.Basket; +using eShopOnContainers.Core.Services.Order; namespace eShopOnContainers.Core.ViewModels { @@ -21,10 +23,16 @@ namespace eShopOnContainers.Core.ViewModels private User _user; private IUserService _userService; + private IBasketService _basketService; + private IOrderService _orderService; - public CheckoutViewModel(IUserService userService) + public CheckoutViewModel(IUserService userService, + IBasketService basketService, + IOrderService orderService) { + _basketService = basketService; _userService = userService; + _orderService = orderService; } public ObservableCollection OrderItems @@ -86,10 +94,13 @@ namespace eShopOnContainers.Core.ViewModels private async void Checkout() { + await _orderService.CreateOrderAsync(Order); + await _basketService.ClearBasketAsync(User.GuidUser); + await NavigationService.NavigateToAsync(new TabParameter { TabIndex = 1 }); await NavigationService.RemoveLastFromBackStackAsync(); - await DialogService.ShowAlertAsync("Order sent successfully", string.Format("Order {0}", Order.OrderNumber), "Ok"); + await DialogService.ShowAlertAsync("Order sent successfully!", string.Format("Order {0}", Order.OrderNumber), "Ok"); await NavigationService.RemoveLastFromBackStackAsync(); } @@ -124,4 +135,4 @@ namespace eShopOnContainers.Core.ViewModels return total; } } -} +} \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs index 2381d0958..67a6b4734 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs @@ -1,6 +1,10 @@ -using eShopOnContainers.Core.Services.OpenUrl; +using eShopOnContainers.Core.Helpers; +using eShopOnContainers.Core.Services.Identity; +using eShopOnContainers.Core.Services.OpenUrl; using eShopOnContainers.Core.Validations; +using eShopOnContainers.Core.ViewModels.Base; using eShopOnContainers.ViewModels.Base; +using IdentityModel.Client; using System; using System.Diagnostics; using System.Threading.Tasks; @@ -13,17 +17,24 @@ namespace eShopOnContainers.Core.ViewModels { private ValidatableObject _userName; private ValidatableObject _password; + private bool _isMock; private bool _isValid; + private string _authUrl; private IOpenUrlService _openUrlService; + private IIdentityService _identityService; - public LoginViewModel(IOpenUrlService openUrlService) + public LoginViewModel(IOpenUrlService openUrlService, + IIdentityService identityService) { _openUrlService = openUrlService; + _identityService = identityService; _userName = new ValidatableObject(); _password = new ValidatableObject(); + IsMock = ViewModelLocator.Instance.UseMockService; + AddValidations(); } @@ -53,6 +64,19 @@ namespace eShopOnContainers.Core.ViewModels } } + public bool IsMock + { + get + { + return _isMock; + } + set + { + _isMock = value; + RaisePropertyChanged(() => IsMock); + } + } + public bool IsValid { get @@ -66,11 +90,38 @@ namespace eShopOnContainers.Core.ViewModels } } - public ICommand SignInCommand => new Command(SignInAsync); + public string LoginUrl + { + get + { + return _authUrl; + } + set + { + _authUrl = value; + RaisePropertyChanged(() => LoginUrl); + } + } + + public ICommand MockSignInCommand => new Command(MockSignInAsync); + + public ICommand SignInCommand => new Command(async () => await SignInAsync()); public ICommand RegisterCommand => new Command(Register); - private async void SignInAsync() + public ICommand NavigateCommand => new Command(NavigateAsync); + + public override Task InitializeAsync(object navigationData) + { + MessagingCenter.Subscribe(this, MessengerKeys.Logout, (sender) => + { + Logout(); + }); + + return base.InitializeAsync(navigationData); + } + + private async void MockSignInAsync() { IsBusy = true; IsValid = true; @@ -104,9 +155,57 @@ namespace eShopOnContainers.Core.ViewModels IsBusy = false; } + private async Task SignInAsync() + { + IsBusy = true; + + await Task.Delay(500); + + LoginUrl = _identityService.CreateAuthorizeRequest(); + + IsValid = true; + + IsBusy = false; + } + private void Register() { - _openUrlService.OpenUrl(GlobalSetting.RegisterWebsite); + _openUrlService.OpenUrl(GlobalSetting.Instance.RegisterWebsite); + } + + private void Logout() + { + var token = Settings.AuthAccessToken; + var logoutRequest = _identityService.CreateLogoutRequest(token); + + if(string.IsNullOrEmpty(logoutRequest)) + { + IsValid = false; + LoginUrl = logoutRequest; + Settings.AuthAccessToken = string.Empty; + } + } + + private async void NavigateAsync(string url) + { + if (url.Contains(GlobalSetting.Instance.IdentityCallback)) + { + // Parse response + var authResponse = new AuthorizeResponse(url); + + if (!string.IsNullOrWhiteSpace(authResponse.AccessToken)) + { + string decodedTokens = _identityService.DecodeToken(authResponse.AccessToken); + + if(decodedTokens != null) + { + Settings.AuthAccessToken = decodedTokens; + + await NavigationService.NavigateToAsync(); + await NavigationService.RemoveLastFromBackStackAsync(); + } + } + } } private bool Validate() @@ -123,4 +222,4 @@ namespace eShopOnContainers.Core.ViewModels _password.Validations.Add(new IsNotNullOrEmptyRule { ValidationMessage = "Password should not be empty" }); } } -} +} \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/ProfileViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/ProfileViewModel.cs index fe69f36a4..43f4d29da 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/ProfileViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/ProfileViewModel.cs @@ -1,6 +1,7 @@ using eShopOnContainers.Core.Extensions; using eShopOnContainers.Core.Models.Orders; -using eShopOnContainers.Core.Services.User; +using eShopOnContainers.Core.Services.Order; +using eShopOnContainers.Core.ViewModels.Base; using eShopOnContainers.ViewModels.Base; using System.Collections.ObjectModel; using System.Threading.Tasks; @@ -13,11 +14,11 @@ namespace eShopOnContainers.Core.ViewModels { private ObservableCollection _orders; - private IUserService _userService; + private IOrderService _orderService; - public ProfileViewModel(IUserService userService) + public ProfileViewModel(IOrderService orderService) { - _userService = userService; + _orderService = orderService; } public ObservableCollection Orders @@ -38,7 +39,7 @@ namespace eShopOnContainers.Core.ViewModels { IsBusy = true; - var orders = await _userService.GetOrdersAsync(); + var orders = await _orderService.GetOrdersAsync(); Orders = orders.ToObservableCollection(); IsBusy = false; @@ -48,6 +49,7 @@ namespace eShopOnContainers.Core.ViewModels { IsBusy = true; + MessagingCenter.Send(this, MessengerKeys.Logout); await NavigationService.NavigateToAsync(); await NavigationService.RemoveBackStackAsync(); diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs index 2cdacb480..77e0dbf9b 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs @@ -9,11 +9,12 @@ namespace eShopOnContainers.Core.ViewModels { private string _title; private string _description; - private bool _useMockServices; + private bool _useAzureServices; + private string _endpoint; public SettingsViewModel() { - UseMockServices = ViewModelLocator.Instance.UseMockService; + UseAzureServices = !ViewModelLocator.Instance.UseMockService; } public string Title @@ -36,13 +37,29 @@ namespace eShopOnContainers.Core.ViewModels } } - public bool UseMockServices + public bool UseAzureServices { - get { return _useMockServices; } + get { return _useAzureServices; } set { - _useMockServices = value; - RaisePropertyChanged(() => UseMockServices); + _useAzureServices = value; + RaisePropertyChanged(() => UseAzureServices); + } + } + + public string Endpoint + { + get { return _endpoint; } + set + { + _endpoint = value; + + if(!string.IsNullOrEmpty(_endpoint)) + { + UpdateEndpoint(_endpoint); + } + + RaisePropertyChanged(() => Endpoint); } } @@ -50,7 +67,7 @@ namespace eShopOnContainers.Core.ViewModels private void MockServices() { - ViewModelLocator.Instance.UpdateServices(UseMockServices); + ViewModelLocator.Instance.UpdateDependencies(!UseAzureServices); UpdateInfo(); } @@ -58,12 +75,14 @@ namespace eShopOnContainers.Core.ViewModels { UpdateInfo(); + Endpoint = GlobalSetting.Instance.BaseEndpoint; + return base.InitializeAsync(navigationData); } private void UpdateInfo() { - if (!UseMockServices) + if (!UseAzureServices) { Title = "Use Mock Services"; Description = "Mock Services are simulated objects that mimic the behavior of real services in controlled ways"; @@ -74,5 +93,10 @@ namespace eShopOnContainers.Core.ViewModels Description = "Azure Services are real objects that required a valid internet connection"; } } + + private void UpdateEndpoint(string endpoint) + { + GlobalSetting.Instance.BaseEndpoint = endpoint; + } } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CatalogView.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CatalogView.xaml index fd51414b6..870980ac2 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CatalogView.xaml +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CatalogView.xaml @@ -58,7 +58,8 @@ + BackgroundColor="{StaticResource LightGreenColor}" + IsEnabled="{Binding Products.Count, Converter={StaticResource CountToBoolConverter}}"> \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml index f28f121c1..b13a4855d 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml @@ -43,6 +43,18 @@ Value="12, 12, 12, 0" /> + + @@ -82,6 +94,7 @@ + @@ -121,10 +134,31 @@ WinPhone="Assets/switchOff.png"/> - + + + diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml.cs index f7ad31a47..e57c8fd32 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -using Xamarin.Forms; +using Xamarin.Forms; namespace eShopOnContainers.Core.Views { diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/BasketItemTemplate.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/BasketItemTemplate.xaml index 48ec265a9..76c37db3c 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/BasketItemTemplate.xaml +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/BasketItemTemplate.xaml @@ -56,6 +56,8 @@