Skip to content

Commit

Permalink
Repository work
Browse files Browse the repository at this point in the history
  • Loading branch information
bbraithwaite committed Aug 13, 2013
1 parent af6f99f commit 313fe0a
Show file tree
Hide file tree
Showing 144 changed files with 3,978 additions and 2,516 deletions.
82 changes: 12 additions & 70 deletions BB.SmsQuiz.sln
Expand Up @@ -24,27 +24,15 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BB.SmsQuiz.Api", "src\BB.Sm
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BB.SmsQuiz.Web", "src\BB.SmsQuiz.Web\BB.SmsQuiz.Web.csproj", "{152E3476-23D2-4263-BAF9-9A1B4183C76F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BB.SmsQuiz.Repository.Dapper", "src\BB.SmsQuiz.Repository.Dapper\BB.SmsQuiz.Repository.Dapper.csproj", "{75902233-91D0-429F-B8D0-05AD9DE5DF3F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{18119E57-086C-46D7-ACB7-132F15CA83F1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BB.SmsQuiz.Model.Tests", "tests\BB.SmsQuiz.Model.Tests\BB.SmsQuiz.Model.Tests.csproj", "{FE5C67C9-5B58-404D-838E-29CC89AEA803}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{64EBAF5E-2D8E-4D85-8485-4A9FDFC12497}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BB.SmsQuiz.Repository.Dapper.Tests", "tests\BB.SmsQuiz.Repository.Dapper.Tests\BB.SmsQuiz.Repository.Dapper.Tests.csproj", "{A244731E-9953-4B9E-A93E-1B7654DBB523}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{3D5BB1DB-3395-44B4-96A3-5578C555CF84}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BB.SmsQuiz.IntegrationTests", "tests\BB.SmsQuiz.IntegrationTests\BB.SmsQuiz.IntegrationTests.csproj", "{AD7CF872-1FE2-424A-A2DC-6BE92768B8C1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BB.SmsQuiz.Api.Tests", "tests\BB.SmsQuiz.Api.Tests\BB.SmsQuiz.Api.Tests.csproj", "{AF406B59-AA5A-4847-BB52-02823EA96DC5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BB.SmsQuiz.ApiModel", "src\BB.SmsQuiz.ApiModel\BB.SmsQuiz.ApiModel.csproj", "{FBFE64A2-E6B7-49B8-933D-5F788016127F}"
EndProject
Project("{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}") = "BB.SmsQuiz.Database", "src\BB.SmsQuiz.Database\BB.SmsQuiz.Database.sqlproj", "{2FADD315-FB3E-4060-BB96-45C2C2E6B0A9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BB.SmsQuiz.Repository.EF", "BB.SmsQuiz.Repository.EF\BB.SmsQuiz.Repository.EF.csproj", "{34D3642C-025F-4C43-926E-6CEF0F172128}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BB.SmsQuiz.Repository.EF", "src\BB.SmsQuiz.UnitOfWork.EF\BB.SmsQuiz.Repository.EF.csproj", "{A8BA64AD-9F75-485B-9447-F84C5501C9D9}"
EndProject
Global
GlobalSection(TestCaseManagementSettings) = postSolution
Expand Down Expand Up @@ -99,16 +87,6 @@ Global
{152E3476-23D2-4263-BAF9-9A1B4183C76F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{152E3476-23D2-4263-BAF9-9A1B4183C76F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{152E3476-23D2-4263-BAF9-9A1B4183C76F}.Release|x86.ActiveCfg = Release|Any CPU
{75902233-91D0-429F-B8D0-05AD9DE5DF3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{75902233-91D0-429F-B8D0-05AD9DE5DF3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{75902233-91D0-429F-B8D0-05AD9DE5DF3F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{75902233-91D0-429F-B8D0-05AD9DE5DF3F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{75902233-91D0-429F-B8D0-05AD9DE5DF3F}.Debug|x86.ActiveCfg = Debug|Any CPU
{75902233-91D0-429F-B8D0-05AD9DE5DF3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{75902233-91D0-429F-B8D0-05AD9DE5DF3F}.Release|Any CPU.Build.0 = Release|Any CPU
{75902233-91D0-429F-B8D0-05AD9DE5DF3F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{75902233-91D0-429F-B8D0-05AD9DE5DF3F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{75902233-91D0-429F-B8D0-05AD9DE5DF3F}.Release|x86.ActiveCfg = Release|Any CPU
{FE5C67C9-5B58-404D-838E-29CC89AEA803}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FE5C67C9-5B58-404D-838E-29CC89AEA803}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FE5C67C9-5B58-404D-838E-29CC89AEA803}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
Expand All @@ -119,36 +97,6 @@ Global
{FE5C67C9-5B58-404D-838E-29CC89AEA803}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{FE5C67C9-5B58-404D-838E-29CC89AEA803}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{FE5C67C9-5B58-404D-838E-29CC89AEA803}.Release|x86.ActiveCfg = Release|Any CPU
{A244731E-9953-4B9E-A93E-1B7654DBB523}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A244731E-9953-4B9E-A93E-1B7654DBB523}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A244731E-9953-4B9E-A93E-1B7654DBB523}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A244731E-9953-4B9E-A93E-1B7654DBB523}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A244731E-9953-4B9E-A93E-1B7654DBB523}.Debug|x86.ActiveCfg = Debug|Any CPU
{A244731E-9953-4B9E-A93E-1B7654DBB523}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A244731E-9953-4B9E-A93E-1B7654DBB523}.Release|Any CPU.Build.0 = Release|Any CPU
{A244731E-9953-4B9E-A93E-1B7654DBB523}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A244731E-9953-4B9E-A93E-1B7654DBB523}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A244731E-9953-4B9E-A93E-1B7654DBB523}.Release|x86.ActiveCfg = Release|Any CPU
{AD7CF872-1FE2-424A-A2DC-6BE92768B8C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD7CF872-1FE2-424A-A2DC-6BE92768B8C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AD7CF872-1FE2-424A-A2DC-6BE92768B8C1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{AD7CF872-1FE2-424A-A2DC-6BE92768B8C1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{AD7CF872-1FE2-424A-A2DC-6BE92768B8C1}.Debug|x86.ActiveCfg = Debug|Any CPU
{AD7CF872-1FE2-424A-A2DC-6BE92768B8C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD7CF872-1FE2-424A-A2DC-6BE92768B8C1}.Release|Any CPU.Build.0 = Release|Any CPU
{AD7CF872-1FE2-424A-A2DC-6BE92768B8C1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{AD7CF872-1FE2-424A-A2DC-6BE92768B8C1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AD7CF872-1FE2-424A-A2DC-6BE92768B8C1}.Release|x86.ActiveCfg = Release|Any CPU
{AF406B59-AA5A-4847-BB52-02823EA96DC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AF406B59-AA5A-4847-BB52-02823EA96DC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AF406B59-AA5A-4847-BB52-02823EA96DC5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{AF406B59-AA5A-4847-BB52-02823EA96DC5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{AF406B59-AA5A-4847-BB52-02823EA96DC5}.Debug|x86.ActiveCfg = Debug|Any CPU
{AF406B59-AA5A-4847-BB52-02823EA96DC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AF406B59-AA5A-4847-BB52-02823EA96DC5}.Release|Any CPU.Build.0 = Release|Any CPU
{AF406B59-AA5A-4847-BB52-02823EA96DC5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{AF406B59-AA5A-4847-BB52-02823EA96DC5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AF406B59-AA5A-4847-BB52-02823EA96DC5}.Release|x86.ActiveCfg = Release|Any CPU
{FBFE64A2-E6B7-49B8-933D-5F788016127F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FBFE64A2-E6B7-49B8-933D-5F788016127F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FBFE64A2-E6B7-49B8-933D-5F788016127F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
Expand All @@ -173,16 +121,16 @@ Global
{2FADD315-FB3E-4060-BB96-45C2C2E6B0A9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{2FADD315-FB3E-4060-BB96-45C2C2E6B0A9}.Release|Mixed Platforms.Deploy.0 = Release|Any CPU
{2FADD315-FB3E-4060-BB96-45C2C2E6B0A9}.Release|x86.ActiveCfg = Release|Any CPU
{34D3642C-025F-4C43-926E-6CEF0F172128}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{34D3642C-025F-4C43-926E-6CEF0F172128}.Debug|Any CPU.Build.0 = Debug|Any CPU
{34D3642C-025F-4C43-926E-6CEF0F172128}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{34D3642C-025F-4C43-926E-6CEF0F172128}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{34D3642C-025F-4C43-926E-6CEF0F172128}.Debug|x86.ActiveCfg = Debug|Any CPU
{34D3642C-025F-4C43-926E-6CEF0F172128}.Release|Any CPU.ActiveCfg = Release|Any CPU
{34D3642C-025F-4C43-926E-6CEF0F172128}.Release|Any CPU.Build.0 = Release|Any CPU
{34D3642C-025F-4C43-926E-6CEF0F172128}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{34D3642C-025F-4C43-926E-6CEF0F172128}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{34D3642C-025F-4C43-926E-6CEF0F172128}.Release|x86.ActiveCfg = Release|Any CPU
{A8BA64AD-9F75-485B-9447-F84C5501C9D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A8BA64AD-9F75-485B-9447-F84C5501C9D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A8BA64AD-9F75-485B-9447-F84C5501C9D9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A8BA64AD-9F75-485B-9447-F84C5501C9D9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A8BA64AD-9F75-485B-9447-F84C5501C9D9}.Debug|x86.ActiveCfg = Debug|Any CPU
{A8BA64AD-9F75-485B-9447-F84C5501C9D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A8BA64AD-9F75-485B-9447-F84C5501C9D9}.Release|Any CPU.Build.0 = Release|Any CPU
{A8BA64AD-9F75-485B-9447-F84C5501C9D9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A8BA64AD-9F75-485B-9447-F84C5501C9D9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A8BA64AD-9F75-485B-9447-F84C5501C9D9}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -192,16 +140,10 @@ Global
{ACFE02A0-A487-4885-8124-CBC2E79B233E} = {EFF62056-9221-4CC2-9AB5-F8BB70109481}
{18119E57-086C-46D7-ACB7-132F15CA83F1} = {EFF62056-9221-4CC2-9AB5-F8BB70109481}
{A5172343-4F04-4074-8911-9D99999C935F} = {FF733C05-D006-48C2-8809-217C19A9E553}
{3D5BB1DB-3395-44B4-96A3-5578C555CF84} = {FF733C05-D006-48C2-8809-217C19A9E553}
{FBFE64A2-E6B7-49B8-933D-5F788016127F} = {FF733C05-D006-48C2-8809-217C19A9E553}
{152E3476-23D2-4263-BAF9-9A1B4183C76F} = {D310F6FE-AA57-4AE8-8412-72DBE5C87CAD}
{75902233-91D0-429F-B8D0-05AD9DE5DF3F} = {13C1C3B8-E11F-43C4-9865-FFCCC921F0EF}
{64EBAF5E-2D8E-4D85-8485-4A9FDFC12497} = {13C1C3B8-E11F-43C4-9865-FFCCC921F0EF}
{34D3642C-025F-4C43-926E-6CEF0F172128} = {13C1C3B8-E11F-43C4-9865-FFCCC921F0EF}
{A8BA64AD-9F75-485B-9447-F84C5501C9D9} = {13C1C3B8-E11F-43C4-9865-FFCCC921F0EF}
{FE5C67C9-5B58-404D-838E-29CC89AEA803} = {18119E57-086C-46D7-ACB7-132F15CA83F1}
{A244731E-9953-4B9E-A93E-1B7654DBB523} = {64EBAF5E-2D8E-4D85-8485-4A9FDFC12497}
{AD7CF872-1FE2-424A-A2DC-6BE92768B8C1} = {3D5BB1DB-3395-44B4-96A3-5578C555CF84}
{AF406B59-AA5A-4847-BB52-02823EA96DC5} = {3D5BB1DB-3395-44B4-96A3-5578C555CF84}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.2\lib\NET35;packages\Unity.Interception.2.1.505.2\lib\NET35;packages\EnterpriseLibrary.Common.5.0.505.0\lib\NET35;packages\EnterpriseLibrary.Data.5.0.505.0\lib\NET35
Expand Down
45 changes: 45 additions & 0 deletions Settings.StyleCop
@@ -0,0 +1,45 @@
<StyleCopSettings Version="105">
<Analyzers>
<Analyzer AnalyzerId="StyleCop.CSharp.DocumentationRules">
<AnalyzerSettings>
<StringProperty Name="CompanyName">contentedcoder.com</StringProperty>
<StringProperty Name="Copyright">contentedcoder.com</StringProperty>
</AnalyzerSettings>
</Analyzer>
<Analyzer AnalyzerId="StyleCop.CSharp.NamingRules">
<Rules>
<Rule Name="FieldNamesMustNotBeginWithUnderscore">
<RuleSettings>
<BooleanProperty Name="Enabled">False</BooleanProperty>
</RuleSettings>
</Rule>
</Rules>
<AnalyzerSettings />
</Analyzer>
<Analyzer AnalyzerId="StyleCop.CSharp.OrderingRules">
<Rules>
<Rule Name="UsingDirectivesMustBePlacedWithinNamespace">
<RuleSettings>
<BooleanProperty Name="Enabled">False</BooleanProperty>
</RuleSettings>
</Rule>
</Rules>
<AnalyzerSettings />
</Analyzer>
<Analyzer AnalyzerId="StyleCop.CSharp.ReadabilityRules">
<Rules>
<Rule Name="PrefixCallsCorrectly">
<RuleSettings>
<BooleanProperty Name="Enabled">False</BooleanProperty>
</RuleSettings>
</Rule>
<Rule Name="PrefixLocalCallsWithThis">
<RuleSettings>
<BooleanProperty Name="Enabled">False</BooleanProperty>
</RuleSettings>
</Rule>
</Rules>
<AnalyzerSettings />
</Analyzer>
</Analyzers>
</StyleCopSettings>
Binary file removed packages/AutoMapper.2.2.0/AutoMapper.2.2.0.nupkg
Binary file not shown.
Binary file removed packages/AutoMapper.2.2.0/lib/net40/AutoMapper.dll
Binary file not shown.
15 changes: 0 additions & 15 deletions packages/AutoMapper.2.2.0/lib/net40/AutoMapper.xml

This file was deleted.

3 changes: 2 additions & 1 deletion packages/repositories.config
Expand Up @@ -2,8 +2,9 @@
<repositories>
<repository path="..\src\BB.SmsQuiz.Api\packages.config" />
<repository path="..\src\BB.SmsQuiz.Repository.Dapper\packages.config" />
<repository path="..\src\BB.SmsQuiz.UnitOfWork.EF\packages.config" />
<repository path="..\src\BB.SmsQuiz.Web\packages.config" />
<repository path="..\tests\BB.SmsQuiz.Api.Tests\packages.config" />
<repository path="..\tests\BB.SmsQuiz.IntegrationTests\packages.config" />
<repository path="..\tests\BB.SmsQuiz.Model.Tests\packages.config" />
<repository path="..\tests\BB.SmsQuiz.Repository.EF.Tests\packages.config" />
</repositories>
4 changes: 3 additions & 1 deletion src/BB.SmsQuiz.Api/App_Start/AutoMapperBootStrapper.cs
Expand Up @@ -15,7 +15,9 @@ public class AutoMapperBootStrapper
public static void Configure()
{
Mapper.CreateMap<Competition, GetCompetition>().ConvertUsing(new CompetitionStatisticsConverter());
Mapper.CreateMap<PostCompetition, Competition>().ConvertUsing(new CreateCompetitionItemConverter());
Mapper.CreateMap<PostCompetition, Competition>().ConvertUsing(new PostCompetitionItemConverter());
Mapper.CreateMap<PutCompetition, Competition>().ConvertUsing(new PutCompetitionItemConverter());
Mapper.CreateMap<BaseCompetition, Competition>().ConvertUsing(new BaseCompetitionItemConverter());
Mapper.CreateMap<User, GetUser>().ConvertUsing(new UserItemConverter());
Mapper.CreateMap<IEnumerable<User>, IEnumerable<GetUser>>().ConvertUsing(new UserItemsConverter());
Mapper.CreateMap<PossibleAnswer, PossibleAnswerItem>();
Expand Down
30 changes: 14 additions & 16 deletions src/BB.SmsQuiz.Api/App_Start/NinjectWebCommon.cs
@@ -1,31 +1,27 @@
using System.Web.Http.Filters;
using BB.SmsQuiz.Api.Infrastructure;
using BB.SmsQuiz.Api.EventHandlers;
using BB.SmsQuiz.Api.Filters;
using BB.SmsQuiz.Api.Infrastructure;
using BB.SmsQuiz.Api.Mapping;
using BB.SmsQuiz.Infrastructure.Authentication;
using BB.SmsQuiz.Infrastructure.Domain.Events;
using BB.SmsQuiz.Infrastructure.Encryption;
using BB.SmsQuiz.Infrastructure.Mapping;
using BB.SmsQuiz.Infrastructure.UnitOfWork;
using BB.SmsQuiz.Model;
using BB.SmsQuiz.Model.Competitions;
using BB.SmsQuiz.Model.Competitions.Events;
using BB.SmsQuiz.Model.Users;
using Microsoft.Web.Infrastructure.DynamicModuleHelper;
using Ninject;
using Ninject.Web.Common;
using System;
using System.Web;
using System.Web.Http;

[assembly: WebActivator.PreApplicationStartMethod(typeof(BB.SmsQuiz.Api.App_Start.NinjectWebCommon), "Start")]
[assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(BB.SmsQuiz.Api.App_Start.NinjectWebCommon), "Stop")]

namespace BB.SmsQuiz.Api.App_Start
{
using System;
using System.Web;

using Microsoft.Web.Infrastructure.DynamicModuleHelper;

using Ninject;
using Ninject.Web.Common;
using BB.SmsQuiz.Model.Competitions;
using BB.SmsQuiz.Repository.Dapper;
using System.Web.Http;

public static class NinjectWebCommon
{
private static readonly Bootstrapper bootstrapper = new Bootstrapper();
Expand Down Expand Up @@ -73,11 +69,13 @@ private static IKernel CreateKernel()
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IMapper>().To<AutoMapperService>().InSingletonScope();
kernel.Bind<ICompetitionRepository>().To<CompetitionRepository>();
kernel.Bind<IUserRepository>().To<UserRepository>();
kernel.Bind<IEncryptionService>().To<EncryptionService>();
kernel.Bind<IDomainEventHandler<WinnerSelectedEvent>>().To<WinnerSelectedHandler>();
kernel.Bind<ITokenAuthentication>().To<FakeTokenAuthentication>();
kernel.Bind<IUnitOfWork>().To<Repository.EF.UnitOfWork>().InRequestScope();

kernel.Bind<IUserRepository>().To<Repository.EF.UserRepository>().InRequestScope();
kernel.Bind<ICompetitionRepository>().To<Repository.EF.CompetitionRepository>().InRequestScope();
}
}
}
2 changes: 1 addition & 1 deletion src/BB.SmsQuiz.Api/App_Start/WebApiConfig.cs
Expand Up @@ -22,7 +22,7 @@ public static void Register(HttpConfiguration configuration)

configuration.Routes.MapHttpRoute(
name: "CloseCompetition",
routeTemplate: "competitions/{id}/close",
routeTemplate: "competitions/close/{id}",
defaults: new
{
controller = "CloseCompetition"
Expand Down

0 comments on commit 313fe0a

Please sign in to comment.