private bool LoadGrade(GradeProxy p) { Grade g = Deproxy.GetGrade(p); string objTypeAndName = p.GetDataType().ToLower() + ": " + p.FriendlyString(); if (moonServer.Grades.Any(o => o.Id == g.Id || o.EuroName.Equals(g.EuroName) || o.AmericanName.Equals(g.AmericanName))) { if (ErrorOnDupCheckBox.Checked) { throw new DuplicateException(objTypeAndName); } StatusTextBox.AppendText("Skipping duplicate " + objTypeAndName + "\n"); return(false); } StatusTextBox.AppendText("Adding " + objTypeAndName + "\n"); moonServer.Grades.Add(g); moonServer.SaveChanges(); return(true); }
private bool LoadHold(HoldProxy p) { Hold h = Deproxy.GetHold(p); string objTypeAndName = p.GetDataType().ToLower() + ": " + p.FriendlyString(); if (moonServer.Holds.Any(o => o.Name.Equals(h.Name))) { if (ErrorOnDupCheckBox.Checked) { throw new DuplicateException(objTypeAndName); } StatusTextBox.AppendText("Skipping duplicate " + objTypeAndName + "\n"); return(false); } StatusTextBox.AppendText("Adding " + objTypeAndName + "\n"); moonServer.Holds.Add(h); moonServer.SaveChanges(); return(true); }
private UPDATE_RESULT LoadProblem(ProblemProxy p) { Problem prb = Deproxy.GetProblem(p, moonServer); string objTypeAndName = p.GetDataType().ToLower() + ": " + p.FriendlyString(); if (moonServer.Problems.Any(o => o.Name.Equals(prb.Name))) { if (ErrorOnDupCheckBox.Checked) { throw new DuplicateException("Duplicate name for " + objTypeAndName); } Problem existingProb = moonServer.Problems.First(o => o.Name.Equals(prb.Name)); if (!existingProb.MoonID.Equals(prb.MoonID)) { throw new DuplicateException( String.Format("Same name different MoonID. Name={0} MoonID={1}/{2} ID={3}/{4}", prb.Name, prb.MoonID, existingProb.MoonID, prb.Id, existingProb.Id)); } if (prb.Repeats > existingProb.Repeats) { StatusTextBox.AppendText("Updating # repeats for " + objTypeAndName + "\n"); existingProb.Repeats = prb.Repeats; moonServer.SaveChanges(); return(UPDATE_RESULT.UPDATE_REPEATS); } StatusTextBox.AppendText("Skipping duplicate " + objTypeAndName + "\n"); return(UPDATE_RESULT.NONE); } IEnumerable <Problem> sameIDProblems = moonServer.Problems.Where(o => o.MoonID.Equals(prb.MoonID)); if (sameIDProblems.Count() > 0) { if (!ReplaceCheckBox.Checked) { foreach (Problem sameIDproblem in sameIDProblems) { if (!sameIDproblem.Name.Equals(prb.Name)) { throw new DuplicateException( String.Format("Same MoonID different name. MoonID={0} Name={1}/{2} ID={3}/{4}", prb.MoonID, prb.Name, sameIDproblem.Name, prb.Id, sameIDproblem.Id)); } } if (ErrorOnDupCheckBox.Checked) { throw new DuplicateException("Duplicate MoonID for " + objTypeAndName); } StatusTextBox.AppendText("Skipping " + objTypeAndName + " (duplicate MoonID)\n"); return(UPDATE_RESULT.NONE); } else { StatusTextBox.AppendText(String.Format("Removing {0} problem(s) with same ID as {1}\n", sameIDProblems.Count(), objTypeAndName)); foreach (Problem sameIDproblem in sameIDProblems) { moonServer.ProblemPositions.RemoveRange(sameIDproblem.ProblemPositions); moonServer.StartProblemPositions.RemoveRange(sameIDproblem.StartProblemPositions); moonServer.EndProblemPositions.RemoveRange(sameIDproblem.EndProblemPositions); moonServer.Problems.Remove(sameIDproblem); } } } StatusTextBox.AppendText("Adding " + objTypeAndName + "\n"); moonServer.Problems.Add(prb); moonServer.SaveChanges(); prb = moonServer.Problems.First(_prb => _prb.Name.Equals(p.Name)); // Pull back the allocated ID foreach (string posName in p.Positions) { moonServer.ProblemPositions.Add(new ProblemPosition { PositionId = moonServer.Positions.First(pos => pos.Name.Equals(posName)).Id, ProblemId = prb.Id }); } moonServer.SaveChanges(); foreach (string posName in p.StartPositions) { moonServer.StartProblemPositions.Add(new StartProblemPosition { PositionId = moonServer.Positions.First(pos => pos.Name.Equals(posName)).Id, ProblemId = prb.Id }); } moonServer.SaveChanges(); foreach (string posName in p.EndPositions) { moonServer.EndProblemPositions.Add(new EndProblemPosition { PositionId = moonServer.Positions.First(pos => pos.Name.Equals(posName)).Id, ProblemId = prb.Id }); } moonServer.SaveChanges(); return(UPDATE_RESULT.ADD); }