public async Task Delete(string id)
        {
            int     _id  = int.Parse(id);
            Problem item = await _context.Problems.FindAsync(_id);

            if (item != null)
            {
                ProblemProvider prov = new ProblemProvider(_workspace, _context, item);

                await prov.Samples.Clear();

                await prov.Tests.Clear();

                {
                    int[] submis = (from x in _context.Submissions where x.ProblemId == item.Id select x.Id).ToArray();

                    foreach (int s in submis)
                    {
                        await _workspace.Submissions.Delete(s.ToString());
                    }
                }

                _context.Problems.Remove(item);

                await _context.SaveChangesAsync();
            }
        }
        public async Task <IProblemProvider> Create(ProblemMetadata metadata)
        {
            Problem empty = new Problem();

            _context.Add(empty);
            await _context.SaveChangesAsync();

            ProblemProvider res = new ProblemProvider(_workspace, _context, empty);
            await res.SetMetadata(metadata);

            return(res);
        }