public void Map(Challenge challenge, EditChallengeViewModel model)
        {
            challenge.SolutionSourceCode = model.SourceCode;

            foreach (var removedTestCase in challenge.TestCases.ToList())
            {
                unitOfWork.Delete(removedTestCase);
            }

            foreach (var testCase in model.TestCases)
            {
                var testCaseEntity = new TestCase
                {
                    Id       = testCase.Id,
                    IsPublic = testCase.IsPublic
                };

                var parameters = new List <CodeParameter>();
                parameters.AddRange(testCase.InputParameters.Select(p => new CodeParameter
                {
                    Type  = CodeParameterType.Input,
                    Value = p
                }));
                parameters.AddRange(testCase.OutputParameters.Select(p => new CodeParameter
                {
                    Type  = CodeParameterType.Output,
                    Value = p
                }));
                testCaseEntity.CodeParameters = parameters;

                challenge.TestCases.Add(testCaseEntity);
            }
        }
        public void RemoveChallenge(Guid id)
        {
            var challenge = unitOfWork.Get <Challenge>(id);

            unitOfWork.Delete(challenge);

            unitOfWork.Commit();
        }