示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }