public virtual DatabaseActionResult<Iteration> AddDiffToIteration(int id, string diff, int currentUserId)
{
Requires.InRange(id >= 0, "id");
Requires.NotNullOrEmpty(diff, "diff");
Requires.InRange(currentUserId >= 0, "currentUserId");
Iteration iter = GetIteration(id);
if (iter == null)
{
return DatabaseActionResult<Iteration>.NotFound();
}
else if (iter.Review.UserId != currentUserId)
{
return DatabaseActionResult<Iteration>.Forbidden();
}
ICollection<FileChange> changes;
using (TextReader reader = new StringReader(diff))
{
changes = Diff.CreateFromGitDiff(reader);
}
foreach (FileChange change in changes)
{
iter.Files.Add(change);
}
Data.SaveChanges();
return DatabaseActionResult<Iteration>.Success(iter);
}